SlideShare uma empresa Scribd logo
1 de 66
Strategischer Anwendungsentwurf mit


     Domain-Driven Design

                presented by Dennis Traub
                     .NET Usergroup Zentralschweiz - 18. März 2013




Dennis Traub – Software Development Consultancy             @dtraub – mail@dennistraub.de
Now, who‘s that guy?

          Dennis Traub
          Founder, Owner, CEO, Single Employee of
          D. Traub Software Development Consultancy




             Consultant, developer, trainer, speaker


             39 years old


             Married, father of one


             20+ years in software development


             Hire me at mail@dennistraub.de




               @dtraub




Dennis Traub – Software Development Consultancy        @dtraub – mail@dennistraub.de
AGENDA


The Blue Book                                  An Example               Break     Tactical Patterns
   Actually it should                           Bounded Contexts                          A short review of
     be two books!                               and Subdomains                          the Building Blocks


         1                      2                     3                   4                    5                     6
                        Terminology                                  Lasagna                                        End
                         of Strategic Design                       … the new Spaghetti                         Questions & Answers




Dennis Traub – Software Development Consultancy                                                @dtraub – mail@dennistraub.de
AGENDA


The Blue Book                                  An Example                         Tactical Patterns
   Actually it should                           Bounded Contexts                          A short review of
     be two books!                               and Subdomains                          the Building Blocks


         1                      2                     3                   4                    5                     6
                        Terminology                                  Lasagna                                        End
                         of Strategic Design                       … the new Spaghetti                         Questions & Answers




Dennis Traub – Software Development Consultancy                                                @dtraub – mail@dennistraub.de
The „Blue Book“ by Eric Evans




                                          Image Placeholder




Dennis Traub – Software Development Consultancy               @dtraub – mail@dennistraub.de
The „Blue Book“ by Eric Evans


                                              •   Entities
                                              •   Value Objects
                       Tactical               •   Aggregates
                        Class                 •   Repositories
                       Design                 •   Services
                                              •   Factories
                                              •   etc.



          It should be two books!
                                              •   Model Integrity
                                              •   Large-Scale Structure
                                              •   Bounded Contexts
                      Strategic               •   Core Domain
                        DDD                   •   Context Maps
                                              •   Ubiquitous Language
                                              •   etc.




Dennis Traub – Software Development Consultancy                           @dtraub – mail@dennistraub.de
AGENDA


The Blue Book                                  An Example                         Tactical Patterns
   Actually it should                           Bounded Contexts                          A short review of
     be two books!                               and Subdomains                          the Building Blocks


         1                      2                     3                   4                    5                     6
                        Terminology                                  Lasagna                                        End
                         of Strategic Design                       … the new Spaghetti                         Questions & Answers




Dennis Traub – Software Development Consultancy                                                @dtraub – mail@dennistraub.de
Domain




Dennis Traub – Software Development Consultancy   @dtraub – mail@dennistraub.de
Domain




                                            a sphere of
               knowledge, influence, or activity




Dennis Traub – Software Development Consultancy           @dtraub – mail@dennistraub.de
Domain




                            what an organization does
                            and the world it does it in




Dennis Traub – Software Development Consultancy       @dtraub – mail@dennistraub.de
Domain Model




Dennis Traub – Software Development Consultancy   @dtraub – mail@dennistraub.de
Domain Model




               a system of abstractions that describes
                          selected aspects of a domain




Dennis Traub – Software Development Consultancy     @dtraub – mail@dennistraub.de
Domain Model




                     can be used to solve problems
                             related to that domain




Dennis Traub – Software Development Consultancy   @dtraub – mail@dennistraub.de
don‘t model reality




Dennis Traub – Software Development Consultancy           @dtraub – mail@dennistraub.de
we model useful                       abstractions of reality




Dennis Traub – Software Development Consultancy                 @dtraub – mail@dennistraub.de
Ubiquitous Language




Dennis Traub – Software Development Consultancy   @dtraub – mail@dennistraub.de
Ubiquitous Language




                        a language structured around
                                   the domain model




