Escolar Documentos
Profissional Documentos
Cultura Documentos
Programação Orientada A Objetos 2 Flávio de Oliveira Silva, M.sc.
Programação Orientada A Objetos 2 Flávio de Oliveira Silva, M.sc.
Estilos arquiteturais
Definem meios de selecionar e apresentar blocos
de construção de arquitetura
Estilos Arquiteturais
Padrões arquiteturais
Projetos de alto nível, testados e validados, de
Silvia Regina Vergilio
blocos de construção de arquitetura
• Sistemas interativos – interação HM. Pipes & Sistemas OO Invocação Sistemas Sistemas de
• Sistemas adaptáveis – oferecem suporte para Filters Implícita (ou
Sistemas
Baseados em
Regras
Hipertexto
Camadas Blackboards
F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad e M. Stahl. Pattern-Oriented (Quadro-
Software Architecture - A System of Patterns, NY: John Wiley and Sons, Inc. 1996 Negro)
D. Garlan and Mary Shaw. An introduction to software architecture. Technical Report- CMU-CS-
94166,Carnegie Mellon University, January 1994.
Extraído de (SHAW e GARLAN, 1996)
Fluxo de Dados
Estilos arquiteturais
• Originário de sistemas operacionais UNIX e do projeto
Fluxo de dados (Data Flow) de compiladores
Ex. Unix Pipes: condutores da saída de um programa para a
entrada de um outro programa. > Who | Sort
• Transformações funcionais processam entradas para
1. Sequenciais Batch produzir saídas.
– Componentes são chamados de filtros: recebem (tratam e
refinam) entradas especificadas e transformam essas
2. Pipes & Filters (Dutos e Filtros) entradas em saídas
– Conectores são dutos (pipes) - trasmitem saídas de um
filtro para serem entradas de outro
1
Ex: Arquitetura de Compiladores
1. Seqüências (Batch Sequential) –E
Análise
x Análise Análise Geração de
Otimização
léxica : sintática semântica código
Especialização de pipes &filtros
A
Programas independentes executados em r
seqüência (pipelines: seqüências linear de filtros) Arquivos fonte
q Bytecode Arquivo Jar
u
class{
i 000
Um após o outro }
t
A$n3*
3N4*#
1001
1001
e
Dado transmitido por completo entre um programa e t Javac
Compilando
Jar
Empacotando
Java
executando
outro u
r
a
PIPES
2
Estilos arquiteturais
Implementação Chamada (ou invocações) e
– Divida as tarefas do sistema em uma sequência
Retorno
de estágios de processamento
• Cada estágio deve depender somente da saída do seu
predecessor
• Todos os estágios são conectados por um fluxo de 1. Programa Principal e Sub-Rotina
dados
– Defina o formato de dados a ser passado ao longo 2. Invocação Remota de Procedimento (RPC)
de cada pipe
– Decida como implementar cada conexão com
pipe 3. Sistema Orientados a Objetos
• Se estes serão ativos ou passivos
4. Camadas (Layered)
192.168.10.8
192.168.10.11
3
Vantagens 3. Sistema Orientados a Objetos
• Sistema como um conjunto de objetos fracamente
acoplados e com interfaces bem definidas
Programa principal
Rede – Cada objeto oferece um conjunto de serviços
Subrotina 1 Subrotina 2 Subrotina 3
4
Características Características
Camadas se comunicam apenas com outras adjacentes Alterações locais não são propagadas
Apresentação Apresentação
Negócio Negócio
Armazenamento Armazenamento
Useful Systems
Agregados de
Base Utility Elementos Menores
Core
Level
Users
Implementação Implementação
• Defina o critério de abstração para agrupar tarefas em • Especifique os serviços
camadas
• Especifique uma interface para cada camada
– Exemplo: a distância do hardware pode formar os níveis mais
baixos e a complexidade conceitual os níveis mais altos • Refine cada camada:
• Determine o número de níveis de abstração de acordo – Estruturação de cada camada individualmente
com seu critério de abstração – Quando uma camada é complexa ela deve ser
• Nomeie as camadas e determine as tarefas de cada separada em componentes individuais e cada
uma delas componente pode seguir um padrão ou estilo
– A tarefa da camada mais alta é a percebida pelo cliente diferente
– As tarefas das demais camadas visam ajudar a realização da
tarefa da camada mais alta
5
Características: Estilo em Camadas Características: Estilo em Camadas
Vantagens: Desvantagens
• Facilidade de compreensão: utiliza níveis crescentes de • Às vezes é difícil estruturar um sistema através de
abstração, particionando problemas complexos em camadas. Conseqüências:
sequência de passos incrementais.
– É comum que a estruturação seja violada
• Suporte a padronização
– Camadas relaxadas são necessárias – todas as camadas
• Desenvolvimento independente
podem se comunicar entre si.
• Facilidade de manutenção, reúso das camadas e suporte
à evolução dos sistemas, oferencendo flexibilidade e – Mudanças em serviços de uma cada inferior, podem requerer
boa manutenibilidade propagação de mudanças até as superiores
• As dependências tendem a ser locais (dentro da – Pode haver necessidade de duplicação de funcionalidade
camada)- restrição de comunicação entre camadas • Overhead (problemas) de implementação, comunicação,
adjacentes, mudanças afetam no máximo duas camadas e desempenho
• Se interface bem definida, permite uso de diferentes • Complexidade na Implementação e Testes do Sistema
implementações da mesma camada
6
Ex: Aplicação: Internet Ex: Sistema– Cliente-Servidor
Servidor
Clientes
• Vantagens
– Separação de interesses
– Inerentemente distribuído: pode haver
balanceamento de carga, tolerância a falhas
– É fácil adicionar novos servidores ou atualizar
servidores existentes.
– Utilização dos recursos do servidor
– Escalabilidade: aumentando a capacidade
computacional do servidor
7
Exemplo: relatório de impressão
2. Baseado em eventos Produtores e consumidores são independentes
Execução via procedimentos disparados via mudança de estados
Escalabilidade no número de interessados
Desacoplamento entre consumidores e produtores Consumidores se registram nos Produtores
de eventos Produtores notificam consumidores registrados
Escalabilidade: adição de novos observadores para
eventos que já são produzidos
Invocação implícita: O produtor de eventos não imprimir()
controla quem será notificado ou quando ele será
notificado A
interessado(“relatorioOK”)
B
relatorioOK Produtor
Consumidor
Relatório
OK
8
Estilo Orientado a Interrupções Controle dirigido a interrupções
• Usado em sistemas de tempo real onde a resposta
rápida para um evento é essencial
• Existem tipos de interrupções conhecidos
– Um tratador definido para cada tipo
• Cada tipo é associado a uma localização da memória
– Uma chave de hardware causa a transferência de controle
para um tratador.
• Permite respostas rápidas, mas é complexo para
programar e difícil de validar.
2. Baseado em Regras
1. Interpretador (Interpreter)
Componentes de um Interpretador
Esta arquitetura inclui geralmente 4 componentes:
- mecanismo de interpretação
- uma memória que contém o pseudo-código a ser interpretado entrada Dados Programa sendo
- representação do estado do mecanismo de interpretação (Estado do programa) interpretado
9
Ex: Java VM Características - Interpretador
Desvantagens: Desempenho
Máquina
public class Oi{
...
Compilador Java Virtual
Vantagens: Portabilidade
“javac.exe”
} Máquina
Virtual
Arquivo “Oi.java”
bytecode Algumas pesquisas apontam que algumas das
Máquina
Êþº¾ 1 <init> ()V
Code LineNumberTable
INTERPRETA Virtual linguagens interpretadas já conseguem ser mais
main ([Ljava/lang/String;)...
rápidas que C
Arquivo “Oi.class”
Máquina
Virtual
Java, por exemplo
Máquina
Virtual
SE “HORA=22:00” SE “HORA=22:00”
ENTÃO “AÇÃO=LIBERAR” ENTÃO “AÇÃO=LIBERAR”
SE “HORA<19:00” SE “HORA<19:00”
ENTÃO “AÇÃO=ESPERAR” ENTÃO “AÇÃO=ESPERAR”
Máquina de Máquina de
SE “HORA=19:00” SE “HORA=19:00”
ENTÃO “AÇÃO=COMEÇAR” inferência ENTÃO “AÇÃO=COMEÇAR” inferência
Base de Regras Base de Regras
10
Estilos arquiteturais
Centrado em Dados
Memória de trabalho
SE “HORA=21:00” HORA = 18:00
ENTÃO “AÇÃO=LANCHE” AÇÃO = ESPERAR
AÇÃO=ESPERAR
SE “HORA=22:00”
ENTÃO “AÇÃO=LIBERAR” 1. Repositório
SE “HORA<19:00”
ENTÃO “AÇÃO=ESPERAR”
SE “HORA=19:00”
Máquina de 2. Blackboard
ENTÃO “AÇÃO=COMEÇAR” inferência
Base de Regras
Repositório (Repository)
Ex: Banco de dados tradicional
Clientes operam
sobre os dados
Cliente 2 Cliente 2
Cliente 3 Cliente 3
Cliente 1 Cliente 1
Gatilhos
Cliente n (triggers) Cliente n
Transações
Estado atual Dados Dados
consistente compartilhados compartilhados
11
Ex: Arquitetura de uma Características: Repositório
Ferramenta Case • Vantagens
– É uma maneira eficiente de compartilhar grandes
quantidades de dados
– Dados aderem a uma representação comum
– Simplifica a projeto de aplicações fortemente baseadas em
dados
• Tanto para troca de informações quanto para armazenamento
• Desvantagens
– Os subsistemas devem estar de acordo com um modelo de
dados padronizado
– A evolução de dados é difícil e dispendiosa
– Dificuldade para distribuir de forma eficiente
• O sistema é dividido em
– blackboard: aramazena dados – o vocabulário Ap 1
Ap 2
Ap 3
– base de conhecimento: subsistemas
independentes, cada qual resolvendo aspectos Quadro Negro
específicos do problema Controlador
Sei subtrair!
Sei multiplicar!
2 x (3+2)2 + 3 - 6 = ?
Controlador
x - x -
Gerência dos dados
x2 x2
Controlador
12
Quadro negro (Blackboard) Quadro negro (Blackboard)
x - x -
x2 x2
Controlador Controlador
+ +
x - x -
x2 x2
Controlador Controlador
+ +
13
Características: Blackboard
Seleção de Estilos
• Desvantagens
– Dificuldades para testar por não usar algoritmos
determinísticos O que considerar?
– Nenhuma boa solução é garantida
Passos a seguir
– Dificuldade em estabelecer uma boa estratégia de
controle.
– Baixa eficiência e alto esforço de
desenvolvimento
– Não suporta paralelismo
Chamada/Retorno Chamada/Retorno
• A ordem da computação é fixa • Orientação a objetos:
• Componentes não podem fazer progresso - Ocultamento da Informação: produz módulos
enquanto aguardando o resultado das similares, que no decorrer do desenvolvimento
e teste se beneficiam do uso de herança
chamadas
14
Chamada/Retorno Componentes Independentes
• Camadas: • O sistema executa em uma plataforma multi-
– As tarefas do sistema podem ser particionadas processada (ou que pode vir a ser no futuro)
entre: específicas da aplicação, e genéricas a • O sistema pode ser estruturado como um conjunto
muitas aplicações, mas específicas à plataforma de componentes fracamente acoplados, de modo
subjacente que um componente pode fazer progressos de
– Portabilidade é importante forma independente dos outros.
– Pode-se usar uma infra-estrutura de • Ajuste de desempenho é importante, seja através
computação pré-existente da re-alocação de tarefas a processos,seja através
da re-alocação de processos a processadores
15
1. Identificar os principais elementos
Seleção de estilos –Passos a seguir da arquitetura
• Cada elemento arquitetural tem um estilo arquitetural
1. Identificar os principais elementos da arquitetura dominante que reflete as qualidades importantes que
2. Identificar o estilo arquitetural dominante devem ser alcançadas no contexto daquele elemento
3. Considerar responsabilidades adicionais associadas
com a escolha do estilo • A escolha do estilo arquitetural dominante é baseada
4. Modificar o estilo para atingir objetivos adicionais nos principais elementos arquiteturais
• O estilo dominante pode ser modificado para • A escolha de um estilo arquitetural introduzirá
alcançar objetivos particulares responsabilidades adicionais
• Se nenhum estilo conhecido parece ser apropriado, o • Por exemplo:
arquiteto deve projetar e documentar um novo estilo Se o estilo é “Quadro negro”, então devem-se gerenciar os
• As decisões sobre escolhas baseadas em atributos de mecanismos para o controle do quadro negro
qualidade dentro de um estilo devem ser Se o estilo é “cliente-servidor”, devem-se gerenciar os
documentadas protocolos de interação
Responsabilidades adicionais devem ser atribuídas a
elementos arquiteturais existentes ou a novos
elementos criados para este fim.
Módulo de
armazenamento de
dados
16
Exemplo: Sistema de matrícula Exemplo: Sistema de matrícula
• 2. Identificar o estilo arquitetural dominante
• 3. Considerar responsabilidades adicionais associadas com
Deve ter alta
a escolha do estilo
Não deve requerer
disponibilidade Deve executar Estilo dominante escolhido: Cliente-servidor
instalação! na Internet
Estilo secundário: Repositório
Módulo de acesso do Deve ser fino! Responsabilidades: considerar protocolo de comunicação
usuário
Cliente
Deve ser possível
Acesso à máquina
acessar de qualquer
do BD só via rede
lugar Rede/HTTP
Módulo de
armazenamento de
Não há confiança na
dados Utiliza banco de outra Servidor
disponibilidade da
máquina do BD aplicação (legada)
17
1. Palavra-chave em contexto: Problema exemplo: palavra-chave em contexto
objetivo
• Analisar diferentes arquiteturas com respeito às seguintes
considerações de projeto:
– Mudança no algoritmo de processamento (ex: shifts nas linhas
podem ser feitos em cada linha lida, em todas as linhas após terem
sido lidas, ou por demanda);
– Mudança na representação dos dados;
– Mudança na funcionalidade (extensibilidade);
– Performance (espaço e tempo);
– Grau de reuso.
18