Upcoming SlideShare
Loading in...5




Domain-Driven Design

Domain-Driven Design



Total Views
Views on SlideShare
Embed Views



0 Embeds 0

No embeds



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

DDD DDD Presentation Transcript

  • 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.