Você está na página 1de 71
Arquitetura)de) So-ware)–)Parte)II)
Arquitetura)de)
So-ware)–)Parte)II)
Arquitetura)de) So-ware)–)Parte)II)

Centro'de'Informá-ca'0'Universidade'Federal'de'Pernambuco'

Sistemas'de'Informação'

Vinicius'Cardoso'Garcia'

vcg@cin.ufpe.br'

Slides ' originais ' elaborados ' por'Ian'Sommerville ' O' autor' permite'o' uso 'e'a'modificação 'dos' slides ' para 'fins' didá-cos '

uso 'e'a'modificação 'dos' slides ' para 'fins' didá-cos ' '
uso 'e'a'modificação 'dos' slides ' para 'fins' didá-cos ' '

'

Es-los ,' Princípios 'e' Padrões ' PROJETO )DE) ARQUITETURA )DE) SOFTWARE)
Es-los ,' Princípios 'e' Padrões ' PROJETO )DE) ARQUITETURA )DE) SOFTWARE)

Es-los,' Princípios'e' Padrões '

PROJETO )DE) ARQUITETURA )DE) SOFTWARE)
PROJETO )DE) ARQUITETURA )DE)
SOFTWARE)
Padrões ' PROJETO )DE) ARQUITETURA )DE) SOFTWARE)
Padrões ' PROJETO )DE) ARQUITETURA )DE) SOFTWARE)
Es=los) Arquiteturais)
Es=los) Arquiteturais)

A' arquitetura'de'um' sistema' pode' aderir'a'um' ou ' mais ' es=los ) arquiteturais)

Um' es-lo'define' os ' -pos 'de' elementos ' que' podem' aparecer' em' uma ' arquitetura'e'as'regras'' que' regem' a' sua ' interconexão)

que ' regem ' a' sua ' interconexão ) •   Esses ' es-los ' pode

Esses' es-los' pode' simplificar'o' problema 'de' definição 'de' arquiteturas 'de' sistema.' A' maioria 'dos' sistemas 'de' grande' porte' adere'a' vários ' es-los' Es-los' arquiteturais '='“ modelos ) arquiteturais”'

'='“ modelos ) arquiteturais ”'
'='“ modelos ) arquiteturais ”'
Exemplos)de) Es=los) Arquiteturais)
Exemplos)de) Es=los) Arquiteturais)

Cliente0Servidor' Em' camadas ”' Filtros 'e' dutos '(pipes'and'filters)' Baseado ' em' repositório ' Orientado 'a' eventos'(publisher/subscriber)' Transferência' Representacional 'de'Estado'' (REST)' Objetos ' distribuídos ' C2'

  Objetos ' distribuídos ' •   C2'
  Objetos ' distribuídos ' •   C2'
  Objetos ' distribuídos ' •   C2'
Es=los) Arquiteturais)e) Escolhas)de) Projeto )
Es=los) Arquiteturais)e) Escolhas)de) Projeto )

Um' es-lo' arquitetural ' representa'um' conjunto ' de' decisões)(escolhas ))de)projeto)

Conjunto 'de' caracterís-cas' comuns'a' diversos '

sistemas '

nos ' quais 'as' mesmas ' escolhas ' foram' feitas '

Padrões ) arquiteturais''

feitas ' •   Padrões ) arquiteturais '' –   Um' sistema' aderente'a'

Um' sistema' aderente'a' determinado ' es-lo'“ ganha"'as' caracterís-cas ' inerentes'a' ele'

Es-los' podem' ser ' usados ' para ' descrever ' uma ' determinada' arquitetura'

Foco ' nas) soluções)de) projeto) e' não ' em' sua ' documentação)

e' não ' em ' sua ' documentação )
e' não ' em ' sua ' documentação )
Organização )de) sistema)
Organização )de) sistema)

Reflete'a' estratégia' básica' que' é' usada ' para ' estruturar'um' sistema' Exemplos :'

O' es-lo'de' repositório 'de'dados' compar-lhados ;' Es-lo 'de' serviços 'e' servidores ' compar-lhados ;' Es-lo 'de' máquina ' abstrata' ou ' em' camadas ' Orientado 'a' objetos '( ou ' Objetos ' Distribuídos )‏' Pipes'and'Filters'ou 'Pipelining'

  Pipes'and'Filters' ou 'Pipelining' •   Classificação ' para

Classificação ' para 'fins'de' estudo '

' para 'fins'de' estudo '
' para 'fins'de' estudo '
Es=lo)de) repositório )
Es=lo)de) repositório )

Sistemas ' cujas ' partes ' precisam'trocar'dados' com' frequência :'

Dados' compar-lhados ' podem' ser ' man-dos ' em' um' banco 'de'dados'central'e'acessados ' por' todos ' os ' subsistemas ' Cada ' subsistema' mantém' seu ' próprio ' banco 'de' dados'e' passa 'dados' para 'outros' subsistemas '

'dados' para 'outros' subsistemas ' •   Podem ' usar' uma ' abstração

Podem' usar' uma ' abstração' de' repositório ' centralizado ' Implementação' distribuída'

' •   Implementação ' distribuída'
' •   Implementação ' distribuída'

Arquitetura)de) conjunto )de) ferramentas )CASE)

Arquitetura )de) conjunto )de) ferramentas )CASE) Ian' Sommerville ,'
Arquitetura )de) conjunto )de) ferramentas )CASE) Ian' Sommerville ,'

Ian' Sommerville ,' Engenharia'de'SoOware,'8ª.'' edição .' Capítulo '11'

edição .' Capítulo '11'
edição .' Capítulo '11'
Caracterís=cas )do) Es=lo) Arquitetural) de)Repositório)
Caracterís=cas )do) Es=lo) Arquitetural)
de)Repositório)

Vantagens ''

