arquitetura de software. problema: vamos implementar um clone do compraentrega.com.br mantém...
TRANSCRIPT
Arquitetura de software
Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Recebe encomendas e pagamento Recomenda itens a usuários
Por onde começamos?
“Arquitetura = {Elementos, Organização, Decisões}”
(Perry & Wolf)
“a estrutura ou estruturas do sistema, a qual é composta de elementos de software, as propriedades externamente visíveis desses elementos, e os relacionamentos entre eles.”
(Bass et al.)
Arquitetura é a organização fundamental de um sistema, representada por seus componentes, seus relacionamentos com o ambiente, e pelos princípios que conduzem seu design e evolução.
(IEEE)
Elementos em comum: Descrição dos componentes principais Relacionamentos e interações entre componentes Omite informação sobre o conteúdo dos
componentes não relacionada a suas interações O comportamento dos componentes é uma parte da
arquitetura enquanto possa ser discernido do ponto de vista de outro componente
A arquitetura define uma lógica por trás dos componentes e da estrutura
Arquitetura é processo e artefato(assim como projeto)
“Arquitetura do Facebook”
vs.
“Um livro sobre Arquitetura de Software”
Visão focada em módulos funcionais
Vis
ão f
oca
da e
m e
lem
en
tos
de p
roce
ssam
en
to e
dad
os
Arquitetura não é só sobre funcionalidade
Envolve: Funcionalidade Usabilidade Desempenho Reuso Segurança Facilidade de compreensão Restrições e equilíbrio de fatores econômicos
e tecnológicos
9
10Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
A arquitetura envolve um conjunto de decisões de design, regras ou padrões que restringem o projeto e a implementação
Código
implementação
arquitetura
projeto
As decisões de arquitetura são as mais fundamentais e alterá-las provoca efeitos colaterais significativos.
Distinções importantes
Arquitetura vs. Projeto
A arquitetura é um aspecto do projeto, focada em elementos que são importantes estruturalmente elementos que têm impacto significativo em
desempenho, confiabilidade, custo, adaptabilidade, etc.
A arquitetura não diz respeito ao projeto detalhado de componentes individuais
Arquitetura vs. Infraestrutura
Infraestrutura é parte integral e importante da arquitetura
A arquitetura define interoperabilidade entre a infraestrutura e os componentes da aplicação
Arquitetura aborda estrutura, decomposição, interfaces, etc.
Arquitetura aborda... Aspectos dinâmicos Argumentação lógica Adequação ao contexto
“A arquitetura é um diagrama”
A arquitetura é plana apenas em casos muito triviais
A arquitetura tem muitas dimensões, que representam múltiplas questões de múltiplos stakeholders
Usar um único diagrama para representar todas as dimensões da arquitetura leva à sobrecarga semântica (leia-se “confusão”)
Arquitetura requer múltiplas visões
como e porque
Como e por que
Queremos organizar módulos, dependências, processos e acesso a dados*
Queremos promover: Integridade e qualidade do sistema Controle da complexidade Previsibilidade Testabilidade Reuso Comunicação Organização e gerência de projetos
Arquitetar ou não?
Sistemas muito simples têm arquitetura trivial
Sistemas grandes dependem de arquitetura
Alguns conceitos relevantes
Acoplamento
Coesão
Interface
Componentes
Conectores
Estilo arquitetural
Padrões de projeto
Visão arquitetural
19Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
AcoplamentoGrau de interconexão entre diferentes pedaços de um sistema
Pedaços menos acoplados são mais fáceis de entender, testar, reusar e manter
Baixo acoplamento também promove o paralelismo de implementação
Alto Acoplamento(efeito cascata)
20Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
ConceitosCoesão
Quão proximamente são relacionadas as atividades dentro de um único pedaço (componente) ou entre um grupo de padaços? Componentes altamente coesos = relacionados a
apenas UMA funcionalidade
Impressão
Relatório
Interface
ImpressãoRelatórioInterface
Alta coesão
Baixa coesão
21Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
InterfaceAs maneiras em que subsistemas dentro de um
projeto maior interagem são claramente definidas.
Idealmente, interações são especificadas de um modo que possam se manter relativamente estáveis ao longo do ciclo de vida do sistema.
Um modo de alcançar isso é através de abstrações sobre a implementação concreta.
22Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
ConceitosInterface
Exemplo clássico: tomada!
Interface bem definida
23Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
ConceitosInterface
Exemplo clássico: tomada!
Abstração sobre... ... a implementação concreta
24Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
Componentes
• Unidades de distribuição, montagem, implantação e substituição
• Executam funcionalidade não trivial• Um componente é definido pelos serviços que provê e pelos
serviços que requer• Não necessariamente uma única unidade de código ou um
único executável
(não estamos falando de ES orientada a componentes)
25Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
Conectores
Veículos de comunicação entre componentes Descrição das interações entre componentes
Exemplos de conectores: Chamadas de procedimento Anúncios de eventos Protocolos de comunicação Invocações de serviços
26Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
Estilo ou padrão arquitetural
Vocabulário de tipos de componentes e conectores
+Conjunto de restrições sobre como eles podem ser
combinados
Exemplos: Cliente-Servidor, Pipes and Filters, Model-View-
Controller, Broker
27Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
Padrões de projeto
Soluções de projeto de baixo nível Classes, objetos...
Mais detalhada Visão interna dos componentes da arquitetura
Visão arquitetural
Diferentes visões pedem diferentes representações Diagramas de pacotes
de componentes de classes de sequência
Visão estática
Visão dinâmica
31Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
Padrões Arquiteturais
Um estilo/padrão arquitetural expressa: Uma organização estrutural Um conjunto pré-definido de subsistemas e
suas responsabilidades Inclui regras e diretrizes para organizar o
relacionamento entre os subsistemas
São “templates” para arquiteturas concretas
32Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
O que vimos hoje?
Arquitetura de software O que é? Para que serve? Como documentar?
O que é padrão arquitetural
33Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
O que veremos na próxima aula?
Padrão Layers (Camadas)