Upload
fabio-nogueira-de-lucena
View
122
Download
0
Embed Size (px)
Citation preview
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
Onde obter mais informações ...
• ARQUITETURA DE SOFTWARE • Excelente ponto de partida:
• www2.umassd.edu/SECenter/SAResources.html
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
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
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
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
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
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.
Visão de Caso de Uso
• Fornece base para planejamento de iterações
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
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)
Visão lógica
• Base para compreensão da estrutura e organização do projeto
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
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>>
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>>
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>>
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?• ...
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
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
Definir arquitetura candidata
Refinar a arquitetura
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
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:
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:
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
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>>
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
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
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
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
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)
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
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
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
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
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
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
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
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)
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
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>>
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
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
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
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