arquitetura de software parte 2/3-estilos...

33
Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes Junho de 1999

Upload: others

Post on 07-Oct-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Arquitetura de Software Parte 2/3-Estilos Arquiteturais

Jorge H. C. FernandesJunho de 1999

Page 2: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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

Page 3: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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

Page 4: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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

Page 5: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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

Page 6: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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

Page 7: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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

Page 8: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

Arquiteturas de Chamada e Retorno

Programa Principal e Subrotinas

?Decompor e hierarquizar?Controle e dados são passados em

conjunto

Page 9: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

Arquiteturas de Chamada e Retorno

Remote Procedure Call

? Subrotinas executam em outras máquinas conectadas através de uma rede

Page 10: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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

Page 11: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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

Page 12: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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

Page 13: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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

Page 14: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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

Page 15: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

Arquiteturas de Componentes Independentes: Invocação Implícita

Publish/Subscribe Paradigm

Event Notification Structure

Publish SubscribeAdvertise

Unadvertise

UnsubscribeConsumer Interface

Event Consumer

Notify

Event Producer

Page 16: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

Arquiteturas de Componentes Independentes: Invocação Implícita

Observable/Observer Paradigm

Event Dispatcher Structure

Listen

Notify

Unlisten

Consumer Interface

Event Consumer

Notify

Event Producer

Page 17: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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

Page 18: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

Arquiteturas Centradas em Dados

Repositório

Cliente

Cliente Cliente

Cliente

Dados Compartilhados

Page 19: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

Arquiteturas Centradas em Dados

Blackboard

Cliente

Cliente Cliente

Cliente

Blackboard

Page 20: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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

Page 21: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Estilos Arquiteturais:Indicações de Uso

Page 22: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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

Page 23: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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

Page 24: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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

Page 25: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

Arquiteturas de Chamada e Retorno

?A ordem da computação é fixa?Componentes não podem fazer progresso

enquanto aguardando o resultado das chamadas

Page 26: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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

Page 27: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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

Page 28: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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

Page 29: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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)

Page 30: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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

Page 31: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

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

Page 32: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Copyright © 1999, por Jorge H. C. Fernandes. [email protected]

Arquiteturas de Máquina Virtual

?Não existe uma máquina que execute um modelo computacional que foi projetado

Page 33: Arquitetura de Software Parte 2/3-Estilos Arquiteturaisjhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2D… · Arquitetura de Software Parte 2/3-Estilos Arquiteturais Jorge H. C. Fernandes

Arquitetura de Software Parte 2/3-Estilos Arquiteturais

Jorge H. C. FernandesJunho de 1999