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

  1. Core 
  2. Supporting
  3. 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

Made with Slides.com