É ' uma ' maneira ' eficiente'de' compar-lhar' grandes ' quan-dades 'de'dados' Dados' aderem'a' uma ' representação ' comum' Simplifica 'a' projeto 'de' aplicações ' fortemente' baseadas ' em'dados'

' fortemente' baseadas ' em 'dados' •   Tanto ' para ' troca

Tanto ' para ' troca'de'info.' quanto ' para ' armazenamento '

Desvantagens''

Os ' subsistemas ' devem ' estar'de' acordo 'com'um' modelo'de'dados' padronizado ' A' evolução 'de'dados' é' dipcil 'e' dispendiosa;' Dificuldade' para ' distribuir'de'forma' eficiente.'

' distribuir'de'forma' eficiente .'
' distribuir'de'forma' eficiente .'
Es=lo) ClienteRServidor )
Es=lo) ClienteRServidor )

Mostra ' como 'dados'e' processamento ' são ' distribuídos ' por' uma ' variedade'de' componentes .' Servidores' independentes' que' fornecem ' serviços ' tais ' como ' impressão ,' transferência'de' arquivos ,' gerenciamento 'de'dados,'etc.' Clientes ' u-lizam' esses' serviços .' Clientes'e' servidores ' normalmente'se' comunicam' através 'de' uma ' rede'

através 'de' uma ' rede ' –   Diversas ' tecnologias 'de'

Diversas ' tecnologias 'de' comunicação ' são ' possíveis '

comunicação ' são ' possíveis '
comunicação ' são ' possíveis '
Biblioteca )de) filmes )e) fotografias )
Biblioteca )de) filmes )e) fotografias )
Biblioteca )de) filmes )e) fotografias ) Ian' Sommerville ,'

Ian' Sommerville ,' Engenharia'de'SoOware,'8ª.'' edição .' Capítulo '11'

edição .' Capítulo '11'
edição .' Capítulo '11'

Caracterís=cas )do) Es=lo) ClienteR Servidor )

Caracterís=cas )do) Es=lo ) ClienteR Servidor ) •   Vantagens '' –   Separação 'de'

Vantagens ''

Separação 'de' interesses' Inerentemente' distribuído '

Balanceamento 'de' carga,' tolerância'a' falhas '

É ' fácil ' adicionar' novos ' servidores ' ou ' atualizar' servidores ' existentes.'

' atualizar' servidores ' existentes .' •   Desvantagens '' –   Gerenciamento

Desvantagens''

Gerenciamento ' redundante' em' cada' servidor ;' Nenhum' registro 'central'de'nomes 'e' serviços '–' pode' ser ' dipcil ' descobrir ' quais ' servidores 'e' serviços ' estão ' disponíveis ' Requisições'e' respostas ' casadas '

Requisições 'e' respostas ' casadas '
Requisições 'e' respostas ' casadas '
Modelo)de) Máquina) Abstrata)) (Em ) Camadas ))
Modelo)de) Máquina) Abstrata))
(Em ) Camadas ))

Organiza 'o' sistema' em'um' conjunto 'de' camadas '( ou ' máquinas ' abstratas )'

Cada ' uma ' fornece 'um' conjunto 'de' serviços ' Cada ' camada' é' cliente'da' camada' subjacente'

é' cliente'da' camada' subjacente' •   Generalização 'do' es-lo '

Generalização 'do' es-lo' Cliente0Servidor'

Não ' precisa ' ser ' distribuído '

Apóia'o' desenvolvimento 'incremental'dos' subsistemas ' em' camadas ' diferentes.''

Ex.'Se' mudarmos 'a' camada'de' negócios ,' 'as' camadas ' acima' precisam' ser ' modificadas '

acima' precisam' ser ' modificadas '
acima' precisam' ser ' modificadas '

Sistema)de) gerenciamento )de) versões )

Sistema )de) gerenciamento )de) versões ) Ian' Sommerville ,'
Sistema )de) gerenciamento )de) versões ) Ian' Sommerville ,'

Ian' Sommerville ,' Engenharia'de'SoOware,'8ª.'' edição .' Capítulo '11'

edição .' Capítulo '11'
edição .' Capítulo '11'
Caracterís=cas )do) Es=lo) em ) Camadas )
Caracterís=cas )do) Es=lo) em ) Camadas )

Vantagens ''

Facilidade'de' compreensão ' Facilidade'de' manutenção ' Desenvolvimento ' independente'

' –   Desenvolvimento ' independente' •   Desvantagens '' –   Duplicação

Desvantagens''

Duplicação 'de' funcionalidade' Às ' vezes ' é' dipcil ' estruturar'um' sistema' através 'de' camadas '

É ' comum' que'a' estruturação ' seja ' violada'

Overhead'de'implementação 'e' desempenho '

'e' desempenho '
'e' desempenho '
Es=lo) Arquitetural)de) Objetos )
Es=lo) Arquitetural)de) Objetos )

Sistema' como 'um' conjunto 'de' objetos ' fracamente' acoplados 'e'com'interfaces'bem' definidas '

Cada ' objeto ' oferece'um' conjunto 'de' serviços '

'um' conjunto 'de' serviços ' •   No' nível ' arquitetural ,'

No'nível ' arquitetural ,' é' frequentemente' empregado ' na' construção 'de' sistemas ' distribuídos ' '

Objetos ' distribuídos '

Uma' implementação 'OO' não ' implica ' em' uma ' arquitetura'OO'

' em ' uma ' arquitetura 'OO'
' em ' uma ' arquitetura 'OO'
Sistema)de) processamento)de) faturas )
Sistema)de) processamento)de) faturas )
Sistema)de) processamento)de) faturas ) Ian' Sommerville ,' Engenharia'de'SoOware,'8ª.''

Ian' Sommerville ,' Engenharia'de'SoOware,'8ª.'' edição .' Capítulo '11'

