Você está na página 1de 16

Visões Arquiteturais Visões Arquiteturais

• Separar diferentes aspectos em visões separadas • Quatro visões:


com o objetivo de gerenciar complexidade. – Conceitual: descreve o sistema em termos dos
• Cada visão descreve diferentes conceitos da elementos de design e relacionamentos entre eles
Engenharia. – Módulo: consiste na decomposição do sistema em
• Visões permitem reduzir a quantidade de módulos
informação que o arquiteto trata em um dado – Execução: consiste no mapeamento dos componentes a
momento entidades de execução e de hardware. Este mapeamento
deve ser definido na fase de projeto arquitetural e não
• Muitos arquitetos de software tem usado as apenas na fase de desenvolvimento.
diferentes visões sem reconhecê- las como visões
– Código: consiste na organização do código fonte em
arquiteturais separadas. bibliotecas, binários, arquivos, versões e diretórios
Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

Visões Arquiteturais Visão Conceitual


ARQUITETURA DE SOFTWARE
Componentes,
Conectores,
• Mais próxima ao domínio da aplicação
Configuração
Visão Conceitual
restrições de
• A funcionalidade do sistema é mapeada em
Componentes,
Conectores,
restrições execução
elementos arquiteturais:
Hardware

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

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

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

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

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

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

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

extremidade. A multiplicidade da relação é


1
Protocol exibida pelo número (ou um asterisco para zero
ou mais) próximo ao fim da relação

Elementos UML Voltar


Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

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

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

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

através de suas portas e papéis


– Podem ser decompostos em Componentes e {cconection pode conectar cport
e crole apenas quando o respectivo
componente e conector são em-
Conectores capsulados pelo mesmo elemento}
{cconection pode conectar cport e
crole apenas quando o eles tem
protocolos compatíveis}

Elemento UML

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

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

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

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

Diagrama de Sequência UML


Interações entre Componentes

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

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

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

Relacionamento Visão de Módulo


Visão Conceitual x Visão de Módulo
• Visão Conceitual • Definir módulos que possuem interface com
– Dois componentes comunicam-se através de um os serviços oferecidos (provided) e
conector com semântica call/return requisitados (required)
• Visão de Módulo • Módulos interagem invocando serviços
– Representa em módulos os elementos da declarados na sua interface required
implementação que poderá ter duas variações:
• Os dois componentes na mesma máquina: o conector • Módulos não possuem implementação
implementa uma chamada de procedimento local associada
• Os dois componentes em máquinas diferentes: o conector
implementa chamada remota de procedimento (RPC)

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

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

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

Visão de Módulo Visão de Módulo


Módulo Módulo
• Pode corresponder a um único elemento • Serviços:
conceitual (componente, porta, conector ou – Os serviços oferecidos por um módulo são definidos
pelas interfaces que ele oferece (provided)
papéis) ou a um conjunto deles.
– Os serviços que um módulo precisa de outro módulo
• Podem ser decompostos em outros módulos para realizar suas funções são os serviços requisitados e
são definidos pelas interfaces que ele solicita (required)
• Encapsula dados e operações para prover
• Interagem com outros apenas através das
um serviço
interfaces

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

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

* Interface • Quando um módulo necessita usar serviços de um


* módulo de outra camada, a interface solicita e
* ** require
Módulo * {Módulo A usa Módulo B
quando A requisita uma
requisitada pelos módulos devem ser também
0..1
** interface que B oferece}
requisitas e solicitadas pelas camadas.
use
• Camadas podem ter subcamadas

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

Visão de Módulo Visão de Módulo


Meta-modelo para Camadas Camadas
• Utilidade
provide {Camada A usa camada B
Interface
*
quando A requisita uma
interface que B oferece}
– Reduzir complexidade
*
– Permitir reuso atribuindo serviços comuns a
require * camadas de serviços da aplicação
* *
– Oferecer independência entre partes do sistema
contém

assigned to
Módulo * 0..1
Camada
* evitando que a mudança em uma parte afete o
* 0..1
sistema inteiro
use

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

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

camadas servem de guia para definição dos módulos) provide

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

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

Visão de Módulo Visão de Módulo


Tarefas Resumo da Representação
• Mapear os elementos da visão conceitual em
Artefato Representação
CAMADAS, SUBSISTEMAS e MÓDULOS
• Atribuir aos módulos uma responsabilidade e Correspondência Conceitual-Módulo Tabela
determinar sua composição e seus relacionamentos Subsistemas e Módulos Diagrama de Classes UML

