Arquitetura de Software

46
Arquitetura de Software Visão Geral Copyright © 2017 Fábio Nogueira de Lucena [email protected]

Transcript of Arquitetura de Software

Page 1: Arquitetura de Software

Arquitetura de Software

Visão Geral

Copyright © 2017Fábio Nogueira de [email protected]

Page 2: Arquitetura de Software

O que é arquitetura de software?

• Nível de projeto preocupado com• Questões além de algoritmos e estruturas de dados• Projeto e especificação a estrutura do sistema

• Estrutura de controle global• Protocolos de comunicação, sincronização• Acesso a dados• Atribuição de funcionalidade a elementos de projeto• Distribuição física de elementos• Desempenho e escala

Page 3: Arquitetura de Software

Onde obter mais informações ...

• ARQUITETURA DE SOFTWARE • Excelente ponto de partida:

• www2.umassd.edu/SECenter/SAResources.html

Page 4: Arquitetura de Software

O que não é?

• Não é projeto “detalhado”• Não é projeto de algoritmos• Não é implementação• Não é o modelo de dados

• Usa para assinatura de interfaces

• Não é o sistema físico (processadores, rede, ...)• Usa para impacto de desempenho, confiabilidade, ...

• Não é a arquitetura de hardware

Page 5: Arquitetura de Software

Representação

• Visão• Descrição simplificada de uma perspectiva

• Construção civil• Planta baixa• Projeto elétrico• Projeto hidráulico, ...

• Construção de software (segundo o RUP: “4+1”)• Visão de UC• Visão Lógica• Visão de processos• Visão de implementação• Visão de implantação

Page 6: Arquitetura de Software

Visões de Arquitetura

• Visão de Casos de Uso• Ucs e cenários que ilustram itens “arquiteturalmente significantes”, riscos

técnicos, ...

• Visão lógica• Classes + relevantes organizadas em subsistemas, packages e estes em

camadas. Realizações de Ucs.• Visão de implementação

• Organização de componentes, executáveis, fontes,...

• Visão de processos• Configuração e interação entre processos e threads

• Visão de implantação• Alocação de tarefas a nós físicos, interação entre estes

Page 7: Arquitetura de Software

Arquitetura concentra-se ...

• Na estrutura (subsistemas, camadas)• Nos elementos essenciais (UC críticos, classes principais, mecanismos

comuns)• Em cenários principais (fluxo de controle principal por todo o

sistema)• Em serviços (captura modularidade, elementos opcionais, ...)

Visões de arquitetura são abstrações de todo o projeto

Page 8: Arquitetura de Software

Por que é importante?

• Evolução do sistema• Reutilização da arquitetura ou parte• Avaliação de desempenho, disponibilidade, ...• Organização do trabalho de construção• Decisões acerca aquisição de componentes existentes• Inserção em um sistema maior

Page 9: Arquitetura de Software

Como descrever em UML?

• Visão lógica• Diagramas de classes, DTEs e diagramas de objetos

• Visão de processos• Diagramas de classes e objetos (processos,threads)

• Visão de implementação• Diagramas de componentes

• Visão de implantação• Diagramas de implantação

• Visão de casos de uso• Diagramas de ucs, atores, diagramas de seqüência.

Page 10: Arquitetura de Software

Visão de Caso de Uso

• Fornece base para planejamento de iterações

Page 11: Arquitetura de Software

Visão de UC (exemplo)

Modelo de Processo do Negócio

Casos de Uso

Vision Document (SAD) Arquitetura do sistema conforme

"percebida" pelos clientes.

Atores

Page 12: Arquitetura de Software

Visão de UC (Modelo de Processo do Negócio)

Aluno não matriculado

Requisita matrícula

Comprovante de Matrícula

RequisicaoMatricula

Avalia Requisicao de Candidato

Efetua matrícula

Candidato apto

RequisicaoMatricula

Efetua matrícula

Avalia Requisição de Aluno

Aluno matriculado

Fim de período

Requisita matrícula

Comprovante de Matrícula

[ aluno apto? ]

[ aluno inapto? ]

Fulano : Aluno (from Criar Programa)Sistema (from Criar Programa)Candidato (from Criar Programa)

Page 13: Arquitetura de Software