edição .' Capítulo '11'
edição .' Capítulo '11'
Caracterís=cas )do) Es=lo) Arquitetural) de)Objetos )
Caracterís=cas )do) Es=lo) Arquitetural)
de)Objetos )

Vantagens '

Objetos ' são ' fracamente' acoplados ' devido ' ao ' uso ' de'interfaces' Linguagens 'de' implementação ' orientada'a' objeto ' são ' amplamente' usadas .'

objeto ' são ' amplamente' usadas .' •   Desvantagens' –   Mudanças

Desvantagens'

Mudanças 'de'interface'têm'alto' impacto ' Não ' envolve' restrições ) topológicas,'o'que' pode' dificultar'a' manutenção '

Dependências'entre'objetos ' não ' são ' limitadas '

' não ' são ' limitadas '
' não ' são ' limitadas '
Es=lo) Dutos )e) Filtros)(Pipelining)‏)
Es=lo) Dutos )e) Filtros)(Pipelining)‏)

Originário 'de' sistemas ' operacionais 'UNIX'e'do' projeto 'de' compiladores ' Transformações ' funcionais ' processam' entradas ' para ' produzir' saídas .'

entradas ' para ' produzir' saídas .' –   Componentes ' são ' chamados

Componentes ' são ' chamados 'de' filtros ' Conectores ' são ' dutos '(pipes)''

Ú-l ' para ' aplicações'de' processamento 'de' informação ' que' interagem' pouco 'com'usuários '' Variação ' distribuída:' processamento)de)streams)

' distribuída :' processamento )de)streams)
' distribuída :' processamento )de)streams)

Sistema)de) processamento)de) faturas )

Sistema )de) processamento )de) faturas ) Ian' Sommerville ,'
Sistema )de) processamento )de) faturas ) Ian' Sommerville ,'

Ian' Sommerville ,' Engenharia'de'SoOware,'8ª.'' edição .' Capítulo '11'

edição .' Capítulo '11'
edição .' Capítulo '11'

Caracterís=cas )do) Es=lo) Dutos )e) Filtros)

Caracterís=cas )do) Es=lo ) Dutos )e) Filtros) •   Vantagens ' –   Apóia ' reuso

Vantagens '

Apóia' reuso'de' transformações .' É ' fácil ' adicionar' novas ' transformações .' É ' rela-vamente'simples' implementar' como ' sistema' concorrente' ou ' seqüencial .'

sistema' concorrente' ou ' seqüencial .' •   Desvantagens' –   Requer 'um'

Desvantagens'

Requer'um' formato ' comum' para 'a' transferência'de' dados' ao ' longo 'do'pipeline' Não ' é' apropriado ' para ' aplicações ' intera-vas '

Mais ' especificamente:' ) é ) apropriado) para ' realizar' processamento) sequencial)

) para ' realizar' processamento ) sequencial )
) para ' realizar' processamento ) sequencial )
Fluxo)de) Controle )
Fluxo)de) Controle )

Es-los' arquiteturais ' relacionados 'com'o'fluxo ' de' controle'entre'os ' componentes ' arquiteturais ' Controle' centralizado '

' •   Controle' centralizado ' –   Um'

Um' subsistema'tem'responsabilidade'global' pelo ' controle'e' inicia 'e' pára 'outros' sistemas '

Controle' baseado ' em' eventos'

Cada ' componente'' responde'a' eventos' gerados ' por'outros' subsistemas '

gerados ' por 'outros' subsistemas '
gerados ' por 'outros' subsistemas '
Controle ) centralizado )
Controle ) centralizado )

Um' componente' é' responsável ' pelo ' gerenciamento 'da' execução 'de'outros' componente.' O' es-lo' Chamada0Retorno '

Controle'se' inicia 'no' topo 'de' uma ' hierarquia'de' subro-nas 'e'move0se' para ' baixo ' na' hierarquia.'' Pode' ser ' sequencial ' ou ' concorrente'

ser ' sequencial ' ou ' concorrente' •   O' es-lo 'de' Gerenciador' –

O' es-lo'de' Gerenciador'

Aplicável 'a' sistemas ' concorrentes 'e'de'tempo'real' Um' componente' controla 'a' parada ,'o'início 'e'a' coordenação 'de'outros' processos 'de' sistema'

processos 'de' sistema'
processos 'de' sistema'
ChamadaRRetorno)
ChamadaRRetorno)
ChamadaRRetorno) Ian' Sommerville ,' Engenharia'de'SoOware,'8ª.'' edição .'

Ian' Sommerville ,' Engenharia'de'SoOware,'8ª.'' edição .' Capítulo '11'

edição .' Capítulo '11'
edição .' Capítulo '11'
Gerenciador ) para)um) Sistema)Tempo)Real)
Gerenciador ) para)um) Sistema)Tempo)Real)
Comunicação 'entre'o'Controlador'e' os 'outros' componentes chamadas 'de' '
Comunicação 'entre'o'Controlador'e' os 'outros'
componentes
chamadas 'de'
' pode' ser ' baseada' em' eventos,'
procedimentos ,'etc.''

Ian' Sommerville ,' Engenharia'de'SoOware,'8ª.'' edição .' Capítulo '11'

edição .' Capítulo '11'
edição .' Capítulo '11'
Sistemas) orientados)a)eventos )
Sistemas) orientados)a)eventos )

Dirigidos ' por' eventos' gerados ' externamente'

O' 'ming 'dos' eventos' está' fora 'do' controle'dos' componentes ' que' os ' processam'

Es-lo 'Publisher/Subscriber'

•   Es-lo 'Publisher/Subscriber' –   Eventos ' são ' transmi-dos 'a'

Eventos ' são ' transmi-dos 'a' todos' os ' componentes .' Qualquer' componente' interessado ' pode' respondê0los'

Es-lo ' Orientado 'a' Interrupções'

