SlideShare a Scribd company logo
Domain Driven Design and Model
     Driven Development
   Geyzersky Dmitry
   IT Architect, Co-Owner of PerformIT
   dima@performit.co.il
   http://www.performit.co.il
“Any fool can write code that a
computer can understand. Good
programmers write code that
humans can understand.“

                      Martin Fowler
Session Objectives and Agenda

• Introduction to Ontology.
• From the Ontology to Domain Driven
  Design.
• DDD Building Blocks.
• Modeling Techniques.
Ontology

• In philosophy ontology is the theory of
  the nature of existence.

• In the context of information science it is
  the study of entities and their relations.

• It is about modeling a domain of
  knowledge by using high level of
  abstraction.
Domain driven design and model driven development
Ontology and Semantic Technologies
Domain Driven Design

• Model driven software design approach
  used to tackle complexity of software
  projects.

• DDD focuses on the domain
  logic.

• The term was coined by
  Eric Evans in his book.
“Strategy is doing the right things,
 tactics is doing things right.“

                Peter Ferdinand Drucker
Ubiquitous Language
• Learn and talk the language of the domain
  experts.

• The language evolves with the domain model
  and enables to describe the characteristics of
  the domain with increased precision.

• Change in the language = change in the
  model and vice versa.

• Knowledge crunching.
Creating Ubiquitous Language
Domain Model
• Model is the backbone of Domain Driven
  Design.

• Model forms ubiquitous language.

• Perfect tool for communication between
  domain experts and developers.

• Explains complex domain in a simple way.

• Model and Code are bound.
Layering
DDD Building Blocks


    Domain Model
Entities

Objects having a unique identity throughout
the states of the software.
Entities

We compare entities by their IDs.
Value Objects

• Objects describing certain aspects of the
  domain which don’t have identity and
  lifecycle.
• Immutable - if you need to change the
  object, just create a new one.
Value Objects

• We compare Value Types by comparing their
  properties one-by-one.
Repositories
• A Repository encapsulates domain objects
  persistence and retrieval.

• Clean separation and one-way dependency
  between the domain and data mapping
  layers.

• Usually implemented with Object Relational
  Mapping (ORM) techniques.

• May encapsulate different fetching strategies,
  distributed caching, NoSQL and etc.
Services

• Define an application's boundary.
• Services usually manipulate Entities
  and Value Objects.
• A service typically implements a
  business rule, generally something
  that software must do.
Aggregates
• Each Aggregate has one Root Entity.

• The root identity is global, the identities

 of entities inside are local.

• External objects may have references

 only to root.

• Internal objects cannot be changed

 outside the Aggregate.
Factories
• A program elements whose responsibility is
  the creation of other objects.

• Create and manage complex domain
  objects.

• Especially useful for creating aggregates
  when atomicity is required.
Domain Events
Represent the states of Entities
DDD Challenges
• The model must reflect code changes and
  vice versa.
• The amount of boilerplate code must be as
  minimal as possible.
• The main focus is on the business domain
  and not the infrastructure.
• Minimum friction with technology.
• Continuous integration, testing and
  refactory.
• As much automation as possible.
Code Generation Techniques
•   NHibernate with NVelocity (.Net).
•   Xtext with Xtend (Java, Eclipse).
•   Protege (Java).
•   Enterprise Architect (any language).
•   MS Entity Framework (.Net) with T4.
•   UML (any language).
•   Spring Data (Java, Neo4J) and etc.
References

• Domain-Driven Design: Tackling
  Complexity in the Heart of Software (by
  Eric Evans).
• http://nhforge.org/blogs/nhibernate.
• http://www.springsource.org/spring-data.
• http://www.eclipse.org/xtend/.
• A Legal Case OWL Ontology with an
  Instantiation of Popov v. Hayashi
  Adam Wyner and Rinke Hoekstra,
  Knowledge Engineering Review.
For more information:
   dima@performit.co.il
            or
http://www.performit.co.il

More Related Content

What's hot (20)

PPTX
Domain Driven Design: Zero to Hero
Fabrício Rissetto
 
PPTX
Applying Domain-Driven Design to craft Rich Domain Models
Alexander van Trijffel
 
