12

Click here to load reader

Trabalho - Arquitetura e Padrões de Construção de Software Seguro.doc

Embed Size (px)

Citation preview

Page 1: Trabalho - Arquitetura e Padrões de Construção de Software Seguro.doc

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

Page 2: Trabalho - Arquitetura e Padrões de Construção de Software Seguro.doc

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.

Page 3: Trabalho - Arquitetura e Padrões de Construção de Software Seguro.doc

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.

Page 4: Trabalho - Arquitetura e Padrões de Construção de Software Seguro.doc

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.

Page 5: Trabalho - Arquitetura e Padrões de Construção de Software Seguro.doc

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.

Page 6: Trabalho - Arquitetura e Padrões de Construção de Software Seguro.doc

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.

Page 7: Trabalho - Arquitetura e Padrões de Construção de Software Seguro.doc

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.

Page 8: Trabalho - Arquitetura e Padrões de Construção de Software Seguro.doc

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.

Page 9: Trabalho - Arquitetura e Padrões de Construção de Software Seguro.doc

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