dependable technologies for critical systems copyright critical software s.a. 1998-2003 all rights...

18
Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2003 All Rights Reserved. Software Design Patterns & AntiPatterns Helder Sousa Engineering Manager EAI&DB Engineering Area

Upload: internet

Post on 19-Apr-2015

102 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2003 All Rights Reserved. Software Design Patterns & AntiPatterns Helder

Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2003 All Rights

Reserved.

Software Design Patterns& AntiPatterns

Helder Sousa

Engineering ManagerEAI&DB Engineering Area

Page 2: Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2003 All Rights Reserved. Software Design Patterns & AntiPatterns Helder

2

Design patterns: Definição

Um Design Pattern é

uma solução estável

para um problema comum

num determinado contexto.

Page 3: Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2003 All Rights Reserved. Software Design Patterns & AntiPatterns Helder

3

Design patterns: Definição de AntiPattern

AntiPattern é uma

má solução

para um problema comum

num determinado contexto

Um bom AntiPattern também deve indicar o porquê da má

solução ser atractiva, e qual o Pattern que se deve aplicar.

Page 4: Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2003 All Rights Reserved. Software Design Patterns & AntiPatterns Helder

4

Design patterns: Benefícios

Abstracto qb para aplicar a várias tecnologias.

Específico qb para permitir colocar as “mãos na massa”.

Fornecem um vocabulário comum entre software developers.

São soluções comprovadas.

Potenciam a reutilização.

Page 5: Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2003 All Rights Reserved. Software Design Patterns & AntiPatterns Helder

5

Design Patterns: Template

Contexto Problema Forças Solução Consequências Implementação Patterns relacionados

Page 6: Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2003 All Rights Reserved. Software Design Patterns & AntiPatterns Helder

6

Design patterns: Common patterns

Business delegate, Service locator, Session façade, Data Access Object

cd Application Patterns

Data SpaceBusiness Logic Space Data Access Space

Business Delegate

Serv ice Locator

Session Facade

Session Facade

Session Facade

DAO

DAO

DAO

XML

RDBMS

Legacy Systems

Value Object

Factory

Page 7: Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2003 All Rights Reserved. Software Design Patterns & AntiPatterns Helder

7

Design patterns: Service locator

O Service Locator centraliza as operações de pesquisa de um serviço (lookup), fornece um acesso central a pode ainda conter uma cache eliminando o peso de novas pesquisas.

cd Application Patterns

Client «singleton»Serv iceLocator

InitialContext

Serv iceFactoryBusinessServ ice

create

lookup

lookup/create

Page 8: Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2003 All Rights Reserved. Software Design Patterns & AntiPatterns Helder

8

Design patterns: Façade

Fornece um interface comum para um conjunto de interface de um subsistema.

Define um interface de alto nível que torna o subsistema mais simples de utilizar.

cd Application Patterns

Facade

Subsystem

Module A

Module B

Module C

Page 9: Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2003 All Rights Reserved. Software Design Patterns & AntiPatterns Helder

9

Design patterns: Façade

Page 10: Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2003 All Rights Reserved. Software Design Patterns & AntiPatterns Helder

10

Design patterns: Factory

O Factory Pattern devolve instâncias parametrizadas de classes, mediante configurações de sistema, parâmetros ou estado do sistema.

cd Logical Model

ConnectionFactory

+ getConnection() : Connection

getConnection devolve uma instância de uma Connection mediante as configurações do sistema.

Connection

«arti fact»

Connection parameters

SQLServ erConnection OracleConnection

Page 11: Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2003 All Rights Reserved. Software Design Patterns & AntiPatterns Helder

11

Design patterns: DAO (Data Access Object)

Data Access Object (ou DAO) pattern: • Encapsula o acesso a dados.• Adapta uma API específica de acesso a dados, a um

interface cliente genérico.

cd Application Patterns

Business Object DataAccessObject

Value Object

DataSourceuses

create/usesread/modify

Page 12: Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2003 All Rights Reserved. Software Design Patterns & AntiPatterns Helder

12

Design patterns: DAO (Data Access Object)

Exemplo de um DAO:cd Application Patterns

«interface»DataAccessObject

+ findByPrimaryKey(string) : ValueObject+ update(ValueObject) : void+ insert(ValueObject) : void+ delete(ValueObject) : void

StudentsDAO

+ findByPrimaryKey(string) : ValueObject+ update(ValueObject) : void+ insert(ValueObject) : void+ delete(ValueObject) : void

«realize»

Page 13: Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2003 All Rights Reserved. Software Design Patterns & AntiPatterns Helder

13

Design patterns: DAO (Pluggable & External SQL)

Page 14: Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2003 All Rights Reserved. Software Design Patterns & AntiPatterns Helder

15

Design patterns: MVC (Model, View, Controller)

Uma aplicação apresenta dados, processados por regras de negócio em múltiplos écrans. A equipe de engenharia responsável pelo desenho, implementação de manutenção é multidisciplinar.

Page 15: Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2003 All Rights Reserved. Software Design Patterns & AntiPatterns Helder

16

Anti-patterns: Shoot The Messenger

Problema: Ninguém gosta de ouvir más notícias. Contexto: Alguém descobre um problema e avisa. Forças:

Pressão Falta de controlo da situação Não é visível solução imediata para o novo problema

Solução: Gritar com o mensageiro do problema

Resultado: Cada vez os problemas são identificados mais tarde, e portanto com mais custos para o desenvolvimento do projecto.

Solução proposta: Envolver o mensageiro na procura da solução.

(see: http://c2.com/cgi/wiki?ShootTheMessenger)

Page 16: Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2003 All Rights Reserved. Software Design Patterns & AntiPatterns Helder

17

Design patterns: Fontes de informação

Patterns for beginners:http://c2.com/cgi-bin/wiki?PatternsForBeginners

Enterprise integration patternshttp://www.eaipatterns.com/eaipatterns.html

Hillside patterns libraryhttp://hillside.net/patterns/

Java Blueprints Patternshttp://java.sun.com/blueprints/patterns/index.html

The Server Side patterns libraryhttp://www.theserverside.com/patterns/index.tss

Parry's Patterns Pagehttp://www.castle-cadenza.demon.co.uk/pattern.htm

AntiPatterns Cataloghttp://c2.com/cgi/wiki?AntiPatternsCatalog

Page 17: Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2003 All Rights Reserved. Software Design Patterns & AntiPatterns Helder

18

Design patterns: Fontes de informação

Muito bem aceite Conhecido como

“GangOfFour” Um “must” !!

Page 18: Dependable Technologies for Critical Systems Copyright Critical Software S.A. 1998-2003 All Rights Reserved. Software Design Patterns & AntiPatterns Helder

19

Design patterns: Final statement

Design patterns

Keep them in mind !!

Abuse of them !!!!!