Arquitetura de software. Problema: vamos implementar um clone do compraentrega.com.br Mantém...

Preview:

Citation preview

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)

Recommended