Dennis Traub – Software Development Consultancy       @dtraub – mail@dennistraub.de
Ubiquitous Language




                        used by all          team members




Dennis Traub – Software Development Consultancy        @dtraub – mail@dennistraub.de
Bounded Context




Dennis Traub – Software Development Consultancy   @dtraub – mail@dennistraub.de
Bounded Context




                         an explicit boundary within which
                            a domain              model exists




Dennis Traub – Software Development Consultancy              @dtraub – mail@dennistraub.de
Bounded Context




                                    inside the boundary
                all terms have specific meaning




Dennis Traub – Software Development Consultancy           @dtraub – mail@dennistraub.de
Bounded Context




                       these terms are part of the context‘s
                           ubiquitous language




Dennis Traub – Software Development Consultancy         @dtraub – mail@dennistraub.de
Subdomains




Dennis Traub – Software Development Consultancy   @dtraub – mail@dennistraub.de
Subdomains




                   the whole domain of the organization
                   is comprised                   of subdomains




Dennis Traub – Software Development Consultancy            @dtraub – mail@dennistraub.de
Subdomains




                                they focus on only one
           specific area of the whole business domain




Dennis Traub – Software Development Consultancy          @dtraub – mail@dennistraub.de
Core Domain




Dennis Traub – Software Development Consultancy   @dtraub – mail@dennistraub.de
Core Domain




                    the distinctive        part of the model,
                           central to the users‘ goals




Dennis Traub – Software Development Consultancy        @dtraub – mail@dennistraub.de
Core Domain




                          differentiates the application and
                               makes it valuable




Dennis Traub – Software Development Consultancy          @dtraub – mail@dennistraub.de
Core Domain




                    the most             important subdomain




Dennis Traub – Software Development Consultancy         @dtraub – mail@dennistraub.de
AGENDA


The Blue Book                                  An Example                         Tactical Patterns
   Actually it should                           Bounded Contexts                          A short review of
     be two books!                               and Subdomains                          the Building Blocks


         1                      2                     3                   4                    5                     6
                        Terminology                                  Lasagna                                        End
                         of Strategic Design                       … the new Spaghetti                         Questions & Answers




Dennis Traub – Software Development Consultancy                                                @dtraub – mail@dennistraub.de
Our Domain:




Dennis Traub – Software Development Consultancy   @dtraub – mail@dennistraub.de
Aviation




Dennis Traub – Software Development Consultancy    @dtraub – mail@dennistraub.de
Our Application:




Dennis Traub – Software Development Consultancy   @dtraub – mail@dennistraub.de
Ambulance Flight Management




Dennis Traub – Software Development Consultancy   @dtraub – mail@dennistraub.de
Ambulance Flight Management
                             order flights from an operator
                                   dispatch patients
                                 assign medical staff




Dennis Traub – Software Development Consultancy           @dtraub – mail@dennistraub.de
Bounded Contexts



             1    Patiententransport-Disposition


             2    Flugplanung und -durchführung


             3    Personaleinsatzplanung (Flugärzte, Rettungsassistenten)


             4    Patientendaten, Abrechnung, Buchhaltung


             5    SOAP- oder REST-Services, Web-Oberfläche




Dennis Traub – Software Development Consultancy                 @dtraub – mail@dennistraub.de
Subdomains



             1    Ambulanzflug-Disposition        6   Bodentransport

             2    Flotten-Management              7   Abrechnung, Buchhaltung

             3    Flugplanung                     8   Anwendungsoberfläche

             4    Passagier-/Patientendaten       9   SOAP-/REST-Schnittstelle

             5    Medizinisches Personal          10 Benutzer- und Zugriffssteuerung




Dennis Traub – Software Development Consultancy                  @dtraub – mail@dennistraub.de
don‘t build a model that
                                works for everyone




Dennis Traub – Software Development Consultancy            @dtraub – mail@dennistraub.de
to focus our effort and resources we ask
                  two questions for each subdomain




