What the Feck
is
Domain Driven Design
Barry O'Sullivan 2018
@barryosull
Who am I
- Software Developer/Architect
- Contractor
- Startup Veteran
- DDD Fan(atic)
- Expert slide text parroter
@ie_ddd
@barryosull
@daraghoshea
https://www.dddireland.org
https://barryosull.com
https://www.daraghoshea.com
"Feck"
Slang expletive employed as an attenuated alternative (minced oath) to f*ck to express disbelief, pain, anger, or contempt in a given situation. However, it does not mean to have sex with in the same way that f*ck does, and those aware of this use consider it a lesser expletive than f*ck.
- Oxforddictionaries.com (25/06/2015)
What started it all
The Status Quo
https://codetiburon.com/agile-or-waterfall-choose-the-right-approach-to-your-software-project/
The End Result
What is Complexity?
https://www.newstories.org/food-for-thought/cynefin-framework/
Software is Complicated
Software Development
is Complex
Tackling Complexity
Complex: probe-sense-respond
Requires constant iteration on a shared model
Building Better Models
With DDD
Ubiquitous Language
Chain of
Miscommunication
Shared Model with
Consistent Language
Domain experts should object to terms or structures that are awkward or inadequate to convey domain understanding; developers should watch for ambiguity or inconsistency that will trip up design.
Bounded Context
http://static.olivergierke.de/lectures/ddd-and-spring/
Put like with like
Context Maps
https://blog.prowareness.com/2017/04/understanding-bounded-context-in-domain-driven-design/
Model Exploration
Iteration is Exploration
Event Storming
https://www.leanovate.de/blog/understanding-a-system-with-event-storming/
https://developers.livechatinc.com/blog/event-storming-for-product-development/
Sub Domains
- Core
- Supporting
- Generic
Image Resizing
Caching
Invoicing
Email Marketing
User Authentication
Property Rental
Fraud
Customer Messaging
Categorise the problem space
Hide Unnecessary Details
Domain experts don't care about the DB
?
?
?
?
Uhhh, yeah,
sounds great . . .
Refactoring Towards Insight
Advantages of DDD
- Streamlined communication
- Distributed knowledge
- Clarity of focus
- Ability to iterate (actually agile)
- Discover new business opporunities
Further Reading
@ericevans0
@VaughnVernon
@mathiasverraes
@ntcoding
@swardley
@johncutlefish
Q&A
WTF is DDD
By Barry O' Sullivan
WTF is DDD
An explanation of DDD for both business owners and developers, explained with a hint of Irishness.
- 1,673