1. Domain Driven Design [DDD]
Combatendo a complexidade
no desenvolvimento de
software
Christiano Milfont
Unifor 2010, Fortaleza
Copyleft 2010 Milfont.org
7. Test First
Testing
Requirements
Design
Implementation
Deployment
Maintenance
8. Test First
Testing
Requirements
Design
Implementation
Deployment
Maintenance
9. Test First
Testing
Design Implementation
Requirements
Deployment
Maintenance
10. 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."
11. 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
12. 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
13. 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
14.
15.
16. LoginAction
Lembra
como voce
LoginForm
fazia no
Struts?
LoginVO
LoginBO
LoginDAO
DATABASE
17. LoginBean
E sua
LoginVO
variação JSF?
LoginBO
DATABASE
Login
LoginDAO
GenericDAO
22. access with REPOSITORIES
SERVICES
access with
maintain integrity with
ENTITIES
express model with
act as root of
express model with
AGGREGATES
express model with
MODEL-DRIVEN VALUE OBJECTS
DESIGN encapsulate with
encapsulate with encapsulate with
isolate domain with
X
mutually exclusive
choices LAYERED encapsulate with
ARCHITECTURE FACTORIES
SMART UI
23. Domain Element State/Behavior
Entity, Value Object, Aggregate State and Behavior
Data Transfer Object State only
Service, Repository Behavior only
24. keep model unified by
CONTINUOUS
INTEGRATION SHARED
KERNEL
BOUNDED
CONTEXT
CUSTOMER/
names
SUPPLIER
enter overlap allied contexts through
TEAMS
assess/overview relate allied contexts as
relationships with CONTEXT MAP
overlap unilaterally as
CONFORMIST
support multiple
UBIQUITOUS clients through
LANGUAGE free teams to go OPEN HOST
translate and insulate SERVICE formalize as PUBLISHED
unilaterally with LANGUAGE
SEPARATE
WAYS
ANTICORRUPTION
LAYER