Arquitetura de Software I
Hyggo Oliveira de Almeida
Laboratório de Sistemas Embarcados e Computação Pervasiva
Centro de Engenharia Elétrica e Informática
Universidade Federal de Campina Grande
2
Módulo I
Relembrando...






O que é arquitetura de software?
Motivação e benefícios
Conceitos
Visões arquiteturais
Descrevendo arquiteturas com UML
Estilos arquiteturais
Pós-Engenharia de Software - FAT
2
Módulo II
Estilos e padrões arquiteturais
Atributos de qualidade
Seleção de estilos
Seleção de visões
Rastreabilidade bidirecional
2
Estilos e padrões arquiteturais

Estilos arquiteturais


Definem meios de selecionar e apresentar blocos de
construção de arquitetura (Shaw)
Padrões arquiteturais

Projetos de alto nível, testados e validados, de blocos de
construção de arquitetura (Buschman).
Pós-Engenharia de Software - FAT
4
Estilos e padrões arquiteturais
Classificação
Invocação/Retorno (Call/Return)
Programa principal/Subrotina (Main Program/Subroutine)
Invocação remota de procedimento (Remote Procedure Call - RPC)
Camadas (Layered)
Componentes independentes (Independent Components)
Comunicação de processos (Communicating Processes)
Baseado em eventos
Máquina virtual (Virtual Machine)
Interpretador (Interpreter)
Baseado em regras (Rule-based)
Centrado em dados (Data-Centered)
Repositório (Repository)
Quadro negro (Blackboard)
Fluxo de dados (Data-Flow)
Seqüencial (Batch Sequential)
Tubos e filtros (Pipe and Filter)
Pós-Engenharia de Software - FAT
5
Estilos e padrões arquiteturais
Invocação/Retorno (Call/Return)

Programa principal/Subrotina (Main Program/Subroutine)
Programa principal
Subrotina 1
Subrotina 2
Pós-Engenharia de Software - FAT
Subrotina 3
6
Estilos e padrões arquiteturais
Invocação/Retorno (Call/Return)

Programa principal/Subrotina (Main Program/Subroutine)

Objetivos
Programa principal
Subrotina 1
Subrotina 2
Subrotina 3
Reúso
Pós-Engenharia de Software - FAT
7
Estilos e padrões arquiteturais
Invocação/Retorno (Call/Return)

Programa principal/Subrotina (Main Program/Subroutine)

Objetivos
Programa principal
Subrotina 1
Subrotina 2
Subrotina 3
Desenvolvimento
independente
Pós-Engenharia de Software - FAT
8
Estilos e padrões arquiteturais
Invocação/Retorno (Call/Return)

Invocação remota de procedimento (RPC)
Programa principal
Subrotina 1
Subrotina 2
Subrotina 3
192.168.10.8
192.168.10.11
Pós-Engenharia de Software - FAT
9
Estilos e padrões arquiteturais
Invocação/Retorno (Call/Return)

Invocação remota de procedimento (RPC)
Programa principal
Subrotina 1
Subrotina 2
Subrotina 3
Ganho de
desempenho
(2 processadores)
192.168.10.8
192.168.10.11
Pós-Engenharia de Software - FAT
10
Estilos e padrões arquiteturais
Invocação/Retorno (Call/Return)

Camadas (Layered)
Aplicação
Apresentação
Apresentação
Sessão
Negócio
ISO-OSI
Transporte
Clássica
3 camadas
Armazenamento
Rede
Dados
Física
Pós-Engenharia de Software - FAT
11
Estilos e padrões arquiteturais
Invocação/Retorno (Call/Return)

Camadas (Layered)

Camadas se comunicam apenas com outras adjacentes
Apresentação
Negócio
Armazenamento
Pós-Engenharia de Software - FAT
12
Estilos e padrões arquiteturais
Invocação/Retorno (Call/Return)

Camadas (Layered)

Alterações locais não são propagadas
Apresentação
Negócio
Armazenamento
Pós-Engenharia de Software - FAT
13
Estilos e padrões arquiteturais
Componentes independentes

Comunicação de processos (Communicating Processes)

Baseado na comunicação via troca de mensagens entre
processos



Em geral, via rede
Cliente - Servidor
Ponto a ponto (Peer to Peer – P2P)
Pós-Engenharia de Software - FAT
14
Estilos e padrões arquiteturais
Componentes independentes

Comunicação de processos (Communicating Processes)

