padrões arquiteturais de sistemas

101
1 Padrões Arquiteturais de Sistemas (2011) Especialização em Projeto e Desenvolvimento de Sistemas Vagner Figuerêdo de Santana

Upload: vagner-santana

Post on 19-Jun-2015

5.974 views

Category:

Education


3 download

DESCRIPTION

Slides usados na disciplina do curso de Especialização em Projeto e Desenvolvimento de Sistemas, da Universidade Presbiteriana Mackenzie.

TRANSCRIPT

Page 1: Padrões Arquiteturais de Sistemas

1

Padrões Arquiteturaisde Sistemas (2011)

Especialização em Projeto e Desenvolvimento de Sistemas

Vagner Figuerêdo de Santana

Page 2: Padrões Arquiteturais de Sistemas

2

Objetivo da disciplina

Aplicação de padrões no desenvolvimento de software orientado a objetos

Desenvolvimento multicamadas com integração em diferentes processos de software

Page 3: Padrões Arquiteturais de Sistemas

3

Conteúdo programático

Introdução Padrões Arquiteturais de Sistemas Padrões enterprise multicamadas Oficina de padrões

Page 4: Padrões Arquiteturais de Sistemas

4

Introdução

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)

Page 5: Padrões Arquiteturais de Sistemas

5

Introdução

A qualidade dos projetos arquitetônicos é objetiva?

Page 6: Padrões Arquiteturais de Sistemas

6

Introdução

Um padrão descreve problema que ocorre

repetidamente solução para esse

problema de forma que se possa reutilizar a solução

Page 7: Padrões Arquiteturais de Sistemas

7

Introdução

Estrutura básica de um padrão Contexto

Situação em que o problema surge Problema

Conjunto de forças que surge no contexto Solução

Configuração que equilibra as forças Estrutura com componentes e relacionamentos Comportamento

Page 8: Padrões Arquiteturais de Sistemas

8

Introdução

Exemplo na arquitetura: MASP Problema: O terreno para o museu havia

sido doado com a condição de que a vista para o centro da cidade fosse preservada

Page 9: Padrões Arquiteturais de Sistemas

9

Introdução

Solução: Edifício sustentado por pilares

Inaugurado em 68, o edifício é sustentado

por quatro pilares laterais e conta com

