PublicouMirella Menezes Alterado mais de 3 anos atrás
Benefícios e Desvantagens Visão do Reuso Padrões de Projeto Motivação Alguns Padrões Singleton Facade Command Observer State Strategy Template Method Composite © LES/PUC-Rio
Reuso de Sistemas Incorporação de um sistema, sem alterá-lo, em outro sistema (reuso de COTS) Desenvolvimento de famílias de aplicações Reuso de Componentes Sub-sistemas de uma aplicação a simples objetos Reuso de Objetos e Funções Objetos simples e bem definidos Funções © LES/PUC-Rio
Dificuldade de adaptar componentes sem o código fonte Falta de Ferramentas de Suporte Ferramentas CASE podem não suportar desenvolvimento com reuso Síndrome do "não foi inventado aqui" Falta de confiança no componente Desenvolver é visto como mais desafiador que reutilizar Criar e Manter um biblioteca de Componentes Custo de criar e manter a biblioteca pode ser grande Técnicas de classificar, catalogar e recuperar os componentes são imaturas Encontrar, Entender e Adaptar Componentes Reusáveis Busca de componentes como parte do processo de desenvolvimento © LES/PUC-Rio
Desenvolvimento de Software Orientado a Aspectos Frameworks Linhas de Produto de Software Integração de COTS Desenvolvimento baseado em Componentes Geradores de Programas Empacotamento de Sistemas Legados Sistemas orientados a Serviços Aplicações Verticais Configuráveis Bibliotecas de Programas © LES/PUC-Rio
11 Visão do Reuso Linhas de Produto de Software
Tipo de aplicação generalizado em uma arquitetura comum que pode ser adaptada de diferentes modos para diferentes clientes Integração de COTS (Commercial off-the-shelf) Sistemas desenvolvidos pela integração de aplicações existentes Aplicações Verticais Configuráveis Desenvolvimento de sistemas genéricos que podem ser configurados às necessidades de clientes de um sistema específico Bibliotecas de Programas Biblioteca de Classes e Funções comumente usadas Geradores de Programas Sistema Gerador tem conhecimento de tipos particulares de aplicação e pode gerar sistemas ou fragmentos de sistemas Desenvolvimento de Software Orientado a Aspectos Componentes compartilhados são entrelaçados na aplicação em diferentes partes quando o programa é compilado © LES/PUC-Rio
Identificação de problemas comuns de projeto de software Utilização de soluções testadas e bem documentadas Ajuda um novato a agir mais como um experiente Produção de bons projetos orientados a objetos Normalmente utilizam boas práticas de OO Utilizam eficientemente polimorfismo, herança e composição Vocabulário comum Uso de soluções que têm nome facilita comunicação Nível mais alto de abstração Ajuda na documentação Uso soluções que têm um nome facilita a documentação Conhecimento de padrões de projeto torna mais fácil a compreensão de sistemas existentes Ajuda na conversão de um modelo de análise em um modelo de implementação Aumento da produtividade © LES/PUC-Rio
Define interface de interesse para os clientes Mantém uma instância de uma subclasse ConcreteState que define o estado corrente State Define interface para encapsulamento associao com um determinado estado do Context ConcreteState Cada subclasse implementa um comportamento associado com um estado do Context © LES/PUC-Rio
85 Trabalho Padrões de Projeto
Factory Method – Aleksander Abstract Factory – Bruno Gadelha Builder – Aleksander e Bruno Gadelha Prototype – Bruno Carvalho Decorator – Eraldo Adapter – Bruno Carvalho e Eraldo Interpreter – Kleinner Iterator – Raphael Memento – Kleinner e Raphael Chain of Responsibility – Elizabeth Visitor – Leandra Bridge – Elizabeth e Leandra Proxy – Roberta Mediator – Ugo Flyweight – Roberta e Ugo © LES/PUC-Rio