Вы находитесь на странице: 1из 101

Especializao em Projeto e Desenvolvimento de Sistemas

Padres Arquiteturais
de Sistemas (2011)
Vagner Figuerdo de Santana

1
Objetivo da disciplina
Aplicao de padres no
desenvolvimento de software orientado a
objetos
Desenvolvimento multicamadas com
integrao em diferentes processos de
software

2
Contedo programtico
Introduo
Padres Arquiteturais de Sistemas
Padres enterprise multicamadas
Oficina de padres

3
Introduo
Christopher Alexander
A Pattern Language: Towns, Buildings, Constrution
(1977)
Gamma et al.
Design Patterns: Elements of Reusable Object-
Oriented Software (1994)
Buschamann et al.
Pattern-Oriented Software Architecture: A System of
Patterns (1996)

4
Introduo
A qualidade dos projetos arquitetnicos
objetiva?

5
Introduo
Um padro descreve
problema que ocorre
repetidamente
soluo para esse
problema de forma que se
possa reutilizar a soluo

6
Introduo
Estrutura bsica de um padro
Contexto
Situao em que o problema surge
Problema
Conjunto de foras que surge no contexto
Soluo
Configurao que equilibra as foras
Estrutura com componentes e relacionamentos
Comportamento

7
Introduo
Exemplo na arquitetura: MASP
Problema: O terreno para o museu havia
sido doado com a condio de que a vista
para o centro da cidade fosse preservada

8
Introduo
Soluo: Edifcio sustentado por pilares

