Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Sumrio
Reuso de Software
Introduo Benefcios e Desvantagens Viso do Reuso
Padres de Projeto
Introduo
Motivao
Alguns Padres
Singleton Facade
Command
Observer DAO Filter
LES/PUC-Rio
Reuso de Software
Introduo
Maioria das Engenharias
Desenvolvimento de sistemas
Composio de componentes existentes Componentes usados em outros sistemas
Engenharia de Software
Antes
Focado no desenvolvimento original
Agora
Processo de desenvolvimento baseado em um reuso de software sistematizado, trazendo
Software de melhor qualidade
LES/PUC-Rio
Reuso de Componentes
Sub-sistemas de uma aplicao a simples objetos
LES/PUC-Rio
Benefcios
Confiabilidade Crescente
Toda vez que um software utilizado, ele novamente testado Componentes j utilizados e testados em outros sistemas so mais confiveis que novos componentes
LES/PUC-Rio
Benefcios
Conformidade com Padres
Uso de padres organizacionais agiliza o desenvolvimento
Estabelece uma base comum de comunicao Garante a consistncia
Desenvolvimento Acelerado
Reduo do tempo de desenvolvimento e de validao
LES/PUC-Rio
Problemas
Custos de Manuteno Crescente
Dificuldade de adaptar componentes sem o cdigo fonte
LES/PUC-Rio
Viso do Reuso
Padres de Projeto
Desenvolvimento de Software Orientado a Aspectos
Geradores de Programas
LES/PUC-Rio
Viso do Reuso
Padres de Projeto
Abstraes genricas que ocorrem nas aplicaes
Frameworks
Coleo de classes abstratas e concretas que podem ser adaptadas e estendidas para a criao de aplicaes
LES/PUC-Rio
Viso do Reuso
Linhas de Produto de Aplicao
Tipo de aplicao generalizado em uma arquitetura comum que pode ser adaptada de diferentes modos para diferentes clientes
Bibliotecas de Programas
Biblioteca de Classes e Funes comumente usadas
Geradores de Programas
Sistema Gerador tem conhecimento de tipos particulares de aplicao e pode gerar sistemas ou fragmentos de sistemas
Padres de Projeto
Definio: Padro
Cada padro descreve um problema que ocorre repetidas vezes em nosso ambiente, e ento descreve o ncleo da sua soluo para aquele problema, de tal maneira que seja possvel usar essa soluo milhes de vezes sem nunca faz-la da mesma forma duas vezes.
Christopher Alexander sobre padres em arquitetura de construes
LES/PUC-Rio
Os padres de projeto so descries de objetos que se comunicam e classes que so customizadas para resolver um problema de projeto genrico em um contexto especfico. Gamma, Helm, Vlissides & Johnson, sobre padres de projeto em software
LES/PUC-Rio
LES/PUC-Rio
LES/PUC-Rio
Benefcios
Aprendizagem com a experincia dos outros
Identificao de problemas comuns de projeto de software Utilizao de solues testadas e bem documentadas Ajuda um novato a agir mais como um experiente
Vocabulrio comum
Uso de solues que tm nome facilita comunicao Nvel mais alto de abstrao
Ajuda na documentao
Uso de solues que tm um nome facilita a documentao Conhecimento de padres de projeto torna mais fcil a compreenso de sistemas existentes
Elementos Essenciais
Nome
Procura descrever o problema, a soluo e as conseqncias em uma ou duas palavras.
Problema
Quando aplicar o padro e em que condies
Soluo
Descrio abstrata de um problema
Como usar os elementos disponveis (classes e objetos) para solucion-lo
Conseqncias
Custos e benefcios de se aplicar o padro
Impacto na flexibilidade, reusabilidade e eficincia do sistema
LES/PUC-Rio
LES/PUC-Rio
LES/PUC-Rio
LES/PUC-Rio
LES/PUC-Rio
LES/PUC-Rio
LES/PUC-Rio
11.Flyweight
12.Proxy
23.Visitor
Padres de Criao Padres Estruturais Padres de Comportamento
LES/PUC-Rio
11.Sample Code
12.Known Uses 13.Related Patterns
LES/PUC-Rio
Idiomas
LES/PUC-Rio
LES/PUC-Rio
LES/PUC-Rio
Exemplos
Singleton em C++ ou em Java Counted Pointer: gerncia de memria em C++
LES/PUC-Rio
3. Example
4. Context 5. Problem 6. Solution
7. Structure
8. Dynamics 9. Implementation 10.Example Resolved 11.Variants 12.Known Uses 13.Consequences 14.See Also
LES/PUC-Rio
Pattern Community
Hillside Group (www.hillside.net)
Instituio sem fins lucrativos Objetivo: disseminar e estimular o uso de padres ao longo do desenvolvimento de software
LES/PUC-Rio
Outros padres
DAO Filter
LES/PUC-Rio
Singleton
Motivao
Garantir que exista um determinado nmero X de objetos de uma classe
Independentemente do nmero de requisies que receber para cri-lo
Exemplos de aplicao
nico banco de dados
LES/PUC-Rio
Singleton
Propsito
Assegurar o controle da quantidade de instncias da classe Ponto de acesso global a ela
Aplicabilidade
Exatamente uma instncia da classe
Acessvel pelos clientes de ponto de acesso bem conhecido
LES/PUC-Rio
Singleton
Estrutura
Participantes
Singleton
Define operao Instance que permite que clientes acessem instncia nica
Instance operao de classe
LES/PUC-Rio
Singleton
Conseqncias
Acesso controlado a instncia nica Espao de nomes reduzido Refinamento de operaes e representao No h nmero variado de instncias Mais flexvel do que operaes de classes
LES/PUC-Rio
Singleton
LES/PUC-Rio
Facade
Motivao
LES/PUC-Rio
Facade
Motivao
LES/PUC-Rio
Facade
Propsito
Prover interface unificada para conjunto de interfaces em um subsistema Define interface de alto-nvel
Subsistema mais fcil de usar
Aplicabilidade
Prover interface simples para subsistema complexo Muitas dependncias entre clientes e classes que implementam uma abstrao Criar camadas no subsistema
LES/PUC-Rio
Facade
Estrutura
LES/PUC-Rio
Facade
Participantes Facade
Conhece quais classes do subsistema seriam responsveis pelo atendimento de uma solicitao
Delega solicitaes de clientes a objetos apropriados do subsistemas
Classes de subsistema
Implementam as funcionalidades do subsistema Respondem a solicitaes de servios da Facade No tm conhecimento da Facade
LES/PUC-Rio
Facade
Conseqncias
Esconde do cliente os componentes do subsistema
Reduz o nmero de objetos que os clientes lidam Subsistema mais fcil de usar
Fraco acoplamento entre subsistema e seus clientes No impede que aplicaes usem classes do subsistema, caso elas precisem
LES/PUC-Rio
Facade
LES/PUC-Rio
Command
Motivao
LES/PUC-Rio
Command
Propsito
Encapsular requisio como objeto
Permite parametrizar clientes com diferentes requisies
Aplicabilidade
Parametrizar objetos por ao a ser realizada Especificar, enfileirar e executar requisies em diferentes momentos Suportar desfazer Suportar log de alteraes
Podem ser reaplicadas caso o sistema falhe
LES/PUC-Rio
Command
Estrutura
LES/PUC-Rio
Command
Participantes
Command
Define interface para a execuo de uma operao
ConcreteCommand
Define uma vinculao entre um objeto Receiver e uma ao Implementa Execute atravs da invocao da(s) correspondente(s) operao(es) no Receiver
Client
Cria um objeto ConcreteCommand e estabelece o seu receptor (Receiver)
Invoker
Solicita ao Command a execuo da solicitao
Receiver
Sabe como executar as operaes associadas a uma solicitao
Qualquer classe pode funcionar como um receiver
LES/PUC-Rio
Command
Conseqncias
Desacopla objeto que invoca operao do que sabe realiz-la Comandos so objetos de primeira classe Comandos podem ser reunidos para fazer um comando composto Facilidade de adicionar novos comandos
LES/PUC-Rio
Command
class
LES/PUC-Rio
Observer
LES/PUC-Rio
Observer
Propsito
Dependncia de um-para-muitos entre objetos
Quando um objeto muda de estado, todos seus dependentes so notificados e atualizados automaticamente
Aplicabilidade
Abstrao tem dois aspectos, um dependente do outro
Encapsular estes aspectos em objetos separados permite variao e reuso independentemente
Objeto capaz de notificar outros objetos sem presumir quem so esses objetos
LES/PUC-Rio
Observer
Estrutura
LES/PUC-Rio
Observer
Participantes
Subject
Conhece seu Observer
ConcreteSubject
Guarda o estado de interesse para ConcreteObserver
Envia uma notificao para seu Observer quando seu estado muda
Observer
Define uma interface de atualizao para objetos que devem ser notificados sobre mudanas em um Subject
ConcreteObserver
Mantm uma referncia para um objeto ConcreteSubject Guarda o estado que deve ficar consistente com o de Subject Implementa o Observer atualizando a interface para manter seu estado consistente com o de Subject
LES/PUC-Rio
Observer
Conseqncias
Acoplamento abstrato entre Sujeito e Observador Suporte a comunicao em broadcast (mensagem que todos os observadores enxergam). Atualizaes inesperadas
LES/PUC-Rio
Observer
LES/PUC-Rio
Aplicao
DAO
BDs
XMLs
LES/PUC-Rio
Outras aplicaes
DAO
Propsito
Mediador entre as aplicaes e a base de dados Tradutor dos mundos
Aplicabilidade
Base de dados fornece dados para alguma aplicao
DAO converte os dados para serem manipulados
LES/PUC-Rio
DAO
Estrutura
LES/PUC-Rio
DAO
Participantes
BusinessObject
Requisita acesso para armazenar ou requisitar algum dado de algum base.
DataAccessObject (DAO)
Oferece servios para o BusinessObject de forma transparente.
DataSource
Representa a fonte de dados (ex: BD, outro sistema, repositrio XML, etc). Acessada pelo DAO.
TransferObject
Usado para representar os dados obtidos pelo DAO e para serem compreendidos pelo BusinessObject.
LES/PUC-Rio
DAO
Conseqncias
Organizao na forma de prover e requisitar informaes localizadas em bases de dados. Simplificao na manuteno Baixo acoplamento.
LES/PUC-Rio
DAO
LES/PUC-Rio
Intercepting Filter
Aplicao
Cliente Pr-processamentos
Filter Ps-processamentos
Execuo ...
LES/PUC-Rio
Intercepting Filter
Propsito
Executar pr e ps processamentos de algum processamento Design pattern da J2EE
Aplicabilidade
O processamento desejado pode ter uma cadeia de processamentos ligados Pr e ps processamentos Ex: Tradues
LES/PUC-Rio
Intercepting Filter
Estrutura
LES/PUC-Rio
Intercepting Filter
Participantes
FilterManager
Cliente a usa para processar alguma operao (objetivo/meta) desejada em um especifico contexto.
FilterChain
Carrega os filtros e as metas.
IFilter
Define que devem ser realizados pr ou ps processamentos. A implementao definida nas suas classes concretas (ConcreteFilter)
ITarget
Meta fornecida pelo cliente.
Context
Conjunto de dados usados.
LES/PUC-Rio
Intercepting Filter
Conseqncias
Organizao em pr e ps processamentos. Facilidade em representar cadeias de operaes.
LES/PUC-Rio
Intercepting Filter
LES/PUC-Rio
Informaes
Cada padro deve ser apresentado em uma sesso de 15 minutos. Estrutura da apresentao:
Propsito do Padro Motivao (um exemplo de motivao de uso do padro, que pode ser o do livro ou algum outro encontrado) Aplicabilidade Estrutura
Participantes
Colaboraes Conseqncias Exemplo de Cdigo (diferente do livro).
Grupos
Rafael
Visitor Factory Method
Alessandro
Builder Composite
LES/PUC-Rio
Fim!!