Usado ' em' sistemas 'de'tempo'real'' Interrupções' são ' detectadas' por' tratadores'e' passadas ' por'outro' componente' para ' processamento .'

componente' para ' processamento .'
componente' para ' processamento .'
Modelo)Publisher/Subscriber)
Modelo)Publisher/Subscriber)

É ' efe-vo' na' integração 'de' componentes ' em' computadores ' diferentes' em' uma ' rede'

Desacoplamento) espacial )e)temporal) Componentes ' não ' sabem' se 'um' evento ' será ' tratado 'e' nem' quando' será .'

tratado 'e' nem ' quando ' será .' •   Alguns ' componentes '( publishers

Alguns' componentes '( publishers )' publicam' eventos' Componentes '( subscribers)' registram' interesse' em' eventos' específicos'e' podem' tratá0los' A' polí-ca 'de' controle' não ' é' embu-da'no' tratador' de' eventos'e' mensagens '

tratador' de' eventos 'e' mensagens '
tratador' de' eventos 'e' mensagens '
Publisher/Subscriber)
Publisher/Subscriber)
Publisher/Subscriber) Ian' Sommerville ,' Engenharia'de'SoOware,'8ª.'' edição .'

Ian' Sommerville ,' Engenharia'de'SoOware,'8ª.'' edição .' Capítulo '11'

edição .' Capítulo '11'
edição .' Capítulo '11'
Es=lo) Orientado )a)Interrupções)
Es=lo) Orientado )a)Interrupções)

Usado ' em' sistemas 'de'tempo'real'onde'a' resposta ' rápida ' para 'um' evento ' é' essencial ' Existem' -pos 'de' interrupções ' conhecidos''

Um' tratador' definido ' para ' cada' -po '

definido ' para ' cada' -po ' •   Cada ' -po ' é' associado

Cada ' -po ' é' associado 'a' uma ' localização 'da' memória'

Uma' chave'de'hardware' causa'a' transferência'de'

controle' para 'um'

tratador.'

Permite' respostas ' rápidas ,'mas' é' complexo' para ' programar'e' dipcil 'de' validar.'

programar 'e' dipcil 'de' validar .'
programar 'e' dipcil 'de' validar .'
Controle ) dirigido)a)interrupções)
Controle ) dirigido)a)interrupções)
Controle ) dirigido)a)interrupções) Ian' Sommerville ,' Engenharia'de'SoOware,'8ª.''

Ian' Sommerville ,' Engenharia'de'SoOware,'8ª.'' edição .' Capítulo '11'

edição .' Capítulo '11'
edição .' Capítulo '11'
Arquiteturas)de) Referência)
Arquiteturas)de) Referência)

Derivadas 'de'um' estudo 'de' domínio 'de' aplicação ,' ao ' invés 'de' sistemas ' existentes.' Podem' ser ' usadas ' como 'base' para 'a' implementação 'de' sistemas '( não ' é'o' uso ' principal)' ou ' comparação 'de' sistemas ' diferentes.''

'de' sistemas ' diferentes .'' –   Atua' como 'um' padrão

Atua' como 'um' padrão 'com'relação ' ao ' qual ' os ' sistemas ' podem' ser ' avaliados .'

Exs.'

Modelo 'OSI'para ' sistemas 'de' comunicação ' Organização ' tradicional 'de' compiladores ' em' vanguarda'e' retaguarda'(e' seus ' elementos ' internos )‏'

'(e' seus ' elementos ' internos )‏'
'(e' seus ' elementos ' internos )‏'
Modelo)de) referência)OSI)
Modelo)de) referência)OSI)
Modelo)de) referência)OSI) Ian' Sommerville ,' Engenharia'de'SoOware,'8ª.'' edição

Ian' Sommerville ,' Engenharia'de'SoOware,'8ª.'' edição .' Capítulo '11'

edição .' Capítulo '11'
edição .' Capítulo '11'
Arquitetura)de)um) Compilador )
Arquitetura)de)um) Compilador )
Arquitetura)de)um) Compilador ) [if977]'Engenharia'de'SoOware'0'SI'0'CIn'0'UFPE'
Arquitetura)de)um) Compilador ) [if977]'Engenharia'de'SoOware'0'SI'0'CIn'0'UFPE'
Arquitetura)de)um) Compilador ) [if977]'Engenharia'de'SoOware'0'SI'0'CIn'0'UFPE'
PRINCÍPIOS) ARQUITETURAIS)E) PADRÕES)DE) PROJETO ) Slides1 originalmente1 preparados 1 pelo 1prof.1Fernando1Castor1
PRINCÍPIOS) ARQUITETURAIS)E) PADRÕES)DE) PROJETO ) Slides1 originalmente1 preparados 1 pelo 1prof.1Fernando1Castor1
PRINCÍPIOS) ARQUITETURAIS)E) PADRÕES)DE) PROJETO )
PRINCÍPIOS) ARQUITETURAIS)E)
PADRÕES)DE) PROJETO )

Slides1 originalmente1 preparados1 pelo 1prof.1Fernando1Castor1Filho1

preparados 1 pelo 1prof.1Fernando1Castor1 Filho 1
preparados 1 pelo 1prof.1Fernando1Castor1 Filho 1
Princípios )
Princípios )

Quais ' princípios ' arquiteturais ' você' ' viu ' aplicados 'a' projetos 'de'soOware?'

aplicados 'a' projetos 'de'soOware?'
aplicados 'a' projetos 'de'soOware?'
aplicados 'a' projetos 'de'soOware?'
Princípios )
Princípios )

Arquitetura' em' camadas ,' sem ' regras 'de' negócio ' nas ' visões'( apresentação ),' interfaces,' injeção 'de' dependência ,' alta' coesão ,' baixo ' acoplamento ,'ACID'