Dennis Traub – Software Development Consultancy       @dtraub – mail@dennistraub.de
1
                                  how complex is it?




Dennis Traub – Software Development Consultancy        @dtraub – mail@dennistraub.de
2
                 what‘s the value to our specific problem?
                          (if we model it ourselves)




Dennis Traub – Software Development Consultancy       @dtraub – mail@dennistraub.de
1. Complexity (S/M/H)



             1    Ambulanzflug-Disposition        6   Bodentransport

             2    Flotten-Management              7   Abrechnung, Buchhaltung

             3    Flugplanung                     8   Anwendungsoberfläche

             4    Passagier-/Patientendaten       9   SOAP-/REST-Schnittstelle

             5    Medizinisches Personal          10 Benutzer- und Zugriffssteuerung




Dennis Traub – Software Development Consultancy                  @dtraub – mail@dennistraub.de
2. Value (S/M/H)



             1    Ambulanzflug-Disposition        6   Bodentransport

             2    Flotten-Management              7   Abrechnung, Buchhaltung

             3    Flugplanung                     8   Anwendungsoberfläche

             4    Passagier-/Patientendaten       9   SOAP-/REST-Schnittstelle

             5    Medizinisches Personal          10 Benutzer- und Zugriffssteuerung




Dennis Traub – Software Development Consultancy                  @dtraub – mail@dennistraub.de
the tactical Building Blocks
                                    we don‘t use DDD
                             when there is no     value in
                             formalizing the problem




Dennis Traub – Software Development Consultancy           @dtraub – mail@dennistraub.de
we only use DDD in parts
                            where we get a competitive
                                        advantage




Dennis Traub – Software Development Consultancy     @dtraub – mail@dennistraub.de
15 minutes




                                             BREAK




Dennis Traub – Software Development Consultancy                   @dtraub – mail@dennistraub.de
AGENDA


The Blue Book                                  An Example                         Tactical Patterns
   Actually it should                           Bounded Contexts                          A short review of
     be two books!                               and Subdomains                          the Building Blocks


         1                      2                     3                   4                    5                     6
                        Terminology                                  Lasagna                                        End
                         of Strategic Design                       … the new Spaghetti                         Questions & Answers




Dennis Traub – Software Development Consultancy                                                @dtraub – mail@dennistraub.de
Presentation Layer
                 Common Services




                                                                          Infrastructure
                                        Application Services


                                   Domain / Business Model / BLL


                                         DAL / O/R-Mapper




Dennis Traub – Software Development Consultancy                @dtraub – mail@dennistraub.de
Ports & Adapters
             Hexagonal Architecture
               Onion Architecture



Dennis Traub – Software Development Consultancy   @dtraub – mail@dennistraub.de
Dependency Inversion Principle (just in case)




                                     the D in SOLID




Dennis Traub – Software Development Consultancy                                        @dtraub – mail@dennistraub.de
AGENDA


The Blue Book                                  An Example                         Tactical Patterns
   Actually it should                           Bounded Contexts                          A short review of
     be two books!                               and Subdomains                          the Building Blocks


         1                      2                     3                   4                    5                     6
                        Terminology                                  Lasagna                                        End
                         of Strategic Design                       … the new Spaghetti                         Questions & Answers




Dennis Traub – Software Development Consultancy                                                @dtraub – mail@dennistraub.de
Entity




Dennis Traub – Software Development Consultancy      @dtraub – mail@dennistraub.de
Entity




                                              an object
                     primarily defined by its identity




Dennis Traub – Software Development Consultancy           @dtraub – mail@dennistraub.de
Entity




                              has a life
                                  cycle that can
                   radically change its form and content




Dennis Traub – Software Development Consultancy   @dtraub – mail@dennistraub.de
Value Object




Dennis Traub – Software Development Consultancy   @dtraub – mail@dennistraub.de
Value Object




                               an object that represents a
                  descriptive aspect of the domain