um vão livre de 74m. Foto: Kuca (http://www.flickr.com/photos/kuca/279529473/)

Page 10: Padrões Arquiteturais de Sistemas

10

Introdução

Por quê usar padrões? Aprender com a experiência dos outros O jargão facilita a comunicação de princípios

complexos Melhora a qualidade do software Descreve abstrações de software Ajuda a documentar a arquitetura Captura as partes essenciais de forma compacta

Page 11: Padrões Arquiteturais de Sistemas

11

Introdução

No entanto… Não apresentam uma solução exata Não resolvem todos os problemas de design Não é exclusivo de orientação a objetos

Page 12: Padrões Arquiteturais de Sistemas

12

Introdução

Como selecionar um padrão? Entenda como os padrões ajudam a resolver

problemas Revise as intenções de cada padrão Estude como os padrões se relacionam Estude as similaridades entre os padrões de mesmo

propósito Conheça as principais causas de retrabalho Considere o que você pode querer mudar em seu

projeto no futuro

Page 13: Padrões Arquiteturais de Sistemas

13

Introdução

Arquitetura de software Resultado do projeto de software Descrição dos subsistemas/componentes e

seus relacionamentos

Page 14: Padrões Arquiteturais de Sistemas

14

Introdução

Subsistema/componente Bloco básico de construção de sistemas Parte encapsulada de um sistema Possui uma interface Pode ser módulo, classe, objeto ou conjunto

de funções relacionadas

Page 15: Padrões Arquiteturais de Sistemas

15

Introdução

Padrão 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

Page 16: Padrões Arquiteturais de Sistemas

16

Padrões Arquiteturaisde Sistemas MVC (Model View Controller)

MVP (Model View Presenter) Pipeline N-tier Arquitetura em camadas

Page 17: Padrões Arquiteturais de Sistemas

17

MVC (Model View Controller)

Divide aplicação interativa em 3 partes Model: regras de negócio e dados (core) View: apresenta informações ao usuário Controller: trata entrada de usuário e

manipula o modelo A propagação de mudanças é o link entre

model e view e controllers

Page 18: Padrões Arquiteturais de Sistemas

18

MVC (Model View Controller)

Quando usá-lo? Contexto: Aplicações interativas Problema:

Interfaces de usuário são propícias a mudanças Diferentes visualizações para mesmos dados

Solução: Dividir processamento, entrada e saída

Page 19: Padrões Arquiteturais de Sistemas

19

MVC (Model View Controller)

View Controller

Model

Page 20: Padrões Arquiteturais de Sistemas

20

MVC (Model View Controller)

Classe

Model

Colaboradores View ControllerResponsabilidade

Fornecer funcionalidade central da aplicação Registrar views e controllers dependentes Notifica alterações aos dependentes

Page 21: Padrões Arquiteturais de Sistemas

21

MVC (Model View Controller)

Classe

View

Colaboradores Controller ModelResponsabilidade

Cria e inicializa seu controller Apresenta informações Implementa procedimento de atualização Recupera dados do modelo

Page 22: Padrões Arquiteturais de Sistemas

22

MVC (Model View Controller)

Classe

Controller

Colaboradores View ModelResponsabilidade

Manipula entrada de usuário Traduz entradas dos usuários ou requisições do view em requisições ao model Implementa o procedimento de atualização

Page 23: Padrões Arquiteturais de Sistemas

23

MVC (Model View Controller)

View Controller

Model

Page 24: Padrões Arquiteturais de Sistemas

24

MVC (Model View Controller)

Este é o MVC clássico, mas... É adequado para os sistemas de hoje? Quais são as limitações na Web? Como model pode notificar a view? Quando podemos enfrentar problemas? Como poderíamos melhorá-lo?

Page 25: Padrões Arquiteturais de Sistemas

25

MVC (Model View Controller)

Separar apresentação (View)dos dados (Model)

View Controller

Model

Page 26: Padrões Arquiteturais de Sistemas

26

MVC (Model View Controller)

Separar apresentação (View)dos dados (Model)

View Controller

Model

Page 27: Padrões Arquiteturais de Sistemas

27

MVC (Model View Controller)

Separar apresentação (View)dos dados (Model)

View

Controller

Model

Page 28: Padrões Arquiteturais de Sistemas

28

MVC (Model View Controller)

Exemplo: Jogos (Bomberman)

Page 29: Padrões Arquiteturais de Sistemas

29

MVC (Model View Controller)

Page 30: Padrões Arquiteturais de Sistemas

30

MVC (Model View Controller)

Como adicionar mais views?

Page 31: Padrões Arquiteturais de Sistemas

31

MVC (Model View Controller)

View

Controller

Model

View

Controller

View

Controller

Model

View

Page 32: Padrões Arquiteturais de Sistemas

32

MVP (Model View Presenter)*

Variação do MVC Surgiu em na IBM Ganhou visibilidade nos anos 90** Separa widgets reutilizáveis do código

específico da aplicação

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

Page 33: Padrões Arquiteturais de Sistemas

33

MVP (Model View Presenter)

Divide aplicação interativa em 3 partes Model: regras de negócio e dados (core) View: estrutura de widgets que gerencia

controles e formulários e encaminha eventos ao presenter

Presenter: decide como reagir aos eventos e atualiza model e view

Atualização da view é semelhante ao MVC

Page 34: Padrões Arquiteturais de Sistemas

34

MVP (Model View Presenter)

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

Page 35: Padrões Arquiteturais de Sistemas

35

Especificidades do MVP

Presenter manipula o model e depois atualiza o view

Presenter é como controller mas sem a manipulação de eventos

View despacha eventos para presenter

Fonte: http://martinfowler.com/eaaDev/uiArchs.html

Page 36: Padrões Arquiteturais de Sistemas

36

Pipeline (Pipes and Filters)

Estrutura para sistemasque processam cadeiasde dados

Processos sãoencapsulados emfiltros

Dados são passadospelos pipes localizadosentre os filtros

Source

Filter 1

Sink

Filter 2

Pipe

Pipe

Pipe

Page 37: Padrões Arquiteturais de Sistemas

37

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 é inviável

Solução: Dividir a tarefa em uma sequência de etapas

Page 38: Padrões Arquiteturais de Sistemas

38

Pipeline (Pipes and Filters)

Classe

Filter

Colaboradores Pipe

Responsabilidade Obtém dados de entrada Manipula dados de entrada Fornece dados de saída

Page 39: Padrões Arquiteturais de Sistemas

39

Pipeline (Pipes and Filters)

Classe

Pipe

Colaboradores Data source Data sink Filter

Responsabilidade Transfere os dados Sincroniza vizinhos

Page 40: Padrões Arquiteturais de Sistemas

40

Pipeline (Pipes and Filters)

Classe

Data Source

Colaboradores Pipe

Responsabilidade Entrega dados de entrada para pipeline

Page 41: Padrões Arquiteturais de Sistemas

41

Pipeline (Pipes and Filters)

Classe

Data Sink

Colaboradores Pipe

Responsabilidade Consume os dados de saída

Page 42: Padrões Arquiteturais de Sistemas

42

Pipeline (Pipes and Filters)

Exemplo: Linha de comando

Page 43: Padrões Arquiteturais de Sistemas

43

N-tier

Padrão geral de distribuição Componentes são separados em

servidores diferentes Comumente, escolhemos um entre os

padrões 2-tier, 3-tier ou 4-tier

Page 44: Padrões Arquiteturais de Sistemas

44

Tier vs Layer

Layer descreve agrupamento lógico Tiers descreve a distribuição física em diferentes

servidores, computadores, redes, etc. Layers e tiers usam o mesmo conjunto de nomes

(apresentação, negócio, serviços e dados), mas somente tiers implicam separação física

É comum ter mais de um layer no mesmo tier Podemos pensar no termo tier como sendo uma

referência a padrões de distribuição de sistemas computacionais

Page 45: Padrões Arquiteturais de Sistemas

45

2-tier

Mesmo layout físico que o padrão cliente/servidor

Em alguns casos, todo o código da aplicação é localizado no cliente e o banco de dados é localizado em um servidor separado

Considere este padrão se você está desenvolvendo um cliente que vai acessar um servidor de aplicação um cliente stand-alone que acessa um servidor de

dados separado

Page 46: Padrões Arquiteturais de Sistemas

46

2-tier

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

Page 47: Padrões Arquiteturais de Sistemas

47

3-tier

O cliente acessa o servidor de aplicação, que acessa o servidor de banco de dados; todos em diferentes máquinas

Padrão comum para aplicações Web e Web Services

Pode ser necessário incluir um firewall entre o cliente e o servidor de aplicação e entre o servidor de aplicação e o banco de dados

Page 48: Padrões Arquiteturais de Sistemas

48

3-tier

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

Page 49: Padrões Arquiteturais de Sistemas

49

4-tier

Servidor Web é separado fisicamente do servidor de aplicação

O servidor Web está em uma rede e acessa a aplicação em outra sub-rede

Neste cenário cliente e servidores de aplicação/Web podem ter que ser combinados com um firewall

Considere este padrão se Requisitos de segurança ditam que as regras de negócio sejam

separadas Você deseja dividir/controlar carga nos servidores

Page 50: Padrões Arquiteturais de Sistemas

50

4-tier

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

Page 51: Padrões Arquiteturais de Sistemas

51

Arquitetura em Camadas

Estrutura aplicações decompostas grupos de tarefas em diferentes níveis de abstração

Cliente Camada N

Camada N-1

Camada 1

Page 52: Padrões Arquiteturais de Sistemas

52

Arquitetura em Camadas

Quando usá-lo? Contexto: Sistema complexo que exige

decomposição Problema:

Sistema manipula questões de baixo nível e deve disponibilizar funcionalidades a usuários

Estrutura horizontal com vertical subdivisão Portabilidade

Solução: Estruturar o sistema em número apropriado de camadas

Page 53: Padrões Arquiteturais de Sistemas

53

Arquitetura em Camadas

Classe

Camada N

Colaboradores Camada N-1

Responsabilidade Fornecer funcionalidades usadas pela camada N+1 Delega subtarefas à camada N-1

Page 54: Padrões Arquiteturais de Sistemas

54

Arquitetura em Camadas

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

Exemplo

Page 55: Padrões Arquiteturais de Sistemas

55

Arquitetura em Camadas

Exercício: Como definir o número de camadas?

Page 56: Padrões Arquiteturais de Sistemas

56

Arquitetura em Camadas

Definindo o número de camadas Agrupar componentes que representam

papeis e funcionalidades diferentes Ex.: Apresentação, Negócio e Dados

Delimitar locais onde decisões envolvendo tecnologias ou projeto precisam ser tomadas Ex.: Linguagens, Dispositivos, Banco de dados.

Page 57: Padrões Arquiteturais de Sistemas

57

Arquitetura em Camadas

Pontos críticos Separar aplicação em muitas camadas pode

Prejudicar o desempenho Complexidade desnecessária

Prezando pela manutenção deve-se Manter encapsulamento nas camadas Baixo acoplamento entre camadas Como verificar?

Page 58: Padrões Arquiteturais de Sistemas

58

Arquitetura em Camadas

Arquitetura em 3 camadas (Fowler) Apresentação (fornece serviço)

Exibir informações Traduzir comandos do usuário em ações na camada

de domínio Domínio

Regras de negócio Dados (usa serviço)

Apresentação e recuperação de dados

Page 59: Padrões Arquiteturais de Sistemas

59

Arquitetura em Camadas

Fowler Microsoft J2EE

Apresentação Apresentação Cliente

Apresentação (servidor)

Domínio Negócio Negócio

Fonte de dados Acesso a dados Integração

Recursos

Page 60: Padrões Arquiteturais de Sistemas

60

Exercício

Em duplas ou trios Projetar o sistema do bilhete único de SP

Definir arquitetura(s) Esboço do projeto (diagrama de classes)

Considerar Sistema central Quiosques de recarga Catracas

Page 61: Padrões Arquiteturais de Sistemas

61

Arquitetura baseada em serviços

Composto por múltiplos serviços Comunicação via mensagens/protocolos Componentes da solução total Outras aplicações podem usar serviços

sem se precisar se preocupar como eles estão implementados

Page 62: Padrões Arquiteturais de Sistemas

62

Arquitetura baseada em serviços

Exemplo

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

Page 63: Padrões Arquiteturais de Sistemas

63

Arquitetura baseada em serviços

Exemplo: Reuso de CMS

Page 64: Padrões Arquiteturais de Sistemas

64

Padrões enterprise multicamadas*

Padrões de base Padrões de fontes de dados Padrões de lógica de domínio (negócio) Padrões de apresentação Padrões de distribuição

(*) www.martinfowler.com/eaaCatalog

Page 65: Padrões Arquiteturais de Sistemas

65

Padrões de base Gateway Objeto que encapsula o acesso a um

sistema ou recurso externo

Page 66: Padrões Arquiteturais de Sistemas

66

Padrões de base Mapper Objeto que inicializa comunicação entre

objetos independentes que não possuem conhecimento um do outro

Page 67: Padrões Arquiteturais de Sistemas

67

Padrões de base Layer Supertype Atua como supertipo de todos os tipos na

sua camada Pode ser comum ter objetos que

compartilham métodos em uma camada Você pode mover comportamento para

um Layer Supertype

Page 68: Padrões Arquiteturais de Sistemas

68

Padrões de base Separated Interface Interface em um

pacote diferentedo local de suaimplementação

Page 69: Padrões Arquiteturais de Sistemas

69

Padrões de base Registry Objeto bem conhecido que outros objetos

pode usar para encontrar objetos ou serviços comuns (ou globais)

Page 70: Padrões Arquiteturais de Sistemas

70

Padrões de base Value Object Objeto simples que baseia sua igualdade

no valor e não na identidade (e.g., Money, Date, Temperature)

Normalmente são passados por valor Comparações consideram valor em vez

de instância Nota: Remete ao método equals()

Page 71: Padrões Arquiteturais de Sistemas

71

Padrões de base Money Representa valor monetário

Page 72: Padrões Arquiteturais de Sistemas

72

Padrões de base Special Case Subclasse com

comportamento especialpara casos particulares

Em vez de retornarnulo ou outra coisaestranha, retorneum Special Case

Page 73: Padrões Arquiteturais de Sistemas

73

Padrões de base Plugin Conecta classes durante configuração em

vez de tempo de compilação

Page 74: Padrões Arquiteturais de Sistemas

74

Padrões de base Service Stub Remove dependência de serviços

problemáticos durante testes

Page 75: Padrões Arquiteturais de Sistemas

75

Padrões de base Record Set Representação em memória de dados

tabulares

Page 76: Padrões Arquiteturais de Sistemas

76

Padrões de fontes de dadosTable Data Gateway Objetos que atuam como Gateway para

uma tabela de dados Uma instância manipula todas linhas da

tabela

Page 77: Padrões Arquiteturais de Sistemas

77

Padrões de fontes de dadosRow Data Gateway Objeto que atua como Gateway para um

registro em uma fonte de dados Uma instância por linha

Page 78: Padrões Arquiteturais de Sistemas

78

Padrões de fontes de dadosActive Record Objeto que envolve uma linha de tabela,

encapsula acesso ao banco de dados e adiciona lógica de domínio nos dados

Page 79: Padrões Arquiteturais de Sistemas

79

Padrões de fontes de dadosData Mapper Camada de Mappers que move dados

entre objetos e banco de dados mantendo independência

Page 80: Padrões Arquiteturais de Sistemas

80

Padrões de lógica de domínioTransaction Script Organiza lógica de negócio via

procedimentos em que cada um manipula requisitos vindos da apresentação

Page 81: Padrões Arquiteturais de Sistemas

81

Padrões de lógica de domínioDomain Model Modelo de objeto do domínio que

incorpora comportamento e dados

Page 82: Padrões Arquiteturais de Sistemas

82

Padrões de lógica de domínioTable Module Instância única que manipula a lógica de

negócio para todas linhas em uma tabela

Page 83: Padrões Arquiteturais de Sistemas

83

Padrões de lógica de domínioService Layer Define limites da

aplicação com umacamada de serviçosque estabelecemum conjunto deoperações

Page 84: Padrões Arquiteturais de Sistemas

84

Padrões de apresentaçãoModel View Controller Divide a interface de usuário em três

papéis distintos

Page 85: Padrões Arquiteturais de Sistemas

85

Padrões de apresentaçãoPage Controller Objeto que manipula uma requisição por

uma página específica ou ação

Page 86: Padrões Arquiteturais de Sistemas

86

Padrões de apresentaçãoFront Controller Controller que manipula todas requisições

Page 87: Padrões Arquiteturais de Sistemas

87

Padrões de apresentaçãoTemplate View Insere informações em HTML colocando

marcadores em uma interface de usuário

Page 88: Padrões Arquiteturais de Sistemas

88

Padrões de apresentaçãoTransform View View que processa dados de domínio

(elemento a elemento) e transforma em HTML

Page 89: Padrões Arquiteturais de Sistemas

89

Padrões de apresentaçãoTwo Step View Transforma dados

de domínio emHTML Monta a estrutura

lógica Renderiza a

estruturalógica em HTML.

Page 90: Padrões Arquiteturais de Sistemas

90

Padrões de apresentaçãoApplication Controller Ponto central para manipular navegação

na tela e o fluxo de uma aplicação

Page 91: Padrões Arquiteturais de Sistemas

91

Padrões de distribuiçãoRemote Facade Converter objetos de granularidade fina

(ou alta) em objetos compactos tendo como foco eficiência de rede

Page 92: Padrões Arquiteturais de Sistemas

92

Padrões de distribuiçãoData Transfer Object Objeto que carrega dados entre

processos para reduzir o número de chamadas de métodos

Page 93: Padrões Arquiteturais de Sistemas

93

Exercício

Continuar o projeto do sistema do bilhete único de SP aplicando, quando aplicável, o máximo de padrões vistos até o momento

Page 94: Padrões Arquiteturais de Sistemas

94

Formatos de padrões

POSA - Pattern-Oriented Software Architecture

PoEAA - Patterns of Enterprise Application Architecture

GoF - Gang of Four

Page 95: Padrões Arquiteturais de Sistemas

95

POSA

Nome Contexto Problema Solução

Page 96: Padrões Arquiteturais de Sistemas

96

GoF

Nome Problema Solução Consequências

Intenção Outros nomes Motivação Aplicação Estrutura Participantes Colaborações Implementação Código de exemplo Usos conhecidos Padrões relacionados

Page 97: Padrões Arquiteturais de Sistemas

97

PoEAA

Nome Intenção e esboço Problema Como funciona Quando usá-lo Leitura adicional Exemplos

Page 98: Padrões Arquiteturais de Sistemas

98

POSA PoEAA GoF

Nome Nome Nome e outros nomes

Contexto Intenção Intenção

Esboço Estrutura

Problema Problema Problema e Motivação

Solução Como funciona Solução

Consequências

Quando usá-lo Usos conhecidos eAplicação

Leitura adicional

Exemplos Código de exemplo e Implementação

Participantes

Colaborações

Padrões relacionados

Page 99: Padrões Arquiteturais de Sistemas

99

Notas finais

Funcionalidades principais de um sistema são significativos para a arquitetura

O que é feito durante a arquitetura visa evitar o risco de um projeto falhar

Page 100: Padrões Arquiteturais de Sistemas

100

Referências

Buschamann et al.Pattern-Oriented Software Architecture: A System of Patterns (1996)

Gamma et al.Design Patterns: Elements of Reusable Object-Oriented Software (1994)

FowlerPatterns of Enterprise Application Architecture (2007)

Page 101: Padrões Arquiteturais de Sistemas

101

Referências

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