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 focada em elementos de processamento e dados
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
A arquitetura envolve um conjunto de decisões de design, regras ou padrões que
restringem o projeto e a implementação
arquitetura
projeto
implementação
Código
As decisões de arquitetura são
as mais fundamentais e alterálas provoca efeitos colaterais
significativos.
Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
10
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
Acoplamento
Grau 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)
Arquitetura de Software e
Padrões Arquiteturais (Hyggo
Oliveira de Almeida)
19
Conceitos
Coesã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
Alta coesão
Impressão
Relatório
Interface
Baixa coesão
Interface
Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
20
Interface
As 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.
Arquitetura de Software e
Padrões Arquiteturais (Hyggo
Oliveira de Almeida)
21
Conceitos
Interface
Exemplo clássico: tomada!
Interface bem definida
Arquitetura de Software e
Padrões Arquiteturais (Hyggo
Oliveira de Almeida)
22
Conceitos
Interface
Exemplo clássico: tomada!
Abstração sobre...
Arquitetura de Software e
Padrões Arquiteturais (Hyggo
Oliveira de Almeida)
... a implementação concreta
23
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)
Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
24
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
Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
25
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
Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
26
Padrões de projeto
Soluções de projeto de baixo nível

Classes, objetos...
Mais detalhada

Visão interna dos componentes da arquitetura
Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
27
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
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
Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
31
O que vimos hoje?
Arquitetura de software
 O que é?
 Para que serve?
 Como documentar?
O que é padrão arquitetural
Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
32
O que veremos na próxima aula?
Padrão Layers (Camadas)
Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida)
33
Download

07.Arquitetura