Dennis Traub – Software Development Consultancy              @dtraub – mail@dennistraub.de
Value Object




                            doesn‘t have a distinct identity
                               treated as immutable




Dennis Traub – Software Development Consultancy            @dtraub – mail@dennistraub.de
Aggregate




Dennis Traub – Software Development Consultancy   @dtraub – mail@dennistraub.de
Aggregate




                         a cluster of associated objects




Dennis Traub – Software Development Consultancy      @dtraub – mail@dennistraub.de
Aggregate




                                      treated as a unit
                     for the purpose of data        changes




Dennis Traub – Software Development Consultancy           @dtraub – mail@dennistraub.de
Aggregate




                  a set of consistency rules applies
                      within the aggregate‘s boundaries




Dennis Traub – Software Development Consultancy   @dtraub – mail@dennistraub.de
Aggregate




                           enforces its own invariants and
                        is always                 in a valid state




Dennis Traub – Software Development Consultancy                @dtraub – mail@dennistraub.de
AGENDA


The Blue Book                                  An Example                         Tactical Patterns
   Actually it should                           Bounded Contexts                          A short review of
     be two books!                               and Subdomains                          the Building Blocks


         1                      2                     3                   4                    5                     6
                        Terminology                                  Lasagna                                        End
                         of Strategic Design                       … the new Spaghetti                         Questions & Answers




Dennis Traub – Software Development Consultancy                                                @dtraub – mail@dennistraub.de
To summarize: DDD is basically the application
         of the SOLID            principles of object-orientation
                            on an architectural level




Dennis Traub – Software Development Consultancy       @dtraub – mail@dennistraub.de
?

                                        QUESTIONS



Dennis Traub – Software Development Consultancy       @dtraub – mail@dennistraub.de
THANK YOU!
                                         follow me: @dtraub




Dennis Traub – Software Development Consultancy               @dtraub – mail@dennistraub.de

Mais conteúdo relacionado

Semelhante a Strategischer Anwendungsentwurf mit Domain-Driven Design

Domain driven design in a nutshell
Domain driven design in a nutshellDomain driven design in a nutshell
Domain driven design in a nutshell
Toni Esteves
 
Software Development in 21st Century
Software Development in 21st CenturySoftware Development in 21st Century
Software Development in 21st Century
Henry Jacob
 
Os Alrubaie Ruby
Os Alrubaie RubyOs Alrubaie Ruby
Os Alrubaie Ruby
oscon2007
 

Semelhante a Strategischer Anwendungsentwurf mit Domain-Driven Design (20)

How to Implement Domain Driven Design in Real Life SDLC
How to Implement Domain Driven Design  in Real Life SDLCHow to Implement Domain Driven Design  in Real Life SDLC
How to Implement Domain Driven Design in Real Life SDLC
 
Up to speed in domain driven design
Up to speed in domain driven designUp to speed in domain driven design
Up to speed in domain driven design
 
DDD knowledge sharing
DDD knowledge sharingDDD knowledge sharing
DDD knowledge sharing
 
DDD
DDDDDD
DDD
 
Domain driven design in a nutshell
Domain driven design in a nutshellDomain driven design in a nutshell
Domain driven design in a nutshell
 
Three's a Party: How Trifectas Help Product, Engineering, and Design Work Tog...
Three's a Party: How Trifectas Help Product, Engineering, and Design Work Tog...Three's a Party: How Trifectas Help Product, Engineering, and Design Work Tog...
Three's a Party: How Trifectas Help Product, Engineering, and Design Work Tog...
 
Managing a Project the Drupal Way - Drupal Open Days Ireland
Managing a Project the Drupal Way - Drupal Open Days IrelandManaging a Project the Drupal Way - Drupal Open Days Ireland
Managing a Project the Drupal Way - Drupal Open Days Ireland
 
Soliworks presentation
Soliworks presentationSoliworks presentation
Soliworks presentation
 
DDD for POs
DDD for POsDDD for POs
DDD for POs
 
