Arquitetura de Softwarethais/MES20061/aula2.pdf · Arquitetura de Software – Thaís Batista...
Transcript of Arquitetura de Softwarethais/MES20061/aula2.pdf · Arquitetura de Software – Thaís Batista...
Arquitetura de Software – Thaís Batista
Arquitetura de Software
Ponte entre os requisitos do sistema e sua implementação
Arquitetura
Requisitosdo Sistema
Implementação do
SistemaArquiteto(s)
Arquitetura de Software – Thaís Batista
Arquitetura de Software (AS)
• Abstração que ajuda a gerenciar complexidade• Projeto Arquitetural do Software
– Estrutura modular do software• Componentes• Relacionamento entre componentes
• Linguagem de Descrição Arquitetural (ADL) descreve a arquitetura do sistema
Arquitetura de Software – Thaís Batista
Motivação para AS
• Programming-in-the-large X Programming-in-the-small (Frank DeRemer and Hans Kron. 1976)– Programming-in-the-large: estrutura da aplicação
descrevendo a interconexão entre os componentes• MILs (Module Interconnection Language): linguagens
puramente declarativas para descrever estaticamente a interconexão entre os módulos
– Programming-in-the-small: código interno do componente ou do módulo
Arquitetura de Software – Thaís Batista
Motivação para AS
• Representação de sistemas informalmente através de caixas e linhas
• Gerenciamento da complexidade de sistemas
• Dinamismo• Redução do gap entre especificação e
implementação
Arquitetura de Software – Thaís Batista
Terminologias em AS
• Estilo Arquitetural ou Padrão Arquitetural ou Estilo (simplesmente): define os tipos de elementos e como eles interagem– Ex.: Pipe-Filtros é um estilo que define:
• Elementos (dois tipos): pipe e filtro. • Interação: um pipe pode ser conectado a um filtro mas pipes
não podem ser conectados a pipes nem filtros podem ser conectados a filtros
• Arquitetura: processamento é mapeado em filtros e os pipes agem como condutores de dados
Arquitetura de Software – Thaís Batista
Terminologias em AS
• Arquitetura de Referência ou Arquitetura de Software específica de Domínio: define tipos de elementos e interações permitidas em um domínio particular de aplicações. Ou seja, define como a funcionalidade de um domínio é mapeada em elementos arquiteturais
Arquitetura de Software – Thaís Batista
Terminologias em AS
• Arquitetura de uma linha de produtos: – É aplicada a um conjunto de produtos dentro de
uma organização. Tais produtos compartilham um design comum e, as vezes, parte da implementação
– Define tipos de elementos e como eles interagem
Arquitetura de Software – Thaís Batista
Terminologias em AS
• As arquiteturas não são mutuamente exclusivas– Exemplo: uma arquitetura de linha de produtos pode
ser baseada em uma arquitetura de referência e esta, por sua vez, em um estilo arquitetural
Estilo Arquitetural
Arquitetura de Referência Arquitetura de Linha de Produtos
Arquitetura de Software – Thaís Batista
ADLs
• Específicas para descrição de arquiteturas• Expressam características estruturais e
comportamentais dos sistemas• Permitem reusabilidade • Oferecem primitivas para composição do
sistema• Em geral incluem um formalismo
Arquitetura de Software – Thaís Batista
ADLs
• Características Desejáveis:– Suporte a dinamismo
• Inserir/Remover Componentes e Conexões entre eles
• Atualizar Componentes
– Permitir heterogeneidade de padrões e/ou de linguagens
Arquitetura de Software – Thaís Batista
Elementos Básicos de ADLs
• Componentes
• Conectores
• Configurações
Arquitetura de Software – Thaís Batista
Componentes
• Blocos de alto nível • Oferece
– Modularidade– Separação dos conceitos
• Publicam a interface• Escondem a implementação
Arquitetura de Software – Thaís Batista
Componentes
• Interfaces– Definem os pontos de acesso ao componente -
propriedades visíveis externamente– Possibilitam plug-and-play– Servem como um contrato entre componentes– Interfaces bem definidas tornam fácil a identificação e o
propósito do comportamento do componente– Podem ser representadas por: Portas, Pontos de
Interação, Serviços, etc... (diferentes terminologias e, em alguns casos, diferentes tipos de informações)
Arquitetura de Software – Thaís Batista
Componentes• Exemplo Interface
Interface pessoa{
string nome;short identidade;long data_de_nascimento;
void add_pessoa(in string nome, in short id, in long data)raises (JaCadastrado)
}
Arquitetura de Software – Thaís Batista
Componentes• Exemplo Interface em MetaH
with type package Nav_Types;process interface A is
sensor: in port Nav_Types.Rate_Vector;position: out port Nav_Types.ECEF_Type;
end A;
A
Arquitetura de Software – Thaís Batista
Conectores
• Descrevem as interações e estabelecem restrições de como as mensagens fluem entre os componentes– Exemplo: um conector em um sistema cliente-
servidor descreve o comportamento do cliente como uma sequência de solicitações alternadas com a recepção dos resultados
• Concentram a informação sobre interconexão e a torna visível e reusável
Arquitetura de Software – Thaís Batista
Conectores
• ADLs modelam conectores de várias formas:– Explicitamente: têm nome e podem ser
reusados• Exemplos: UniCon, ACME, C2, Wright
– In-Line: não têm nome e não podem ser reusados
• Exemplo: Rapide e MetaH
Arquitetura de Software – Thaís Batista
Conectores• Exemplo
Conector em ACME Conector em Rapide
Connector rpc = {Roles {caller, callee}Properties { synchronous}
connect C.Send ||> B1.Receive
Arquitetura de Software – Thaís Batista
Configurações
• Descrevem a topologia do sistema: os elementos constituintes (componentes e conectores) e como eles estão interconectados para formar a arquitetura
A
B C
D E F
Arquitetura de Software – Thaís Batista
Configuraçõesarchitecture StackVisualizationArchitecture iscomponents
top_most StackADT; internal StackVisualization1; StackVisualization2; bottom_most GraphicsServer;
connectorsconnector TopConnector is
message_filter no_filteringend TopConnector; connector BottomConnector is
message_filter no_filteringend BottomConnector;
architectural_topologyconnector TopConnector connections
top_ports StackADT; bottom_ports StackVisualization1; StackVisualization2;
connector BottomConnector connectionstop_ports StackVisualization1; StackVisualization2; bottom_ports GraphicsServer;
end StackVisualizationArchitecture;
Configuraçãoem C2
Arquitetura de Software – Thaís Batista
Exemplo em Wright
• Descrição simplificada de um sistema cliente-servidor em Wright
Style Cliente-ServidorComponent ClientePort pComputation [descrição]
Component ServidorPort pComputation [descrição]
Connector Cli-ServRole cRole sGlue [descrição]EndStyle
Configuration Cliente-ServidorStyle Cliente-ServidorInstances C:Cliente, CS:Cli-Serv, S:ServidorAttachments
C.p as CS.cS.p as CS.s
End Configuration
A configuração é uma instância do estilo arquitetural
Arquitetura de Software – Thaís Batista
Exemplos de ADLs
ADL Organização Referência Objetivos de DesignACME Carnegie Mellon
University
MetaH Honeywell Technology
Rapide
UniCon
Wright
StanfordUniversity
Carnegie MellonUniversity
Carnegie MellonUniversity
Carnegie MellonUniversity, 1997
Oferece uma linguagem de intercâmbiopara facilitar compartilhamento de
componentes arquiteturais
Vestal, 1998 Especifica aspectos de tempo real econcorrência
Luckham et al.1995
Oferece uma ADL executável baseadaem um modelo de execução orientado a
eventos
Shaw and Garlan,1996
Suporta contrução arquitetural baseada em estilo interconectando componentes
Allen and Garlan1997
Oferece um formalismo que foca nos tipos explícitos de conectores
Arquitetura de Software – Thaís Batista
Classificação de ADLs
• De acordo com o relacionamento entre a descrição arquitetural e a implementação do sistema
– Linguagens independentes de implementação• Wright, Rapide • Problema: Erosão Arquitetural => não correspondência entre
descrição arquitetural e implementação do sistema
– Linguagens limitadas a implementação: • UniCon