Visão lógica

• Base para compreensão da estrutura e organização do projeto

Page 14: Arquitetura de Software

Visão Lógica (exemplo)

Presentation<<layer>>

Data<<layer>>

Business<<layer>>

DataCapes

(from Software)

Lattes

(from Software)

CAPES

(from Logical View)

CNPQ

(from Logical View)

Use-Case Realizations

Page 15: Arquitetura de Software

Visão de processos

• Base para compreensão da organização de processos

NetScape 6.0<<thread>>

Internet Explorer 5.5<<thread>>

Apache Server

(from Software)

Browser<<thread>>

1 n1 n

<<http>>

Page 16: Arquitetura de Software

Refinamento da Visão de Processos

CORBA Server

(from Software)

JVM

(from Software)

JMS broker

(from Software)

Java Plug-In 1.3<<thread>>

NetScape 6.0<<thread>>

Internet Explorer 5.5<<thread>>

Browser<<thread>>

Apache Server

(from Software)

1 n1 n

<<http>>

Database

(from Software)1

1

1

1

Servidor de Aplicação<<process>>

1

n

1

n

Beans(from beans)

<<thread>>

Page 17: Arquitetura de Software

Visão de implantação

• Base para compreensão da distribuição física do sistema entre nós

Servidor SISPG

preemptive

Servidor ApacheBanco de DadosServidor de Aplicações Java

Coordenação de Programa

Laser Printer

<<UFGNet>>

Câmera Digital

Impressão de DiplomasImpressora

de Diplomas

Navegante

<<Internet>>

Usuário

<<Internet>>

Servidor CCPFJ

<<UFGNet>>

<<UFGNet>>

Page 18: Arquitetura de Software

Desenvolvimento de Arquitetura de Software• Como produzir uma arquitetura de software?• Como obter as visões de arquitetura?• Quando ocorre?• Quais as tarefas?• Qual o processo?• Quais os artefatos?• ...

Page 19: Arquitetura de Software

Quando ocorre?

• (após)Requisitos (gera entrada para A&P)

• (início) Análise & Projeto• Transformar req em projeto• Obter uma arquitetura robusta

• (durante) Fase de elaboração

Concepção

Page 20: Arquitetura de Software

Quais as tarefas?

• Definir arquitetura candidata• Criar uma versão inicial da arquitetura

• Definir elementos de arquitetura significantes• Definir camadas e organização do sistema• Definir realizações de casos de uso

• Identificar classes de análise

• Refinar a arquitetura• Identificar elementos de projeto daqueles de análise• Manter consistência e integridade da arquitetura• Descrever elementos de implantação e execução do sistema• Organizar o modelo de implementação

Page 21: Arquitetura de Software

Definir arquitetura candidata

Page 22: Arquitetura de Software

Refinar a arquitetura

Page 23: Arquitetura de Software

Definir arquitetura candidata

• Compreende• Análise de arquitetura• Análise de casos de uso

• Processo• Após início com a análise de arquitetura• Escolha casos de uso significantes• Realize a análise de casos de uso em cada UC• Atualize a arquitetura concomitantemente

Page 24: Arquitetura de Software

Análise de Arquitetura

• Desenvolver visão geral da arquitetura• Definir organização de subsistemas (high-level)• Identificar mecanismos de análise• Identificar abstrações principais• Criar realizações de casos de uso• Desenvolver modelo de implantação (high-level)• Revisar resultados

1 D

efin

ir ar

quite

tura

can

dida

ta

INCLUI:

Page 25: Arquitetura de Software

Análise de Casos de Uso

• Suplementar descrições de casos de uso• Identificar classes de análise• Distribuir comportamento em classes de análise• Descrever responsabilidades• Descrever atributos e associações• Estabelecer associações entre classes• Descrever dependências de eventos entre classes• Avaliar resultados

1 D

efin

ir ar

quite

tura

can

dida

ta

INCLUI:

Page 26: Arquitetura de Software

Visão geral da arquitetura

• Objetivo• Explorar e avaliar opções de arquitetura• Fornecer compreensão de alto nível da estrutura