Cliente – Servidor

Já vimos anteriormente
Servidor
Aplicação: Internet
Clientes
Pós-Engenharia de Software - FAT
15
Estilos e padrões arquiteturais
Componentes independentes

Comunicação de processos (Communicating Processes)

Cliente – Servidor

Problema: servidor é ponto de falha!
Servidor
Clientes
Pós-Engenharia de Software - FAT
16
Estilos e padrões arquiteturais
Componentes independentes

Comunicação de processos (Communicating Processes)

Ponto a Ponto (P2P)



Não há distinção entre nós
Cada nó mantém seus próprios dados e endereços conhecidos
Cada nó é “cliente e servidor ao mesmo tempo”
Pós-Engenharia de Software - FAT
17
Estilos e padrões arquiteturais
Componentes independentes

Comunicação de processos (Communicating Processes)

Ponto a Ponto (P2P)




Exemplos de redes P2P: gnutella, freenet
Exemplos de aplicação: Kazaa, eMule
Vantagem: não há ponto de falha
Desvantagem: tempo de consulta
Pós-Engenharia de Software - FAT
18
Estilos e padrões arquiteturais
Componentes independentes

Baseado em eventos




Produtores e consumidores de eventos
Consumidores se registram nos Produtores
Produtores notificam consumidores registrados
Motivação:
imprimir
a.imprimir()
A
B
Pós-Engenharia de Software - FAT
19
Estilos e padrões arquiteturais
Componentes independentes

Baseado em eventos



Produtores e consumidores são independentes
Execução via procedimentos disparados via mudança de estados
Escalabilidade no número de interessados
imprimir()
A
Consumidor
interessado(“relatorioOK”)
relatorioOK
B
Produtor
Relatóri
o OK
Pós-Engenharia de Software - FAT
20
Estilos e padrões arquiteturais
Componentes independentes

Baseado em eventos

Aplicação comum

Interface gráfica
onKeyDown
onMouseOver
onKeyUp
onMouseReleased
onMouseClick
menuDown
onMousePressed
onSelected
Pós-Engenharia de Software - FAT
21
Estilos e padrões arquiteturais
Centrado em dados (Data-centered)

Repositório (Repository)

Integridade, escalabilidade (novos clientes, novos dados)
Cliente 2
Clientes operam
sobre os dados
Cliente 3
Cliente 1
Cliente n
Estado atual
consistente
Dados
compartilhados
Pós-Engenharia de Software - FAT
22
Estilos e padrões arquiteturais
Centrado em dados (Data-centered)

Repositório (Repository)

Exemplo: banco de dados tradicional
Cliente 2
Cliente 3
Cliente 1
Gatilhos
(triggers)
Cliente n
Transações
Dados
compartilhados
Pós-Engenharia de Software - FAT
23
Estilos e padrões arquiteturais
Centrado em dados (Data-centered)

Quadro negro (Blackboard)
Controlador
x
-
Gerência dos dados
Fontes de
conhecimento
+
Pós-Engenharia de Software - FAT
24
Estilos e padrões arquiteturais
Centrado em dados (Data-centered)

Quadro negro (Blackboard)
Sei subtrair!
Sei multiplicar!
2 x (3+2)2 + 3 - 6 = ?
-
x
Controlador
Sei
exponencial!
Sei somar!
+
Pós-Engenharia de Software - FAT
25
Estilos e padrões arquiteturais
Centrado em dados (Data-centered)

Quadro negro (Blackboard)
2 2x x(3+2)
(5)2 2++33- -66==??
-
x
Controlador
+
Pós-Engenharia de Software - FAT
26
Estilos e padrões arquiteturais
Centrado em dados (Data-centered)

Quadro negro (Blackboard)
2 x 25
(5)2++33- -66==??
-
x
Controlador
+
Pós-Engenharia de Software - FAT
27
Estilos e padrões arquiteturais
Centrado em dados (Data-centered)

Quadro negro (Blackboard)
+ 3+- 36 -=6?= ?
250
x 25
-
x
Controlador
+
Pós-Engenharia de Software - FAT
28
Estilos e padrões arquiteturais
Centrado em dados (Data-centered)

Quadro negro (Blackboard)
53 47
-6=?
-
x
Controlador
+
Pós-Engenharia de Software - FAT
29
Estilos e padrões arquiteturais
Centrado em dados (Data-centered)

