150 likes | 236 Views
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
E N D
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
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
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
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
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
Quais seriam as potenciais mudanças deste software? Padrões de projeto: “E se?” • Redução do impacto da evolução... • Padrões de projeto (Design Patterns) Requisitos Software flexível (ganchos para facilitar evolução) Desenvolvedor
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 de desenvolvimento Estimativa (funcional) Software Quais seriam as potenciais mudanças deste software? + flexível Tempo Over-engineering Custo Desenvolvedor
Over Engineering • Engenharia demais!!!! • Cliente é mais importante que o desenvolvedor... • ... Funcionalidade é mais importante que flexibilidade... • ... Código funcional é mais importante que documentação!!! “Quando se constrói um código mais sofisticado do que ele precisa ser!!!”
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
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
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!!!
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
O que veremos na próxima aula? • Threads • Introdução • Implementação Visão crítica sobre padrões: OverEngineering
Dúvidas? ? Visão crítica sobre padrões: OverEngineering