Click here to load reader
Upload
cintia-carvalho
View
39
Download
0
Embed Size (px)
Citation preview
Pós-Graduação em Segurança da Informação em Engenharia de SoftwareTrabalho de Arquitetura e Padrões de Construção de Software Seguro
Professor: Felipe Ferraz
Grupo: ● Cintia Carvalho● Claudia Almeida● Samuel Sávio● Wanderson Costa
Fev/2011
Estilos e Padrões Arquiteturais
1. Invocação/Retorno (Call/Return)
1.1 Programa Principal/Subrotina (Main Program/Subroutine)
Muitas linguagens de programação possuem seus livros com exemplos
construídos a partir deste estilo. Quando as linguagens de programação não
possuem um suporte efetivo para o encapsulamento esta é a arquitetura
preferencial. É caracterizada pela existência de um programa inicial (programa
principal), que chama diversos outros programas (subrotinas) em uma seqüência
preestabelecida. Cada um dos programas chamados ao terminar retorna seu
controle ao programa chamador.
1.2 Invocação Remota de Procedimento (Remote Procedure Call - RPC)
Chamada remota de procedimento ou Chamada de Função ou Chamada de
Subrotina é um método de transferência de controle de parte de um processo, assim
permite a divisão de um sistema em vários pontos utilizando chamada remota de
procedimentos. Também tem como objetivo simplificar a programação distribuída.
Para realizar a chamada de procedimentos de forma remota é necessário um
protocolo de comunicação. Enquanto a chamada de um procedimento remoto é
realizada, o processo do cliente fica bloqueado.
Stubs: Procedimentos que contém o código de chamadas a rede e são
gerados automaticamente pelo compilador. Os stubs do lado servidor são chamados
de skeleton.
O RPC inclui uma especificação para formato padrão de dados, e o stubs
realiza a conversão dos dados que também é responsável pela passagem de
parâmetro entre procedimentos.
1.3 Camadas (Layered)
Esse padrão é organizado hierarquicamente, como um conjunto ordenado de
camadas, no qual a camada inferior oferece serviços para a camada superior e essa
camada é construída em função da camada inferior. Essas camadas apresentam um
conhecimento unilateral já que uma camada conhece as demais abaixo dela, mas
não tem conhecimento das camadas acima.
Podem ser caracterizadas como:
Camadas Fechadas: quando uma camada é construída apenas em
função da camada imediatamente inferior. Apresenta a vantagem de
reduzir a dependência entre as camadas, permitindo que alterações sejam
feitas mais facilmente.
Camadas Abertas: quando uma camada pode usar recursos de qualquer
camada inferior. A desvantagem ocorre quando alterações realizadas em
uma camada afetam qualquer outra acima dela, tornando a arquitetura
menos robusta e comprometendo a manutenção do sistema. Possui a
vantagem de reduzir a necessidade de redefinir operações em vários
níveis, o que resulta em um melhor desempenho.
Vantagens do padrão em camadas:
Possibilita um processo de design incremental (um problema complexo
pode ser dividido em níveis crescente de abstração);
Suporte ao reuso;
Suporte para evolução e manutenção.
Desvantagens deste padrão:
Nem todo problema pode ser dividido em camadas de abstração;
A performance pode ser afetada se houver interação entre a camada de
alto nível com as de níveis inferiores.
2. Componentes independentes (Independent Components)
2.1 Comunicação de processos (Communicating Processes)
A comunicação entre processos, em inglês Inter-Process Communication
(IPC), é o grupo de mecanismos que permite aos processos transferirem informação
entre si. Processos podem ser executados em um ou mais computadores
conectados por uma rede.
A execução de um processo pressupõe por parte do sistema operativo, entre
outras coisas, a criação de um contexto de execução próprio que, de certa forma,
abstrai o processo dos componentes reais do sistema. Devido a esta virtualização
dos recursos, o processo não tem conhecimento acerca dos outros processos e,
como tal, não consegue trocar informação.
O método de IPC utilizado pode variar de acordo com a largura de banda e
latência de comunicação entre os segmentos, e do tipo de dados que estão sendo
comunicados.
2.2 Baseado em eventos
O padrão baseado em eventos, também conhecido como chamada implícita,
é caracterizado por apresentar um componente, conhecido como notificador ou
gerente de eventos, que associa eventos do sistema a funções ou procedimentos,
ou seja, em vez de chamar diretamente uma função ou procedimento, esse padrão
apresenta um componente chamado anunciante que informa os eventos associados.
Sendo assim um componente pode anunciar um ou mais eventos, enquanto
outros componentes podem registrar interesse por um evento associando um
procedimento a ele. Quando um evento é anunciado, o próprio sistema invoca todos
os procedimentos registrados para o evento. Assim, o anúncio de um evento
implicitamente causa a invocação de procedimentos em outros componentes.
Como vantagens pode-se citar o reuso, evolução e manutenção de
componentes; e como desvantagem a difícil correção, uma vez que não existe um
fluxo pré-definido.
3. Máquina virtual (Virtual Machine)
3.1 Interpretador (Interpreter)
Esse padrão usa a representação de uma estrutura de problema particular,
que ocorre várias vezes, em uma sentença de linguagem simples, de modo a
solucionar o problema através da construção de um interpretador para essa
sentença. Sendo utilizadas classes para representar cada regra de uma gramática
(expressão regular). Utiliza-se esse padrão quando a gramática for simples e
quando a eficiência não for uma questão crítica.
3.2 Baseado em regras (Rule-based)
Cada máquina virtual consiste de um processador de comando, uma base de
regras, e uma interface entre o processador de comando e a base. Cada um destes
elementos é preferencialmente implementado como software. Na modalidade
preferida, o sistema usa uma base de regras armazenada como seu conjunto de
instruções onde prevê a entrada e saída na forma de cadeias de comprimento
variável de bits de tamanho n onde n é qualquer número maior que zero. Cada uma
das regras dentro da base de regras deve exercer uma ou mais operações de
cadeia binária. A função da base de regras é fornecer um conjunto de regras de
aplicação específica que permite a máquina executar uma tarefa específica, tais
como criptografia, compressão de dados, ou aritmética de precisão arbitrária.
4. Centrado em dados (Data-Centered)
4.1 Repositório (Repository)
Esta categoria envolve um repositório de dados compartilhado para a
passagem de informações. Diferentes estilos baseados em repositório variam em
termos de estilos de ativação e comunicação (ALBIN, 2003). Exemplos de estilos
nessa categoria incluem os estilos baseados em bancos de dados e quadro-negro.
Neste estilo, existem dois elementos distintos: a base central de dados (blackboard)
e os componentes que executam operações na referida base, inclusive suas
intercomunicações. Os componentes são chamados de fontes de informação
(knowledge source - ks). Os estados assumidos pela base central de dados é o
principal motivador de disparo de ações nos componentes que executam tarefas.
Um componente não pode se comunicar com outro, exceto via o repositório central.
4.2 Quadro negro (Blackboard)
É uma série de agentes de conhecimento tem acesso a um armazenamento
de dados compartilhados. Fornece uma interface para inspecionar e atualizar seu
conteúdo. Vários agentes de resolução de problemas (agentes de conhecimento)
devem cooperar para solucionar um problema que não pode ser resolvido por um só
agente.
O resultado do trabalho de cada agente deve estar acessível a todos os
outros agentes. Assim, eles poderão avaliar se podem ou não contribuir para
encontrar uma solução e divulgar os resultados de seus trabalhos. É utilizado em
sistemas de Inteligência Artificial, reconhecimento de voz e sistemas de inspeção.
Características:
A seqüência em que os agentes de conhecimento podem contribuir para
solucionar o problema não é determinista e talvez dependa das estratégias
de solução de problemas;
A colaboração de vários agentes (resultados ou soluções parciais) pode
ter diferentes representações;
Os agentes não sabem da existência de cada um dos outros agentes, mas
podem avaliar as contribuições divulgadas de cada um deles.
5. Fluxo de dados (Data-Flow)
5.1 Seqüencial (Batch Sequential)
O padrão descreve uma sucessão de transformações de dados de entrada.
Parte da arquitetura de fluxo de dados orientados é particularmente caracterizada
pela reutilização e modificação. No Batch/Sequential, um subsistema de
transformação ou módulo não pode iniciar o seu processo até que o módulo anterior
complete seu processamento. O fluxo de dados leva um lote de dados como um
todo a partir de um módulo para o próximo módulo. Ocorre uma série de
transformações em conjuntos sucessivos de dados. Os conjuntos de dados e
operações são independentes uns dos outros.
Pode-se citar como benefícios a simples divisão em subsistemas, cada
subsistema pode ser programa stand-alone. No entanto há certas limitações, a
aplicação requer controle externo, não há interface interativa e concorrência não é
suportado.
5.2 Tubos e filtros (Pipe and Filter)
Esse padrão utiliza filtros que apresentam um conjunto de entradas e saídas,
além de tubos que são conectores que interligam a saída de um filtro da entrada de
outro. O filtro lê um stream de dados de suas entradas e produz streams de dados
em suas saídas, mesmo que os dados da entrada ainda não tenham sido totalmente
consumidos.
A configuração de filtros e tubos que iram determinar um modelo
computacional formado por elementos que transformam (filtram) dados recebidos
nas suas entradas e geram dados nas suas saídas, podendo ser executados
sequencialmente ou concorrentemente.
Há também os Pipelines que são uma especialização deste estilo no qual os
filtros são conectados numa seqüência linear. Exemplo de utilização: configurações
definidas por usuários de shell do unix.
Vantagens:
Facilidade em entender o comportamento geral do sistema se souber o
comportamento de cada filtro;
Incentiva o reuso dos componentes;
Facilidade na manutenção e evolução já que filtros podem ser trocados e
modificados sem alterar outros componentes;
Suporte a execução corrente.
Desvantagens:
Tende a gerar processamento em lote;
Não adequado para aplicações interativas;
Necessidade de adequar dados do stream para um determinado filtro.
6. Referências
http://www.dimap.ufrn.br/~jair/ES/c7.html#padroes
http://www.cic.unb.br/~jhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2De3.pdf
http://www.inf.ufes.br/~falbo/files/ProjetoSoftware2010.pdf
http://www.wthreex.com/rup/process/workflow/ana_desi/co_swarch.htm
http://www.cs.scranton.edu/~bi/2009f-html/se510/sw-architecture-1.ppt
http://www.cic.unb.br/~jhcf/MyBooks/iess/Patterns/BehavioralPatter ns-
82slides.pdf
http://www.cci.unama.br/margalho/portaltcc/tcc2005/PDF/013.pdf
http://www.linux.ime.usp.br/~cef/mac499-
05/monografias/rec/rafael/padroesDeProjeto.htm
https://disciplinas.dcc.ufba.br/pub/MATA63/PadroesDeProjetoApresentacao/Padr
%E3o_de_Projeto_Interpreter.pdf
http://homepages.dcc.ufmg.br/~mgoncalv/fsi06-1/
DesenvolvimentoSistemasBaseadoArquitetura.ppt
http://www.cic.unb.br/~jhcf/MyBooks/iess/ArqSoft/ArquiteturaSoftware2De3.pdf
http://www.revistafarn.inf.br/revistafarn/index.php/revistafarn/article/viewFile/78/90
http://www.dimap.ufrn.br/~thais/SD20071/RPC-RMI.pdf
http://www.dimap.ufrn.br/~thais/Pdist/rpc1.pdf
http://www.inf.puc-rio.br/~noemi/sd-09/aula4.pdf
http://www.inf.ufes.br/~falbo/files/ProjetoSoftware2010.pdf
http://www.portalgigaweb.com.br/site/index2.php?
option=com_docman&task=doc_view&gid=40&Itemid=9