arquitetura de software:...

Post on 16-Dec-2018

220 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Estilos Arquiteturais

Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

Introdução

•Em “An Introduction to Software Architecture”, artigo de 1994, David Garlan e Mary Shaw definiram:

“An architectural style, then, defines a family of such systems in terms of a pattern of structural organization. More specifically, an architectural style determines the vocabulary of components and connectors that can be used in instances of that style, together with a set of constraintson how they can be combined.”

Pipes and FiltersDutos e Filtros

Proposta

•Cada componente (filtro) possui uma série de entradas e uma série de saídas

•Recebe um “fluxo” de entrada – realiza algum processamento – Gera um “fluxo” de saída

Invariantes do Estilo

1. Os “filtros” devem ser entidades independentes

2. Os “filtros” não devem ter conhecimento do seu antecessor, nem do seu sucessor

3. As especificações dos filtros devem apenas se restringir ao que é recebido nos dutos de entrada e assegurar o que aparecerá nos dutos de saída

Especializações do Estilo

•Pipelines – restringe a topologia a uma sequência linear de filtros

•Bounded pipes – (dutos limitados) restringe a quantidade de dados no duto

•Typed pipes – requerem que os dados que trafegam no duto possuam um tipo bem definido

Observações

•Uma variação indesejada ocorre quando cada filtro processa toda a entrada como um única entidade• Acaba gerando um sistema em lotes (batch sequential)• A proposta é que seja utilizado em um “fluxo” de dados

Exemplos

1. Programas escritos em Unix shell• Instrução “pipe”

2. Compiladores de código• (a) análise léxica, (b) parsing, (c) análise semântica e

(d) geração de código

Propriedades

1. Permitem pensar um sistema complexo como uma composição de “filtros” específicos

2. Suportam o reuso – combinação de “filtros”

3. Facilita os processos de manutenção e evolução

4. Permite algumas análises especializadas• Tais como: throughput e análise de deadlock

5. Suportam execução cocorrente

Desvantagens

1. Podem levar a uma organização do processamento em lote

2. Como os filtros são intrinsecamente independentes, são orientados a realizar uma transformação completa da entrada na saída

• Não são adequados para sistemas interativos

3. Dificuldade de manter correspondência entre dois fluxos distintos, mas relacionados

4. Pode ter trabalho adicional para ajustar os dados às necessidades individuais de cada fluxo

Abstração de Dados e Organização Orientada a Objetos

Introdução

•Nesse estilo, uma representação de dados e as suas operações primitivas são encapsuladas em um tipo abstrato de dados ou um objeto

•Objetos interagem uns com os outros através da invocação de funções ou procedimentos (métodos)

•Aspectos importantes:1. Objetos são responsáveis por manter sua integridade2. Sua representação é oculta aos outros objetos

Representação

Observações

•Ampla adoção e vantagens conhecidas

•Variantes (exemplos):• Objetos realizando tarefas concorrentes• Objetos possuindo múltiplas interfaces

•Desvantagens:• Necessidade de comunicação gera dependência• A alteração de um objeto pode afetar todos os demais

que dependem dele – pode gerar efeito em cascata

Baseada em EventosInvocação implícita

Introdução

•Geralmente, os componentes interagem através da invocação explícita de métodos

•Alternativa: invocação implícita (integração reativa ou broadcast seletivo)

Mecanismo

1. Um componente registra o interesse em um evento específico, associando um procedimento

2. Um componente anuncia (broadcast) que um dado evento ocorreu

3. O anúncio do evento causa a invocação implícita do procedimento associado

Invariantes

•O anunciante de um evento não sabe quais outros componentes serão afetados pelo evento

•Sistemas com invocação implícita também permite a invocação explícita (complementar)

Exemplos

1. Sistemas de gerenciamento de banco de dadospara garantir as restrições de consistência

2. Gerenciamento de interface com o usuário, separando a apresentação da lógica da aplicação

3. Editores dirigidos pela sintaxe para suportar a checagem semântica incremental

Vantagens e Desvantagens

•Vantagens:• Forte suporte ao reuso• Facilita a evolução do sistema

•Desvantagens:• Um componente que anuncia um evento não tem

controle (ordem/tempo) sobre a execução associada • A troca de dados precisa ocorrer também de forma

indireta (repositório compartilhado)

Sistemas em Camadas

Introdução

•São organizados hierarquicamente

•Cada camada provê serviços para a camada superior e consome os serviços da camada inferior

•Geralmente, camadas mais internas ficam ocultas, exceto para a camada imediatamente superior

Representação

Exemplos

1. Protocolos de comunicação em camadas

2. Sistemas de banco de dados

3. Sistemas operacionais

Vantagens/Desvantagens

•Vantagens:• Possibilita trabalhar em níveis crescentes de abstração • Suportam facilmente a aplicação de melhoramentos• Suportam o reuso

•Desvantagens:• Nem todos os sistemas se adequam a essa organização• Requisitos de performance podem levar a quebra das

regras de organização das camadas

RepositóriosEstrutura de blackboard

Introdução

•Há dois tipos distintos de componentes:• Uma “estrutura de dados” central (repositório)

representando o estado corrente do sistema• Uma coleção de componentes independentes que

operam com essa “estrutura de dados” central

•A questão do “controle” do sistema gera subcategorias – quem leva um componente a agir

Componentes

1. Fontes de conhecimento• Fontes separadas e independentes – acessadas através do

blackboard

2. A estrutura de dados blackboard• Armazena o estado do sistema

3. Controle• Orientado pelo estado do blackboard

Representação

Exemplos

•Sistemas de reconhecimento de fala e padrões

•Sistemas com acesso compartilhado a dados por “agentes” fracamente acoplados

•Sistemas compiladores (tabelas de símbolo, abstract syntax tree, etc.)

Interpretadores orientados a Tabela

Introdução

•Na organização de um interpretador uma máquina virtual é produzida em software

•Quatro componentes básicos:1. Motor de interpretação2. Memória que contém o código a ser interpretado3. Representação do estado do interpretador4. Representação do estado corrente do “programa”

sendo interpretado

Representação

Outras Arquiteturas Familiares

Outros Estilos

1. Processos distribuídos – caracterizados pelos protocolos de comunicação entre processos

2. Cliente-servidor – voltado à sistemas distribuídos

3. Programa principal/sub-rotinas

4. Arquiteturas específica de domínio (ex.: veículos)

5. Sistemas de transição de estados

6. Sistemas de controle de processos

7. Arquiteturas heterogêneas...

top related