Code & Cannoli - Domain Driven Design
Code & Cannoli - Domain Driven DesignCode & Cannoli - Domain Driven Design
Code & Cannoli - Domain Driven Design
 
Let's go to the whiteboard: how and why software developers use drawings
Let's go to the whiteboard: how and why software developers use drawingsLet's go to the whiteboard: how and why software developers use drawings
Let's go to the whiteboard: how and why software developers use drawings
 
SOAT Agile Day 2017 DDD
SOAT Agile Day 2017 DDDSOAT Agile Day 2017 DDD
SOAT Agile Day 2017 DDD
 
Wireframe like a UX Pro
Wireframe like a UX ProWireframe like a UX Pro
Wireframe like a UX Pro
 
Dal modello Relazionale al Grafo: cosa cambia? By Alfonso Focareta
Dal modello Relazionale al Grafo: cosa cambia? By Alfonso Focareta Dal modello Relazionale al Grafo: cosa cambia? By Alfonso Focareta
Dal modello Relazionale al Grafo: cosa cambia? By Alfonso Focareta
 
Introduction to Domain-Driven Design
Introduction to Domain-Driven DesignIntroduction to Domain-Driven Design
Introduction to Domain-Driven Design
 
Software Development in 21st Century
Software Development in 21st CenturySoftware Development in 21st Century
Software Development in 21st Century
 
Keeping Architectures Relevant - 4 Feb 2010
Keeping Architectures Relevant - 4 Feb 2010Keeping Architectures Relevant - 4 Feb 2010
Keeping Architectures Relevant - 4 Feb 2010
 
Os Alrubaie Ruby
Os Alrubaie RubyOs Alrubaie Ruby
Os Alrubaie Ruby
 
Behavior Driven Development for Plugin Writers - AtlasCamp 2011
Behavior Driven Development for Plugin Writers - AtlasCamp 2011Behavior Driven Development for Plugin Writers - AtlasCamp 2011
Behavior Driven Development for Plugin Writers - AtlasCamp 2011
 
Dashlane Triple Track
Dashlane Triple TrackDashlane Triple Track
Dashlane Triple Track
 

Mais de Dennis Traub

CQRS-Einführung - Teil 2
CQRS-Einführung - Teil 2CQRS-Einführung - Teil 2
CQRS-Einführung - Teil 2
Dennis Traub
 
CQRS - Eine Einführung - NOUG 2011
CQRS - Eine Einführung - NOUG 2011CQRS - Eine Einführung - NOUG 2011
CQRS - Eine Einführung - NOUG 2011
Dennis Traub
 

Mais de Dennis Traub (9)

Application Integration Patterns (not only) for Microservices
Application Integration Patterns (not only) for MicroservicesApplication Integration Patterns (not only) for Microservices
Application Integration Patterns (not only) for Microservices
 
Serverless SecOps Automation on AWS at AWS UG Krakow, Poland
Serverless SecOps Automation on AWS at AWS UG Krakow, PolandServerless SecOps Automation on AWS at AWS UG Krakow, Poland
Serverless SecOps Automation on AWS at AWS UG Krakow, Poland
 
Serverless Security Automation on AWS - Hamburg AWS User Group
Serverless Security Automation on AWS - Hamburg AWS User GroupServerless Security Automation on AWS - Hamburg AWS User Group
Serverless Security Automation on AWS - Hamburg AWS User Group
 
Cloud ist keine Strategie - Keynote des AWS Cloud Day, Solingen
Cloud ist keine Strategie - Keynote des AWS Cloud Day, SolingenCloud ist keine Strategie - Keynote des AWS Cloud Day, Solingen
Cloud ist keine Strategie - Keynote des AWS Cloud Day, Solingen
 
Cloud ist keine Strategie - AWS Tech Community Summit Cologne, 2017
Cloud ist keine Strategie - AWS Tech Community Summit Cologne, 2017Cloud ist keine Strategie - AWS Tech Community Summit Cologne, 2017
Cloud ist keine Strategie - AWS Tech Community Summit Cologne, 2017
 