coesão ,' baixo ' acoplamento ,'ACID' ( Atomicidade ,' Consistência ,' Isolamento

( Atomicidade,' Consistência,' Isolamento 'e' Durabilidade),' componentes ' stateless,' modelo'de' domínio ' limpo ,' sempre 'use' stored)procedures,' nunca 'use'stored' procedures,' não ' reinvente'a' roda,…'

não ' reinvente'a' roda ,…'
não ' reinvente'a' roda ,…'
Princípios )
Princípios )

ATENÇÃO!)

'

Princípios' são ' muito ' bons ,'mas' tenha' certeza'deles' serem ' realistas ' e' não ' tenham'um' impacto ' nega-vo ' na' arquitetura'

impacto ' nega-vo ' na ' arquitetura'
impacto ' nega-vo ' na ' arquitetura'

[if977]'Engenharia'de'SoOware'0'SI'0'CIn'0'UFPE'

'

37'

Princípios )da) Orientação )a)Objetos )
Princípios )da) Orientação )a)Objetos )

Coesão' alta'e' Acoplamento' baixo '

' alta 'e' Acoplamento ' baixo ' –   Classes' devem ' ter 'um'

Classes' devem ' ter'um' conjunto ' pequeno 'e' bem0 definido 'de' responsabilidades ' Além'disso,' devem ' depender ' umas 'das' outras 'o' mínimo' possível ' Implicam ) em ) facilidade )de) manutenção )e) compreensão )

em ) facilidade )de) manutenção )e) compreensão )
em ) facilidade )de) manutenção )e) compreensão )
Princípios )da) Orientação )a)Objetos )
Princípios )da) Orientação )a)Objetos )

Desenvolva ' para ' uma ' interface' e' não ' para ' uma ' implementação)

e' não ' para ' uma ' implementação )
e' não ' para ' uma ' implementação )
e' não ' para ' uma ' implementação )
Princípios )da) Orientação )a)Objetos )
Princípios )da) Orientação )a)Objetos )

Prefira' composição ' de' objetos 'a' herança)

Reuso '' caixa) branca)) vs.' reuso' caixa) preta)

Herança' quebra 'o' encapsulamento '

Maior' flexibilidade''

' –   Maior' flexibilidade '' •   Estrutura 'do' sistema' pode '

Estrutura'do' sistema' pode' mudar' em'tempo'de' execução '

Maior' coesão '

Classes' mais ' focadas ' em'um' único ' obje-vo '

Composição ' implica ' em' mais )classes)

' implica ' em ' mais )classes)
' implica ' em ' mais )classes)
Princípios )da) Orientação )a)Objetos )
Princípios )da) Orientação )a)Objetos )

Um' módulo' deve' ser ' aberto) para) extensão ) e' fechado ) para) modificação)

extensão ) e' fechado ) para ) modificação ) •   Subclasses' devem ' ser '
extensão ) e' fechado ) para ) modificação ) •   Subclasses' devem ' ser '

Subclasses'devem ' ser ' capazes 'de' subs=tuir' suas ' superclasses '

Elipses 'vs.'Círculos ' Listas ' ligadas 'vs.'Pilhas 'e' Filas '

ligadas 'vs.' Pilhas 'e' Filas '
ligadas 'vs.' Pilhas 'e' Filas '
Princípios )da) Orientação )a)Objetos )
Princípios )da) Orientação )a)Objetos )

Dependências'entre'pacotes ' não ' devem ' formar' ciclos )

' não ' devem ' formar' ciclos )
' não ' devem ' formar' ciclos )
' não ' devem ' formar' ciclos )
Princípios )da) Orientação )a)Objetos )
Princípios )da) Orientação )a)Objetos )

Dependa ' na' direção 'da' estabilidade )

MELHOR!
MELHOR!
na ' direção 'da' estabilidade ) MELHOR! PIOR!
na ' direção 'da' estabilidade ) MELHOR! PIOR!

PIOR!

' direção 'da' estabilidade ) MELHOR! PIOR!
Princípios )da) Orientação )a)Objetos )
Princípios )da) Orientação )a)Objetos )

Crie 'classes'apenas) quando) necessário)

Pessoa'

Pessoa'
Pessoa'
apenas ) quando ) necessário ) Pessoa' Funcionário' Funcionário' Vendedor'
Funcionário' Funcionário'
Funcionário'
Funcionário'
) Pessoa' Funcionário' Funcionário' Vendedor' Gerente'

Vendedor'

Vendedor'
Vendedor'

Gerente'

Gerente'
Gerente'
Funcionário' Vendedor' Gerente'
Funcionário' Vendedor' Gerente'
Princípios )da) Orientação )a)Objetos )
Princípios )da) Orientação )a)Objetos )

Crie 'classes'apenas) quando) necessário)

Pessoa'

Pessoa'
Pessoa'
apenas ) quando ) necessário ) Pessoa' Funcionário' Funcionário' Vendedor' Classes
Funcionário' Funcionário'
Funcionário'
Funcionário'
) Pessoa' Funcionário' Funcionário' Vendedor' Classes devem encapsular informação que é

Vendedor'

Vendedor'
Vendedor'

Classes devem encapsular informação que é manipulada em conjunto e que evolui em conjunto

Gerente'

Gerente'
Gerente'
em conjunto e que evolui em conjunto Gerente'
em conjunto e que evolui em conjunto Gerente'
Padrões )de) Projeto )
Padrões )de) Projeto )

Escritores 'de' livros ,' histórias ' em' quadrinhos 'e' roteiros ' raramente' inventam' novas ' histórias ' Idéias ' frequentemente' são ' reusadas '

“ Herói ' Trágico ”'=>'Hamlet,'Macbeth' “An-0Herói ”'=>' Aquiles,'Sawyer,'Lobo'

”'=>' Aquiles ,'Sawyer,'Lobo' •   Proje-stas ' também' reu-lizam'

Proje-stas ' também' reu-lizam' soluções ,'de' preferência 'as'boas'

