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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5363097/pasted-from-clipboard.png)
@ie_ddd
@barryosull
@daraghoshea
https://www.dddireland.org
https://barryosull.com
https://www.daraghoshea.com
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5363068/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5371952/pasted-from-clipboard.png)
"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)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5362882/pasted-from-clipboard.png)
What started it all
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5361430/pasted-from-clipboard.png)
The Status Quo
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5361546/story-points.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5361581/agile-flow.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5363029/pasted-from-clipboard.png)
https://codetiburon.com/agile-or-waterfall-choose-the-right-approach-to-your-software-project/
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5361608/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5361617/pasted-from-clipboard.png)
The End Result
What is Complexity?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5361470/pasted-from-clipboard.png)
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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5362953/shared-model.png)
Building Better Models
With DDD
![](https://media3.giphy.com/media/L9pjsBKjNKrXa/giphy.gif)
Ubiquitous Language
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5361657/pasted-from-clipboard.png)
Chain of
Miscommunication
Shared Model with
Consistent Language
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5361680/pasted-from-clipboard.png)
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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5361704/pasted-from-clipboard.png)
Context Maps
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5362993/pasted-from-clipboard.png)
https://blog.prowareness.com/2017/04/understanding-bounded-context-in-domain-driven-design/
Model Exploration
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5361731/pasted-from-clipboard.png)
Iteration is Exploration
Event Storming
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5361842/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5363019/pasted-from-clipboard.png)
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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5371852/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5371855/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5371869/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5371904/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5371938/figure.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5371942/figure-confused.png)
?
?
?
?
Uhhh, yeah,
sounds great . . .
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5361680/pasted-from-clipboard.png)
Refactoring Towards Insight
![](https://media1.giphy.com/media/LgfP9hWmI1dAs/giphy.gif)
Advantages of DDD
- Streamlined communication
- Distributed knowledge
- Clarity of focus
- Ability to iterate (actually agile)
- Discover new business opporunities
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5371793/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5371795/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5371799/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5371810/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5371815/pasted-from-clipboard.png)
Further Reading
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5361430/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5363041/pasted-from-clipboard.png)
@ericevans0
@VaughnVernon
@mathiasverraes
@ntcoding
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5363068/pasted-from-clipboard.png)
@swardley
@johncutlefish
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5363050/slide_ddd_general.png)
Q&A
![](https://s3.amazonaws.com/media-p.slid.es/uploads/833339/images/5363120/pasted-from-clipboard.png)
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,528