Escolar Documentos
Profissional Documentos
Cultura Documentos
dos módulos
Configuração Visão
módulos
de – Componentes, conectores, configuração
Visão de Módulo Novos
Particionamentos Execução
Módulos,
Subsistemas,
Novos dos Módulos
• Desafio:
Particionamentos
Camadas dos Módulos entidades de
execução – Isolar comunicação entre componentes em
Visão de Código Mudanças em conectores
entidades de
execução
Código Fonte
Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista
1
Visão de Módulo Visão de Execução
• Componentes e Conectores que formam a • Descreve como os módulos são mapeados
visão conceitual são mapeados em para elementos oferecidos pela plataforma
subsistemas e módulos de execução e como estes são mapeados
– Dependências entre módulos devem ser para o hardware
minimizadas • Define entidades de execução e seus
– Reuso de módulos deve ser maximizado atributos como uso de memória e de
elementos de hardware
Relacionamento entre as
Visão de Código
Visões
• Determina: • Há necessidade de feedback e interação entre as
visões
– como as entidades de execução da visão de
• As visões módulo, execução e código auxiliam a
execução são mapeadas a componentes a nível
diminuir o gap entre o que uma ADL modela e o
de implementação (p.ex. executáveis) que uma plataforma de execução pode executar.
– como módulos da visão de módulo são – Componentes e conectores da visão conceitual não
mapeados em componentes fonte podem ser diretamente mapeados para uma plataforma
de execução
– como componentes a nível de implementação
– As visões módulo e execução definem como
são mapeados a partir dos componentes fonte componentes e conectores são mapeados para uma
plataforma de execução
2
Visão Conceitual Visão Conceitual
• Definir componentes, conectores e • Componentes Conceituais
configuração – Contém PORTAS que são pontos de interação
– Mapear comportamento funcional do sistema – PORTAS ≠ INTERFACE
em componentes • Serviços Oferecidos X Serviços Requisitados
– Mapear os aspectos de controle e comunicação – Interface define serviços e operações que o componente
OFERECE não o que ele USA.
em conectores – Portas definem tanto serviços que o componente oferece
– Definir as instâncias dos componentes e quanto os que o componente usa.
conectores e como elas são interconectadas • Implementação
– Cada porta tem um protocolo associado que diz como as
Estilos Arquiteturais podem ser utilizados nesta fase! operações são encaminhadas
Visão Conceitual
Elementos UML
Componente Conceitual
• Caixas são classes na notação UML
* *
CComponent CConnector • Linhas são relações
0..1 0..1
0..1
– Linhas com o diamante sólido significa
* composição: as classes ligadas ao diamante é
CPort
decomposta ou contém as classes da outra
*
obedece
3
Visão Conceitual
Visão Conceitual
Conector Conceitual
• Conectores Conceituais
* *
– Contém PAPÉIS (ROLES) que são pontos de CComponent CConnector
0..1 0..1
0..1
interação
*
– Os Papéis obedecem a um protocolo associado CRole
*
obedece
– Podem ser decompostos em Componentes e
Conectores Protocol
1
Visão Conceitual
Visão Conceitual
Configuração Conceitual
• Configuração Conceitual
* * * *
– Define relações entre componentes e conectores CPort cconection
CRole
* *
– Componentes e Conectores são interconectados cbinding cbinding
Elemento UML
4
Visão Conceitual
Elemento UML
Meta-Modelo da Estrutura
• O elemento NOTE é usado para descrever Configuração
Conceitual
restrições adicionais que é difícil expressar
1 1
com a notação gráfica
* * * * ** {cconection pode conectar cport
CComponent CConnector e crole apenas quando o respectivo
0..1 0..1 0..1 componente e conector são em-
0..1
0..1 0..1 capsulados pelo mesmo elemento}
{cconection pode conectar cport e
crole apenas quando o eles tem
protocolos compatíveis}
* * *
CPort * cconection
* CRole *
* *
obedece
obedece
*
cbinding
cbinding
Voltar Protocol
1 1
Visão Conceitual
Visão Conceitual
Resumo da Representação
• Além de descrever a estrutura de
Artefato Representação
componentes, conectores e da configuração,
Configuração Conceitual Diagrama de Classes UML
é necessário descrever os aspectos
Diagrama de Statechart UML
comportamentais Protocolo de Porta ou Papel
ou diagrama de Sequência
– UML Statechart Diagram Comportamento do Componente Diagrama de Statechart UML
ou do Conector ou descrição em ling. natural
5
Visão de Módulo Relacionamento
Visão Conceitual x Visão de Módulo
• Componentes e Conectores que formam a visão • A Visão Conceitual e a Visão de Módulo
conceitual são mapeados em subsistemas e são baseados em dois diferentes modelos:
módulos
– Visão Conceitual: componentes implementam a
• Diferença da Visão Conceitual para a Visão de funcionalidade da aplicação e interagem via
Módulo conectores.
– Cada uma torna explícito diferentes aspectos
– Visão de Módulo: toda a funcionalidade da
• Na visão conceitual os relacionamentos funcionais devem estar
explícitos aplicação e a comunicação devem ser mapeada
• A visão de módulo torna explícito como a funcionalidade é em módulos
mapeada para a implementação
6
Visão de Módulo
Visão de Módulo
Subsistema
• Não define uma configuração • Usualmente corresponde ao componente
– Define os módulos e seus relacionamentos mas conceitual de mais alto nível (aquele que é
não como eles são combinados em um produto decomposto em outros componentes e
particular (as visões conceitual e de execução conectores)
define a configuração)
• Contém outros subsistemas e módulos
• Resultados da Visão de Módulo:
– Módulos, Subsistemas e Camadas
7
Visão de Módulo Visão de Módulo
Meta-modelo para Subsistemas e Módulos Camadas
• Camadas organizam módulos em uma hierarquia
*
Subsistema • Quando um módulo é associado a uma camada,
contém
0..1 0..1
ele pode usar outros módulos desta camada
provide
contém
assigned to
Módulo * 0..1
Camada
* evitando que a mudança em uma parte afete o
* 0..1
sistema inteiro
use
8
Visão de Módulo Visão de Módulo
Camadas Meta-Modelo
• Como definir Camadas
* {Camada A usa camada B
– Top-down: determine as camadas baseadas na Subsistema quando A requisita uma
contém
interface que B oferece}
experiência. Atribua os módulos às camadas. (As 0..1 0..1
contém
provide
Interface
– Bottom-up: determine os módulos, suas *
* * *
responsabilidades e dependências. Em seguida * ** require require * *
* *
determine as camadas.
contém
Módulo * assigned to
0..1
Camada
Estratégia Top-Down + Bottom-Up: divida em camadas genéricas *
(aplicação, interface com usuário, serviços do sistema). 0..1 * * 0..1
* use
Quando definir os módulos refine o modelo em camadas adicionando use
camadas que tratem da funcionalidade específica da aplicação
9
Visão de Execução Visão de Execução
• Descreve a estrutura do sistema em termos de • Define:
elementos da plataforma de execução (p.ex.
tarefas do SO, processos, threads). – Entidades de execução
• Recebe como entrada o Modelo Conceitual e o – Caminhos de Comunicação entre as entidades
Modelo de Módulos – Configuração de execução
• É necessário conhecer a plataforma de hardware
(todos os componentes de hardware disponíveis) e
a plataforma de software (os softwares que estão
entre o hardware e o sistema projetado – SO,
software de rede, middleware)
10
Visão de Execução Visão de Execução
Entidades de Execução Meta-modelo para Entidades de Execução
• Após identificar os elementos da plataforma de
software deve- es decidir como mapear os Elemento da
componentes conceituais e módulos para os Plataforma
elementos da plataforma 1
Is a
– Um ou mais módulos são representados por uma
entidade de execução e um módulo pode ser atribuído a * assigned to
Entidade de
mais de uma entidade de execução Execução * * Módulo
– Podem existir entidades de execução como processos
servidores que não tenham correspondência direta com
módulos mas são necessários para dar suporte a outras
entidades de execução.
11
Visão de Execução Visão de Execução
Configuração de Execução Configuração de Execução
• Descreve a topologia de execução do • Deve-se determinar e descrever como a
sistema caracterizando as instâncias das configuração muda ao longo do tempo e
entidades de execução e como elas são como estas mudanças são controladas.
interconectadas.
• Há distinção entre uma entidade de
execução e suas correspondentes instâncias
(exceto quando só há uma instância)
12
Visão de Código Visão de Código
• Descreve como o software que implementa • Descreve como um módulo, suas interfaces e suas
o sistema é organizado dependências são mapeadas a componentes e
dependências específicas da linguagem. Estes
• O objetivo principal desta visão é facilitar a mapeamentos e convenções podem variar de
construção, integração, instalação e teste do acordo com a linguagem de programação
sistema respeitando a integridade das outras • As visões de módulo e de execução são
três visões arquiteturais independentes de linguagem de programação
13
Visão de Código Visão de Código
Meta-modelo dos elementos básicos Componentes Fonte
• Tipicamente componentes fontes
Componente Componente Biblioteca Executável Descrição da representam as interfaces e módulos
* *
Fonte Binário
* * * * * 1 Configuração específicos da linguagem
* * 1 * * * * *
gera importa – Exemplo: em C/C++ interfaces específicas da
compile link
link Usa na execução
linguagem são arquivos com nomes como *.h e
compile
módulos tem nome com *.c e *.CPP
link
14
Visão de Código Visão de Código
Componentes Fonte Componentes Intermediários
• Elementos da visão de módulo são mapeados em • São específicos da linguagem de
componentes fonte específicos de linguagem que programação e do ambiente de
implementa- os. Por exemplo: Mapeando para desenvolvimento.
C++, a interface de um módulo é mapeada em um
arquivo .h e o código é mapeado em um arquivo – Exemplo: Em C++, para cada arquivo .CPP tem
.CPP um componente binário correspondente ou
arquivo .obj
• Para módulos complexos pode ser necessário
distribuir a implementação em vários arquivos • Binários e Bibliotecas Estáticas são
componentes intermediários
15
Visão de Código
Meta-modelo
segue
Subsistema 0..1 *
Grupo de Código
Camada 0..1 segue
*
Módulo 0..1
Componente Componente Biblioteca Executável Descrição da
* Fonte
* Binário Configuração
Interface ** 1 * * * * * * * * * 11 *
0..1 gera importa
compile
Entidade de link
Execução * Instancia
Arquitetura de Software – Thaís Batista
16