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

Post on 07-Oct-2020

3 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related