Domain Driven
Design
Tackling Complexity in The Heart Of Software
agenda
1- What is DDD?
2- Business Logic Layer Patterns
3- DDD Basics
4- DDD Patterns
5- Related Approaches
Whatısdomaındrıvendesıgn?
WhatısDDD?
The term first described by Eric Evans in his book of the same
name(2004).
Tackling
Complexity
Int the Heart
Of Software
WhatısDDD?
DDD is an approach to resolve complex and evolving business
requirements.
WhatısDDD?
Domain = Business
WhatısDDD?
How to Taming Complexity?
Collaborate with stakeholders
WhatısDDD?
How to Taming Complexity?
Where is behavior ?
WhatısDDD?
Modelling Domain
Models dependent
on technologies
WhatısDDD?
How to Taming Complexity?
WhatısDDD?
Modelling Domain
Publish News != Update News
UnPublish News != Remove News
WhatısDDD?
Modelling Domain
Isolate business from technologies
WhatısDDD?
How to Taming Complexity?
Classic Layered Architecture DDD Architecture
Focus on
business
WhatısDDD?
Modelling Domain
Use rich domain model
Busınesslogıclayerpatterns
BLLPatterns
BLLPatterns
Transaction Script
BLLPatterns
Table Module
BLLPatterns
Active Record
Model, Persistence to Db, Business
All Together
BLLPatterns
Domain Model
Focused on Core
Business,
Persistence Ignored,
Model + Business
BLLPatterns
Dddbasıcs
DDDbasıcs
Entities
Objects that have a distinct identity
DDDbasıcs
Value Objects
An object that contains
attributes but has no identity
DDDbasıcs
Value Objects
An object that contains
attributes but has no identity
DDDbasıcs
Bounded Context
DDDbasıcs
Bounded Context
DDDbasıcs
Bounded Context
DDDbasıcs
Aggregates and Aggregate Root
Cluster of Entities and
Value Objects
DDDbasıcs
Domain Services
DDDbasıcs
Persistence Ignorance
DDDbasıcs
Refactoring
One of the most important rules in DDD
DDDbasıcs
Anemic Domain Model vs Rich Domain Model
DDDbasıcs
Anemic Domain Model vs Rich Domain Model
Dddpatterns
DDDpatterns
When you remember that DDD is really just “OO software done
right”, it becomes more obvious that strong OO experience will
also stand you in good stead when approaching DDD.
- Jak Charlton
DDDpatterns
Repository
DDDpatterns
Factory
DDDpatterns
Strategy
DDDpatterns
Dependency Injection
DDDpatterns
CQRS - Command Query Responsibility Seperation
DDDpatterns
CQRS - Command Query Responsibility Seperation
DDDpatterns
Event Sourcing
Relatedthıngs
Relatedthıngs
Clean Code
Relatedthıngs
NoSql Technologies
DDD very suitable for NoSql
Relatedthıngs
TDD - BDD
Relatedthıngs
Event Driven Architecture
Relatedthıngs
Microservice Architecture
For More Informations...
Books
1- Eric Evans - Domain Driven Design
2- Jimmy Nilsson - Applying Domain Driven Design And Patterns
3- Vaugh Vernon - Implementing Domain Driven Design
Websites - Thinker
1- Martin Fowler - Blog
2- Greg Young
3- Jimmy Bogard
4- http://dddcommunity.org/
5- InfoQ
6- Pluralsight
questıons
THANKS
Mustafa Dağdelen

Domain driven design

Editor's Notes

  • #6 Uygulamaların ihtiyaçlarının sürekli değişmesinden kaynaklı kompleksleşmesi ve sonunda big ball of mud ‘a dönüşmesi. Radikal, Hürriyet
  • #9 Burada haber’i modellemek kısmını söyle.
  • #11 Uygulamaya başlarken seçtiğimiz database’e göre modelleri oluşturuyoruz.
  • #12 Hürriyet’in yenilenmesi örneğini ver.Sabit duran bir business var ortada.Onun için teknoloji farketmez.
  • #13 Hürriyet’in yenilenmesi örneğini ver.Sabit duran bir business var ortada.Onun için teknoloji farketmez.
  • #15 Hürriyet’in yenilenmesi örneğini ver.Sabit duran bir business var ortada.Onun için teknoloji farketmez.
  • #18 https://learnbycode.wordpress.com/2015/04/12/the-business-logic-layer-transaction-script-pattern/
  • #25 Value object should be immutable
  • #26 Value object should be immutable
  • #34 http://www.slideshare.net/AlexandervanTrijffel/applying-domaindriven-design-to-craft-rich-domain-models
  • #35 http://www.slideshare.net/AlexandervanTrijffel/applying-domaindriven-design-to-craft-rich-domain-models
  • #49 Bir business işlemi sonucunda birden fazla yere bilgi gönderip farklı işlemlerin yapılmasını isteyebiliriz.Bunu en iyi event driven architecture ile yapabiliriz.