Taming the Monolith - Microservices Meetup Hamburg
Taming the Monolith - Microservices Meetup HamburgTaming the Monolith - Microservices Meetup Hamburg
Taming the Monolith - Microservices Meetup Hamburg
 
DDD / Microservices @ Trivento Spring Camp, Utrecht, 2015
DDD / Microservices @ Trivento Spring Camp, Utrecht, 2015DDD / Microservices @ Trivento Spring Camp, Utrecht, 2015
DDD / Microservices @ Trivento Spring Camp, Utrecht, 2015
 
CQRS-Einführung - Teil 2
CQRS-Einführung - Teil 2CQRS-Einführung - Teil 2
CQRS-Einführung - Teil 2
 
CQRS - Eine Einführung - NOUG 2011
CQRS - Eine Einführung - NOUG 2011CQRS - Eine Einführung - NOUG 2011
CQRS - Eine Einführung - NOUG 2011
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Último (20)

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 

Strategischer Anwendungsentwurf mit Domain-Driven Design

  • 1. Strategischer Anwendungsentwurf mit Domain-Driven Design presented by Dennis Traub .NET Usergroup Zentralschweiz - 18. März 2013 Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 2. Now, who‘s that guy? Dennis Traub Founder, Owner, CEO, Single Employee of D. Traub Software Development Consultancy Consultant, developer, trainer, speaker 39 years old Married, father of one 20+ years in software development Hire me at mail@dennistraub.de @dtraub Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 3. AGENDA The Blue Book An Example Break Tactical Patterns Actually it should Bounded Contexts A short review of be two books! and Subdomains the Building Blocks 1 2 3 4 5 6 Terminology Lasagna End of Strategic Design … the new Spaghetti Questions & Answers Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 4. AGENDA The Blue Book An Example Tactical Patterns Actually it should Bounded Contexts A short review of be two books! and Subdomains the Building Blocks 1 2 3 4 5 6 Terminology Lasagna End of Strategic Design … the new Spaghetti Questions & Answers Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 5. The „Blue Book“ by Eric Evans Image Placeholder Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 6. The „Blue Book“ by Eric Evans • Entities • Value Objects Tactical • Aggregates Class • Repositories Design • Services • Factories • etc. It should be two books! • Model Integrity • Large-Scale Structure • Bounded Contexts Strategic • Core Domain DDD • Context Maps • Ubiquitous Language • etc. Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 7. AGENDA The Blue Book An Example Tactical Patterns Actually it should Bounded Contexts A short review of be two books! and Subdomains the Building Blocks 1 2 3 4 5 6 Terminology Lasagna End of Strategic Design … the new Spaghetti Questions & Answers Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 8. Domain Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 9. Domain a sphere of knowledge, influence, or activity Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 10. Domain what an organization does and the world it does it in Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 11. Domain Model Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 12. Domain Model a system of abstractions that describes selected aspects of a domain Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 13. Domain Model can be used to solve problems related to that domain Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 14. don‘t model reality Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 15. we model useful abstractions of reality Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 16. Ubiquitous Language Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 17. Ubiquitous Language a language structured around the domain model Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 18. Ubiquitous Language used by all team members Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 19. Bounded Context Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 20. Bounded Context an explicit boundary within which a domain model exists Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 21. Bounded Context inside the boundary all terms have specific meaning Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 22. Bounded Context these terms are part of the context‘s ubiquitous language Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 23. Subdomains Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 24. Subdomains the whole domain of the organization is comprised of subdomains Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 25. Subdomains they focus on only one specific area of the whole business domain Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 26. Core Domain Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 27. Core Domain the distinctive part of the model, central to the users‘ goals Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 28. Core Domain differentiates the application and makes it valuable Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 29. Core Domain the most important subdomain Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 30. AGENDA The Blue Book An Example Tactical Patterns Actually it should Bounded Contexts A short review of be two books! and Subdomains the Building Blocks 1 2 3 4 5 6 Terminology Lasagna End of Strategic Design … the new Spaghetti Questions & Answers Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 31. Our Domain: Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 32. Aviation Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 33. Our Application: Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 34. Ambulance Flight Management Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 35. Ambulance Flight Management order flights from an operator dispatch patients assign medical staff Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 36. Bounded Contexts 1 Patiententransport-Disposition 2 Flugplanung und -durchführung 3 Personaleinsatzplanung (Flugärzte, Rettungsassistenten) 4 Patientendaten, Abrechnung, Buchhaltung 5 SOAP- oder REST-Services, Web-Oberfläche Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 37. Subdomains 1 Ambulanzflug-Disposition 6 Bodentransport 2 Flotten-Management 7 Abrechnung, Buchhaltung 3 Flugplanung 8 Anwendungsoberfläche 4 Passagier-/Patientendaten 9 SOAP-/REST-Schnittstelle 5 Medizinisches Personal 10 Benutzer- und Zugriffssteuerung Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 38. don‘t build a model that works for everyone Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 39. to focus our effort and resources we ask two questions for each subdomain Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 40. 1 how complex is it? Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 41. 2 what‘s the value to our specific problem? (if we model it ourselves) Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 42. 1. Complexity (S/M/H) 1 Ambulanzflug-Disposition 6 Bodentransport 2 Flotten-Management 7 Abrechnung, Buchhaltung 3 Flugplanung 8 Anwendungsoberfläche 4 Passagier-/Patientendaten 9 SOAP-/REST-Schnittstelle 5 Medizinisches Personal 10 Benutzer- und Zugriffssteuerung Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 43. 2. Value (S/M/H) 1 Ambulanzflug-Disposition 6 Bodentransport 2 Flotten-Management 7 Abrechnung, Buchhaltung 3 Flugplanung 8 Anwendungsoberfläche 4 Passagier-/Patientendaten 9 SOAP-/REST-Schnittstelle 5 Medizinisches Personal 10 Benutzer- und Zugriffssteuerung Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 44. the tactical Building Blocks we don‘t use DDD when there is no value in formalizing the problem Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 45. we only use DDD in parts where we get a competitive advantage Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 46. 15 minutes BREAK Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 47. AGENDA The Blue Book An Example Tactical Patterns Actually it should Bounded Contexts A short review of be two books! and Subdomains the Building Blocks 1 2 3 4 5 6 Terminology Lasagna End of Strategic Design … the new Spaghetti Questions & Answers Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 48. Presentation Layer Common Services Infrastructure Application Services Domain / Business Model / BLL DAL / O/R-Mapper Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 49. Ports & Adapters Hexagonal Architecture Onion Architecture Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 50. Dependency Inversion Principle (just in case) the D in SOLID Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 51. AGENDA The Blue Book An Example Tactical Patterns Actually it should Bounded Contexts A short review of be two books! and Subdomains the Building Blocks 1 2 3 4 5 6 Terminology Lasagna End of Strategic Design … the new Spaghetti Questions & Answers Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 52. Entity Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 53. Entity an object primarily defined by its identity Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 54. Entity has a life cycle that can radically change its form and content Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 55. Value Object Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 56. Value Object an object that represents a descriptive aspect of the domain Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 57. Value Object doesn‘t have a distinct identity treated as immutable Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 58. Aggregate Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 59. Aggregate a cluster of associated objects Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 60. Aggregate treated as a unit for the purpose of data changes Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 61. Aggregate a set of consistency rules applies within the aggregate‘s boundaries Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 62. Aggregate enforces its own invariants and is always in a valid state Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 63. AGENDA The Blue Book An Example Tactical Patterns Actually it should Bounded Contexts A short review of be two books! and Subdomains the Building Blocks 1 2 3 4 5 6 Terminology Lasagna End of Strategic Design … the new Spaghetti Questions & Answers Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 64. To summarize: DDD is basically the application of the SOLID principles of object-orientation on an architectural level Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 65. ? QUESTIONS Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de
  • 66. THANK YOU! follow me: @dtraub Dennis Traub – Software Development Consultancy @dtraub – mail@dennistraub.de