• Pode ser criada cedo (fase de concepção)• Reflete decisões e suposições acerca da implementação da Visão• Decisões acerca da arquitetura lógica e física• Ilustra “essência” da solução proposta• Fornece “grandes blocos”

1.1

Aná

lise

de A

rqui

tetu

ra

Page 27: Arquitetura de Software

Exemplo (visão geral da arquitetura)Visão apresentada aos usuários

1.1.

1 A

nális

e de

Arq

uite

tura

DataCapes

(from Software)

StrictoSensu<<subsystem>>

LatoSensu<<subsystem>>

Pi<<subsystem>>

Financeiro<<subsystem>>

CCPFJ<<sistema>>

Lattes

(from Software)

Projetos<<subsystem>>

CAPES

CNPQ

CCPFJ<<sistema>>

Page 28: Arquitetura de Software

Definir organização de subsistemas

• Objetivo• Criar estrutura inicial para o modelo de projeto

• Modelo de projeto• Geralmente organizado em camadas• Neste ponto, focalize as camadas de aplicação e a camada específica ao

negócio

1.1.

1 A

nális

e de

Arq

uite

tura

Page 29: Arquitetura de Software

Visão Lógica (Top-Level)

1.1.

1 A

nális

e de

Arq

uite

tura

Presentation<<layer>>

Data<<layer>>

Business<<layer>>

DataCapes

(from Software)

Lattes

(from Software)

CAPES

(from Logical View)

CNPQ

(from Logical View)

Use-Case Realizations

Page 30: Arquitetura de Software

Visão Lógica (Presentation Layer)

1.1.

1 A

nális

e de

Arq

uite

tura

Browser Java Applet

HTTP<<provider>>

(from Business)

HTML Pages

Server Pages(from Business)

IIOP<<provider>>

(from Business)

JavaScript

XML docs

Page 31: Arquitetura de Software

Visão Lógica (Business Objects Layer)• Sabe-se que as interfaces CNPQ e CAPES são utilizadas por um

subconjunto dos objetos• Na visão de implementação teremos componentes que

implementam estas interfaces1.1.

1 A

nális

e de

Arq

uite

tura

Page 32: Arquitetura de Software

Visão Lógica (Business Objects Layer)

1.1.

1 A

nális

e de

Arq

uite

tura

HTTP<<provider>>

Web Server Server PagesApplication Server

<<provider>>

IIOP<<provider>>

JavaBeans Mapeamento Persistência(from Data)

Business Objects

CAPES

(from Logical View)

CNPQ

(from Logical View)

Page 33: Arquitetura de Software

Visão Lógica (Data Layer)

1.1.

1 A

nális

e de

Arq

uite

tura

Persistência Mapeamento Persistência

PostgreSQLInterbaseJDBC-Interbase JDBC-PostgreSQL

Page 34: Arquitetura de Software

Identificar mecanismos de análise

• Identificação de padrões• Persistência, gerência de transação, ...

• Identificar problemas possivelmente implícitos• Não diretamente fornece funcionalidade

• Veja Design Patterns para detalhes.

1.1.

1 A

nális

e de

Arq

uite

tura

Page 35: Arquitetura de Software

Exemplo (mecanismo de análise)

• Persistência (um mecanismo identificado)• Analysis Patterns

Chapter 12 (Layered Architecture for Information Systems)Martin FowlerAddison-Wesley, 1997

• Object-Oriented Modeling and Design for Database ApplicationsChapter 13 (Relational Databases: Basics)Michael Blaha & Wiliam PremerlaniPrentice-Hall, 1998

• Mostra como implementar modelos orientados a objetos com bancos de dados relacionais.

1.1

Aná

lise

de A

rqui

tetu

ra

Page 36: Arquitetura de Software

Exemplo (observer pattern)

• Objeto deve notificar outros sem conhecer quem são estes outros• Enviar e-mail após alteração, ...

1.1

Aná

lise

de A

rqui

tetu

ra

Page 37: Arquitetura de Software

Identificar abstrações principais

• Identificar classes de análise oriundas de ...• Requisitos• Glossário

• Defina relacionamentos entre as classes• Em geral, vários diagramas são utilizados

• Durante o projeto, tais classes sofrerão alterações Poderão se tornar “classes”

• QUAL O OBJETIVO?• Identificar “conceitos principais” que o sistema manipulará

