52
Domain Driven Design Tackling Complexity in The Heart Of Software

Domain driven design

Embed Size (px)

Citation preview

Page 1: Domain driven design

Domain Driven Design

Tackling Complexity in The Heart Of Software

Page 2: Domain driven design

agenda1- What is DDD?

2- Business Logic Layer Patterns

3- DDD Basics

4- DDD Patterns

5- Related Approaches

Page 3: Domain driven design

What ıs domaın drıven desıgn?

Page 4: Domain driven design

What ıs DDD?The term first described by Eric Evans in his book of the same name(2004).

Tackling ComplexityInt the Heart Of Software

Page 5: Domain driven design

What ıs DDD?DDD is an approach to resolve complex and evolving business requirements.

Page 6: Domain driven design

What ıs DDD?

Domain = Business

Page 7: Domain driven design

What ıs DDD?How to Taming Complexity?

Collaborate with stakeholders

Page 8: Domain driven design

What ıs DDD?How to Taming Complexity?

Where is behavior ?

Page 9: Domain driven design

What ıs DDD?Modelling Domain

Models dependent on technologies

Page 10: Domain driven design

What ıs DDD?How to Taming Complexity?

Page 11: Domain driven design

What ıs DDD?Modelling Domain

Publish News != Update News

UnPublish News != Remove News

Page 12: Domain driven design

What ıs DDD?Modelling Domain

Isolate business from technologies

Page 13: Domain driven design

What ıs DDD?How to Taming Complexity?

Classic Layered Architecture DDD Architecture

Focus on business

Page 14: Domain driven design

What ıs DDD?Modelling Domain

Use rich domain model

Page 15: Domain driven design

Busıness logıc layer patterns

Page 16: Domain driven design

BLL Patterns

Page 17: Domain driven design

BLL PatternsTransaction Script

Page 18: Domain driven design

BLL PatternsTable Module

Page 19: Domain driven design

BLL PatternsActive Record

Model, Persistence to Db, Business

All Together

Page 20: Domain driven design

BLL PatternsDomain Model

Focused on Core Business,

Persistence Ignored,

Model + Business

Page 21: Domain driven design

BLL Patterns

Page 22: Domain driven design

Ddd basıcs

Page 23: Domain driven design

DDD basıcsEntities

Objects that have a distinct identity

Page 24: Domain driven design

DDD basıcsValue Objects

An object that contains attributes but has no identity

Page 25: Domain driven design

DDD basıcsValue Objects

An object that contains attributes but has no identity

Page 26: Domain driven design

DDD basıcsBounded Context

Page 27: Domain driven design

DDD basıcsBounded Context

Page 28: Domain driven design

DDD basıcsBounded Context

Page 29: Domain driven design

DDD basıcsAggregates and Aggregate Root

Cluster of Entities and Value Objects

Page 30: Domain driven design

DDD basıcsDomain Services

Page 31: Domain driven design

DDD basıcsPersistence Ignorance

Page 32: Domain driven design

DDD basıcsRefactoring

One of the most important rules in DDD

Page 33: Domain driven design

DDD basıcsAnemic Domain Model vs Rich Domain Model

Page 34: Domain driven design

DDD basıcsAnemic Domain Model vs Rich Domain Model

Page 35: Domain driven design

Ddd patterns

Page 36: Domain driven design

DDD patternsWhen 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

Page 37: Domain driven design

DDD patternsRepository

Page 38: Domain driven design

DDD patternsFactory

Page 39: Domain driven design

DDD patternsStrategy

Page 40: Domain driven design

DDD patternsDependency Injection

Page 41: Domain driven design

DDD patternsCQRS - Command Query Responsibility Seperation

Page 42: Domain driven design

DDD patternsCQRS - Command Query Responsibility Seperation

Page 43: Domain driven design

DDD patternsEvent Sourcing

Page 44: Domain driven design

Related thıngs

Page 45: Domain driven design

Related thıngsClean Code

Page 46: Domain driven design

Related thıngsNoSql Technologies

DDD very suitable for NoSql

Page 47: Domain driven design

Related thıngsTDD - BDD

Page 48: Domain driven design

Related thıngsEvent Driven Architecture

Page 49: Domain driven design

Related thıngsMicroservice Architecture

Page 50: Domain driven design

For More Informations...Books

1- Eric Evans - Domain Driven Design2- Jimmy Nilsson - Applying Domain Driven Design And Patterns3- Vaugh Vernon - Implementing Domain Driven Design

Websites - Thinker

1- Martin Fowler - Blog2- Greg Young3- Jimmy Bogard4- http://dddcommunity.org/5- InfoQ6- Pluralsight

Page 51: Domain driven design

questıons

Page 52: Domain driven design

THANKS

Mustafa Dağdelen