arquitetura de software:...
TRANSCRIPT
![Page 2: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/2.jpg)
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.”
![Page 3: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/3.jpg)
Pipes and FiltersDutos e Filtros
![Page 4: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/4.jpg)
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
![Page 5: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/5.jpg)
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
![Page 6: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/6.jpg)
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
![Page 7: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/7.jpg)
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
![Page 8: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/8.jpg)
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
![Page 9: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/9.jpg)
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
![Page 10: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/10.jpg)
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
![Page 11: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/11.jpg)
Abstração de Dados e Organização Orientada a Objetos
![Page 12: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/12.jpg)
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
![Page 13: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/13.jpg)
Representação
![Page 14: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/14.jpg)
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
![Page 15: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/15.jpg)
Baseada em EventosInvocação implícita
![Page 16: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/16.jpg)
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)
![Page 17: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/17.jpg)
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
![Page 18: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/18.jpg)
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)
![Page 19: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/19.jpg)
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
![Page 20: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/20.jpg)
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)
![Page 21: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/21.jpg)
Sistemas em Camadas
![Page 22: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/22.jpg)
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
![Page 23: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/23.jpg)
Representação
![Page 24: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/24.jpg)
Exemplos
1. Protocolos de comunicação em camadas
2. Sistemas de banco de dados
3. Sistemas operacionais
![Page 25: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/25.jpg)
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
![Page 26: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/26.jpg)
RepositóriosEstrutura de blackboard
![Page 27: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/27.jpg)
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
![Page 28: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/28.jpg)
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
![Page 29: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/29.jpg)
Representação
![Page 30: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/30.jpg)
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.)
![Page 31: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/31.jpg)
Interpretadores orientados a Tabela
![Page 32: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/32.jpg)
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
![Page 33: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/33.jpg)
Representação
![Page 34: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/34.jpg)
Outras Arquiteturas Familiares
![Page 35: Arquitetura de Software: Introduçãodiatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:... · Introdução •Em “An Introduction to Software Architecture”, artigo](https://reader031.vdocuments.pub/reader031/viewer/2022022716/5c162f8609d3f2946a8c0cd0/html5/thumbnails/35.jpg)
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...