Baixe o app para aproveitar ainda mais
Prévia do material em texto
Estilos Arquiteturais Marcos Dósea dosea@ufs.br Atualizado por: Breno Santos breno.itatechjr@gmail.com Agenda • Motivação. • O que é arquitetura de software? • Qual a importância? • Visões da arquitetura. • Como definir a arquitetura? Motivação • Arquitetar uma casinha de cachorro… – Pode ser construída por 1 pessoa. – Modelagem simplificada. – Processo simples. – Ferramentas simples. Motivação • Arquitetar um prédio… – Necessidade de um time. – Requer maior modelagem. – Processo mais bem definido. – Ferramentas poderosas. • Estabelece o contexto para o design e implementação. • Decisões arquiteturais são as mais significantes. O que é arquitetura de software? CÓDIGO implementação design arquitetura Visões da Arquitetura Visão de Implementação Visão Lógica Visão de Distribuição Visão de Processos Visão de Casos de Uso Analista de Sistemas Funcionalidade Programadores Arquiteto Escalabilidade, Performance, Eficiência Topologia, Implantação, comunicação Arquiteto Estrutura, componentes Arquiteto Como definir a arquitetura? • Definindo quais padrões utilizar… Estilo Arquitetural Padrões de Design Idiomas Estilos Arquiteturais Define uma família de sistemas em termos de um padrão de organização estrutural (Shaw, 1996). Define um vocabulário de componentes, tipos de conectores e um conjunto de restrições que indica como os elementos são combinados. Estilos Arquiteturais • Fluxo de Dados. • Chamada Retorno. • Componentes Independentes. • Máquina Virtual. • Centrado nos Dados. Fluxo de Dados O sistema realiza uma série de transformações sucessivas sobre uma cadeia de dados. A meta é reuso e modificabilidade. Fluxo de Dados • Batch: – Programas independentes executados em sequência. – Dado transmitido por completo entre um programa e outro. Jar JavaJavac class{ } Arquivos fonte A$n3* 3N4*# Bytecode 000 1001 1001 Arquivo Jar executandoEmpacotandoCompilando Estilos Arquiteturais • Pipes and Filters: Código-fonte Analisador Léxico Analisador Sintático Analisador Semântico Gerador de código intermediário Otimizador Intel backend MIPS backend SPARC backend tokens Árvore sintática Árvore sintática c/ semântica ExecutávelExecutável otimizado Estilos Arquiteturais • Fluxo de Dados > Pipes and Filters: – Transformação sequencial dos dados efetuada por vários componentes (filtros) em sucessão. – Os filtros realizam o processamento dos dados de entrada. – Pipes conectam os filtros, transmitido os dados de saída de um filtro para as entradas de outro. Estilos Arquiteturais • Fluxo de Dados > Pipes and Filters: – Dificuldade para interatividade e cooperação entre os filtros. – Baixa performance. • Melhorada através de buffers ou paralelização do sistema. Estilos Arquiteturais • Fluxo de Dados. • Chamada Retorno. • Componentes Independentes. • Máquina Virtual. • Centrado nos Dados. Chamada Retorno Criam sistemas modificáveis e escaláveis. Maior parte dos sistemas utilizam essa abordagem. Chamada Retorno • Programa Principal / Subrotina: Programa principal Subrotina 3Subrotina 1 Subrotina 2 Chamada Retorno • Programa Principal/Subrotina: – Reutilização de subrotinas. – Desenvolvimento independente de subrotinas. Chamada Retorno • Invocação Remota de Procedimento: Programa principal Subrotina 1 Subrotina 2 192.168.10.11 Subrotina 3 192.168.10.8 Chamada Retorno • Invocação Remota de Procedimento: – Subrotinas executam em outras máquinas conectadas a rede. Chamada Retorno • Camadas (Layered): Aplicação Apresentação Sessão Transporte Rede Dados Física Apresentação Negócio Armazenamento ISO-OSI Clássica 3 camadas Chamada Retorno • Camadas (Layered): – Camadas se comunicam apenas com as camadas adjacentes. – Alterações locais não são propagadas. – Fácil manutenção. – Problemas de desempenho e comunicação. – Torna a implementação e testes de sistemas mais complexo. Chamada Retorno • Camadas (Layered) > MVC: – Basicamente, é composto por 3 camadas. – Padrão comportamental. – Cada camada possui sua responsabilidade. – Fácil manutenção e implementação. – Amplamente aceito. Chamada Retorno • Camadas (Layered) > MVC: Estilos Arquiteturais • Fluxo de Dados. • Chamada Retorno. • Componentes Independentes. • Máquina Virtual. • Centrado nos Dados. Componentes Independentes • Comunicação de Processos: – Baseado na comunicação via troca de mensagens entre processos. – Em geral, ocorre via rede. • Cliente–Servidor. • Ponto-a-Ponto. Componentes Independentes • Comunicação de Processos > Cliente- Servidor: – Alta dependência do servidor. Clientes Servidor Aplicação: Internet Componentes Independentes • Comunicação de Processos > Ponto-a- Ponto: – Não há distinção entre nós. – Cada nó é cliente e servidor ao mesmo tempo. – Cada nó mantém seus próprios dados e endereços conhecidos. Componentes Independentes • Baseados em Eventos (Invocação Implícita): – Produtores e consumidores independentes. – Procedimentos disparados via mudança de estado. – Escalabilidade no número de interessados. menuDown onMouseOver onMouseClick onMousePressed onMouseReleased onKeyUp Estilos Arquiteturais • Fluxo de Dados. • Chamada Retorno. • Componentes Independentes. • Máquina Virtual. • Centrado nos Dados. Máquina Virtual • Interpretador: – Simular funcinalidade não nativa para obter portabilidade. public class Oi{ ... } Arquivo “Oi.java” Compilador Java “javac.exe” Êþº¾ 1 <init> ()V Code LineNumberTable main ([Ljava/lang/String;)... Arquivo “Oi.class” bytecode Máquina Virtual Máquina Virtual Máquina Virtual Máquina Virtual INTERPRETA Máquina Virtual Máquina Virtual • Baseado em Regras: – Conjunto de regras sobre um estado. – Definição do estado atual com base em dados de entrada. – Regras alteram o estado. Máquina Virtual • Baseado em Regras: – Exemplo: Prolog, Sistemas Especialistas. SE “HORA=21:00” ENTÃO “AÇÃO=LANCHE” SE “HORA=22:00” ENTÃO “AÇÃO=LIBERAR” SE “HORA<19:00” ENTÃO “AÇÃO=ESPERAR” SE “HORA=19:00” ENTÃO “AÇÃO=COMEÇAR” HORA = ? AÇÃO = ? Máquina de inferência HORA=18:00 Base de Regras Memória de trabalho Estilos Arquiteturais • Fluxo de Dados. • Chamada Retorno. • Componentes Independentes. • Máquina Virtual. • Centrado nos Dados. Centrado nos Dados • Repositório (Banco de Dados): – Clientes operam sobre os dados. – Integridade dos dados. – Maior escalabilidade para incluir novos clientes. Dados compartilhados Cliente 1 Cliente 2 Cliente 3 Cliente n Estado atual consistente Centrado nos Dados • Quadro Negro: 2 x (3+2)2 + 3 - 6 = ? Sei somar! Sei multiplicar! Sei subtrair! Sei exponencial! + -x Controlador Centrado nos Dados • Quadro Negro: Quadro Negro Ap 4 Ap 5 Ap n Ap 3 Ap 2 Ap 1 Controlador Centrado nos Dados • Quadro Negro: – Sistemas complexos. • Resolução distribuída de problemas. – Aplicações independentes. • Escalabilidade. – Grande problema, se ocorrer falhas no quadro negro. – Bastante utilizada no paradigma de agentes. Vamos pensar um pouco… • Estilos arquiteturais devem ser utilizados de forma independente? • Quais estilos arquiteturais poderiam ser utilizadas na aplicação que estásendo desenvolvida pela equipe? Referências • Garlan, D. Shaw, M. An Introduction to Software Architecture. 1994. Diposnível no link. • Software Engineering Institute Publications. Disponível no link.
Compartilhar