33
Arquitetura de software

Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

Embed Size (px)

Citation preview

Page 1: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

Arquitetura de software

Page 2: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

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?

Page 3: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

“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)

Page 4: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

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

Page 5: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

Arquitetura é processo e artefato(assim como projeto)

“Arquitetura do Facebook”

vs.

“Um livro sobre Arquitetura de Software”

Page 6: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas
Page 7: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

Visão focada em módulos funcionais

Page 8: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

Vis

ão f

oca

da e

m e

lem

en

tos

de p

roce

ssam

en

to e

dad

os

Page 9: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

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

Page 10: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

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.

Page 11: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

Distinções importantes

Page 12: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

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

Page 13: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

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

Page 14: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

“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

Page 15: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

como e porque

Page 16: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

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

Page 17: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

Arquitetar ou não?

Sistemas muito simples têm arquitetura trivial

Sistemas grandes dependem de arquitetura

Page 18: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

Alguns conceitos relevantes

Acoplamento

Coesão

Interface

Componentes

Conectores

Estilo arquitetural

Padrões de projeto

Visão arquitetural

Page 19: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

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)

Page 20: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

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

Page 21: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

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.

Page 22: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

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

ConceitosInterface

Exemplo clássico: tomada!

Interface bem definida

Page 23: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

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

ConceitosInterface

Exemplo clássico: tomada!

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

Page 24: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

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)

Page 25: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

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

Page 26: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

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

Page 27: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

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

Page 28: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

Visão arquitetural

Diferentes visões pedem diferentes representações Diagramas de pacotes

de componentes de classes de sequência

Page 29: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

Visão estática

Page 30: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

Visão dinâmica

Page 31: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

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

Page 32: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

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

Page 33: Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Mantém preços atualizados Recebe encomendas

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

O que veremos na próxima aula?

Padrão Layers (Camadas)