Você está na página 1de 33

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 19
Oliveira de Almeida)
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
Impressão
Alta coesão Relatório
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 21
Oliveira de Almeida)
Conceitos
Interface

Exemplo clássico: tomada!

Interface bem definida


Arquitetura de Software e
Padrões Arquiteturais (Hyggo 22
Oliveira de Almeida)
Conceitos
Interface

Exemplo clássico: tomada!

Abstração sobre... ... a implementação concreta

Arquitetura de Software e
Padrões Arquiteturais (Hyggo 23
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)

Arquitetura de Software e Padrões Arquiteturais (Hyggo Oliveira de Almeida) 24


Conectores

q  Veículos de comunicação entre componentes


ð  Descrição das interações entre componentes

q  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

Você também pode gostar