UFG - Instituto de Informática Curso: Sistemas de Informação Arquitetura de Software Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 4 Estilos Arquitetônicos
Estilos Arquiteturais Dataflow (Fluxo de Dados) Lote Sequencial Pipes e Filtros Chamada e Retorno Programa principal e Subrotina Remote Procedure Call Orientado a Objetos/TAD Camadas
Estilos Arquiteturais Componentes Independentes Processos Comunicantes Cliente Servidor Sistemas de Eventos Invocação Implícita Centrado em Dados Repositório Blackboard
Estilos Arquiteturais Máquina Virtual Interpretador
Arquiteturas Dataflow 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
Lote 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)
Lote Sequencial
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
Pipes e Filtros
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
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
Programa principal e sub-rotinas Decompor e hierarquizar Controle e dados são passados em conjunto
Programa principal e sub-rotinas
Chamadas de Procedimento Remoto Sub-rotinas executam em outras máquinas conectadas através de uma rede
Orientadas a Objetos/TAD Enfatiza o agrupamento de dados + conhecimento acerca de como manipular os dados Orientação a Objetos = TAD+herança+polimorfismo
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
Arquitetura 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
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
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
Paradigma Publicador/Assinante
Paradigma Observado/Observador
Arquitetura 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
Repositório
Blackboard
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)
Estilos Arquitetônicos Indicações de uso
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
Lote Sequencial Existe uma única saída, resultante de uma única entrada de dados As transformações são seqüenciais
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
Arquiteturas de Chamada e Retorno A ordem da computação é fixa Componentes não podem fazer progresso enquanto aguardando o resultado das chamadas
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
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
Arquitetura 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
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)
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
Arquitetura centrada em dados As questões importantes são o armazenamento, representação, gerenciamento e recuperação de uma grande quantidade de dados persistentes
Arquitetura de Máquina Virtual Não existe uma máquina que execute um modelo computacional que foi projetado
Resumindo