PPTX
Domain Driven Design(DDD) Presentation
Oğuzhan Soykan
 
PPTX
Domain driven design
Amit Mukherjee
 
PPTX
Domain Driven Design 101
Richard Dingwall
 
PPTX
Domain Driven Design Quickly
Mariam Hakobyan
 
PDF
Domain Driven Design (Ultra) Distilled
Nicola Costantino
 
PPTX
Domain-Driven Design
Andriy Buday
 
PDF
Domain Driven Design
Young-Ho Cho
 
PPTX
How to Implement Domain Driven Design in Real Life SDLC
Abdul Karim
 
PPTX
Domain driven design
Mustafa Dağdelen
 
PPSX
Domain Driven Design
Araf Karsh Hamid
 
PPTX
Domain Driven Design
Araf Karsh Hamid
 
PPTX
Brownfield Domain Driven Design
Nicolò Pignatelli
 
PPT
Domain Driven Design Demonstrated
Alan Christensen
 
PDF
Hexagonal architecture for java applications
Fabricio Epaminondas
 
PDF
Clean Architecture
Flavius Stef
 
PDF
Hexagonal architecture: how, why and when
Xoubaman
 
PPTX
Implementing DDD with C#
Pascal Laurin
 
PDF
Strategic Domain-Driven Design by Nick Tune at #AgileIndia2019
Agile India
 
Domain Driven Design: Zero to Hero
Fabrício Rissetto
 
Applying Domain-Driven Design to craft Rich Domain Models
Alexander van Trijffel
 
Domain Driven Design(DDD) Presentation
Oğuzhan Soykan
 
Domain driven design
Amit Mukherjee
 
Domain Driven Design 101
Richard Dingwall
 
Domain Driven Design Quickly
Mariam Hakobyan
 
Domain Driven Design (Ultra) Distilled
Nicola Costantino
 
Domain-Driven Design
Andriy Buday
 
Domain Driven Design
Young-Ho Cho
 
How to Implement Domain Driven Design in Real Life SDLC
Abdul Karim
 
Domain driven design
Mustafa Dağdelen
 
Domain Driven Design
Araf Karsh Hamid
 
Domain Driven Design
Araf Karsh Hamid
 
Brownfield Domain Driven Design
Nicolò Pignatelli
 
Domain Driven Design Demonstrated
Alan Christensen
 
Hexagonal architecture for java applications
Fabricio Epaminondas
 
Clean Architecture
Flavius Stef
 
Hexagonal architecture: how, why and when
Xoubaman
 
Implementing DDD with C#
Pascal Laurin
 
Strategic Domain-Driven Design by Nick Tune at #AgileIndia2019
Agile India
 

Viewers also liked (16)

PDF
Wikimedia Content API (Strangeloop)
Eric Evans
 
PDF
Domain Driven Design
Nikolay Vasilev
 
PDF
DDD - Domain Driven Design - TYPO3camp Stuttgart 2011
die.agilen GmbH
 
PDF
Database Camp 2016 @ United Nations, NYC - Brad Bebee, CEO, Blazegraph
✔ Eric David Benari, PMP
 
PDF
Database Camp 2016 @ United Nations, NYC - Minerva Tantoco, CTO of the City o...
✔ Eric David Benari, PMP
 
PDF
Database Camp 2016 @ United Nations, NYC - Bob Wiederhold, CEO, Couchbase
✔ Eric David Benari, PMP
 
PDF
MariaDB 10.2 & MariaDB 10.1 by Michael Monty Widenius at Database Camp 2016 @ UN
✔ Eric David Benari, PMP
 
PDF
Database Camp 2016 @ United Nations, NYC - Michael Glukhovsky, Co-Founder, Re...
✔ Eric David Benari, PMP
 
PPTX
Domain Driven Design in the Browser - Cameron Edwards
Hakka Labs
 
PPTX
Database Camp 2016 @ United Nations, NYC - Javier de la Torre, CEO, CARTO
✔ Eric David Benari, PMP
 
PPTX
Database Camp 2016 @ United Nations, NYC - Amir Orad, CEO, Sisense
✔ Eric David Benari, PMP
 
PPTX
领域驱动设计与模型驱动开发
Weijun Zhong
 
PDF
Domain-Driven Design with ASP.NET MVC
Steven Smith
 