Experiência ' é'o' que' torna ' uma ' pessoa'um' expert1

Problemas ' são ' tratados 'de' modo'a' evitar'a' reinvenção 'de' soluções '

reinvenção 'de' soluções '
reinvenção 'de' soluções '
O) que ) é )um) Padrão )de) Projeto ?)
O) que ) é )um) Padrão )de) Projeto ?)

Abstração 'de' uma ' solução 'de' projeto ' recorrente' Envolve ' dependências,' estruturas ,'''''''' interações 'e' convenções'''''''''''''''''''''''''' rela-vos 'a'classes'e'objetos ' Documentam' experiência ' no''''''''''''''''''''' projeto 'de' sistemas 'de'''''''''''''''''''''''''''''' soOware' Tornam' projetos 'OO' mais ''''''''''''''''''''''' flexíveis ,' elegantes'e' reusáveis '

flexíveis ,' elegantes 'e' reusáveis ' '
flexíveis ,' elegantes 'e' reusáveis ' '
flexíveis ,' elegantes 'e' reusáveis ' '

'

Definição )de)Alexander)
Definição )de)Alexander)

“ describes a problem which occurs over

and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice”

times over, without ever doing it the same way twice” Alexander, Christopher, Sara Ishikawa and Murray

Alexander, Christopher, Sara Ishikawa and Murray Silverstein A Pattern Language: Towns. Buildings, Construction. Oxford University Press, USA, 1977.

Construction . Oxford University Press, USA, 1977.
Construction . Oxford University Press, USA, 1977.
Existem) Muitos) Tipos )de) Padrão !)
Existem) Muitos) Tipos )de) Padrão !)

Padrões 'de' gerenciamento ''

Ex.' Métodos ' ágeis ' como 'SCRUM'e'XP'

Padrões ' organizacionais ' Padrões 'de' análise' Padrões ' arquiteturais '=>' Es=los) Arquiteturais) Padrões )de) implementação)=>)Idioms)

•   Padrões )de) implementação )=>)Idioms)
•   Padrões )de) implementação )=>)Idioms)
•   Padrões )de) implementação )=>)Idioms)
Classificação )dos) padrões) GoF )
Classificação )dos) padrões) GoF )

Classificação ' feita'a' par-r'do' obje-vo 'principal'do' padrão ' Padrões ' fundamentais )

Aplicação 'de' princípios ' básicos 'de' orientação 'a' objetos '

'de' orientação 'a' objetos ' •   Padrões 'de' criação ' (

Padrões 'de' criação' ( crea'onal )'

Descrevem ' técnicas' para ' instanciar' objetos '

Padrões ' estruturais ' ( structural )'

Permitem' organizar'classes'e'objetos ' em' estruturas ' maiores '

Padrões ' comportamentais ' ( behavioral )'

Permitem' atribuir' responsabilidades 'a' objetos '

atribuir' responsabilidades 'a' objetos '
atribuir' responsabilidades 'a' objetos '
Propriedades )dos) Padrões )de) Projeto )
Propriedades )dos) Padrões )de) Projeto )

Padrões

'

fornecem 'um' vocabulário ' comum' fornecem ' uma ' abreviação ' para ' comunicar' princípios ' complexos' auxiliam' na' documentação 'do' projeto 'do' sistema' capturam' partes ' essenciais'de'um' projeto 'de' maneira ' compacta' mostram' mais 'de' uma ' solução '

mostram' mais 'de' uma ' solução ' •   Padrões ' não …' –   fornecem

Padrões ' não …'

fornecem ' uma ' solução ' exata' resolvem' todos ' os ' problemas 'de' projeto ' aplicam0se' apenas ' ao ' projeto ' orientado 'a' objetos ' Em' computação ,' surgiram' nesse' contexto ,' porém '

surgiram' nesse ' contexto ,' porém '
surgiram' nesse ' contexto ,' porém '
Elementos)de)um) Padrão )de) Projeto )
Elementos)de)um) Padrão )de) Projeto )

1. Nome'do'padrão '

Apelido' usado ' para ' descrever ' uma ' solução 'de' projeto ' Facilita' discussões'de' projeto ' Um' padrão ' pode' ter' vários ' nomes ' dis-ntos '

' ter' vários ' nomes ' dis-ntos '
' ter' vários ' nomes ' dis-ntos '
' ter' vários ' nomes ' dis-ntos '
Elementos)de)um) Padrão )de) Projeto )
Elementos)de)um) Padrão )de) Projeto )

2. Problema'

Descreve ' quando 'o' padrão ' pode' ser ' aplicado ' Pode' incluir' condições' sobre 'a' aplicabilidade'do' padrão '( contexto )' Sintomas 'de'um' projeto ' inflexível ' ou ' inadequado '

' inflexível ' ou ' inadequado '
' inflexível ' ou ' inadequado '
' inflexível ' ou ' inadequado '
Elementos)de)um) Padrão )de) Projeto )
Elementos)de)um) Padrão )de) Projeto )

3. Solução '

Descreve ' elementos 'do' projeto ' Inclui ' relacionamentos ,' responsabilidades 'e' colaborações ' Não ' descreve ' projetos ' concretos ' ou ' implementações' Funciona' como 'um' modelo)) Um' es=lo ) arquitetural) nada' mais ' é' que'um' padrão ' aplicado 'no' nível 'da' arquitetura'

'no' nível 'da' arquitetura'
'no' nível 'da' arquitetura'
'no' nível 'da' arquitetura'
Elementos)de)um) Padrão )de) Projeto )
Elementos)de)um) Padrão )de) Projeto )

4. Consequências'

Resultados 'e' compromissos ' Normalmente' classificadas ' em' vantagens ' e' desvantagens) Fundamentais' para 'se' avaliar'a' aplicabilidade'do' padrão ' em' determinado ' contexto ' Em' geral ,' padrões 'de' projeto ' implicam' em' maior' flexibilidade )