• Ao analisar UCs outras classes e relacionamentos surgirão

1.1

Aná

lise

de A

rqui

tetu

ra

Page 38: Arquitetura de Software

Exemplo (abstrações principais)

1.1

Aná

lise

de A

rqui

tetu

ra

ItemCalendárioCalendário

1..n1..nAtividade

ncreditosnome : String

TipoDisciplinatipo

Programa

EstagioDocenciaOutraAtividadedescricao : String

AreaConcentracao

AtividadeCreditominimomaximoobrigatorianome

1

n

1

n

Estrutura Curricular

11 11

Disciplinaementa

1..n 1..n1..n 1..nClassifica

nn

Executaperiodoconceitofrequencia

Aluno

(from Academia)

n nn n

Requerimento Comprovante

DocumentoData : Date

Diploma CertificadoInformeDataInicio : DateDataFim : Date

Page 39: Arquitetura de Software

Criar realizações de casos de uso

• Para cada UC, crie realização do UC• O nome da realização deve ser o mesmo• Crie uma dependência da realização para o UC• É bom lembrar ...

• UC especifica funcionalidade visível externamente• UC não fornece uma implementação• Colaboração descreve

• Objetos que implementam o comportamento do UC• Forma que interagem para obter este efeito

1.1

Aná

lise

de A

rqui

tetu

ra

Page 40: Arquitetura de Software

Exemplo (realizações de UCs)

1.1

Aná

lise

de A

rqui

tetu

ra

Limpar base de informes

(from Informes)

Excluir informe

(from Excluir informe)

Excluir informe

(from Informes)

Editar informe

(from Editar informe)

Limpar base de informes

(from Limpar base de informes)

Criar informe

(from Criar informe)

Consultar informes

(from Consultar informes)

Consultar informes

(from Informes)

Criar informe

(from Informes)

Editar informe

(from Informes)

Page 41: Arquitetura de Software

Desenvolver modelo de implantação

• Objetivo• Visão da distribuição geográfica• Entendimento da complexidade operacional do sistema

• Insumos• Usuários (localizações)• Dados do negócio• Especificação Suplementar

• Requisitos não-funcionais• Restrições

• Processo• Atender usuários, casos de uso, acesso a dados, ...

1.1

Aná

lise

de A

rqui

tetu

ra

Page 42: Arquitetura de Software

Exemplo (diagrama de implantação)

1.1

Aná

lise

de A

rqui

tetu

ra

Servidor CCPFJ

Servidor SISPG

preemptive

Servidor ApacheBanco de DadosServidor de Aplicações Java

Coordenação de Programa

Laser Printer

<<UFGNet>>

Câmera Digital

Impressão de Diplomas

<<UFGNet>>

Impressora de Diplomas

Navegante

<<Internet>>

Usuário

<<Internet>>

<<UFGNet>>

Page 43: Arquitetura de Software

Classe de Análise

• “Coisas” no sistema que possuem • Responsabilidade • Comportamento

• Abstração de um papel• PAPEL: definição de comportamento e responsabilidade

• Pode se referir a mais de um papel• Evolui em um ou mais elementos de projeto

• Classes• Subsistemas

1.2

Aná

lise

de U

C

Page 44: Arquitetura de Software

Classes de Análise (representação)

• Boundary class• Interação entre ator e sistema

• Control class• Comportamento específico de um ou mais UCs• Objetos que controlam outros objetos• Representa a dinâmica do sistema (fluxo de controle)

• Entity class• Modela informação e comportamento associado

Page 45: Arquitetura de Software

Classes de análise (exemplo)

: Gerencia Informes : Elemento de Informação

: Tela Informes : Usuário

1: Requisita informes 2: Obtem Informes 3: Obtem descrição

4: Mostra descrição de informes

Page 46: Arquitetura de Software

Considerações finais

• Arquitetura de software (item muito importante)• concepção e ELABORAÇÃO

• Definição do “raio-x da organização do sistema”• Faz uso de várias visões• Orienta posteriores atividades de análise & projeto

• Fase de Elaboração• Protótipo executável da arquitetura pode ser construído• Provavelmente na primeira iteração• Arquitetura estável deve ser atingida nesta fase