• Pode ser necessário adicionar módulos de suporte


Dependências dos Módulos Diagrama de Classes UML
que não tem correspondente na visão conceitual
• Descrever as interfaces para cada um dos módulos Dependências de Camadas, Diagrama de Classes UML
e camadas Atribuição de Módulos a Camadas

Resumo das relações entre Módulos Tabela

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

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)

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

Visão de Execução Visão de Execução


Meta-Modelo dos Elementos da Plataforma
• Atividades Iniciais: Plataforma
de Software
– Liste os componentes de hardware do ambiente
de execução * *
Elemento da Recurso da * 1 Recurso de
– Liste a plataforma de software Plataforma Plataforma assigned to Hardware
* *
– Liste os elementos da plataforma que serão contém

usados na visão de execução consome

Thread Task Queue ... Memória Timer ...

Processo Socket Espaço Ender


Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

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.

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

Visão de Execução Visão de Execução


Caminho de Comunicação Meta-modelo para Comunicação

• Identificar os caminhos de comunicação


Mecanismo de Elemento da
entre as entidades de execução (mecanismos Comunicação Plataforma
e recursos usados para comunicação) 1 * consome
* 1
Is a
Use mecanismo
... COM RPC IPC * *
Caminho de Entidade de
Comunicação Execução
* 2..*
Comunica-se através

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

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)

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

Visão de Execução Visão de Execução


Resumo da Representação Meta-modelo da Visão de Execução
Plataforma
Artefato Representação de Software

Configuração de Execução Diagrama de Classes UML


* * *
Configuração de Execução mapeadas Diagrama de Desenvolvimento Mecanismo de Elemento da Recurso da * 1 Recurso de
a dispositivos de hardware UML Comunicação Plataforma Plataforma assigned to Hardware
1 1 * *
Comportamento dinâmico da configu- Diagrama de Sequência UML contém
ração, ou transição entre configurações consome consome

Diagrama de Classes UML Is a


Descrição das entidades de execu- Mecanismo use

ção (tipos de host, replicação, etc) ou Tabela * *


Caminho de Entidade de *assigned to* Módulo
Protocolo de Comunicação Diagrama de Sequência ou Comunicação Execução
Statechart
* Comunica-se através
2..*
Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

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

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

Visão de Código Visão de Código


• Com um executável • Tarefas:
– Visão de código reflete a estrutura da visão de – Mapear os elementos da visão de módulo e da
módulo visão de execução para componentes de código:
• Com múltiplos executáveis • Componentes Fonte
• Componentes Intermediários (componentes binários,
– Visão de código torna- se mais complexa e em
• Componentes de Desenvolvimento (executáveis,
geral diverge da visão de módulo e da visão de bibliotecas dinâmicas e descrição da configuração)
execução

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

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

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

Visão de Código Visão de Código


Componentes Fonte Componentes Fonte
• São relacionados com outros por dois tipos • Para identificar componentes fonte:
de dependências específicas da linguagem: – Identificar componentes fonte e mapear os
– Importação: um componente precisa importar elementos e dependências da visão de módulo
outro. Esta relação é uma dependência de para componentes fonte e dependências
compilação. Por exemplo: a dependência de – Organizar os componentes fonte usando
inclusão entre um componente fonte e um estruturas de armazenamentos como diretórios
arquivo de cabeçalho e arquivos
– Geração: quando um componente fonte é • É necessário definir um critério de organização dos
gerado a partir de outro componente fonte. arquivos: similaridade de funcionalidade, pessoa
responsável pelo desenvolvimento, etc...

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

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

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

Visão de Código Visão de Código


Componentes de Desenvolvimento Resumo da Representação
• São componentes necessários para formar
um sistema executável Artefato Representação
– Executáveis, bibliotecas dinâmicas e
Correspondência Módulo-Comp.Fonte Tabela
descrições de configuração
Correspondência Executável – Tabelas
• A descrição da configuração pode descrever entidade de execução

processos e/ou recursos Descrição dos componentes da Diagrama de Componentes


Visão de código e suas dependências UML

Arquitetura de Software – Thaís Batista Arquitetura de Software – Thaís Batista

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 link Usa na execução


link

compile

Entidade de link
Execução * Instancia
Arquitetura de Software – Thaís Batista

16

Você também pode gostar