' implicam' em ' maior' flexibilidade ) •   É ' necessário ' avaliar 'se'

É ' necessário ' avaliar'se' essa' flexibilidade' é' necessária'

essa ' flexibilidade' é' necessária'
essa ' flexibilidade' é' necessária'
Elementos)de)um) Padrão )de) Projeto )
Elementos)de)um) Padrão )de) Projeto )

5. Usos' conhecidos'

Padrões ' são ' soluções ' ' testadas) em ) vários ) contextos ,' potencialmente' por' várias ' pessoas ' Benepcios'e' desvantagens' bem' conhecidos!' Regra'dos' três '

!' –   Regra 'dos' três ' •   Uma' ocorrência ' é 'um'

Uma' ocorrência ' é'um' evento ' isolado ' Duas ' podem' significar' uma ' coincidência' Três ' fazem'um' padrão '

•   Três ' fazem 'um' padrão '
•   Três ' fazem 'um' padrão '
Múl=plas ) Formas)de) Exibição)
Múl=plas ) Formas)de) Exibição)
Múl=plas ) Formas)de) Exibição) Ian' Sommerville ,' Engenharia'de'SoOware,'8ª.''

Ian' Sommerville ,' Engenharia'de'SoOware,'8ª.'' edição .' Capítulo '18'

edição .' Capítulo '18'
edição .' Capítulo '18'
Padrão )Observer)
Padrão )Observer)

Nome :' Observer .'

Descrição )do) problema:) É ' necessário ' representar'um' mesmo ' conjunto 'de'

dados'de' diversas reflitam' em' todos

' maneiras ,'de'modo' que' mudanças ' nesses'dados'se' ' os ' modos'de' exibição '

Descrição )da) solução:) Mecanismo ' para ' que'o' display1 seja 1 no'ficado 1de1 modificações 1no1 estado 1 sem 1 que,1 para1 isso,1o1estado 1precise1 conhecêDlo1

Consequências :''

conhecê Dlo1 ●   Consequências :'' •   Estado'e' display1 desacoplados1 •

Estado'e' display1 desacoplados1 É 1 fácil 1 atualizar1 tanto 1um1display1quanto1 vários 1displays1 Invocações' implícitas ' podem' resultar' em' erros'de' programação ' dipceis 'de' rastrear' Exige' código'extra'

•   Exige ' código 'extra'
•   Exige ' código 'extra'
O) Padrão )Observer)
O) Padrão )Observer)
O) Padrão )Observer) Ian' Sommerville ,' Engenharia'de'SoOware,'8ª.'' edição .'

Ian' Sommerville ,' Engenharia'de'SoOware,'8ª.'' edição .' Capítulo '18'

edição .' Capítulo '18'
edição .' Capítulo '18'
Usos) Conhecidos )
Usos) Conhecidos )

AWT'do'Java'Development'Kit' Diversas ' partes 'da' implementação 'da' plataforma 'Eclipse' Um' grande' número 'de' arcabouços ' modernos' para 'a' construção 'de'interfaces'com'o'usuário '

'de'interfaces'com'o'usuário '
'de'interfaces'com'o'usuário '
'de'interfaces'com'o'usuário '
O) Padrão )Strategy)
O) Padrão )Strategy)

Nome :'Strategy' Descrição )do) problema:' Dependendo 'do' contexto ,' é' necessário ' usar' algoritmos ' diferentes' para 'resolver'um' problema ,' embora' seja ' desejável ' não ' ter' que' modificar' esse' contexto ' por' causa''do' algoritmo ' empregado ' Descrição )da) solução:' Definir ' uma 'interface'para ' todos ' os ' algoritmos 'e' fazer'com'que'o' contexto ' conheça' apenas ' essa'interface,'não ' suas ' implementações' Consequências :''

implementações' •   Consequências :'' –   Separa' contexto 'e'

Separa' contexto 'e' cliente'das' implementações'do' algoritmo ' Contexto ' não ' está' ciente'da' estratégia' usada ;'o'cliente' configura'o' contexto ' Strategies'podem' ser ' subs-tuídas ' em'tempo'de'execução ' Normalmente' mais ' efe-vo'se' usado ' junto 'com'uma 'Factory'

usado ' junto 'com' uma 'Factory'
usado ' junto 'com' uma 'Factory'
Padrão )Strategy)
Padrão )Strategy)
Padrão )Strategy) [if977]'Engenharia'de'SoOware'0'SI'0'CIn'0'UFPE' 62'
Padrão )Strategy) [if977]'Engenharia'de'SoOware'0'SI'0'CIn'0'UFPE' 62'
Padrão )Strategy) [if977]'Engenharia'de'SoOware'0'SI'0'CIn'0'UFPE' 62'
O) Padrão )Composite)
O) Padrão )Composite)

Nome :'Composite'

 

Descrição )do) problema:'Dados' que'o' programa ' precisa ' manipular' podem' ser ' tanto ' elementos ' atômicos ' quanto ' grupos'de' elementos '

(

podendo ' conter,'inclusive,'outros'grupos).'O' programa ' deveria '

tratar' esses' itens 'de' maneira ' uniforme ' Descrição )da) solução:' Definir ' uma 'interface'compar-lhada ' tanto '

 
     

por' itens ' atômicos ' quanto ' por' grupos'de' elementos 'e' fazer'com' que'o' programa ' lide'com'ela,' sem 'saber'se'o' objeto ' subjacente' é' atômico ' ou 'um' grupo' Consequências :''

Trata ' todos ' os ' componentes 'do' mesmo ' jeito ,' independentemente'da' complexidade' Novos' -pos 'de' componentes ' podem' ser ' incluídos'com'facilidade' Pode' exigir'um' número ' grande'de' objetos '