PDF
The Holy Grail of Data Analytics
Dan Lynn
 
PPT
Principles of Managerial Finance
Maged Elsakka
 
PPTX
Domain Driven Design using Laravel
wajrcs
 
Wikimedia Content API (Strangeloop)
Eric Evans
 
Domain Driven Design
Nikolay Vasilev
 
DDD - Domain Driven Design - TYPO3camp Stuttgart 2011
die.agilen GmbH
 
Database Camp 2016 @ United Nations, NYC - Brad Bebee, CEO, Blazegraph
✔ Eric David Benari, PMP
 
Database Camp 2016 @ United Nations, NYC - Minerva Tantoco, CTO of the City o...
✔ Eric David Benari, PMP
 
Database Camp 2016 @ United Nations, NYC - Bob Wiederhold, CEO, Couchbase
✔ Eric David Benari, PMP
 
MariaDB 10.2 & MariaDB 10.1 by Michael Monty Widenius at Database Camp 2016 @ UN
✔ Eric David Benari, PMP
 
Database Camp 2016 @ United Nations, NYC - Michael Glukhovsky, Co-Founder, Re...
✔ Eric David Benari, PMP
 
Domain Driven Design in the Browser - Cameron Edwards
Hakka Labs
 
Database Camp 2016 @ United Nations, NYC - Javier de la Torre, CEO, CARTO
✔ Eric David Benari, PMP
 
Database Camp 2016 @ United Nations, NYC - Amir Orad, CEO, Sisense
✔ Eric David Benari, PMP
 
领域驱动设计与模型驱动开发
Weijun Zhong
 
Domain-Driven Design with ASP.NET MVC
Steven Smith
 
The Holy Grail of Data Analytics
Dan Lynn
 
Principles of Managerial Finance
Maged Elsakka
 
Domain Driven Design using Laravel
wajrcs
 
Ad

Similar to Domain driven design and model driven development (20)

PDF
Domain-Driven Design
Geeks Anonymes
 
PDF
Introduction to Domain driven design
Muhammad Ali
 
PDF
D2 domain driven-design
Arnaud Bouchez
 
PPTX
Domain Driven Design
Muhammad Ali
 
PPTX
Domain Driven Design
Up2 Technology
 
PDF
Clean architecture with ddd layering in php
Leonardo Proietti
 
PDF
Domain Driven Design
Mojammel Haque
 
PDF
Domain driven design: a gentle introduction
Asher Sterkin
 
PPTX
Schibsted Spain - Day 1 - DDD Course
Kevin Mas Ruiz
 
PDF
Domain Driven Design
Harsh Jegadeesan
 
PDF
2011-05-22 Domain Driven Design
Ismael Fofonka dos Santos
 
PDF
2011-05-22 Domain Driven Design
Ismael Santos
 
PPTX
Domain Driven Design
Lalit Kale
 
PDF
Domaine Driven Design - Bordeaux IO
Publicis Sapient Engineering
 
PDF
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Enea Gabriel
 
PPTX
Software Development: Beyond Training wheels
Naveenkumar Muguda
 
PDF
Domain Driven Design - Building Blocks
Mark Windholtz
 
PPTX
Up to speed in domain driven design
Rick van der Arend
 
PPTX
Domain driven design
prajeeshprathap
 
PPTX
Intro to Domain Driven Design
Yaniv Preiss
 
Domain-Driven Design
Geeks Anonymes
 
Introduction to Domain driven design
Muhammad Ali
 
D2 domain driven-design
Arnaud Bouchez
 
Domain Driven Design
Muhammad Ali
 
Domain Driven Design
Up2 Technology
 
Clean architecture with ddd layering in php
Leonardo Proietti
 
Domain Driven Design
Mojammel Haque
 
Domain driven design: a gentle introduction
Asher Sterkin
 
Schibsted Spain - Day 1 - DDD Course
Kevin Mas Ruiz
 
Domain Driven Design
Harsh Jegadeesan
 
2011-05-22 Domain Driven Design
Ismael Fofonka dos Santos
 
2011-05-22 Domain Driven Design
Ismael Santos
 
Domain Driven Design
Lalit Kale
 
