Visão crítica sobre padrões: Over Engineering Professor: Hyggo Almeida Padrões de projeto Um padrão de software é... a descrição de um problema que ocorre com freqüência e a base de uma solução para este problema Reutilização em inúmeros projetos Solução elegante e adaptável Reutilização de idéias... não de código! Visão crítica sobre padrões: OverEngineering 2 Padrões de projeto Padrões para atribuição de responsabilidades (GRASP) Expert Creator Low Coupling High Cohesion Visão crítica sobre padrões: OverEngineering 3 Padrões de projeto Padrões de projeto (Gangue dos Quatro) Padrões de criação Factory Method Singleton Abstract Factory Visão crítica sobre padrões: OverEngineering 4 Padrões de projeto Padrões de projeto (Gangue dos Quatro) Padrões estruturais Adapter Composite Decorator Façade Visão crítica sobre padrões: OverEngineering 5 Padrões de projeto Padrões de projeto (Gangue dos Quatro) Padrões comportamentais Iterator Strategy Observer Template Method Visão crítica sobre padrões: OverEngineering 6 Padrões de projeto: “E se?” Redução do impacto da evolução... Padrões de projeto (Design Patterns) Requisitos Quais seriam as potenciais mudanças deste software? Desenvolvedor Software flexível (ganchos para facilitar evolução) 7 Problemas com o “E se?” Problemas... Não é possível prever todos os cenários de evolução Quanto mais ganchos, mais tempo e custo Software deseriam desenvolvimento Quais as potenciais Estimativa (funcional) mudanças deste software? + flexível Tempo Over-engineering Desenvolvedor Custo 8 Over Engineering “Quando se constrói um código mais sofisticado do que ele precisa ser!!!” Engenharia demais!!!! Cliente é mais importante que o desenvolvedor... ... Funcionalidade é mais importante que flexibilidade... ... Código funcional é mais importante que documentação!!! 9 Over Engineering: como evitar? O segredo é balancear técnicas de flexibilidade e pragmatismo de entrega de código funcional ao cliente Padrões Flexibilidade Código funcional Entrega 10 Solução de Extreme Programming Foco em Codificação/Testes O mais simples possível Entregas freqüentes com código funcional Preciso do retorno do cliente Refatoramento com padrões Uma vez funcional, de acordo com a necessidade, melhoremos a qualidade do projeto e do código 11 Mensagem final: cuidado! Use padrões quando o “cheiro” do projeto estiver ruim... Em geral, “tá na cara” a necessidade! Não force a utilização!!! Não é possível prever o futuro... ... então não tente preparar o software para todas mudanças possíveis!!! O cliente é o seu senhor... ... não coloque a elegância do seu projeto na frente do relógio dele!!! 12 O que vimos hoje? Visão crítica sobre padrões Revisão final Qual o impacto do “E se”? Over Engineering Visão crítica sobre padrões: OverEngineering 13 O que veremos na próxima aula? Threads Introdução Implementação Visão crítica sobre padrões: OverEngineering 14 Dúvidas? ? Visão crítica sobre padrões: OverEngineering 15