número ' grande 'de' objetos '
número ' grande 'de' objetos '
Padrão )Composite)
Padrão )Composite)
Padrão )Composite) [if977]'Engenharia'de'SoOware'0'SI'0'CIn'0'UFPE' 64'
Padrão )Composite) [if977]'Engenharia'de'SoOware'0'SI'0'CIn'0'UFPE' 64'
Padrão )Composite) [if977]'Engenharia'de'SoOware'0'SI'0'CIn'0'UFPE' 64'
O) Padrão )Iterator)
O) Padrão )Iterator)

Nome :'Iterator'

Descrição ' do' problema:' É ' necessário ' separar'as' operações ' que' serão ' realizadas ' sobre ' uma ' ou ' mais ' estruturas 'de'dados'da' maneira ' como ' essas ' estruturas 'de'dados' serão ' percorridas ''

Descrição ' da' solução:' Definir ' uma 'interface'padrão estruturas 'de'dados' em' geral 'e' fazer'com'que' seus '

' para ' percorrer ' usuários ' vejam'

apenas 'a'interface'e'não 'a' maneira ' como 'a' estrutura'de'dados' é'

     
 

percorrida ' Consequências :''

 

Independência'entre'a'estrutura'de'dados'e'a'maneira 'de' percorrê 0la' Múl-plos ' iteradores '=>' múl-plas ' maneiras 'de' percorrer ' uma ' estrutura'de'dados' Comunicação 'extra'entre'o'iterador'e'a'estrutura' Modificações ' à ' estrutura' podem' criar' inconsistências'

estrutura' podem ' criar' inconsistências'
estrutura' podem ' criar' inconsistências'
Padrão )Iterator)
Padrão )Iterator)
Padrão )Iterator) [if977]'Engenharia'de'SoOware'0'SI'0'CIn'0'UFPE' 66'
Padrão )Iterator) [if977]'Engenharia'de'SoOware'0'SI'0'CIn'0'UFPE' 66'
Padrão )Iterator) [if977]'Engenharia'de'SoOware'0'SI'0'CIn'0'UFPE' 66'
O) Padrão )Façade)
O) Padrão )Façade)

Nome :'Façade' Descrição ' do' problema:' É ' necessário ' disponibilizar' uma 'interface' única ' simplificada' para 'um' conjunto 'das' funcionalidades' (interfaces)'de'uma 'API' ou ' subsistema,' por' exemplo.' Descrição ' da' solução:' Implementar'um'Facade'demanda' definir'um' conjunto 'de' operações ' reduzidas ' que' permita' ocultar'a'

complexidade' inerente' à ' u-lização 'de' várias 'classes'de'um' subsistema'( adaptado '[SoOware'Design'Paàerns,'2005]).' Consequências :''

Consequências :'' –   Esconde 'do' cliente' os '

Esconde'do' cliente' os ' componentes 'do' subsistema'

Reduz'o' número 'de' objetos ' que' os ' clientes' lidam;' Torna 'o' subsistema' mais ' fácil 'de' usar;'

Fraco ' acoplamento 'entre'subsistema'e' seus ' clientes;' Não 'impede' que' aplicações ' usem'classes'do' subsistema,' caso ' elas ' precisem ;'

subsistema ,' caso ' elas ' precisem ;'
subsistema ,' caso ' elas ' precisem ;'
O) Padrão )Façade)
O) Padrão )Façade)
O) Padrão )Façade) Façade' [if977]'Engenharia'de'SoOware'0'SI'0'CIn'0'UFPE'
O) Padrão )Façade) Façade' [if977]'Engenharia'de'SoOware'0'SI'0'CIn'0'UFPE'
O) Padrão )Façade) Façade' [if977]'Engenharia'de'SoOware'0'SI'0'CIn'0'UFPE'
Façade'
Façade'
O) Padrão )Façade) Façade' [if977]'Engenharia'de'SoOware'0'SI'0'CIn'0'UFPE'
O) Padrão )Façade) Façade' [if977]'Engenharia'de'SoOware'0'SI'0'CIn'0'UFPE'
O) Padrão )Façade) Façade' [if977]'Engenharia'de'SoOware'0'SI'0'CIn'0'UFPE'
O) Padrão )Façade)
O) Padrão )Façade)
O) Padrão )Façade) Fonte :'hàp:// www.pg.cefetpr.br/ coinf / simone /paàerns/ facade.php '

Fonte:'hàp://www.pg.cefetpr.br/ coinf/ simone /paàerns/ facade.php '

coinf / simone /paàerns/ facade.php '
coinf / simone /paàerns/ facade.php '
Mais) sobre) Padrões )de) Projeto )
Mais) sobre) Padrões )de) Projeto )

Dêem ' uma ' olhada ' em:'

hàp:// en.wikipedia.org/wiki/ Design_Paàerns '

  hàp:// en.wikipedia.org /wiki/ Design_Paàerns ' •   O' texto ' sobre ' padrões '

O' texto ' sobre ' padrões ' está'legal'e'tem'links' para 'as' descrições 'de' todos ' os ' padrões 'do' livro '(com'código!)'

'do' livro '(com' código !)'
'do' livro '(com' código !)'
Bibliografia)
Bibliografia)

SOMMERVILLE,'I.'Engenharia'de'SoOware.'9ª.'

Ed.'São'Paulo:'Pearson'Educa-on,'2011'

Capítulos '11'a'14'e'18'

–   Capítulos '11'a'14'e'18' •  

Erich'Gamma,'Richard'Helm,'Ralph'Johnson,' John'Vlissides.' Design)Pakerns:)Elements)of) Reusable)ObjectROriented)So-ware .'1'ed.' Estados ' Unidos'da' América :'Addison0Wesley,'

Unidos 'da' América :'Addison0Wesley,' 1995.'

1995.'

'da' América :'Addison0Wesley,' 1995.'