Quadro negro (Blackboard)
Ap 1
Ap 2
Ap 3
Quadro Negro
Controlador
Ap 4
Ap n
Ap 5
Pós-Engenharia de Software - FAT
30
Estilos e padrões arquiteturais
Centrado em dados (Data-centered)

Quadro negro (Blackboard)




Sistemas complexos
 Resolução Distribuída de Problemas - RDP
Aplicações independentes
 Escalabilidade
Ponto de falha!!!
 Quadro negro
Arquitetura usada no paradigma de agentes
Pós-Engenharia de Software - FAT
31
Estilos e padrões arquiteturais
Máquina virtual (Virtual Machine)

Interpretador (Interpreter)

Simular funcionalidade não nativa para obter portabilidade
entrada
dados
saída
Programa sendo
interpretado
Dados
(Estado do programa)
Atualiza
Mecanismo de
interpretação
Dados de
estado
Instrução selecionada
Dados selecionados
Pós-Engenharia de Software - FAT
Instruções do
programa
Estado interno
(Instruções + dados)
32
Estilos e padrões arquiteturais
Máquina virtual (Virtual Machine)

Interpretador (Interpreter)

Exemplo: Java
public class Oi{
...
}
Máquina
Virtual
Compilador Java
“javac.exe”
Máquina
Virtual
Arquivo “Oi.java”
bytecode
Êþº¾ 1
<init>
()V
Code
LineNumberTable
main
([Ljava/lang/String;)...
INTERPRETA
Arquivo “Oi.class”
Máquina
Virtual
Máquina
Virtual
Máquina
Virtual
Pós-Engenharia de Software - FAT
33
Estilos e padrões arquiteturais
Máquina virtual (Virtual Machine)

Interpretador (Interpreter)

Problema


Algumas pesquisas apontam que algumas das linguagens
interpretadas já conseguem ser mais rápidas que C


Desempenho
Java, por exemplo
Máquina virtual nativa – Intel®
Pós-Engenharia de Software - FAT
34
Estilos e padrões arquiteturais
Máquina virtual (Virtual Machine)

Baseado em regras (Rule-based)



Conjunto de regras sobre um estado
Definição do estado atual com base em dados de entrada
Regras alteram o estado
Memória de
trabalho
entrada
saída
Base de
Regras
Máquina de
inferência
Pós-Engenharia de Software - FAT
35
Estilos e padrões arquiteturais
Máquina virtual (Virtual Machine)

Baseado em regras (Rule-based)

Exemplos: Prolog, Sistemas Especialistas
Memória de trabalho
SE “HORA=21:00”
ENTÃO “AÇÃO=LANCHE”
HORA=18:00
HORA = ?
AÇÃO = ?
SE “HORA=22:00”
ENTÃO “AÇÃO=LIBERAR”
SE “HORA<19:00”
ENTÃO “AÇÃO=ESPERAR”
SE “HORA=19:00”
ENTÃO “AÇÃO=COMEÇAR”
Base de Regras
Máquina de
inferência
Pós-Engenharia de Software - FAT
36
Estilos e padrões arquiteturais
Máquina virtual (Virtual Machine)

Baseado em regras (Rule-based)

Exemplos: Prolog, Sistemas Especialistas
Memória de trabalho
SE “HORA=21:00”
ENTÃO “AÇÃO=LANCHE”
HORA = 18:00
AÇÃO = ?
SE “HORA=22:00”
ENTÃO “AÇÃO=LIBERAR”
SE “HORA<19:00”
ENTÃO “AÇÃO=ESPERAR”
SE “HORA=19:00”
ENTÃO “AÇÃO=COMEÇAR”
Base de Regras
Máquina de
inferência
Pós-Engenharia de Software - FAT
37
Estilos e padrões arquiteturais
Máquina virtual (Virtual Machine)

Baseado em regras (Rule-based)

Exemplos: Prolog, Sistemas Especialistas
Memória de trabalho
SE “HORA=21:00”
ENTÃO “AÇÃO=LANCHE”
HORA = 18:00
AÇÃO = ESPERAR
SE “HORA=22:00”
ENTÃO “AÇÃO=LIBERAR”
SE “HORA<19:00”
ENTÃO “AÇÃO=ESPERAR”
SE “HORA=19:00”
ENTÃO “AÇÃO=COMEÇAR”
Base de Regras
Máquina de
inferência
Pós-Engenharia de Software - FAT
38
Estilos e padrões arquiteturais
Máquina virtual (Virtual Machine)

Baseado em regras (Rule-based)

Exemplos: Prolog, Sistemas Especialistas
Memória de trabalho
SE “HORA=21:00”
ENTÃO “AÇÃO=LANCHE”
HORA = 18:00
AÇÃO = ESPERAR
AÇÃO=ESPERAR
SE “HORA=22:00”
ENTÃO “AÇÃO=LIBERAR”
SE “HORA<19:00”
ENTÃO “AÇÃO=ESPERAR”
SE “HORA=19:00”
ENTÃO “AÇÃO=COMEÇAR”
Base de Regras
Máquina de
inferência
Pós-Engenharia de Software - FAT
39
Estilos e padrões arquiteturais
Fluxo de dados (Data Flow)

Seqüencial (Batch Sequential)

Programas independentes executados em seqüência
 Um após o outro
 Dado transmitido por completo entre um programa e outro
Arquivos fonte
Bytecode
class{
}
Arquivo Jar
000
1001
1001
A$n3*
3N4*#
Javac
Jar
Java
Compilando
Empacotando
executando
Pós-Engenharia de Software - FAT
40
Estilos e padrões arquiteturais
Fluxo de dados (Data Flow)

Tubos e filtros (Pipe and Filter)


Já vimos na última aula
Exemplo: compilador
tokens
Código fonte
Analisador
Léxico
Intel backend
Árvore sintática
Analisador
Sintático
Árvore sintática c/ semântica
Analisador
Semântico
Executável otimizado
Gerador de
código
intermediário
Executável
Otimizador
MIPS backend
SPARC backend
Pós-Engenharia de Software - FAT
41
Estilos e padrões arquiteturais
Fluxo de dados (Data Flow)

Tubos e filtros (Pipe and Filter)

Não precisa ser seqüencial
Pós-Engenharia de Software - FAT
42
Estilos e padrões arquiteturais
Exercício


Quais estilos arquiteturais poderiam ser aplicados na
arquitetura definida anteriormente (Módulo I)? Como?
Se algum estilo não puder ser aplicado, justifique o
porquê.
Invocação/Retorno (Call/Return)
Programa principal/Subrotina (Main Program/Subroutine)
Invocação remota de procedimento (Remote Procedure Call - RPC)
Camadas (Layered)
Componentes independentes (Independent Components)
Comunicação de processos (Communicating Processes)
Baseado em eventos
Centrado em dados (Data-Centered)
Repositório (Repository)
Quadro negro (Blackboard)
Máquina virtual (Virtual Machine)
Interpretador (Interpreter)
Baseado em regras (Rule-based)
Fluxo de dados (Data-Flow)
Seqüencial (Batch Sequential)
Pós-Engenharia de Software
- FAT e filtros (Pipe and Filter)
Tubos
43
Atributos de qualidade

Arquitetura e funcionalidade





Se a funcionalidade fosse o único atributo buscado no
desenvolvimento de um software...
... sua arquitetura seria sempre monolítica: uma só função,
um só componente, uma só classe...
Outros atributos: mutabilidade (modifiability), usabilidade,
desempenho...
... influenciam na determinação da arquitetura do software
É com base em atributos de qualidade interessantes para o
sistema que se determina a sua arquitetura
Pós-Engenharia de Software - FAT
44
Atributos de qualidade

Classes de atributos



Qualidades de sistema: disponibilidade, mutabilidade,
desempenho, usabilidade...
Qualidades de negócio: tempo de produção (time to
market), custo e benefício...
Qualidades de arquitetura: buildability, integridade
conceitual...
Pós-Engenharia de Software - FAT
45
Atributos de qualidade
Qualidades de sistema






Disponibilidade
Mutabilidade
Desempenho
Segurança
Testabilidade
Usabilidade
Pós-Engenharia de Software - FAT
46
Atributos de qualidade
Qualidades de sistema

Disponibilidade




Relacionada a falhas no sistema e suas conseqüências
Um sistema está em falha quando não funciona mais de acordo
com a sua especificação
Uma falha é observável do ponto de vista externo
Medida de disponibilidade:
disp =
tempo médio para falhar
tempo médio para falhar + tempo médio para reparar
Pós-Engenharia de Software - FAT
47
Atributos de qualidade
Qualidades de sistema

Mutabilidade


Relacionado ao custo de mudanças
O que pode mudar?


Implementação de funcionalidades
Plataforma na qual o sistema é executado (hardware, SO,...)



O ambiente no qual opera (protocolos, rede, outros sistemas)
Capacidade (nº de usuários, nº de operações simultâneas)


Portabilidade
Escalabilidade
Quem pode mudar?

Desenvolvedor, usuário final, administrador...
Pós-Engenharia de Software - FAT
48
Atributos de qualidade
Qualidades de sistema

Mutabilidade

Quando pode mudar?




Implementação (código fonte)
Construção – build (escolha de bibliotecas)
Configuração
Execução (parametrização)
Pós-Engenharia de Software - FAT
49
Atributos de qualidade
Qualidades de sistema

Desempenho



Relacionado a tempo!
Eventos ocorrem e o sistema tem que responder aos mesmos
A medida de desempenho é:


Evento???


Quanto tempo leva o sistema para responder a um evento?
Interrupções, mensagens, requisições do usuário, inicialização...
Exemplo:

Respostas a requisições do usuário não podem durar mais que
10 milisegundos!
Pós-Engenharia de Software - FAT
50
Atributos de qualidade
Qualidades de sistema

Segurança



Habilidade do sistema de impedir acesso não autorizado...
... ainda garantindo acesso autorizado!
Segurança pode ser visto como uma composição de:






Não repudiação: uma transação não pode ser negada por
nenhuma das partes envolvidas
Confidencialidade: proteção a acesso não autorizado
Integridade: de dados e serviços
Garantia: partes de uma transação são quem dizem que são
Disponibilidade: sistema disponível para uso sem falhas
Auditoria: caso ocorra falha, o sistema consegue recuperar-se
sem perdas aos usuários
Pós-Engenharia de Software - FAT
51
Atributos de qualidade
Qualidades de sistema

Testabilidade



Facilidade com que podem ser demonstradas as faltas de um
software através de testes
No mínimo, 40% do custo de desenvolvimento de software com
“boa engenharia” é atribuído a testes...
... se o arquiteto consegue reduzir este custo, o lucro é bem
maior!
Pós-Engenharia de Software - FAT
52
Atributos de qualidade
Qualidades de sistema

Usabilidade



Quão fácil é para o usuário realizar uma tarefa desejada usando
o sistema?
Que tipo de suporte o sistema provê para o usuário?
Áreas:





Aprendizado das características do sistema: o que o sistema pode fazer
para ajudar no aprendizado do usuário?
Uso eficiente do sistema: o que o sistema pode fazer para que o usuário o
utilize mais eficientemente?
Minimização do impacto de erros: o que o sistema pode fazer para
minimizar o impacto de um erro cometido pelo usuário?
Adaptação do sistema às necessidades do usuário: como o usuário (ou o
próprio sistema) pode adaptar o sistema para tornar as tarefas mais fáceis
Aumento de confiança e satisfação: o que o sistema faz para dar ao usuário
a confiança de que ele está executando a tarefa corretamente?
Pós-Engenharia de Software - FAT
53
Atributos de qualidade
Qualidades de negócio






Tempo de produção (time-to-market)
Custo e benefício
Tempo de vida projetado
Mercado alvo
Agenda de divulgação
Integração com sistemas legados
Pós-Engenharia de Software - FAT
54
Atributos de qualidade
Qualidades de negócio

Tempo de produção (time-to-market)



Se há pressão competitiva ou janela de oportunidade restrita...
... tempo de produção é essencial!
Em geral, reduzido com o uso componentes pré-construídos

Componentes COTS – Commercial Off-The-Shelf
Pós-Engenharia de Software - FAT
55
Atributos de qualidade
Qualidades de negócio

Custo e benefício



Orçamento não pode ser excedido
Diferentes arquiteturas levarão a diferentes custos de
desenvolvimento
Arquiteturas mais flexíveis são mais caras!!!
Pós-Engenharia de Software - FAT
56
Atributos de qualidade
Qualidades de negócio

Tempo de vida projetado





Se o sistema é projetado para ter um longo ciclo de vida...
... mutabilidade, escalabilidade e portabilidade se tornam
extremamente importantes
Porém... isto influencia no custo!
Por outro lado, tais características diminuem custos de
manutenção
Sistemas projetados para um curto ciclo de vida podem ser mais
brandos em relação a estas características!

Será??? Como prever o ciclo de vida?
Pós-Engenharia de Software - FAT
57
Atributos de qualidade
Qualidades de negócio

Mercado alvo

Considerando softwares de propósito geral, a quantidade de
plataformas de execução determina o mercado em potencial

Exemplo: seu sistema de controle de estoque pode executar:





Em Windows, Linux e Mac?!
Em rede ou standalone?!
Em PC ou dispositivo móvel?
Portabilidade é chave! Usabilidade e desempenho também!
Solução utilizada

Linhas de produto

Núcleo em comum + características específicas
Pós-Engenharia de Software - FAT
58
Atributos de qualidade
Qualidades de negócio

Agenda de divulgação


Liberação do produto como um todo???
Liberação de funcionalidade base e depois liberação de
funcionalidades adicionais?



Escalabilidade
Flexibilidade
Facilidade de expansão e contração


Diferentes usuários terão diferentes necessidades
Exemplo: Eclipse
Pós-Engenharia de Software - FAT
59
Atributos de qualidade
Qualidades de negócio

Integração com sistemas legados


Integração com sistemas e tecnologias existentes
Impacto direto na arquitetura



Deve funcionar de acordo com a especificação de terceiros
Deve se adequar à arquitetura de terceiros
Pode haver incompatibilidades!
Pós-Engenharia de Software - FAT
60
Atributos de qualidade
Qualidades de arquitetura

Buildability


Integridade conceitual


Facilidade do sistema ser construído, maximizando o paralelismo
de desenvolvimento e manutenção
Visão que unifica o projeto arquitetura em todos os níveis
Corretude e completude



Análise e verificação formal dos requisitos
Garante que a arquitetura contempla os requisitos
Complementar aos testes
Pós-Engenharia de Software - FAT
61
Atributos de qualidade
Exercício



Quais atributos de qualidade são contemplados na arquitetura
definida anteriormente (Módulo I)
Como os atributos não contemplados poderiam vir a ser?
Se algum atributo não pode ser contemplado, justifique o
porquê.
Qualidades de sistema: disponibilidade, mutabilidade, desempenho,
segurança,
testabilidade e usabilidade
Qualidades de negócio: tempo de produção, custo e benefício, tempo de
vida projetado, mercado alvo, agenda de divulgação, integração com sistemas
legados
Qualidades de arquitetura: buildability, integridade conceitual, corretude e
completude
Pós-Engenharia de Software - FAT
62
Seleção de estilos

Como selecionar um estilo arquitetural?
1. Identificar os principais elementos da arquitetura
2. Identificar o estilo arquitetural dominante
3. Considerar responsabilidades adicionais associadas com a
escolha do estilo
4. Modificar o estilo para atingir objetivos adicionais
Fonte:
Pós-Engenharia de Software - FAT
63
Seleção de estilos
1. Identificar os principais elementos da arquitetura



Cada elemento arquitetural tem um estilo arquitetural dominante
que reflete as qualidades importantes que devem ser alcançadas
no contexto daquele elemento
A escolha do estilo arquitetural dominante é baseada nos
principais elementos arquiteturais
Os atributos de qualidade sobre cada elemento arquitetural
podem acarretar a utilização ou não de um estilo
Fonte:
Pós-Engenharia de Software - FAT
64
Seleção de estilos
2. Identificar o estilo arquitetural dominante



O estilo dominante pode ser modificado para alcançar objetivos
particulares
Se nenhum estilo conhecido parece ser apropriado, o arquiteto
deve projetar e documentar um novo estilo
As decisões sobre escolhas baseadas em atributos de qualidade
dentro de um estilo devem ser documentadas
Fonte:
Pós-Engenharia de Software - FAT
65
Seleção de estilos
3. Considerar responsabilidades adicionais associadas com
a escolha do estilo



A escolha de um estilo arquitetural introduzirá responsabilidades
adicionais
Por exemplo:
 Se o estilo é “Quadro negro”, então deve-se gerenciar os
mecanismos para o controle do quadro negro
 Se o estilo é “cliente-servidor”, deve-se gerenciar os protocolos
de interação
Responsabilidades adicionais devem ser atribuídas a elementos
arquiteturais existentes ou a novos elementos criados para este
fim
Fonte:
Pós-Engenharia de Software - FAT
66
Seleção de estilos
4. Modificar o estilo para atingir objetivos adicionais


Pode-se alterar o estilo arquitetural caso este necessite ser adaptado
devido a atributos de qualidade ou até mesmo funcionalidade
Exemplo: cliente-servidor

Adaptação: broker
Requisita
serviço
Servidores
Broker
A
Bridge
Proxy
Broker
B
Cliente
Proxy
Servidores
Fonte:
Pós-Engenharia de Software - FAT
67
Seleção de estilos
Exemplo
1. Identificar os principais elementos da arquitetura

Sistema: acadêmico
Módulo de acesso do
usuário
Módulo de
armazenamento de
dados
Pós-Engenharia de Software - FAT
68
Seleção de estilos
Exemplo
2. Identificar o estilo arquitetural dominante
Não deve requerer
instalação!
Deve ter alta
disponibilidade
Módulo de acesso do
usuário
Deve executar
na Internet
Deve ser fino!
Deve ser possível
acessar de qualquer
lugar
Acesso à máquina
do BD só via rede
Não há confiança na
disponibilidade da
máquina do BD
Módulo de
armazenamento de
dados
Pós-Engenharia de Software - FAT
Utiliza banco de outra
aplicação (legada)
69
Seleção de estilos
Exemplo
3. Considerar responsabilidades adicionais associadas com
a escolha do estilo



Estilo dominante escolhido: Cliente-servidor
Estilo secundário: Repositório
Responsabilidades: considerar protocolo de comunicação
Cliente
Rede/HTTP
Servidor
Pós-Engenharia de Software - FAT
70
Seleção de estilos
Exemplo
4. Modificar o estilo para atingir objetivos adicionais

Cliente servidor de 2 camadas e repositório com backup
Módulo cliente
(Acesso do usuário)
Cliente/
Servidor
consulta/
atualização
Cliente/
Servidor
leitura
Repositório
Módulo Backup
(Dados)
sincronização
Módulo Servidor
(Web)
leitura/escrita
Cliente/
Servidor
Pós-Engenharia de Software - FAT
Módulo Servidor
(Dados)
leitura/escrita
Aplicação legada
71
Seleção de estilos
Exemplo
4. Modificar o estilo para atingir objetivos adicionais

Objetivos atingidos!
Módulo cliente
(Acesso do usuário)
consulta/
atualização
- Alta disponibilidade
- Fino
- Executar na Internet
- Acesso de qualquer lugar
- Não requer instalação
leitura
Módulo Backup
(Dados)
sincronização
Módulo Servidor
(Web)
leitura/escrita
- Acesso à maquina do BD
só via rede
- Banco de outra aplicação
- Não há Pós-Engenharia
confiança nade Software - FAT
disponibilidade
Módulo Servidor
(Dados)
leitura/escrita
Aplicação legada
72
Seleção de estilos
Exercício

Qual ou quais estilos arquiteturais você utilizaria para os
sistemas listados... (lista apresentada em sala)
Invocação/Retorno (Call/Return)
Programa principal/Subrotina (Main Program/Subroutine)
Invocação remota de procedimento (Remote Procedure Call - RPC)
Camadas (Layered)
Componentes independentes (Independent Components)
Comunicação de processos (Communicating Processes)
Baseado em eventos
Centrado em dados (Data-Centered)
Repositório (Repository)
Quadro negro (Blackboard)
Máquina virtual (Virtual Machine)
Interpretador (Interpreter)
Baseado em regras (Rule-based)
Fluxo de dados (Data-Flow)
Seqüencial (Batch Sequential)
Pós-Engenharia de Software
- FAT e filtros (Pipe and Filter)
Tubos
73
Seleção de visões

Quais são as visões arquiteturais relevantes para o
sistema sendo desenvolvido?
Cliente
???
Arquiteto
???
Pós-Engenharia de Software - FAT
74
Visões arquiteturais
Relembrando...

Modelo “4+1” (Rational Software)
Visão
Lógica
Visão de
Desenvolvimento
Cenários
Visão de
Processo
Visão
Física
Pós-Engenharia de Software - FAT
75
Visões arquiteturais
Relembrando...

Visão Lógica


“Retrato estático” dos relacionamentos existentes entre as
entidades do sistema
Pode possuir duas ou mais representações, dentre elas,
uma conceitual e outra de esquema de banco de dados
Visão
Lógica
Pós-Engenharia de Software - FAT
76
Visões arquiteturais
Relembrando...

Visão de Processo



Descreve aspectos de sincronização e concorrência
Descrição de processos concorrentes
Diferentes linhas de execução (threads), entidades ativas
Visão de
Processo
Pós-Engenharia de Software - FAT
77
Visões arquiteturais
Relembrando...

Visão de Desenvolvimento

Descreve a organização do software em seu ambiente de
desenvolvimento
 Componentes
 Linguagens
Visão de
Desenvolvimento
Pós-Engenharia de Software - FAT
78
Visões arquiteturais
Relembrando...

Visão Física




Descreve o mapeamento do software para o hardware
Distribuição de componentes
Verificação de alta disponibilidade, confiabilidade,
desempenho...
Também chamada “deployment”
Visão
Física
Pós-Engenharia de Software - FAT
79
Visões arquiteturais
Relembrando...

Cenários (+1)



Cenários de funcionamento do sistema diretamente
ligados à arquitetura
Principais casos de uso
Lembram de RUP?
 Centrado em arquitetura!
Cenários
Pós-Engenharia de Software - FAT
80
Seleção de visões

Três passos:
1. Produza uma tabela de visões
2. Combine visões
3. Priorize visões
Pós-Engenharia de Software - FAT
81
Seleção de visões
Produza uma tabela de visões
1.

De acordo com as características do sistema
Stakeholder
Gerente
Desenvolvedor
Testador
Cliente
Usuário final
Analista
Arquiteto
Lógica
d
v
v
v
v
d
d
Processo
Desenvolvimento
Física
v
v
v
v
d
d
d
v
d
d
d
Legenda:
d = informação bem detalhada
a = alguns detalhes
v =Pós-Engenharia
visão geral de Software - FAT
82
Seleção de visões
2. Combine visões




Considerando que para cada visão apresentada
anteriormente, tem-se um ou mais modelos...
... ficaria impraticável criar um modelo na perspectiva de
cada uma das visões definidas anteriormente
Procure visões na tabela que requeiram apenas uma
“visão geral” e com poucos stakeholders envolvidos
 Lógica: 4 v
 Física: 3 stakeholders
Os modelos gerados para esta visão podem ser
simplificados
Pós-Engenharia de Software - FAT
83
Seleção de visões
2. Combine visões

A visão de processo poderia ser combinada à de
desenvolvimento (Estereótipos)
Stakeholder
Gerente
Desenvolvedor
Testador
Cliente
Usuário final
Analista
Arquiteto
Lógica
d
v
v
v
v
d
d
Processo
Desenvolvimento
Física
v
v
v
v
d
d
d
v
d
d
d
Legenda:
d = informação bem detalhada
a = alguns detalhes
v =Pós-Engenharia
visão geral de Software - FAT
84
Seleção de visões
3. Priorize visões



Uma vez definidas as visões, deve-se estabelecer uma
ordem de prioridade
Sempre começar uma nova visão após terminar outra
Exemplo de ordem:
 Visão lógica
 Visão física
 Visão de desenvolvimento
Pós-Engenharia de Software - FAT
85
Rastreabilidade bidirecional

Rastreamento: requisitos código e vice-versa
durante o ciclo de desenvolvimento do software
Requisitos
Código
Public
class{
Public
class{
Public
class{
Public
......
Publicclass{
class{
......
}}
...
}}
}
Revisões mais
rápidas
Maior facilidade
de entendimento
Rastreamento “para frente”
(Forward Traceability)
Pós-Engenharia de Software - FAT
Evita código
desnecessário
Testes mais fiéis
à funcionalidade
86
Rastreabilidade bidirecional

Rastreamento: requisitos código e vice-versa
durante o ciclo de desenvolvimento do software
Requisitos
Código
Public
class{
Public
class{
Public
class{
Public
......
Publicclass{
class{
......
}}
...
}}
}
Manutenção
Rastreamento “para trás”
(Backward Traceability)
Depuração
Evolução
Pós-Engenharia de Software - FAT
87
Rastreabilidade bidirecional

Apontada como grande “arma” para o
desenvolvimento...
 CMMi (Capability Maturity Model Integration)
Software Engineering Institute – SEI
Manter rastreabilidade bidirecional do desenvolvimento é
essencial para um processo de software de sucesso


Pós-Engenharia de Software - FAT
88
Exercício final

Refaçam a arquitetura do sistema definido
anteriormente (Módulo I)




Levando em conta a seleção de estilos
Levando em conta a seleção de visões
Levando em conta atributos de qualidade
Justificando escolhas:



Por que usou estes estilos?
Por que usou estas visões?
Como a arquitetura “alcança” os atributos de qualidade definidos?
Pós-Engenharia de Software - FAT
89
Download

Módulo 2 - Sefaz-AL