Domain driven design

Post on 02-Nov-2014

4 views 0 download

Tags:

description

 

transcript

Domain Driven Design [DDD]

Combatendo a complexidade no desenvolvimento de

software

Christiano MilfontUnifor 2010, FortalezaCopyleft 2010 Milfont.org

Requirements

Design

Implementation

Testing

Maintenance

Deployment

Waterfall

Requirements

Design

Implementation

Testing

Maintenance

Deployment

Waterfall

Design

Design

Requirements

Design

Implementation

Testing

Maintenance

Deployment

Waterfall

Requirements

Design

Implementation

Testing

Maintenance

Deployment

Test First

Requirements

Design

Implementation

Testing

Maintenance

Deployment

Test First

Requirements

Design Implementation

Testing

Maintenance

Deployment

Test First

Linguagem Ubíqua

"A language structured around the domain model and used by all team members to connect all the activities of the team with the software."

Um Membro do projeto cadastra uma “Issue” no sistema.

Um Gerente de projetos aceita ou rejeita a entrada de Issues para serem trabalhadas.

Um Funcionário do hospital dá entrada do Paciente na Emergência.

O Cenário de entrada por pacientes depende do Login do usuário com ROLE Admin na Action antes do forward.

Um funcionário atende uma solicitação de saída de medicamento pelo prontuário do paciente com limite do cardápio do médico.

A Tabela TB_ITEMS tem ligação com a Tabela TB_NOTAS

Um Membro do projeto cadastra uma “Issue” no sistema.

Um Gerente de projetos aceita ou rejeita a entrada de Issues para serem trabalhadas.

Um Funcionário do hospital dá entrada do Paciente na Emergência.

O Cenário de entrada por pacientes depende do Login do usuário com ROLE Admin na Action antes do forward.

Um funcionário atende uma solicitação de saída de medicamento pelo prontuário do paciente com limite do cardápio do médico.

A Tabela TB_ITEMS tem ligação com a Tabela TB_NOTAS

Um Membro do projeto cadastra uma “Issue” no sistema.

Um Gerente de projetos aceita ou rejeita a entrada de Issues para serem trabalhadas.

Um Funcionário do hospital dá entrada do Paciente na Emergência.

O Cenário de entrada por pacientes depende do Login do usuário com ROLE Admin na Action antes do forward.

Um funcionário atende uma solicitação de saída de medicamento pelo prontuário do paciente com limite do cardápio do médico.

A Tabela TB_ITEMS tem ligação com a Tabela TB_NOTAS

LoginAction

LoginForm

LoginVO

LoginBO

DATABASE

LoginDAO

Lembra como voce

fazia no Struts?

LoginBean

LoginVO

LoginDATABASE

LoginDAO

E sua variação JSF?

GenericDAO

LoginBO

LoginFacade

Login DATABASE

LoginRepository

Agora você é moderno

GenericRepository

LoginService

LoginFacade

Login DATABASE

LoginRepository

Agora você é moderno

GenericRepository

LoginService

Armas não matam pessoas...

Pessoas matam pessoas...

Hands on...

encapsulate with

MODEL-DRIVEN

DESIGN

express model with

isolate domain with

encapsulate with

ENTITIES

VALUE OBJECTS

LAYERED

ARCHITECTURE

AGGREGATES

REPOSITORIES

act as root of

SMART UI

X

FACTORIES

encapsulate with

express model with

encapsulate with

mutually exclusivechoices

access with

maintain integrity with

access withSERVICES

express model with

Domain Element State/BehaviorEntity, Value Object, Aggregate State and Behavior

Data Transfer Object State onlyService, Repository Behavior only

CONTEXT MAP

overlap allied contexts through

overlap unilaterally as

support multipleclients through

formalize as

CONTINUOUS

INTEGRATION

CUSTOMER/

SUPPLIER

TEAMS

CONFORMIST

OPEN HOST

SERVICE

SEPARATE

WAYS

PUBLISHED

LANGUAGE

SHARED

KERNEL

relate allied contexts as

free teams to go

ANTICORRUPTION

LAYER

translate and insulateunilaterally with

BOUNDED

CONTEXT

keep model unified by

assess/overview relationships with

UBIQUITOUS

LANGUAGE

namesenter

TranslationMap

shared

Shared Kernel

Model in Context

Model in Context

TranslationMap

Context Map

Perguntas?

http://www.milfont.org/tech/2010/05/27/palestra-bdd-unifor-2010/