ddd in agile

29
Folding Together DDD and Agile Quick and Sustainable Development of Complex Software Eric Evans domainlanguage.com

Upload: skills-matter

Post on 01-Jul-2015

4.289 views

Category:

Technology


0 download

DESCRIPTION

Following on from the success of last year, this annual event for London's architect community will have architectural innovation as a theme this year, and particularly CQRS. At the DDD eXchange we will feature leading thinkers and architects who will share their experience and Eric Evans is the programme lead.

TRANSCRIPT

Page 1: DDD In Agile

Folding Together

DDD and AgileQuick and Sustainable Development

of Complex Software

Eric Evans

domainlanguage.com

Page 2: DDD In Agile

DDD is a Set of Driving Principles

• Focus on the Core Domain.

• Explore models in a creative collaboration of domain practitioners and software practitioners.

• Speak a Ubiquitous Language within an explicitly Bounded Context.

Page 3: DDD In Agile

‘We should do a nice design, but we just don’t have time.’

Page 4: DDD In Agile

‘We should do a nice design, but we just don’t have time.’

Page 5: DDD In Agile

‘Modeling and design take extra time, but they pay off in the long run.’

Page 6: DDD In Agile

‘Modeling and design take extra time, but they pay off in the long run.’

Page 7: DDD In Agile

Modeling and design are often the quickest path to the actual goal.

Page 8: DDD In Agile

What is your goal?

• Implement this user story?

• Complete a releasable set of stories with an acceptable level of bugs?

• Deliver a release that the team can continue to extend in the next release?

• Deliver a clear and cohesive user experience?

Page 9: DDD In Agile

Defining Our Terms

domain A sphere of knowledge or activity.

model A system of abstractions representing selected aspects of the domain.

A model is a distilled form of domainknowledge, assumptions, rules and choices.

Page 10: DDD In Agile

‘We have to get the model right first, before we write the code.’

Page 11: DDD In Agile

Up Front Analysis Locks in Ignorance

• Models are distilled knowledge.

• At the beginning of a project, the team is as ignorant as it will ever be.

Page 12: DDD In Agile

Why we need DDD + Agile

• Technology can distract us.

• Feature-orientation can fragment our model.

• Upfront analysis locks in ignorance.

Page 13: DDD In Agile

What does DDD look like?

Page 14: DDD In Agile
Page 15: DDD In Agile

DDD can be undramatic.

• Walking through concrete reference scenarios

• Creative collaboration with domain practitioner

• Refinement of the ubiquitous language and therefore the model

Page 16: DDD In Agile

What is a ‘special case’?

Page 17: DDD In Agile

Green Bar!

Page 18: DDD In Agile

Challenge your assumptions

Page 19: DDD In Agile

Shift from Push to Pull

• When communications with stakeholders deteriorates.

• When solutions seem more complex than the problems.

• When velocity slows (completed work becomes a burden).

Page 20: DDD In Agile

Ok. Time to pull!Now what do we actually do?

Page 21: DDD In Agile
Page 22: DDD In Agile

Whitepaper First Draft

• domainlanguage.com/processdraft

• Will announce second draft soon in newsletter.

Page 23: DDD In Agile

Where To Fit It

• Stand Up Meetings

• Spike

• Iteration Zero

• Release Planning

Page 24: DDD In Agile

Defining Our Terms

bounded contextA description of a boundary (typically a subsystem, or the work of a particular team) within which a particular model is defined and applicable.

Page 25: DDD In Agile

Bounded Context

• Modeling and design pay off within a clean, unified, bounded context.

• Shared code ownership within a context.

• One unified context is owned by one team.

Page 26: DDD In Agile

Not all of a large system will be well designed.

Page 27: DDD In Agile

Focus

• An area of the system is recognized as a center of frequent change.

• An area of development is strategically important.

• The user experience is losing coherence.

Page 28: DDD In Agile

Focus

• Triage the Ball of Mud

• Accept the Tidy Transaction Scripts

• Leave well enough alone

Page 29: DDD In Agile

DDD Tools for Agile Practitioners

• Model Exploration

– ‘Whirlpool’ Process

– (Section 3 in DDD book)

• Context Boundaries (see Chapter 14 in DDD)

• Distilling the Core (see Chapter 15 in DDD)

• Triggers to ‘pull’ modeling when needed