SlideShare a Scribd company logo
DDD (Domain-Driven Design) Flávio Silva
What is DDD?  DDD is a software development approach, acting like a conceptual framework that cares about issues both technical and business.
The central idea of the approach is to bring IT and business. For that to happen it's essential that the domain expert (client) and development team are close, through various discussions and meetings. It's best recommended to complex domains.
But what domain?  Software domain.  What is a software domain?  It is the purpose for which the software exists. The subject area to which the user applies the software.
But what design?  Software design.  What is a model? A model is an abstraction. “ A model is a simplification. It is an interpretation of reality that abstracts the aspects relevant to solving the problem at hand and ignores extraneous detail."
“ A model is a selectively simplified and consciously structured form of knowledge. An appropriate model makes sense of information and focuses it on a problem.” “ The model focuses requirements analysis.” “ ...the model is not the diagram. The diagram's purpose is to help communicate and explain the model.”
What is a domain model?  Is the model of the (software) domain. The domain model should use the ubiquitous language.
What is the Ubiquitous Language?  Ubiquitous language comes from domain experts and serves to unify domain experts's jargons with developers's jargons (with respect to the domain model). There should not be two words for the same thing.
The model should reflect the ubiquitous language. The code should reflect the model. The extent to which the language evolves and changes, model, code, classes and methods also change together. This leads to the practice of refactoring.
“ The model-based language should be used among developers to describe not only artifacts in the system, but tasks and functionality.” “ Use the model as the backbone of a language.”
DDD is about the heart of the software. “ The heart of software is its ability to solve domain-related problems for its user. All other features, vital though they may be, support this basic purpose.”
What others software approachs are good to work with DDD? - Iterative software development - Agile - XP (Extreme Programming) - Refactoring
When domain experts works together with developers, the model becomes cleanly organized and abstracted, reflecting deep knowledge of the business, where abstractions are true business principles. Domain expert usually is the client employee that knows how its business works. Implementation and model evolves over time, and both must be synchronized to remain valuable.
Model-Driven Design is the approach to design the software, that is driven by the models. Model, design and implementation are developed iteratively, and the evolution that each of these processes brings will change each others.

More Related Content

PPTX
DDD eXchange
PDF
Continuous Improvement of Conversational AI in Production | Rasa Summit
PDF
Delphi Developer- Amsterdam
PDF
How Our Team Uses Rasa to Learn from Real Conversations | Rasa Summit
PDF
Rasa Developer Summit - Bing Liu - Interactive Learning of Task-Oriented Dial...
PDF
The beginning
PDF
Workshop DDD
PDF
Doge-driven design
DDD eXchange
Continuous Improvement of Conversational AI in Production | Rasa Summit
Delphi Developer- Amsterdam
How Our Team Uses Rasa to Learn from Real Conversations | Rasa Summit
Rasa Developer Summit - Bing Liu - Interactive Learning of Task-Oriented Dial...
The beginning
Workshop DDD
Doge-driven design

Similar to DDD (20)

PDF
Domain Drive Design: A Very Short Introduction for Business People
PDF
Domain-Driven Design (Artur Trosin Product Stream)
PDF
D2 domain driven-design
PDF
Code & Cannoli - Domain Driven Design
PDF
Clean architecture with ddd layering in php
PDF
Domain Driven Design
PPTX
Up to speed in domain driven design
PPTX
Finding balance of DDD while your application grows
PDF
Introduction to Domain driven design
PDF
Introduction to Domain-Driven Design
PDF
DevDay2017 ESGI Essential DDD
PPTX
شرح Domain Driven Design بالعربي
PPTX
Domain Driven Design
PDF
Domain driven design and model driven development
PPT
Domain Driven Design (DDD)
PPS
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
PDF
SOAT Agile Day 2017 DDD
PPTX
DDD In Agile
PPTX
Domain Driven Design
PDF
Domain-Driven Design
Domain Drive Design: A Very Short Introduction for Business People
Domain-Driven Design (Artur Trosin Product Stream)
D2 domain driven-design
Code & Cannoli - Domain Driven Design
Clean architecture with ddd layering in php
Domain Driven Design
Up to speed in domain driven design
Finding balance of DDD while your application grows
Introduction to Domain driven design
Introduction to Domain-Driven Design
DevDay2017 ESGI Essential DDD
شرح Domain Driven Design بالعربي
Domain Driven Design
Domain driven design and model driven development
Domain Driven Design (DDD)
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
SOAT Agile Day 2017 DDD
DDD In Agile
Domain Driven Design
Domain-Driven Design
Ad

