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

Post on 19-Apr-2015

102 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

2

Design patterns: Definição

Um Design Pattern é

uma solução estável

para um problema comum

num determinado contexto.

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.

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.

5

Design Patterns: Template

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

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

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

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

9

Design patterns: Façade

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

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

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»

13

Design patterns: DAO (Pluggable & External SQL)

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.

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)

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

18

Design patterns: Fontes de informação

Muito bem aceite Conhecido como

“GangOfFour” Um “must” !!

19

Design patterns: Final statement

Design patterns

Keep them in mind !!

Abuse of them !!!!!

top related