Inaugurado em 68, o
edifcio sustentado
por quatro pilares
laterais e conta com
um vo livre de 74m.
Foto: Kuca (http://www.flickr.com/photos/kuca/279529473/) 9
Introduo
Por qu usar padres?
Aprender com a experincia dos outros
O jargo facilita a comunicao de princpios
complexos
Melhora a qualidade do software
Descreve abstraes de software
Ajuda a documentar a arquitetura
Captura as partes essenciais de forma compacta

10
Introduo
No entanto
No apresentam uma soluo exata
No resolvem todos os problemas de design
No exclusivo de orientao a objetos

11
Introduo
Como selecionar um padro?
Entenda como os padres ajudam a resolver
problemas
Revise as intenes de cada padro
Estude como os padres se relacionam
Estude as similaridades entre os padres de mesmo
propsito
Conhea as principais causas de retrabalho
Considere o que voc pode querer mudar em seu
projeto no futuro

12
Introduo
Arquitetura de software
Resultado do projeto de software
Descrio dos subsistemas/componentes e
seus relacionamentos

13
Introduo
Subsistema/componente
Bloco bsico de construo de sistemas
Parte encapsulada de um sistema
Possui uma interface
Pode ser mdulo, classe, objeto ou conjunto
de funes relacionadas

14
Introduo
Padro Arquitetural
Expressa uma estrutura fundamental para
sistemas computacionais
Fornece um conjunto de subsistemas
predefinidos
Especifica responsabilidades
Conta com diretrizes para organizar o
relacionamento entre os subsistemas

15
Padres Arquiteturais
de Sistemas
MVC (Model View Controller)
MVP (Model View Presenter)
Pipeline
N-tier
Arquitetura em camadas

16
MVC (Model View Controller)
Divide aplicao interativa em 3 partes
Model: regras de negcio e dados (core)
View: apresenta informaes ao usurio
Controller: trata entrada de usurio e
manipula o modelo
A propagao de mudanas o link entre
model e view e controllers

17
MVC (Model View Controller)
Quando us-lo?
Contexto: Aplicaes interativas
Problema:
Interfaces de usurio so propcias a mudanas
Diferentes visualizaes para mesmos dados
Soluo: Dividir processamento, entrada e
sada

18
MVC (Model View Controller)

View Controller

Model

19
MVC (Model View Controller)
Classe Colaboradores
Model View
Responsabilidade Controller
Fornecer funcionalidade
central da aplicao
Registrar views e controllers
dependentes
Notifica alteraes aos
dependentes
20
MVC (Model View Controller)
Classe Colaboradores
View Controller
Responsabilidade Model
Cria e inicializa seu
controller
Apresenta informaes
Implementa procedimento
de atualizao
Recupera dados do modelo
21
MVC (Model View Controller)
Classe Colaboradores
Controller View
Responsabilidade Model
Manipula entrada de usurio
Traduz entradas dos
usurios ou requisies do
view em requisies ao model
Implementa o procedimento
de atualizao
22
MVC (Model View Controller)

View Controller

Model

23
MVC (Model View Controller)
Este o MVC clssico, mas...
adequado para os sistemas de hoje?
Quais so as limitaes na Web?
Como model pode notificar a view?
Quando podemos enfrentar problemas?
Como poderamos melhor-lo?

24
MVC (Model View Controller)
Separar apresentao (View)
dos dados (Model)

View Controller

Model

25
MVC (Model View Controller)
Separar apresentao (View)
dos dados (Model)

View Controller

Model

26
MVC (Model View Controller)
Separar apresentao (View)
dos dados (Model)
View

Controller

Model
27
MVC (Model View Controller)
Exemplo: Jogos (Bomberman)

28
MVC (Model View Controller)

29
MVC (Model View Controller)
Como adicionar mais views?

30
MVC (Model View Controller)

View View View View

Controller Controller Controller

Model Model

31
MVP (Model View Presenter)*
Variao do MVC
Surgiu em na IBM
Ganhou visibilidade nos anos 90**
Separa widgets reutilizveis do cdigo
especfico da aplicao

* http://martinfowler.com/eaaDev/uiArchs.html
** http://www.wildcrest.com/Potel/Portfolio/mvp.pdf

32
MVP (Model View Presenter)
Divide aplicao interativa em 3 partes
Model: regras de negcio e dados (core)
View: estrutura de widgets que gerencia
controles e formulrios e encaminha eventos
ao presenter
Presenter: decide como reagir aos eventos e
atualiza model e view
Atualizao da view semelhante ao MVC

33
MVP (Model View Presenter)

Fonte: http://msdn.microsoft.com/en-us/library/ff647543.aspx

34
Especificidades do MVP
Presenter manipula o model e depois
atualiza o view
Presenter como controller mas sem a
manipulao de eventos
View despacha eventos para presenter

Fonte: http://martinfowler.com/eaaDev/uiArchs.html
35
Pipeline (Pipes and Filters)
Estrutura para sistemas Source
que processam cadeias
de dados Pipe

Processos so Filter 1

encapsulados em Pipe
filtros
Filter 2
Dados so passados
pelos pipes localizados Pipe

entre os filtros Sink

36
Pipeline (Pipes and Filters)
Quando us-lo?
Contexto: Sistemas que processam cadeias
de dados
Problema: Processa/transforma cadeia de
dados, mas implement-la de uma s vez
invivel
Soluo: Dividir a tarefa em uma sequncia
de etapas

37
Pipeline (Pipes and Filters)
Classe Colaboradores
Filter Pipe
Responsabilidade
Obtm dados de entrada
Manipula dados de entrada
Fornece dados de sada

38
Pipeline (Pipes and Filters)
Classe Colaboradores
Pipe Data source
Responsabilidade Data sink
Transfere os dados Filter
Sincroniza vizinhos

39
Pipeline (Pipes and Filters)
Classe Colaboradores
Data Source Pipe
Responsabilidade
Entrega dados de entrada
para pipeline

40
Pipeline (Pipes and Filters)
Classe Colaboradores
Data Sink Pipe
Responsabilidade
Consume os dados de sada

41
Pipeline (Pipes and Filters)
Exemplo: Linha de comando

42
N-tier
Padro geral de distribuio
Componentes so separados em
servidores diferentes
Comumente, escolhemos um entre os
padres 2-tier, 3-tier ou 4-tier

43
Tier vs Layer
Layer descreve agrupamento lgico
Tiers descreve a distribuio fsica em diferentes
servidores, computadores, redes, etc.
Layers e tiers usam o mesmo conjunto de nomes
(apresentao, negcio, servios e dados), mas
somente tiers implicam separao fsica
comum ter mais de um layer no mesmo tier
Podemos pensar no termo tier como sendo uma
referncia a padres de distribuio de sistemas
computacionais

44
2-tier
Mesmo layout fsico que o padro
cliente/servidor
Em alguns casos, todo o cdigo da aplicao
localizado no cliente e o banco de dados
localizado em um servidor separado
Considere este padro se voc est
desenvolvendo
um cliente que vai acessar um servidor de aplicao
um cliente stand-alone que acessa um servidor de
dados separado

45
2-tier

Fonte: http://msdn.microsoft.com/en-us/library/ee658120.aspx
46
3-tier
O cliente acessa o servidor de aplicao, que
acessa o servidor de banco de dados; todos
em diferentes mquinas
Padro comum para aplicaes Web e Web
Services
Pode ser necessrio incluir um firewall entre o
cliente e o servidor de aplicao e entre o
servidor de aplicao e o banco de dados

47
3-tier

Fonte: http://msdn.microsoft.com/en-us/library/ee658120.aspx
48
4-tier
Servidor Web separado fisicamente do servidor de
aplicao
O servidor Web est em uma rede e acessa a
aplicao em outra sub-rede
Neste cenrio cliente e servidores de aplicao/Web
podem ter que ser combinados com um firewall
Considere este padro se
Requisitos de segurana ditam que as regras de negcio sejam
separadas
Voc deseja dividir/controlar carga nos servidores

49
4-tier

Fonte: http://msdn.microsoft.com/en-us/library/ee658120.aspx
50
Arquitetura em Camadas
Estrutura aplicaes decompostas grupos
de tarefas em diferentes nveis de
abstrao
Cliente Camada N

Camada N-1

Camada 1
51
Arquitetura em Camadas
Quando us-lo?
Contexto: Sistema complexo que exige
decomposio
Problema:
Sistema manipula questes de baixo nvel e deve
disponibilizar funcionalidades a usurios
Estrutura horizontal com vertical subdiviso
Portabilidade
Soluo: Estruturar o sistema em nmero
apropriado de camadas 52
Arquitetura em Camadas
Classe Colaboradores
Camada N Camada N-1
Responsabilidade
Fornecer funcionalidades
usadas pela camada N+1
Delega subtarefas camada
N-1

53
Arquitetura em Camadas
Exemplo

Fonte: http://msdn.microsoft.com/en-us/library/ee658109.aspx 54
Arquitetura em Camadas
Exerccio: Como definir o nmero de
camadas?

55
Arquitetura em Camadas
Definindo o nmero de camadas
Agrupar componentes que representam
papeis e funcionalidades diferentes
Ex.: Apresentao, Negcio e Dados
Delimitar locais onde decises envolvendo
tecnologias ou projeto precisam ser
tomadas
Ex.: Linguagens, Dispositivos, Banco de dados.

56
Arquitetura em Camadas
Pontos crticos
Separar aplicao em muitas camadas pode
Prejudicar o desempenho
Complexidade desnecessria
Prezando pela manuteno deve-se
Manter encapsulamento nas camadas
Baixo acoplamento entre camadas
Como verificar?

57
Arquitetura em Camadas
Arquitetura em 3 camadas (Fowler)
Apresentao (fornece servio)
Exibir informaes
Traduzir comandos do usurio em aes na
camada de domnio
Domnio
Regras de negcio
Dados (usa servio)
Apresentao e recuperao de dados
58
Arquitetura em Camadas
Fowler Microsoft J2EE
Apresentao Apresentao Cliente
Apresentao
(servidor)
Domnio Negcio Negcio
Fonte de dados Acesso a dados Integrao
Recursos

59
Exerccio
Em duplas ou trios
Projetar o sistema do bilhete nico de SP
Definir arquitetura(s)
Esboo do projeto (diagrama de classes)
Considerar
Sistema central
Quiosques de recarga
Catracas
60
Arquitetura baseada em servios

Composto por mltiplos servios


Comunicao via mensagens/protocolos
Componentes da soluo total
Outras aplicaes podem usar servios
sem se precisar se preocupar como eles
esto implementados

61
Arquitetura baseada em servios

Exemplo

Fonte: http://msdn.microsoft.com/en-us/library/ee658109.aspx 62
Arquitetura baseada em servios

Exemplo: Reuso de CMS

63
Padres enterprise multicamadas*

Padres de base
Padres de fontes de dados
Padres de lgica de domnio (negcio)
Padres de apresentao
Padres de distribuio

(*) www.martinfowler.com/eaaCatalog

64
Padres de base
Gateway
Objeto que encapsula o acesso a um
sistema ou recurso externo

65
Padres de base
Mapper
Objeto que inicializa comunicao entre
objetos independentes que no possuem
conhecimento um do outro

66
Padres de base
Layer Supertype
Atua como supertipo de todos os tipos na
sua camada
Pode ser comum ter objetos que
compartilham mtodos em uma camada
Voc pode mover comportamento para
um Layer Supertype

67
Padres de base
Separated Interface
Interface em um
pacote diferente
do local de sua
implementao

68
Padres de base
Registry
Objeto bem conhecido que outros objetos
pode usar para encontrar objetos ou
servios comuns (ou globais)

69
Padres de base
Value Object
Objeto simples que baseia sua igualdade
no valor e no na identidade (e.g., Money,
Date, Temperature)
Normalmente so passados por valor
Comparaes consideram valor em vez
de instncia
Nota: Remete ao mtodo equals()

70
Padres de base
Money
Representa valor monetrio

71
Padres de base
Special Case
Subclasse com
comportamento especial
para casos particulares
Em vez de retornar
nulo ou outra coisa
estranha, retorne
um Special Case

72
Padres de base
Plugin
Conecta classes durante configurao em
vez de tempo de compilao

73
Padres de base
Service Stub
Remove dependncia de servios
problemticos durante testes

74
Padres de base
Record Set
Representao em memria de dados
tabulares

75
Padres de fontes de dados
Table Data Gateway
Objetos que atuam como Gateway para
uma tabela de dados
Uma instncia manipula todas linhas da
tabela

76
Padres de fontes de dados
Row Data Gateway
Objeto que atua como Gateway para um
registro em uma fonte de dados
Uma instncia por linha

77
Padres de fontes de dados
Active Record
Objeto que envolve uma linha de tabela,
encapsula acesso ao banco de dados e
adiciona lgica de domnio nos dados

78
Padres de fontes de dados
Data Mapper
Camada de Mappers que move dados
entre objetos e banco de dados mantendo
independncia

79
Padres de lgica de domnio
Transaction Script
Organiza lgica de negcio via
procedimentos em que cada um manipula
requisitos vindos da apresentao

80
Padres de lgica de domnio
Domain Model
Modelo de objeto do domnio que
incorpora comportamento e dados

81
Padres de lgica de domnio
Table Module
Instncia nica que manipula a lgica de
negcio para todas linhas em uma tabela

82
Padres de lgica de domnio
Service Layer
Define limites da
aplicao com uma
camada de servios
que estabelecem
um conjunto de
operaes

83
Padres de apresentao
Model View Controller
Divide a interface de usurio em trs
papis distintos

84
Padres de apresentao
Page Controller
Objeto que manipula uma requisio por
uma pgina especfica ou ao

85
Padres de apresentao
Front Controller
Controller que manipula todas requisies

86
Padres de apresentao
Template View
Insere informaes em HTML colocando
marcadores em uma interface de usurio

87
Padres de apresentao
Transform View
View que processa dados de domnio
(elemento a elemento) e transforma em
HTML

88
Padres de apresentao
Two Step View
Transforma dados
de domnio em
HTML
Monta a estrutura
lgica
Renderiza a
estrutura
lgica em HTML.

89
Padres de apresentao
Application Controller
Ponto central para manipular navegao
na tela e o fluxo de uma aplicao

90
Padres de distribuio
Remote Facade
Converter objetos de granularidade fina
(ou alta) em objetos compactos tendo
como foco eficincia de rede

91
Padres de distribuio
Data Transfer Object
Objeto que carrega dados entre
processos para reduzir o nmero de
chamadas de mtodos

92
Exerccio
Continuar o projeto do sistema do bilhete
nico de SP aplicando, quando aplicvel,
o mximo de padres vistos at o
momento

93
Formatos de padres
POSA - Pattern-Oriented Software
Architecture

PoEAA - Patterns of Enterprise


Application Architecture

GoF - Gang of Four

94
POSA
Nome
Contexto
Problema
Soluo

95
GoF
Inteno
Nome Outros nomes
Problema Motivao
Aplicao
Soluo
Estrutura
Consequncias Participantes
Colaboraes
Implementao
Cdigo de exemplo
Usos conhecidos
Padres relacionados 96
PoEAA
Nome
Inteno e esboo
Problema
Como funciona
Quando us-lo
Leitura adicional
Exemplos
97
POSA PoEAA GoF
Nome Nome Nome e outros nomes
Contexto Inteno Inteno
Esboo Estrutura
Problema Problema Problema e Motivao
Soluo Como funciona Soluo
Consequncias
Quando us-lo Usos conhecidos e
Aplicao
Leitura adicional
Exemplos Cdigo de exemplo e
Implementao
Participantes
Colaboraes
Padres relacionados
98
Notas finais
Funcionalidades principais de um sistema
so significativos para a arquitetura

O que feito durante a arquitetura visa


evitar o risco de um projeto falhar

99
Referncias
Buschamann et al.
Pattern-Oriented Software Architecture: A System of
Patterns (1996)
Gamma et al.
Design Patterns: Elements of Reusable Object-Oriented
Software (1994)
Fowler
Patterns of Enterprise Application Architecture (2007)

100
Referncias
http://martinfowler.com/eaaDev/uiArchs.html
http://www.martinfowler.com/eaaCatalog
http://www.wildcrest.com/Potel/Portfolio/mvp.pdf
http://msdn.microsoft.com/en-us/library/ff647543.aspx
http://msdn.microsoft.com/en-us/library/ee658120.aspx
http://msdn.microsoft.com/en-us/library/ee658109.aspx

101

Вам также может понравиться