arquitetura de sistemas · arquitetura de software. [email protected] • uma arquitetura...
TRANSCRIPT
![Page 1: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/1.jpg)
Fabio Perez Marzullo
IEEE Body of Knowledge on Services Computing
Sponsored by Technical Committee on Services Computing, IEEE Computer Society
Arquitetura de Sistemas
![Page 2: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/2.jpg)
• Modelos mentais
• Modelos explícitos
• Arquitetura de software
• Estilos arquiteturais
• Frameworks
• Padrões de Projeto
Projeto Arquitetural
![Page 3: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/3.jpg)
Projeto Arquitetural
Como seria a imagem da Catedral de Notre-Dame na cabeça dos projetistas?
![Page 4: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/4.jpg)
• Os projetistas criam modelos mentais sobre os elementos que pretendem construir.
• Modelos mentais são limitados:
– Simplistas.
– Dificuldades de detalhamento.
– Dificuldades de comunicação.
– Dificuldades de verificação.
– Dificuldades de compartilhamento.
Projeto Arquitetural
![Page 5: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/5.jpg)
• Modelos explícitos são criados
para formalizar a arquitetura.
• Este conjunto de modelos define a arquitetura!
Projeto Arquitetural
![Page 8: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/8.jpg)
Definições
“A estrutura de componentes de um programa/sistema, seus relacionamentos, princípios e guidelines que governam seu
projeto e evolução ao longo do tempo” (SEI, 1994).
“Uma coleção de componentes computacionais juntamente com uma
descrição das interações entre estes componentes (conectores)”
(Garlan e Shaw, 1993) .
“Uma arquitetura deve ser vista e descrita sob diferentes perspectivas e deve identificar seus componentes,
relacionamentos estáticos, interações dinâmicas, propriedades, características e restrições” (Penedo e Ridle,
1993).
Arquitetura de Software
![Page 9: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/9.jpg)
• Conceito
– define as principais características
esperadas e os fundamentos a partir dos
quais as partes da obra serão construídas;
– os princípios arquitetônicos direcionam as
decisões futuras (acrescentando restrições);
Arquitetura de Software
![Page 10: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/10.jpg)
• Objetivos:
� conter as principais decisões de projeto;
� direcionar o projeto detalhado dos
componentes de um sistema;
� formar o núcleo conceitual do sistema,
destacando seus componentes e mantendo
sua integridade conceitual;
Arquitetura de Software
![Page 11: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/11.jpg)
• Benefícios proporcionados:
– Gerência da complexidade.
– Facilidade de comunicação entre desenvolvedores.
– Facilidade de comunicação com clientes e gerentes.
– Possibilidade de reuso.
– Evolução de sistemas.
– Novas oportunidades para análise:
• (ex. consistência, atributos de qualidade, atendimento a estilos arquiteturais)
Arquitetura de Software
![Page 12: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/12.jpg)
• Considere o exemplo abaixo:
– O que podemos dizer sobre este sistema?
Arquitetura de Software
![Page 13: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/13.jpg)
• O que podemos dizer?
– Informação extraída do diagrama:
� O sistema consiste de cinco componentes.
� Quatro componentes têm mais em comum com
os demais do que com o quinto componente.
� Alguns componentes estão relacionados entre si,
o que pode ser visto pelas conexões apresentadas.
Arquitetura de Software
![Page 14: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/14.jpg)
Se a arquitetura é uma descrição dos componentes e suas relações, o diagrama anterior poderia ser uma
arquitetura?
SIM!
• Entretanto, não podemos dizer muito sobre o sistema:
– Qual o significado da separação entre os componentes?
– Eles consistem de programas ou processos separados?
– As associações indicam controle ou fluxos de dados ?
– Quais os mecanismos utilizados na comunicação entre eles?
– Qual o significado da organização dos componentes?
– Como os componentes operam em tempo de execução?
Arquitetura de Software
![Page 15: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/15.jpg)
• Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os
aspectos de concorrência e sincronização do sistema.
– Uma visão lógica para oferecer um retrato estático das classes do problema e seus relacionamentos.
– Uma visão física para relacionar o software e o hardware, como os processadores e ligações no ambiente de operação.
– A visão de cenários para explicar como as demais visões operam em conjunto.
Visões de uma Arquitetura
![Page 17: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/17.jpg)
• Focaliza a decomposição do sistema em tarefas e atividades:
– Um software é dividido em diversas tarefas independentes.
– Mostra a alocação de componentes executáveis a processos.
• Atributos não funcionais:
– Enfoca atributos não funcionais do sistema como sua disponibilidade, desempenho e confiabilidade.
– A execução concorrente exige sincronização:• Barreiras, sinais e semáforos.
• Comunicação síncrona ou assíncrona. • Broadcast, mensagens ou RPC (remote procedure call) .
Visão dos Processos
![Page 18: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/18.jpg)
• Associada a modelagem dinâmica (UML):
→ Diagramas de Interação:
• sequência;
• atividades;
• colaboração.
→ Diagrama de Estado.
Visão dos Processos
![Page 19: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/19.jpg)
• Enfatiza as estruturas estáticas presentes no
sistema:
– A visão lógica é composta por diagramas de
classes e pacotes.
– Os diagramas apresentam as principais abstrações
do sistema.
– Relacionamentos entre as classes e os pacotes.
– Artefato utilizado: diagrama de classes da análise.
Visão Lógica
![Page 20: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/20.jpg)
→ Atividades:
Incluir classes referentes aos aspectos computacionais.
Classificar as classes em grupos de maior afinidade.
Heurística: redução das dependências entre pacotes.
→ Produto gerado:
Diagrama apresentando as relações entre os pacotes.
Visão Lógica
![Page 21: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/21.jpg)
• Especificação da interface dos componentes:
– Via de comunicação entre os programadores visuais e os programadores de componentes.
– Os componentes devem oferecer um conjunto limitado de métodos, a partir dos quais a interface
será construída.
– A tecnologia influencia a interface entre os
componentes e a programação visual.
Visão Lógica
![Page 22: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/22.jpg)
• Mapeia os processos em unidades
– Um processo é uma linha de controle
executada em uma unidade de
processamento.
– Sistemas grandes ou distribuídos podem ser
quebrados em diversos processos.
– Considera requisitos como capacidade de
resposta, desempenho, tolerância a falhas,
entre outros.
Visão Física
![Page 23: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/23.jpg)
• Mapeia os processos em unidades
– Considera peculiaridades de
implementação, tais como a necessidade de
processadores específicos.
– Diagramas de produção (deployment
diagrams) mostram as unidades de
processamento e seus processos.
Visão Física
![Page 24: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/24.jpg)
Diagramas de distribuição:
• Processos e unidades de processamento :
– Unidades de processamento são representadas por cubos.
– Suas conexões mostram suas vias de comunicação.
– Suas conexões com processos indicam sua
execução.
Visão Física
![Page 25: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/25.jpg)
• Cenários mantém as três visões unidas
– Cenários servem como guia ao projeto da
arquitetura:
• Ajudam os projetistas a se concentrarem em questões concretas.
• Determinam as prioridades do sistema.
Visão dos Cenários
![Page 26: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/26.jpg)
– Cenários acrescentam dinâmica aos elementos estáticos observados até aqui (interações entre as classes).
– Diagramas de colaboração com as novas classes criadas durante o desenvolvimento da arquitetura apresentam suas relações com as classes de análise (como a seqüência de mensagens trocadas para se atingir uma função do sistema).
Visão dos Cenários
![Page 27: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/27.jpg)
• O que deve ser construído em um projeto?
� Um conjunto de casos de uso, que capturam as principaisfuncionalidades do sistema através de suas interações com os atores
envolvidos.
� Um diagrama de classes conceitual, apresentando os principais elementos envolvidos no domínio do problema.
� Um conjunto de diagramas de colaboração (eventualmente),descrevendo o fluxo de mensagens trocadas entre os objetos emdeterminados cenários.
Visões de uma Arquitetura
![Page 28: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/28.jpg)
• O que deve ser construído em um projeto?
� Um conjunto de diagramas de estado (eventualmente), ressaltando algumas
características dos objetos que são dependentes do tempo.
� Um conjunto de digramas de componentes, que demonstra como a troca de mensagens (interação) ocorre.
� Um conjunto de diagramas de distribuição, que determina a disposição física dos componentes de
software.
Visões de uma Arquitetura
![Page 29: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/29.jpg)
• Descrição detalhada da arquitetura – Descrição textual da filosofia da arquitetura.
– Descrição textual das restrições que orientam sua construção.
– Compromissos realizados e alternativas avaliadas durante o projeto.
– Apresentação da visão lógica, na forma de um diagrama de classes.
– Diagramas de distribuição, descrevendo as demais visões.
– Cenários e sequências mais relevantes para a arquitetura.
Documentação
![Page 30: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/30.jpg)
• Documentos complementares
– Guias para definição da interface com o
usuário.
– Guias de codificação.
Documentação
![Page 31: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/31.jpg)
• Importância
• Componentes e Conectores
• Principais estilos
• Características dos estilos
Estilos Arquiteturais
![Page 32: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/32.jpg)
São definidos como coleções de
componentes, descrições de suas
interações (conectores) e suas restrições.
A combinação de diversos estilos pode ocorrer em uma aplicação.
Estilos Arquiteturais
![Page 33: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/33.jpg)
• Principais estilos arquiteturais: – Pipes & Filters
– Em Camadas – Baseado em Eventos
– Repositórios – MVC (Model -View -Controller)
– Microkernel
• Outros estilos conhecidos: – Processos Distribuídos
– Orientado a objetos
– Programa principal com sub-rotinas
Estilos Arquiteturais
![Page 34: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/34.jpg)
� Cada componente tem um protocolo de entrada e outro de saída.
� Os filtros podem receber apenas parte da entrada de cada vez, gerando apenas parte do resultado
final.
� Assim, uma aplicação se refere a um conjunto incremental de transformações das entradas em
saídas.
Pipes & Filters
![Page 35: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/35.jpg)
• Componentes
– Filtros: são responsáveis pelo processamento
dos dados de entrada e geração dos arquivos
de saída.
– Tubos (Pipes): são canais por onde fluem as
entradas e saídas entre os filtros.
Pipes & Filters
![Page 38: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/38.jpg)
• Restrições– Filtros são unidades independentes.
– Um filtro não conhece a identidade dos outros.
– A saída de um filtro não depende da ordem dos filtros.
– Exemplos: • Shell Unix.
• Compiladores.
Pipes & Filters
![Page 39: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/39.jpg)
• Vantagens– O comportamento do sistema é simples de
entender, pois os filtros podem ser estudados isoladamente.
– Suporte ao reuso, visto que os filtros podem ser conectados em diferentes configurações e aplicações.
– Facilidades de manutenção, no que concerne àalteração dos filtros e a inclusão de novos filtros.
Pipes & Filters
![Page 40: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/40.jpg)
• Desvantagens – Tráfego de informações entre os filtros.
– Possibilidade de perda de desempenho (alta especialização).
• Aplicações – Aplicações que consistem primordialmente de
processamento em seqüência.
– Limites das aplicações, onde dados são recebidos, filtrados e transformados (fila de mensagens, ...).
Pipes & Filters
![Page 41: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/41.jpg)
� Um sistema em camadas é organizado
hierarquicamente, onde cada camada provê
serviços para a camada acima.
� Uma camada funciona como uma máquina
virtual, que disponibiliza os serviços para a
camada superior.
� As camadas se comunicam entre si por um
protocolo padronizado.
Camadas
![Page 42: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/42.jpg)
• Componentes:
– Camadas: responsáveis pelo processamento
de dados com base nos serviços oferecidos
por camadas inferiores.
– Conectores:
• Protocolos: que determinam como as camadas se comunicam.
Camadas
![Page 45: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/45.jpg)
• Restrições:– Restrições topológicas que limitam a interação
entre as camadas adjacentes.
• Exemplos: – Protocolos de comunicação em camadas (OSI).
– Sistemas gerenciadores de bancos de dados.
– Sistemas operacionais.
Camadas
![Page 46: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/46.jpg)
• Vantagens – Representam uma extensão do princípio do encapsulamento
de dados.
– Permitem que o projeto seja descrito como uma seqüência de incrementos.
– Suportam a reutilização, visto que as camadas podem ser reutilizadas em outras aplicações (eventual ajuste de protocolo).
• Desvantagens – Possibilidade de perda de desempenho por alta
especialização.
Camadas
![Page 47: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/47.jpg)
� Nas arquiteturas baseadas em eventos,
existem centrais de recepção de eventos,
que sinalizam componentes interessados
quando um evento ocorre.
� Os componentes atualizam seu estado
interno sempre que recebem um aviso das
centrais que assinaram.
Baseada em Eventos
![Page 48: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/48.jpg)
• Componentes
– Centrais de eventos: responsáveis pela detecção dos eventos.
– Assinantes: componentes interessados nos
eventos.
• Conectores
– Eventos: informações sobre os eventos ocorridos.
– RPC: chamada remota de procedimento, para aviso dos eventos.
Baseada em Eventos
![Page 50: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/50.jpg)
• Restrições
– Idealmente, as centrais não devem depender dos
tipos dos assinantes.
• Exemplos
– Pacotes e bibliotecas de interface com o usuário.
– Sistemas de troca de mensagens.
– Depuradores.
Baseada em Eventos
![Page 51: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/51.jpg)
• Vantagens – Suporte a reutilização, visto que novos componentes podem
ser introduzidos no sistema apenas por um processo de registro.
– Redução das dependências do sistema, especialmente se este é composto de múltiplas visões de um mesmo item.
• Desvantagens – Sempre que a identidade de um assinante se altera, todas as
centrais de evento devem ser notificadas.
– Os componentes não podem depender da ordem em que são ativados na ocorrência de um evento.
Baseada em Eventos
![Page 52: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/52.jpg)
• Aplicações:
– Módulos que monitoram sensores externos.
– Módulos que monitoram provedores de
dados.
– API´s Java.
Baseada em Eventos
![Page 53: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/53.jpg)
� Consiste de diversas unidades
independentes que interagem com uma
central de acesso a dados ou objetos.
� O repositório oferece um conjunto de
mecanismos (API de acesso) por meio do qual
as informações são manipuladas.
Repositório
![Page 55: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/55.jpg)
• Componentes
– Repositório: elemento central que mantém as
informações:
• Agente: componente externo ao repositório que utiliza e atualiza suas informações.
– Conectores: protocolo de comunicação entre
os agentes e o repositório.
Repositório
![Page 56: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/56.jpg)
• Restrições
– O repositório não conhece a identidade dos
agentes Os agentes não se conhecem entre si.
• Exemplos
– Sistemas de informação.
– Sistemas de gerenciamento de banco de dados.
– Diversos ambientes de desenvolvimento de
software.
– Processamento de sinais e voz.
Repositório
![Page 57: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/57.jpg)
• Vantagens
– Regras de acesso aos agentes são facilmente
implantadas.
– Agentes são implementados de forma independente.
• Desvantagens
– Necessidade de controle ao acesso concorrente.
– Perda de desempenho com o repositório
sobrecarregado.
Repositório
![Page 58: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/58.jpg)
� O estilo propõe a divisão de uma aplicação em 3 partes:
� representação;
� controle; e
� apresentação.
Model – View – Controller
![Page 59: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/59.jpg)
– O modelo representa as classes do domínio do
problema.
– A visão apresenta as informações do modelo ao usuário. Podem existir múltiplas visões de um
mesmo modelo.
– Os controladores encapsulam as regras de
negócio, sendo responsável por fazer a comunicação entre o modelo e a visão.
Model – View – Controller
![Page 62: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/62.jpg)
• Componentes:
– Modelos: representam o domínio do
problema.
– Visões: apresentação dos elementos do
modelo ao usuário.
• Conectores:
– Controles: realizam a conexão entre os
modelos e a interação com o usuário.
Model – View – Controller
![Page 63: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/63.jpg)
• Restrições – A visão e o controle se conhecem
mutuamente.
– O modelo não deve conhecer suas visões.
– O modelo não deve conhecer seus controladores.
• Exemplos – Diversos aplicativos com interface gráfica.
– Diversos aplicativos para plataforma Web.
Model – View – Controller
![Page 64: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/64.jpg)
• Vantagens– Podem ser criadas diversas visões para um mesmo
modelo. – As responsabilidades da aplicação são
objetivamente divididas.
– Permite um crescimento consistente da aplicação.– Permite a distribuição dos elementos da aplicação
(Web). – Permite interfaces com o usuário mais sofisticadas.
• Desvantagens – Para aplicações muito simples, sobrecarga de
classes. – Nenhuma óbvia para aplicações mais complexas.
Model – View – Controller
![Page 65: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/65.jpg)
� As arquiteturas microkernel propõem encapsular os serviços fundamentais em um componente
denominado núcleo.
� A aplicação é vista como um núcleo cercado por de agentes/centrais de serviços.
Microkernel
![Page 66: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/66.jpg)
Microkernel
Componente 1
Núcleo
Componente 2
Componente 3
Componente 4Componente 5
Componente 6
![Page 67: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/67.jpg)
• Componentes
– Núcleo: responsável por prover os serviços.
– Agentes: utilizam os serviços oferecidos pelo
núcleo.
• Conectores
– Protocolos na interface dos servidores
externos.
Microkernel
![Page 68: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/68.jpg)
• Restrições
– Os núcleos não devem conhecer seus
agentes.
– Os agentes não devem conhecer a
implementação dos núcleos.
• Exemplos
– Sistemas operacionais de tempo real.
Microkernel
![Page 69: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/69.jpg)
• Vantagens
– Separação das responsabilidades da aplicação
– Projeto baseado em interface
– Facilidades de distribuição (Web)
• Desvantagens
– Perda de desempenho devido a alta especialização
– Necessidade de interação com muitos núcleos para
uma tarefa
– Dificuldades na separação das responsabilidades
dos núcleos
Microkernel
![Page 71: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/71.jpg)
• “Um framework é uma coleção de classes abstratas e concretas que partilham uma interface de comunicação, e um projeto arquitetural”.
• “Um framework é um software parcialmente completo (subsistema) que deve ser instanciado”.
Frameworks
![Page 72: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/72.jpg)
• Frameworks de Infraestrutura:
� consistem de uma coleção de frameworks adaptáveis que apoiam a
infraestrutura de qualquer tipo de sistema.
�ex: interfaces de usuário, persistência de objetos, de comunicação e de
processamento de linguagens.
Tipos de Frameworks
![Page 74: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/74.jpg)
• Frameworks de Integração:
�estes frameworks são projetados para modularizar, reutilizar e integrar
aplicações que apresentam componentes distribuídos.
�ex: middleware para sistemas distribuídos
Tipos de Frameworks
![Page 76: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/76.jpg)
• Frameworks de Domínio de Aplicações:
� são dirigidos a um domínio específico de aplicações;
�caros para desenvolver e difíceis de comercializar.
Tipos de Frameworks
![Page 77: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/77.jpg)
• Desenvolvimento: – definição do escopo;
– documentação;
– métodos de desenvolvimento de framework;
– Identificação dos limites e pontos de extensão do framework;
– testes e liberação para uso de um framework.
Dificuldades quanto ao
uso de Frameworks
![Page 78: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/78.jpg)
• Utilização:
– problemas quanto ao entendimento de como
utilizar o framework;
– compreensão e depuração do código da
aplicação específica.
Dificuldades quanto ao
uso de Frameworks
![Page 79: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/79.jpg)
• Comercialização:
– certeza de que os consumidores ou clientes
concordam com a abordagem do
framework;
– certeza de que o cliente reconhece que a
construção de um framework é um
investimento a longo prazo;
Dificuldades quanto ao
uso de Frameworks
![Page 81: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/81.jpg)
• Arquiteto:
–– Christopher AlexanderChristopher Alexander
– Linguagem de padrões em arquitetura
• catálogo com 253 padrões para edificações ligadas a regiões, cidades, transportes, casas,
escritórios, paredes, jardins, etc.
Histórico
![Page 82: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/82.jpg)
• Surgiram no início dos anos 90;
• Permitem que desenvolvedores possam recorrer a soluções já existentes para solucionar problemas comuns;
• Padrões capturam experiência existente e comprovada em desenvolvimento de software, ajudando a garantir a qualidade do produto final.
Definição
![Page 83: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/83.jpg)
• Nome do padrão: cuidado com a escolha do
nome de um padrão. Sugere-se o uso de
substantivos para nomes de padrões e de
menor tamanho possível.
• Problema: geralmente descrito por meio de uma
frase interrogativa. Define o problema que é
motivou a criação do padrão.
• Contexto: situações de aplicação do padrão.
Formato de um Padrão
![Page 84: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/84.jpg)
• Forças: vantagens de uso do padrão. Identifica
as abordagens existentes para sua solução e os
conflitos existentes nas soluções do problema.
• Solução: faz-se uma avaliação das forças e
então se propõe uma solução para o problema.
• Autor e Data: autores do padrão e data da
criação.
Formato de um Padrão
![Page 85: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/85.jpg)
• Gangue dos 4: – Erich Gamma, Richard Helm, Ralph Johnson e John
Vlissides.
– Interpretação e Formato de padrões mais conhecido.
– Série de 23 padrões para projeto de software OO, documentados num catálogo de padrões de projeto conhecido como:
"Design Patterns: Elements of Reusable Object-Oriented Software” .
– Reúne soluções para problemas de reuso (adaptação) de frameworks.
– Padrões de criação, estruturais e comportamentais.
Tipos de Padrões de Projeto
![Page 86: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/86.jpg)
Tipos de Padrões de Projeto
• Padrões arquiteturais
• Padrões em SOA
• Padrões para aplicações específicas
– Desktop
– Mobile
– Web
![Page 87: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/87.jpg)
• Nome: Decorator
• Problema: deseja-se acrescentar responsabilidades a objetivos individuais, e não a toda uma classe.
• Solução: atribuir responsabilidades adicionais a um objeto dinamicamente. Os decorators fornecem uma alternativa flexível a subclasses para extensão da funcionalidade.
Exemplos de Padrões
![Page 88: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/88.jpg)
• Nome: Adapter
• Problema: classes não são reutilizadas, pois suas interfaces nãocorrespondem à interface específica de um domínio requerida por uma aplicação
• Solução: Converte a interface de uma classe em outra interface esperada pelos clientes. O adapter permite que certas classes trabalhem em conjunto, pois de outra forma seria impossível por causa
de suas interfaces incompatíveis.
Exemplos de Padrões
![Page 89: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/89.jpg)
Como escolher um padrão?
• Compare as descrições da categoria de padrão
e da categoria do problema para verificar a
compatibilidade entre os mesmos.
• Compare benefícios e problemas no uso do
padrão.
• Selecione as variáveis que melhor implementam
a solução do problema de projeto.
![Page 90: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/90.jpg)
• Ajuda na comunicação entre os envolvidos (técnicos) no projeto.
• Melhora o entendimento do problema que está sendo resolvido.
• Quando usado com inteligência, ajuda em futuras manutenções (adaptativa, evolutiva ou corretiva).
Vantagens
![Page 101: Arquitetura de Sistemas · Arquitetura de Software. fabio@mz-empresarial.com.br • Uma arquitetura requer diversas visões: – Uma visão de processo para demonstrar os aspectos](https://reader033.vdocuments.net/reader033/viewer/2022052718/5f0479b27e708231d40e278a/html5/thumbnails/101.jpg)
10 – Se você não entendeu o
processo de negócio, não
criará uma arquitetura
adequada.
Dicas