Recently uploaded (20)

PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Machine learning based COVID-19 study performance prediction
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPT
Teaching material agriculture food technology
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
KodekX | Application Modernization Development
PPTX
Cloud computing and distributed systems.
PDF
Modernizing your data center with Dell and AMD
PPTX
A Presentation on Artificial Intelligence
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Electronic commerce courselecture one. Pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Machine learning based COVID-19 study performance prediction
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Teaching material agriculture food technology
CIFDAQ's Market Insight: SEC Turns Pro Crypto
KodekX | Application Modernization Development
Cloud computing and distributed systems.
Modernizing your data center with Dell and AMD
A Presentation on Artificial Intelligence
Advanced methodologies resolving dimensionality complications for autism neur...
Encapsulation_ Review paper, used for researhc scholars
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Chapter 3 Spatial Domain Image Processing.pdf
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Understanding_Digital_Forensics_Presentation.pptx
Electronic commerce courselecture one. Pdf
NewMind AI Weekly Chronicles - August'25 Week I
Per capita expenditure prediction using model stacking based on satellite ima...
Ad

DDD

  • 2. What is DDD? DDD is a software development approach, acting like a conceptual framework that cares about issues both technical and business.
  • 3. The central idea of the approach is to bring IT and business. For that to happen it's essential that the domain expert (client) and development team are close, through various discussions and meetings. It's best recommended to complex domains.
  • 4. But what domain? Software domain. What is a software domain? It is the purpose for which the software exists. The subject area to which the user applies the software.
  • 5. But what design? Software design. What is a model? A model is an abstraction. “ A model is a simplification. It is an interpretation of reality that abstracts the aspects relevant to solving the problem at hand and ignores extraneous detail."
  • 6. “ A model is a selectively simplified and consciously structured form of knowledge. An appropriate model makes sense of information and focuses it on a problem.” “ The model focuses requirements analysis.” “ ...the model is not the diagram. The diagram's purpose is to help communicate and explain the model.”
  • 7. What is a domain model? Is the model of the (software) domain. The domain model should use the ubiquitous language.
  • 8. What is the Ubiquitous Language? Ubiquitous language comes from domain experts and serves to unify domain experts's jargons with developers's jargons (with respect to the domain model). There should not be two words for the same thing.
  • 9. The model should reflect the ubiquitous language. The code should reflect the model. The extent to which the language evolves and changes, model, code, classes and methods also change together. This leads to the practice of refactoring.
  • 10. “ The model-based language should be used among developers to describe not only artifacts in the system, but tasks and functionality.” “ Use the model as the backbone of a language.”
  • 11. DDD is about the heart of the software. “ The heart of software is its ability to solve domain-related problems for its user. All other features, vital though they may be, support this basic purpose.”
  • 12. What others software approachs are good to work with DDD? - Iterative software development - Agile - XP (Extreme Programming) - Refactoring
  • 13. When domain experts works together with developers, the model becomes cleanly organized and abstracted, reflecting deep knowledge of the business, where abstractions are true business principles. Domain expert usually is the client employee that knows how its business works. Implementation and model evolves over time, and both must be synchronized to remain valuable.
  • 14. Model-Driven Design is the approach to design the software, that is driven by the models. Model, design and implementation are developed iteratively, and the evolution that each of these processes brings will change each others.