DDD (Domain-Driven Design) Flávio Silva
What is DDD?  <ul><li>DDD is a software development approach, acting like a conceptual framework that cares about issues b...
<ul><li>The central idea of the approach is to bring IT and business. </li></ul><ul><li>For that to happen it's essential ...
But what domain?  <ul><li>Software domain.  </li></ul>What is a software domain?  It is the purpose for which the software...
But what design?  <ul><li>Software design.  </li></ul>What is a model? A model is an abstraction. “ A model is a simplific...
<ul><li>“ A model is a selectively simplified and consciously structured form of knowledge. An appropriate model makes sen...
What is a domain model?  <ul><li>Is the model of the (software) domain. </li></ul><ul><li>The domain model should use the ...
What is the Ubiquitous Language?  <ul><li>Ubiquitous language comes from domain experts and serves to unify domain experts...
<ul><li>The model should reflect the ubiquitous language. </li></ul><ul><li>The code should reflect the model. </li></ul><...
<ul><li>“ The model-based language should be used among developers to describe not only artifacts in the system, but tasks...
<ul><li>DDD is about the heart of the software. </li></ul><ul><li>“ The heart of software is its ability to solve domain-r...
<ul><li>What others software approachs are good to work with DDD? </li></ul><ul><li>- Iterative software development </li>...
<ul><li>When domain experts works together with developers, the model becomes cleanly organized and abstracted, reflecting...
<ul><li>Model-Driven Design is the approach to design the software, that is driven by the models. </li></ul><ul><li>Model,...
Upcoming SlideShare
Loading in …5
×

DDD

965 views

Published on

Domain-Driven Design

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
965
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
19
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

DDD

  1. 1. DDD (Domain-Driven Design) Flávio Silva
  2. 2. What is DDD? <ul><li>DDD is a software development approach, acting like a conceptual framework that cares about issues both technical and business. </li></ul>
  3. 3. <ul><li>The central idea of the approach is to bring IT and business. </li></ul><ul><li>For that to happen it's essential that the domain expert (client) and development team are close, through various discussions and meetings. </li></ul><ul><li>It's best recommended to complex domains. </li></ul>
  4. 4. But what domain? <ul><li>Software domain. </li></ul>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. 5. But what design? <ul><li>Software design. </li></ul>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.&quot;
  6. 6. <ul><li>“ 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.” </li></ul><ul><li>“ The model focuses requirements analysis.” </li></ul><ul><li>“ ...the model is not the diagram. The diagram's purpose is to help communicate and explain the model.” </li></ul>
  7. 7. What is a domain model? <ul><li>Is the model of the (software) domain. </li></ul><ul><li>The domain model should use the ubiquitous language. </li></ul>
  8. 8. What is the Ubiquitous Language? <ul><li>Ubiquitous language comes from domain experts and serves to unify domain experts's jargons with developers's jargons (with respect to the domain model). </li></ul><ul><li>There should not be two words for the same thing. </li></ul>
  9. 9. <ul><li>The model should reflect the ubiquitous language. </li></ul><ul><li>The code should reflect the model. </li></ul><ul><li>The extent to which the language evolves and changes, model, code, classes and methods also change together. This leads to the practice of refactoring. </li></ul>
  10. 10. <ul><li>“ The model-based language should be used among developers to describe not only artifacts in the system, but tasks and functionality.” </li></ul><ul><li>“ Use the model as the backbone of a language.” </li></ul>
  11. 11. <ul><li>DDD is about the heart of the software. </li></ul><ul><li>“ 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.” </li></ul>
  12. 12. <ul><li>What others software approachs are good to work with DDD? </li></ul><ul><li>- Iterative software development </li></ul><ul><li>- Agile </li></ul><ul><li>- XP (Extreme Programming) </li></ul><ul><li>- Refactoring </li></ul>
  13. 13. <ul><li>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. </li></ul><ul><li>Domain expert usually is the client employee that knows how its business works. </li></ul><ul><li>Implementation and model evolves over time, and both must be synchronized to remain valuable. </li></ul>
  14. 14. <ul><li>Model-Driven Design is the approach to design the software, that is driven by the models. </li></ul><ul><li>Model, design and implementation are developed iteratively, and the evolution that each of these processes brings will change each others. </li></ul>

×