Post on 07-Oct-2020
Arquitetura de Software Parte 2/3-Estilos Arquiteturais
Jorge H. C. FernandesJunho de 1999
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Estilos Arquiteturais mais Comuns (Mary Shaw, 96)
? Data flow? Batch? Pipes e filtros
? Chamada e retorno? Programa principal e
subrotinas? Remote Procedure Call?Orientado a objetos/TAD? Camadas
? Componentes Independentes? Processos comunicantes?Cliente/Servidor
? Sistemas de eventos ? Invocação Implícita
? Centrado em Dados? Repositório? Blackboard
?Máquina virtual? Interpretador
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas Data-Flow
?O sistema realiza uma série de transformações sucessivas sobre uma cadeia de dados?A meta é reuso e modificabilidade?Principais Estilos?Batch sequencial? Pipes e filtros
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas Data-Flow
Batch Sequencial
? Componentes ou etapas do processamento são programas independentes, e cada etapa ocorre após o término da outra
? Dados são transmitidos em um bloco entre as etapas (ou componentes)
Data Entry Validação
Classificação Atualização
RelatórioFita
Fita
Fita Fita
Fita
Relatório
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas Data-Flow
Pipes e Filtros
? Transformação incremental de dados, efetuada por vários componentes em sucessão
? Filtros são tradutores de dados (usam pouco contexto)? Pipes conectam filtros (stateless)? Composição de funções
Filtro #2Filtro #1 Filtro #3Dados
DadosDadosDadosDados
Pipe Pipe
Dados
DadosDadosDadosDadosDados
DadosDadosDadosDados
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas Data-Flow
Pipes e Filtros
?Vantagens e Desvantagens? Interatividade e cooperatividade entre filtros é difícil?Baixa performance?Abstração de dados é primitiva?Gerencia de buffers
?Simplicidade?Facilidades para compor e paralelizar o sistema
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas de Chamada e Retorno
?Criam sistemas modificáveis e escaláveis?Dominada pela ordem da computação,
normalmente com um único thread de controle?Principais Estilos?Programa principal e sub-rotinas?Remote Procedure Call - RPC?Orientada a Objetos/ADT?Camadas
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas de Chamada e Retorno
Programa Principal e Subrotinas
?Decompor e hierarquizar?Controle e dados são passados em
conjunto
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas de Chamada e Retorno
Remote Procedure Call
? Subrotinas executam em outras máquinas conectadas através de uma rede
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas de Chamada e Retorno
Orientada a Objetos/TAD
? Enfatiza o agrupamento de dados + conhecimento acerca de como manipular os dados
? Orientação a Objetos = TAD+herança+polimorfismo
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas de Chamada e Retorno
Sistemas em Camadas
? Componentes são alocados a camadas que controlam interação
? Cada componente se comunica (sempre que possível) apenas com os das camadas vizinhas
Interface
Sistema
Utilitários
Core
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas de Componentes Independentes
? Processos independentes que se comunicam através de mensagens
? Alto grau de modificabilidade através do desacoplamento de várias porções da computação
? Envio de dados entre processos, normalmente sem controlar a execução de cada um deles.
? Principais Estilos? Processos Comunicantes? Sistemas de Eventos? Invocação implícita
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas de Componentes Independentes
Processos Comunicantes
? Sistemas multiprocessados clássicos? Várias especializações? Lightweight Processes?Distributed Objects? Network of Filters? Client-Server(Request-Reply)?Heartbeat? Probe/echo? Broadcast? Token Passing?Decentralized servers? Replicated Workers
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas de Componentes Independentes
Sistemas de Eventos
?Desacoplamento entre consumidores e produtores de eventos?Escalabilidade?Adição de novos observadores para eventos
que já são produzidos
?Invocação implícita?O produtor de eventos não controla quem
será notificado ou quando ele será notificado
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas de Componentes Independentes: Invocação Implícita
Publish/Subscribe Paradigm
Event Notification Structure
Publish SubscribeAdvertise
Unadvertise
UnsubscribeConsumer Interface
Event Consumer
Notify
Event Producer
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas de Componentes Independentes: Invocação Implícita
Observable/Observer Paradigm
Event Dispatcher Structure
Listen
Notify
Unlisten
Consumer Interface
Event Consumer
Notify
Event Producer
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas Centrada em Dados
? A meta é a integração de dados? Descreve o acesso e atualização de repositórios de
dados amplamente acessíveis? Dominada por um complexo depósito de dados
centralizado, manipulado por computações independentes
? Depósitos de dados podem ser passivos (arquivos, bases de dados) ou ativos (ex: blackboard)
? Principais estilos?Repositório?Blackboard
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas Centradas em Dados
Repositório
Cliente
Cliente Cliente
Cliente
Dados Compartilhados
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas Centradas em Dados
Blackboard
Cliente
Cliente Cliente
Cliente
Blackboard
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas de Máquina Virtual
? Simulam uma funcionalidade que não é nativa do hardware ou do software onde ela não é implementada
? A meta é portabilidade? Simuladores de Software (linguagens - Java VM) ou
Hardware (arquiteturas de sistema)
Inputs
Outputs
State Data
Updates
Data(Program State)
Interpretation Engine
Program BeingInterpreted
InternalState
Program InstructionsData
Selected Data
Selected Instruction
Estilos Arquiteturais:Indicações de Uso
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas Data-Flow
?As interfaces entre os componentes são simples?O sistema produz resultados simples e
bem identificáveis que derivam diretamente da transformação seqüencial de uma entrada facilmente identificável?A relação entre entrada e saídas é
temporalmente independente
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas Data-Flow
Batch-Seqüencial
?Existe uma única saída, resultante de uma única entrada de dados?As transformações são seqüenciais
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas Data-Flow
Pipes e Filtros
?A computação envolve transformações sobre uma cadeia de dados contínua?As transformações são incrementais. Uma
transformação pode executar antes do término do passo anterior
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas de Chamada e Retorno
?A ordem da computação é fixa?Componentes não podem fazer progresso
enquanto aguardando o resultado das chamadas
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas de Chamada e Retorno
Orientada a Objetos
?Modificabilidade e Integrabilidade são requisitos de qualidade?Information-Hiding produz muitos
módulos similares, que no decorrer do desenvolvimento e testes se beneficiam do uso de herança
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas de Chamada e Retorno
Sistemas em Camadas
?As tarefas do sistema podem ser particionadas entre ? específicas da aplicação e;? genéricas a muitas aplicações, mas
específicas à plataforma subjacente
?Portabilidade é importante?Você pode usar uma infra-estrutura de
computação pré-existente
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas de Componentes Independentes
? O sistema executa em uma plataforma multi-processada (ou pode sê-lo no futuro)
? O sistema pode ser estruturado como um conjunto de componentes fracamente acoplados, de modo que um componente pode fazer progressos de forma independente dos outros.
? Ajuste de desempenho é importante? seja através da re-alocação de tarefas a processos, ? seja através da re-alocação de processos a processadores
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas de Componentes Independentes
Processos Comunicantes
? Lightweight Processes? Acesso a dados compartilhados é crítico para manutenção de
desempenho
? Objetos Distribuídos?OO + Componentes Independentes
? Redes de filtros?Data-Flow + Componentes Independentes
? Cliente-Servidor? As tarefas podem ser divididas enter geradores de pedidos
(ou consumidores de dados) executores de pedidos (ou produtores de dados)
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas de Componentes Independentes
Sistemas Baseados em Eventos
?Quando é necessário desacoplar consumidores e produtores de eventos?Quando é necessário escalabilidade,
permitindo-se a adição de novos processos ao sistema, os quais serão integrados a eventos já sinalizados no sistema
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas Centradas em Dados
?As questões importantes são o armazenamento, representação, gerenciamento e recuperação de uma grande quantidade de dados persistentes
Copyright © 1999, por Jorge H. C. Fernandes. jorge@dimap.ufrn.br
Arquiteturas de Máquina Virtual
?Não existe uma máquina que execute um modelo computacional que foi projetado
Arquitetura de Software Parte 2/3-Estilos Arquiteturais
Jorge H. C. FernandesJunho de 1999