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
Download

16.OverEngineering