projeto e implementação de software utilizando padrões

24
Projeto e implementação de software utilizando padrões de projeto Antonio Passos

Upload: antonio-passos

Post on 06-Jun-2015

5.435 views

Category:

Technology


5 download

DESCRIPTION

Apresentação feita no Java EE Day que aconteceu em Goiânia/GO em 05/12/2009.

TRANSCRIPT

Page 1: Projeto e Implementação de Software Utilizando Padrões

Projeto e implementação de software utilizando padrões de projeto

Antonio Passos

Page 2: Projeto e Implementação de Software Utilizando Padrões

Agenda

• De onde vêm os padrões? • Conceito de padrão• Por que estudar padrões?• Alguns padrões conhecidos • Padrões GRASP• Como tomar decisões de projeto• Pra saber mais

Page 3: Projeto e Implementação de Software Utilizando Padrões

De onde vêm os padrões?

Escadaria Selarón - RJBiblioteca Nacional - RJ

Algo em comum aqui?

Page 4: Projeto e Implementação de Software Utilizando Padrões

De onde vêm os padrões?

Pirâmide de Kukulcán - México

Page 5: Projeto e Implementação de Software Utilizando Padrões

De onde vêm os padrões?

Pirâmide de Kukulcán - México

Page 6: Projeto e Implementação de Software Utilizando Padrões

De onde vêm os padrões?

• A beleza está realmente nos olhos de quem vê?

• Ou existe base objetiva para tal julgamento?

Page 7: Projeto e Implementação de Software Utilizando Padrões

De onde vêm os padrões?

Page 8: Projeto e Implementação de Software Utilizando Padrões

• É possível projetar sistemas de forma metódica, racional, explicável?

Page 9: Projeto e Implementação de Software Utilizando Padrões

Conceitos de padrões

•Par nomeado problema/so

lução que pode ser

aplicado em novos contextos, com conselhos

sobre sua aplicação em novas si

tuações e uma

discussão so

bre as consequências de se

u uso

• Padrões constituem um repertório de

princípios gerais e de soluções idiomáticas

elaborado por desenvolvedores experientes

que os guiam na construção de software

É uma técnica, uma diretriz

Page 10: Projeto e Implementação de Software Utilizando Padrões

Por que estudar padrões?

• Melhorar a comunicação da equipe e o aprendizado individual

• Aumentar a capacidade de modificação melhorada do código

• Reutilizar soluções

Decidir se disponho do projeto certo, não apenas de um projeto que

funcione

Page 11: Projeto e Implementação de Software Utilizando Padrões

Gangue dos Quatro

Page 12: Projeto e Implementação de Software Utilizando Padrões

Arquitetura de aplicações corporativas

Page 13: Projeto e Implementação de Software Utilizando Padrões

GRASP

Page 14: Projeto e Implementação de Software Utilizando Padrões

Padrões GRASP

• Padrões de Princípios Gerais para Atribuição de Responsabilidade (General Responsibility Assignment Software Patterns)

Page 15: Projeto e Implementação de Software Utilizando Padrões

Padrões GRASPEspecialista na informação

• Problema– Qual é o princípio básico de atribuição de

responsabilidades a objetos?

• Solução– Atribuir a responsabilidade ao especialista na

informação: a classe que tem a informação necessária para satisfazer a responsabilidade.

• Benefícios– O encapsulamento de informações é mantido.– São estimuladas definições de classes « leves », de

maior coesão, mais fáceis de compreender e manter.

Page 16: Projeto e Implementação de Software Utilizando Padrões

Padrões GRASPCriador

• Problema– Quem deve ser responsável pela criação de uma

nova instância de uma classe?

• Solução– Atribua à classe B a responsabilidade de criar uma

instância da classe A se uma das seguintes condições for verdadeira:

• B agrega objetos de A;• B contém objetos de A;• B registra instâncias de objetos de A;• B usa de maneira muito próxima objetos de A;• B tem os dados de iniciação que serão passados para A

quando ele for criado.

• Benefícios– Favorece o acoplamento fraco

Page 17: Projeto e Implementação de Software Utilizando Padrões

Padrões GRASPAcoplamento fraco

• Problema– Como favorecer a dependência baixa, o pequeno

impacto à mudança e aumentar a reutilização?

• Solução– Atribuir uma responsabilidade de maneira que o

acoplamento permaneça fraco.

• Benefícios– Não é afetado por mudanças em outros

componentes;– É simples de entender isoladamente;– É conveniente para reutilização

Page 18: Projeto e Implementação de Software Utilizando Padrões

Padrões GRASPAcoplamento fraco

Opção 01 Opção 02

Page 19: Projeto e Implementação de Software Utilizando Padrões

Padrões GRASPCoesão alta

• Problema– Como manter a complexidade sob controle?

• Solução– Atribuir uma responsabilidade de forma que a

coesão permaneça alta.

• Benefícios– Mais clareza e facilidade de compreensão no

projeto;– Simplificação da manutenção e do acréscimo de

melhorias;– Favorecimento do acoplamento fraco;– Aumento do potencial de reutilização

Page 20: Projeto e Implementação de Software Utilizando Padrões

Padrões GRASP

• Coesão alta– Como manter a complexidade sob controle?

• Acoplamento baixo– Como favorecer a dependência baixa, o

pequeno impacto à mudança e aumentar a reutilização?

Page 21: Projeto e Implementação de Software Utilizando Padrões

Padrões GRASPControlador

• Problema– Quem deve ser responsável por tratar um evento de

sistema?

• Solução– Atribuir a responsabilidade de receber ou tratar uma

mensagem de um evento do sistema a uma classe que represente uma das seguintes escolhas:

• Represente todo o sistema, dispositivo ou subsistema;• Represente um cenário de um caso de uso dentro do qual

ocorra o evento do sistema

• Benefícios– Aumento das possibilidades de reutilização e de

interfaces plugáveis;– Conhecer o estado do caso de uso

Page 22: Projeto e Implementação de Software Utilizando Padrões

Como tomar decisões de projeto?

• Qual dessas implementações é a melhor?

• Sob quais circunstâncias esta alternativa seria melhor que a outra?

• Qual dessas circunstâncias é a que mais se assemelha ao meu domínio do problema?

Page 23: Projeto e Implementação de Software Utilizando Padrões

Pra saber mais

JAVA DESIGN PATTERNShttp://www.allapplabs.com/java_design_patterns/java_design_patterns.htm

Java Design Patterns At a Glancehttp://www.javacamp.org/designPattern/

Java Design Patterns Reference and Exampleshttp://www.fluffycat.com/Java-Design-Patterns/

Page 24: Projeto e Implementação de Software Utilizando Padrões

Obrigado

• Antonio PassosE-mail: [email protected]: http://twitter.com/antoniopassosBlog: http://blog.antoniopassos.pro.brEAD: http://ead.antoniopassos.net