Escolar Documentos
Profissional Documentos
Cultura Documentos
Apresentao do curso
Motivao para o curso
Objetivos do curso
Contedo
Resultado esperado
Bibliografia
Dvidas???
Objetivo do curso
Introduzir o conceito de Arquitetura de Software
Principais elementos
Estilos e vises
Documentao com UML
Atributos de qualidade
Exemplo base
Definam grupos (Mximo 4 pessoas)
Cada grupo far uma descrio textual de um
software
De preferncia algo que j tenha sido ou est sendo
desenvolvido na empresa
Nvel razovel de complexidade
Calculadora e agenda no valem!!!
Bibliografia
Livros
Beyond Software Architecture, Luke Hohmann, Addison Wesley, 2003
Software Architecture: Perspectives on an Emerging Discipline, Mary Shaw,
David Garlan, Prentice Hall, 1996
Software Architecture in Practice, Second Edition, Len Bass, Paul Clements, Rick
Kazman, Addison Wesley, 2003
The Art of Software Architecture, Stephen T. Albin, John Wiley & Sons, 2003
Pattern-Oriented Software Architecture, Volume 3, Michael Kircher and Prashant
Jain, John Wiley & Sons, 2004
UML Guia do usurio, James Rambaugh, Campus, 2000
10
Mdulo I
11
O que Arquitetura?
Arquitetura como um processo
A arte ou cincia de construir edificaes de quaisquer
tipos para uso humano
A ao ou processo de construir
O mtodo ou estilo especial que direciona os detalhes da
estrutura e ornamentao de uma construo
13
14
Elementos em comum...
Descrio dos componentes principais
Relacionamentos e interaes entre componentes
Omite informao sobre o contedo dos
componentes no relacionada a suas interaes
O comportamento dos componentes uma parte da
arquitetura enquanto possa ser discernido do ponto
de vista de outro componente
A arquitetura define uma lgica por trs dos
componentes e da estrutura
Ps-Engenharia de Software - FAT
15
16
arquitetura
projeto
implementao
Cdigo
As decises de arquitetura so
as mais fundamentais e alterlas provoca efeitos colaterais
significativos.
17
x
Ps-Engenharia de Software - FAT
18
19
20
10
Natureza temporal
Estado e comportamento complexo, difcil de analisar
Capacidade de auto-modificao e de evoluo
21
Invisibilidade
x
Ps-Engenharia de Software - FAT
22
11
23
24
12
25
Arquitetura = infra-estrutura
Infra-estrutura parte integral e importante
da arquitetura
A arquitetura define interoperabilidade entre
a infra-estrutura e os componentes da
aplicao
Arquitetura aborda estrutura, decomposio,
interfaces, etc.
Ps-Engenharia de Software - FAT
26
13
Arquitetura = infra-estrutura
Arquitetura aborda...
Aspectos dinmicos
Argumentao lgica
Adequao ao contexto
Contexto de negcio
Contexto de desenvolvimento
27
28
14
29
Motivao e benefcios
Por que arquitetar?
30
15
Motivao e benefcios
Integridade e qualidade do sistema
31
Motivao e benefcios
Controle da complexidade
32
16
Motivao e benefcios
Previsibilidade
Previsibilidade do processo
Prottipos da arquitetura permitem coletar
mtricas
Mtricas de custo do desenvolvimento
Mtricas de cronograma
Previsibilidade comportamental
Iteraes da arquitetura removem maiores riscos
33
Motivao e benefcios
Testabilidade
34
17
Motivao e benefcios
Reso
A arquitetura define regras de substituio
Interfaces entre componentes definem limites de
substituio
A arquitetura propicia diferentes granularidades de
reso
Reso em pequena escala, no nvel de componentes
Reso em larga escala
Subsistemas
Produtos
Frameworks
Ps-Engenharia de Software - FAT
35
Motivao e benefcios
Comunicao
36
18
Motivao e benefcios
Organizao e gerncia de projetos
37
Motivao e benefcios
Evitar ou reduzir custos
38
19
Motivao e benefcios
Evitar ou reduzir custos
39
Motivao e benefcios
Evitar ou reduzir custos
40
20
Exerccio
Com sua experincia atual de desenvolvimento
de software, projete a arquitetura do software
definido anteriormente.
41
Conceitos
Acoplamento
Coeso
Interface
Componentes
Conectores
Estilo arquitetural
Padres de projeto
Viso arquitetural
42
21
Conceitos
Acoplamento
Grau de interconexo entre diferentes pedaos de um
sistema
Pedaos menos acoplados so mais fceis de entender,
testar, reusar e manter
Baixo acoplamento tambm promove o paralelismo de
implementao
Alto
Acoplamento
(efeito cascata)
43
Conceitos
Coeso
Relatrio
Alta coeso
Impresso
Relatrio
Interface
Baixa coeso
Interface
Ps-Engenharia de Software - FAT
44
22
Conceitos
Interface
As maneiras em que subsistemas dentro
de um projeto maior interagem so
claramente definidas.
Idealmente, interaes so especificadas
de um modo que possam se manter
relativamente estveis ao longo do ciclo
de vida do sistema.
Um modo de alcanar isso atravs de
abstraes sobre a implementao
concreta.
45
Conceitos
Interface
Exemplo clssico: tomada!
46
23
Conceitos
Interface
Exemplo clssico: tomada!
Abstrao sobre...
47
Conceitos
Componentes
Unidades de distribuio, montagem, implantao e
substituio
Executam funcionalidade no trivial
Um componente definido pelos servios que prov e
pelos servios que requer
Os servios revelam o comportamento at onde necessrio para
a montagem (assembly)
48
24
Conceitos
Conectores
Veculos de comunicao entre componentes
Descrio das interaes entre componentes
Exemplos de conectores:
Chamadas de procedimento
Anncios de eventos
Protocolos de comunicao
Invocaes de servios
49
Conceitos
Estilo ou padro arquitetural
+
Conjunto de restries sobre como eles podem ser
combinados
Exemplos:
Cliente-Servidor, Pipes and Filters, Model-View-Controller,
Broker
50
25
Conceitos
Padres de projeto
Mais detalhada
Viso interna dos componentes da arquitetura
51
Conceitos
Viso arquitetural
Viso
Modelo
Stakeholder
Ps-Engenharia de Software - FAT
52
26
Conceitos
Viso arquitetural
Modelo
Uma descrio completa de um sistema sob uma
perspectiva particular e um nvel especfico de
abstrao
Viso
Uma projeo de um modelo, que visto sob
uma determinada perspectiva, e omite entidades
que no so relevantes a essa perspectiva
Ps-Engenharia de Software - FAT
53
Conceitos
Viso arquitetural
Cliente
Arquiteto
54
27
Conceitos
Viso arquitetural
Cliente
Arquiteto
55
Exerccio
Revisem e atualizem a arquitetura definida
anteriormente considerando os conceitos
aprendidos.
Vocs j viram UML...
Considerem diferentes stakeholders
Arquiteto
Desenvolvedor
Cliente
56
28
Vises arquiteturais
Modelo 4+1 (Rational Software)
Viso
Lgica
Viso de
Desenvolvimento
Cenrios
Viso de
Processo
Viso
Fsica
57
Vises arquiteturais
Lgica
Viso Lgica
Retrato esttico dos relacionamentos existentes entre as
entidades do sistema
Pode possuir duas ou mais representaes, dentre elas,
uma conceitual e outra de esquema de banco de dados
Viso
Lgica
58
29
Vises arquiteturais
Processo
Viso de Processo
Descreve aspectos de sincronizao e concorrncia
Descrio de processos concorrentes
Diferentes linhas de execuo (threads), entidades ativas
Viso de
Processo
59
Vises arquiteturais
Desenvolvimento
Viso de Desenvolvimento
Descreve a organizao do software em seu ambiente de
desenvolvimento
Componentes
Linguagens
Viso de
Desenvolvimento
60
30
Vises arquiteturais
Fsica
Viso Fsica
Descreve o mapeamento do software para o hardware
Distribuio de componentes
Verificao de alta disponibilidade, confiabilidade,
desempenho...
Tambm chamada deployment
Viso
Fsica
61
Vises arquiteturais
Cenrios (+1)
Cenrios (+1)
Cenrios de funcionamento do sistema diretamente
ligados arquitetura
Principais casos de uso
Lembram de RUP?
Centrado em arquitetura!
Cenrios
62
31
63
Desenvolvedor
Gerente
Extrair
planilhas de
tempo
semanais
Consolidar
dados do
projeto
Assitente
administrativo
Configurar
Ps-Engenharia
Software - FAT
banco dededados
64
e ferramenta
32
Sistema
1. O desenvolvedor determina o
nome e o tempo de durao da
atividade e encaminha ao sistema.
2. O sistema armazena a
informao e retorna OK para o
desenvolvedor.
3. O desenvolvedor recebe
OK do
Ps-Engenharia de Software - FAT
sistema
65
66
33
Diagramas de Classes
Elementos de design significativos para a arquitetura
(classes, subsistemas, interfaces) e relacionamentos
entre eles
67
Interface
Grfica
Cronmetro
68
34
Assistente
Desenvolvedor
Gerente
Atividade
nome: String
duracao: int
data: Date
*
ListaDeDesenvolvedores
Ps-Engenharia de Software - FAT
69
:Atividade
Desenvolvedor
:Desenvolvedor
criar(Teste)
setDuracao(120)
registrar(atividade)
ok
Ps-Engenharia de Software - FAT
70
35
5:planilhaGeral
3:planilha
2:extrairPlanilha()
:Desenvolvedor
2.2:nome
2.4:duracao
Gerente/Assitente
2.1:getNome()
2.3:getDuracao()
:Atividade
Ps-Engenharia de Software - FAT
71
72
36
73
IPC
(HTTP)
Usuario
<<thread>>
Notificador
nome: String
Assistente
Gerente
Desenvolvedor
<<process>>
SendMail
Atividade
nome: String
duracao: int
data: Date
ListaDeDesenvolvedores
Ps-Engenharia de Software - FAT
74
37
Diagramas de atividades
Pelo menos um diagrama por processo
75
[tempo>3]
Verificar
cronmetro
Notificar
usurio
[tempo<=3]
Cancelar
Tarefa
Enviar
Email
Finalizar
Ps-Engenharia de Software
- FAT
ciclo
76
Fim
38
77
Assistente
Gerente
Desenvolvedor
registrar(Atividade):boolean
extrairPlanilha():List
*
ListaDeDesenvolvedores
extrairPlanilhaGeral():List
consolidarPlanilha()
Ps-Engenharia de Software - FAT
Atividade
nome: String
duracao: int
data: Date
getNome():String
getDuracao():int
setDuracao(int)
78
39
Diagrama de componentes
Diagrama de componentes
Chrono
Applet.class
Navegador
Servidor
Web
chrono.jar
79
80
40
Mquina
Cliente
TCP/IP
1
Servidor
Web
Diagrama de implantao
81
Estilos arquiteturais
Um estilo/padro arquitetural expressa:
Uma organizao estrutural
Um conjunto pr-definido de subsistemas e suas
responsabilidades
Inclui regras e diretrizes para organizar o
relacionamento entre os subsistemas
82
41
Estilos arquiteturais
Diviso em Camadas (Layers)
Cliente-Servidor
Pipes and Filters
Model-View-Controller
Broker
83
Estilos arquiteturais
Diviso em camadas
Estrutura aplicaes que podem ser decompostas em
grupos de sub-tarefas
Cada grupo est em um nvel de abstrao
Exemplo: Modelo OSI
Aplicao
Apresentao
Sesso
Transporte
Rede
Dados
Fsica
84
42
Estilos arquiteturais
Diviso em camadas
Problema
Sistema com vrias camadas de abstrao
Camadas de nveis superiores dependem das camadas
de nveis inferiores
Partes do sistema devem poder ser trocadas
Trocar a camada de comunicao
Trocar a camada de acesso a dados
Podem existir vrias camadas em um mesmo nvel de
abstrao dependendo de camadas inferiores
Interface grfica standalone (Swing) X Interface WEB
85
Estilos arquiteturais
Diviso em camadas
Soluo
Estruture o sistema em camadas
Sobreponha as camadas em nveis de abstrao
Servios da camada X so compostos de servios da
camada X-1
86
43
Estilos arquiteturais
Diviso em camadas
Conseqncias
Pontos positivos
Reso das camadas
Dependncias tendem a permanecer locais
Pontos negativos
Cascateamento de alteraes para as camadas
superiores quando o comportamento de uma camada
inferior muda
87
Estilos arquiteturais
Diviso em camadas
88
44
Estilos arquiteturais
Cliente-Servidor
89
Estilos arquiteturais
Cliente-Servidor
90
45
Estilos arquiteturais
Cliente-Servidor
91
Estilos arquiteturais
Cliente-Servidor
Estrutura
Cliente
Servidor
Protocolo de comunicao
92
46
Estilos arquiteturais
Cliente-Servidor
Vantagens
Utilizao dos recursos do servidor
Escalabilidade
Aumentando a capacidade computacional do servidor
Desvantagens
Introduz complexidade
Custos de comunicao
93
Estilos arquiteturais
Cliente-Servidor
94
47
Estilos arquiteturais
Pipes and filters
Problema
Desenvolvimento de um sistema que processa ou
transforma um stream de dados.
Exemplo:
Compilador
tokens
Cdigo fonte
Analisador
Lxico
Intel backend
rvore sinttica
Analisador
Sinttico
Analisador
Semntico
Gerador de
cdigo
intermedirio
Executvel
Executvel otimizado
Otimizador
MIPS backend
SPARC backend
95
Estilos arquiteturais
Pipes and filters
96
48
Estilos arquiteturais
Pipes and filters
Soluo
Dividir a tarefa entre vrias etapas seqenciais
Sada de uma etapa a entrada da etapa seguinte
Cada etapa de processamento implementada por um
filtro (filter)
Consome e entrega os dados incrementalmente, ao
invs de consumir todos os dados de uma s vez
Cada pipe implementa o fluxo dos dados entre os filtros
97
Estilos arquiteturais
Pipes and filters
Soluo
Filter
Receber o dado da entrada
Processar o dado
Colocar o dado na sada
Pipe
Transferir o dado
Realizar buffer
Sincronizar os filtros vizinhos
Outros participantes
Fonte de dados
Sada de dados
Ps-Engenharia de Software - FAT
98
49
Estilos arquiteturais
Pipes and filters
Conseqncias
No preciso criar arquivos intermedirios (mas
possvel)
Flexibilidade na troca de filtros
Flexibilidade na recombinao
Eficincia no processamento em paralelo
Vrios filtros consumindo e produzindo dados em
paralelo.
Ponto negativo
Gerenciamento de erros
Ausncia de um estado global compartilhado
Ps-Engenharia de Software - FAT
99
Estilos arquiteturais
Model-View-Controller
100
50
Estilos arquiteturais
Model-View-Controller
Quando usar?
Necessidade de vrias interfaces com o usurio
WEB, Swing
Necessidade de vrias vises dos dados
Planilhas, Tabelas, Grficos
Mudanas nos dados devem ser refletidas na interface
101
Estilos arquiteturais
Model-View-Controller
Estrutura
Model
Funcionalidade principal da aplicao
Registrar controllers e views
Notificar controllers e views registrados de alteraes
102
51
Estilos arquiteturais
Model-View-Controller
Estrutura
View
Criar e inicializar o controlador associado
Exibir informao ao usurio
Implementar o procedimento de atualizao
Recuperar dados do modelo
Controller
Receber a entrada de dados/requisies do usurio
Transformar as requisies dos usurios em
requisies ao modelo
Implementar o procedimento de atualizao (se
necessrio)
Ps-Engenharia de Software - FAT
103
Estilos arquiteturais
Model-View-Controller
View
104
52
Estilos arquiteturais
Model-View-Controller
Conseqncias
Pontos positivos
Mltiplas views de um mesmo modelo
views sincronizadas
Organizao clara de abstraes
Pontos negativos
Aumento da complexidade
Controllers e Views tendem a ser bastante
acoplados
Ps-Engenharia de Software - FAT
105
Estilos arquiteturais
Broker
106
53
Estilos arquiteturais
Broker
Estrutura
Clientes
Implementam a funcionalidade para o usurio
Envia requisies para os servidores atravs dos
representantes do lado cliente (proxies)
Servidores
Expem a funcionalidade atravs de interfaces (IDLs
ou binria)
Brokers
Registro de servidores
Transferncia de mensagens
Recuperao de erros
Comunicao com outros brokers atravs de bridges
Localizar servidores
Ps-Engenharia de Software - FAT
107
Estilos arquiteturais
Broker
Estrutura
Bridges
Encapsulam funcionalidades de rede
Mediam comunicaes entre o broker local e a bridge
pertencente ao broker remoto
Representantes do cliente (Client-side proxies)
Encapsulam funcionalidades especficas do sistema
(comunicao inter-processo, memria,
empacotamento e desempacotamento dos dados)
Mediam comunicaes entre o cliente e o broker
Representantes do servidor (Server-side proxies)
Invocam os servios do servidor
Encapsulam funcionalidades especficas do sistema
Mediam comunicaes entre o servidor e o broker
Ps-Engenharia de Software - FAT
108
54
Estilos arquiteturais
Broker
Servidores
Proxy
Requisita
servio
Proxy
re
gi
st
ro
Proxy
Proxy
Servidores
Broker
A
Proxy
Bridge
Broker
B
Cliente
Proxy
109
Estilos arquiteturais
Broker
Servidores
Proxy
Requisita
servio
Proxy
re
gi
st
ro
Proxy
Proxy
Servidores
Broker
A
Bridge
Proxy
Broker
B
Cliente
Proxy
110
55
Estilos arquiteturais
Broker
Conseqncias
Pontos positivos
Transparncia de localizao dos servios
Flexibilidade
Se os servidores forem trocados mas as interfaces
permanecerem as mesmas, no h impacto para o
resto do sistema.
Portabilidade
111
Estilos arquiteturais
Broker
Conseqncias
Ponto negativo
Sobrecarga de processamento
Indireo
Debug
Uma falha na execuo de um servio pode ter
sido causada tanto pelo cliente quanto pelo
servidor. Mais variveis para observar.
112
56
Exerccio
Especifiquem novamente a arquitetura definida
anteriormente de acordo com as vises e estilos
arquiteturais
Documentao em UML
113
57