Domaine Driven Design - Bordeaux IO
Publicis Sapient Engineering
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Enea Gabriel
 
Software Development: Beyond Training wheels
Naveenkumar Muguda
 
Domain Driven Design - Building Blocks
Mark Windholtz
 
Up to speed in domain driven design
Rick van der Arend
 
Domain driven design
prajeeshprathap
 
Intro to Domain Driven Design
Yaniv Preiss
 
Ad

Recently uploaded (20)

PDF
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PPTX
Digital Circuits, important subject in CS
contactparinay1
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
Digital Circuits, important subject in CS
contactparinay1
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 

Domain driven design and model driven development

  • 1. Domain Driven Design and Model Driven Development Geyzersky Dmitry IT Architect, Co-Owner of PerformIT [email protected] http://www.performit.co.il
  • 2. “Any fool can write code that a computer can understand. Good programmers write code that humans can understand.“ Martin Fowler
  • 3. Session Objectives and Agenda • Introduction to Ontology. • From the Ontology to Domain Driven Design. • DDD Building Blocks. • Modeling Techniques.
  • 4. Ontology • In philosophy ontology is the theory of the nature of existence. • In the context of information science it is the study of entities and their relations. • It is about modeling a domain of knowledge by using high level of abstraction.
  • 6. Ontology and Semantic Technologies
  • 7. Domain Driven Design • Model driven software design approach used to tackle complexity of software projects. • DDD focuses on the domain logic. • The term was coined by Eric Evans in his book.
  • 8. “Strategy is doing the right things, tactics is doing things right.“ Peter Ferdinand Drucker
  • 9. Ubiquitous Language • Learn and talk the language of the domain experts. • The language evolves with the domain model and enables to describe the characteristics of the domain with increased precision. • Change in the language = change in the model and vice versa. • Knowledge crunching.
  • 11. Domain Model • Model is the backbone of Domain Driven Design. • Model forms ubiquitous language. • Perfect tool for communication between domain experts and developers. • Explains complex domain in a simple way. • Model and Code are bound.
  • 13. DDD Building Blocks Domain Model
  • 14. Entities Objects having a unique identity throughout the states of the software.
  • 16. Value Objects • Objects describing certain aspects of the domain which don’t have identity and lifecycle. • Immutable - if you need to change the object, just create a new one.
  • 17. Value Objects • We compare Value Types by comparing their properties one-by-one.
  • 18. Repositories • A Repository encapsulates domain objects persistence and retrieval. • Clean separation and one-way dependency between the domain and data mapping layers. • Usually implemented with Object Relational Mapping (ORM) techniques. • May encapsulate different fetching strategies, distributed caching, NoSQL and etc.
  • 19. Services • Define an application's boundary. • Services usually manipulate Entities and Value Objects. • A service typically implements a business rule, generally something that software must do.
  • 20. Aggregates • Each Aggregate has one Root Entity. • The root identity is global, the identities of entities inside are local. • External objects may have references only to root. • Internal objects cannot be changed outside the Aggregate.
  • 21. Factories • A program elements whose responsibility is the creation of other objects. • Create and manage complex domain objects. • Especially useful for creating aggregates when atomicity is required.
  • 22. Domain Events Represent the states of Entities
  • 23. DDD Challenges • The model must reflect code changes and vice versa. • The amount of boilerplate code must be as minimal as possible. • The main focus is on the business domain and not the infrastructure. • Minimum friction with technology. • Continuous integration, testing and refactory. • As much automation as possible.
  • 24. Code Generation Techniques • NHibernate with NVelocity (.Net). • Xtext with Xtend (Java, Eclipse). • Protege (Java). • Enterprise Architect (any language). • MS Entity Framework (.Net) with T4. • UML (any language). • Spring Data (Java, Neo4J) and etc.
  • 25. References • Domain-Driven Design: Tackling Complexity in the Heart of Software (by Eric Evans). • http://nhforge.org/blogs/nhibernate. • http://www.springsource.org/spring-data. • http://www.eclipse.org/xtend/. • A Legal Case OWL Ontology with an Instantiation of Popov v. Hayashi Adam Wyner and Rinke Hoekstra, Knowledge Engineering Review.
  • 26. For more information: [email protected] or http://www.performit.co.il