SlideShare une entreprise Scribd logo
1  sur  124
Télécharger pour lire hors ligne
Thursday, March 1, 2012
Domain Driven Design
                                 short Refresher
                             FLOW3 Usergroup @AOE
                               by Daniel Pötzinger
Thursday, March 1, 2012
Thursday, March 1, 2012
The problem that we want to
                                    solve


Thursday, March 1, 2012
The problem




Thursday, March 1, 2012
The problem

                 ‣        We need to write an application that solves
                          buissiness problems




Thursday, March 1, 2012
The problem

                 ‣        We need to write an application that solves
                          buissiness problems
                 ‣        We want to use OOP




Thursday, March 1, 2012
The problem

                 ‣        We need to write an application that solves
                          buissiness problems
                 ‣        We want to use OOP
                 ‣        We need to find a good design:




Thursday, March 1, 2012
The problem

                 ‣        We need to write an application that solves
                          buissiness problems
                 ‣        We want to use OOP
                 ‣        We need to find a good design:
                           ‣ understanding the problem and the buissiness




Thursday, March 1, 2012
The problem

                 ‣        We need to write an application that solves
                          buissiness problems
                 ‣        We want to use OOP
                 ‣        We need to find a good design:
                           ‣ understanding the problem and the buissiness
                           ‣ find understandable class-structure




Thursday, March 1, 2012
The problem

                 ‣        We need to write an application that solves
                          buissiness problems
                 ‣        We want to use OOP
                 ‣        We need to find a good design:
                           ‣ understanding the problem and the buissiness
                           ‣ find understandable class-structure
                           ‣ build maintainable software, that can be adjusted
                             easy when the buissiness changes




Thursday, March 1, 2012
Thursday, March 1, 2012
Domain Model ?



Thursday, March 1, 2012
Domain Model ?



Thursday, March 1, 2012
Domain Model

                 ‣        The domain model offers a simplified, abstract view of
                          the problem




                                                                         Domain Model




Thursday, March 1, 2012
Domain Model

                 ‣        The domain model offers a simplified, abstract view of
                          the problem




                           Domain Experts

                                                                         Domain Model




Thursday, March 1, 2012
Domain Model

                 ‣        The domain model offers a simplified, abstract view of
                          the problem




                           Domain Experts

                                                                         Domain Model


                           Implementators


Thursday, March 1, 2012
Domain Model

                 ‣        The domain model offers a simplified, abstract view of
                          the problem




                           Domain Experts

                                                                         Domain Model


                           Implementators


Thursday, March 1, 2012
Domain Model

                 ‣        The domain model offers a simplified, abstract view of
                          the problem




                           Domain Experts

                                            Knowledge Crunching          Domain Model
                                                & Analysis


                           Implementators


Thursday, March 1, 2012
Domain Model

                 ‣        The domain model offers a simplified, abstract view of
                          the problem




                           Domain Experts

                                            Knowledge Crunching          Domain Model
                                                & Analysis


                           Implementators


Thursday, March 1, 2012
Domain Model

                 ‣        a common language should be used to describe the
                          problem

                                                                Ubiquitous
                                                              Domain Language

                                                                                Uses terms
                           Domain Experts
                                            Both understand



                                                                                  Domain Model
                           Implementators


Thursday, March 1, 2012
Domain Model

                 ‣        a common language should be used to describe the
                          problem

                                                                Ubiquitous
                                                              Domain Language

                                                                                Uses terms
                           Domain Experts
                                            Both understand



                                                                                  Domain Model
                           Implementators


Thursday, March 1, 2012
Domain Model

                 ‣        The Domain Model can be represented as Text, Speech
                          or Code...




                          Domain Model




Thursday, March 1, 2012
Domain Model

                 ‣        The Domain Model can be represented as Text, Speech
                          or Code...

                                                               A customer can have multiple contracts.
                                                               The customer gets monthly bills to his
                                                     Text
                                                                          billing address.
                          Domain Model




Thursday, March 1, 2012
Domain Model

                 ‣        The Domain Model can be represented as Text, Speech
                          or Code...

                                                               A customer can have multiple contracts.
                                                               The customer gets monthly bills to his
                                                     Text
                                                                          billing address.
                          Domain Model
                                                     UML




Thursday, March 1, 2012
Domain Model

                 ‣        The Domain Model can be represented as Text, Speech
                          or Code...

                                                               A customer can have multiple contracts.
                                                               The customer gets monthly bills to his
                                                     Text
                                                                          billing address.
                          Domain Model
                                                     UML


                                                     Code



Thursday, March 1, 2012
Thursday, March 1, 2012
UML



Thursday, March 1, 2012
UML

                 •UML is perfect to describe, scetch or discuss a domain
                 model.

                                          UML


                  Structural Diagrams                            Behavioral Diagrams



                 Class Diagrams    Object Diagrams   ...   Sequence Diagrams   Use Case Diagram   ...



Thursday, March 1, 2012
UML - Class Diagram




Thursday, March 1, 2012
UML - Class Diagram

                 ‣        class diagram describes the attributes and operations of
                          a class and also the constraints imposed on the system.




Thursday, March 1, 2012
UML - Class Diagram

                 ‣        class diagram describes the attributes and operations of
                          a class and also the constraints imposed on the system.

                 ‣        Can be directly mapped to code (OOP)




Thursday, March 1, 2012
UML - Class Diagram

                 ‣        class diagram describes the attributes and operations of
                          a class and also the constraints imposed on the system.

                 ‣        Can be directly mapped to code (OOP)
                 ‣        Popular use-case is to explain conceptual important
                          parts => keep it simple („draw it on a paper“)




Thursday, March 1, 2012
UML - Class Diagram - Examples

                 ‣         classes with:
                           ‣ attributes (<name>:<type> )
                           ‣ methods
                           ‣ annotations and properties
                 ‣        Associations
                           ‣ Multiplicity, roles
                           ‣ Traversal
                           ‣ Aggregation, Composition
                 ‣        Inheritance, Dependency
                 ‣        Qualifier
                 ‣        Association Class
Thursday, March 1, 2012
UML - Object Diagram

                 ‣         Depend on class diagrams
                 ‣        „Snapshot“ of instances and theire relations
                 ‣        Perfect to understand object behaviour and their
                          relationship from practical perspective




Thursday, March 1, 2012
UML - Sequence Diagram

                 ‣         Depend on class diagrams
                 ‣         Perfect to explain how objects work together to
                          „fulfill“ a use-case.
                 ‣        useful to detect weakness and improvements in your
                          design




Thursday, March 1, 2012
Thursday, March 1, 2012
Domain Driven Design
                                Basics




Thursday, March 1, 2012
Domain Driven Design - Basics



                          1. Layered Architecture
                          2. Common Building Blocks and Rules
                          3. Find a „supple design“
                          4. See the big picture



Thursday, March 1, 2012
DDD - Layered Architecture




Thursday, March 1, 2012
DDD - Layered Architecture




                                                                Logging
                                                              Persitence
                             Infrastructure / System   Speaking to Webservices
                                                             File Formats



Thursday, March 1, 2012
DDD - Layered Architecture




                                 Domain Model             Core Business Logic



                                                                Logging
                                                              Persitence
                             Infrastructure / System   Speaking to Webservices
                                                             File Formats



Thursday, March 1, 2012
DDD - Layered Architecture



                              Application Layer (thin)   Controller / (Export/Import)



                                 Domain Model               Core Business Logic



                                                                  Logging
                                                                Persitence
                             Infrastructure / System     Speaking to Webservices
                                                               File Formats



Thursday, March 1, 2012
DDD - Layered Architecture



           User /             Application Layer (thin)   Controller / (Export/Import)
         Other Apps

                                 Domain Model               Core Business Logic



                                                                  Logging
                                                                Persitence
                             Infrastructure / System     Speaking to Webservices
                                                               File Formats



Thursday, March 1, 2012
DDD - Layered Architecture

                                                         Templates / Presentation Objects
                                      View
           User /             Application Layer (thin)    Controller / (Export/Import)
         Other Apps

                                 Domain Model                 Core Business Logic



                                                                    Logging
                                                                  Persitence
                             Infrastructure / System       Speaking to Webservices
                                                                 File Formats



Thursday, March 1, 2012
Thursday, March 1, 2012
Building Blocks


Thursday, March 1, 2012
Building Blocks


Thursday, March 1, 2012
DDD - Building Blocks




Thursday, March 1, 2012
DDD - Building Blocks


                          Entities




Thursday, March 1, 2012
DDD - Building Blocks


                          Entities

                          Values




Thursday, March 1, 2012
DDD - Building Blocks


                          Entities

                          Values

                          Services




Thursday, March 1, 2012
DDD - Building Blocks


                          Entities      Repository


                          Values

                          Services




Thursday, March 1, 2012
DDD - Building Blocks


                          Entities      Repository


                          Values         Factory


                          Services




Thursday, March 1, 2012
DDD - Building Blocks




Thursday, March 1, 2012
DDD - Building Blocks


                          Entities




Thursday, March 1, 2012
DDD - Building Blocks


                               Entities



                          Object which is primary defined by its identity (not by
                          attributes). For example "Person", "Car", "Costumer" or
                          "BankTransaction".




Thursday, March 1, 2012
DDD - Building Blocks


                                Entities



                          Object which is primary defined by its identity (not by
                          attributes). For example "Person", "Car", "Costumer" or
                          "BankTransaction".

                          • often has some ID value


Thursday, March 1, 2012
DDD - Building Blocks


                                 Entities



                          Object which is primary defined by its identity (not by
                          attributes). For example "Person", "Car", "Costumer" or
                          "BankTransaction".

                          • often has some ID value
                          • continuity through livecycle

Thursday, March 1, 2012
DDD - Building Blocks


                                 Entities



                          Object which is primary defined by its identity (not by
                          attributes). For example "Person", "Car", "Costumer" or
                          "BankTransaction".

                          • often has some ID value
                          • continuity through livecycle
                          • keep class definition simple / focus on live cycle
Thursday, March 1, 2012
DDD - Building Blocks




Thursday, March 1, 2012
DDD - Building Blocks


                          Value




Thursday, March 1, 2012
DDD - Building Blocks


                                 Value


                          describe the characteristic of a thing and identity is not
                          required. (We care what they are - not who) Example:
                          address, color ...




Thursday, March 1, 2012
DDD - Building Blocks


                                 Value


                          describe the characteristic of a thing and identity is not
                          required. (We care what they are - not who) Example:
                          address, color ...

                          • should represent a whole value (conceptual thing )



Thursday, March 1, 2012
DDD - Building Blocks


                                 Value


                          describe the characteristic of a thing and identity is not
                          required. (We care what they are - not who) Example:
                          address, color ...

                          • should represent a whole value (conceptual thing )
                          • Often passed as arguments


Thursday, March 1, 2012
DDD - Building Blocks


                                 Value


                          describe the characteristic of a thing and identity is not
                          required. (We care what they are - not who) Example:
                          address, color ...

                          • should represent a whole value (conceptual thing )
                          • Often passed as arguments
                          • No Identity gives freedom

Thursday, March 1, 2012
DDD - Building Blocks


                                 Value


                          describe the characteristic of a thing and identity is not
                          required. (We care what they are - not who) Example:
                          address, color ...

                          • should represent a whole value (conceptual thing )
                          • Often passed as arguments
                          • No Identity gives freedom
                          • should be Immutable!
Thursday, March 1, 2012
DDD - Building Blocks




Thursday, March 1, 2012
DDD - Building Blocks

                          Service




Thursday, March 1, 2012
DDD - Building Blocks

                                Service

                          “...if a single process or transformation in domain is not a
                          natural responsibility of an entity or value => make it a
                          standalone service with a nice interface."




Thursday, March 1, 2012
DDD - Building Blocks

                                 Service

                          “...if a single process or transformation in domain is not a
                          natural responsibility of an entity or value => make it a
                          standalone service with a nice interface."

                          • stateless




Thursday, March 1, 2012
DDD - Building Blocks

                                Service

                          “...if a single process or transformation in domain is not a
                          natural responsibility of an entity or value => make it a
                          standalone service with a nice interface."

                          • stateless
                          • offer a useful service or action and deals with other domain
                          objects



Thursday, March 1, 2012
DDD - Building Blocks

                                Service

                          “...if a single process or transformation in domain is not a
                          natural responsibility of an entity or value => make it a
                          standalone service with a nice interface."

                          • stateless
                          • offer a useful service or action and deals with other domain
                          objects
                          • defined in common domain language

Thursday, March 1, 2012
DDD - Building Blocks

                                Service

                          “...if a single process or transformation in domain is not a
                          natural responsibility of an entity or value => make it a
                          standalone service with a nice interface."

                          • stateless
                          • offer a useful service or action and deals with other domain
                          objects
                          • defined in common domain language
                          • do not mix with other layers
Thursday, March 1, 2012
DDD - Building Blocks

                                   Service

                          “...if a single process or transformation in domain is not a
                          natural responsibility of an entity or value => make it a
                          standalone service with a nice interface."

                          • stateless
                          • offer a useful service or action and deals with other domain
                          objects
                          • defined in common domain language
                          • do not mix with other layers
                          Examples: FundTransferService / PackageRoutingService / SimCardActivationService
Thursday, March 1, 2012
DDD - Building Blocks




Thursday, March 1, 2012
DDD - Building Blocks

                          Repository




Thursday, March 1, 2012
DDD - Building Blocks

                             Repository

                          For each object where you need global access create a
                          repository object that can provide the illusion of an in
                          memory collection of all objects of that type. Setup
                          access through a well knows global interface.




Thursday, March 1, 2012
DDD - Building Blocks

                             Repository

                          For each object where you need global access create a
                          repository object that can provide the illusion of an in
                          memory collection of all objects of that type. Setup
                          access through a well knows global interface.

                          • typicaly methods for add() remove() and find*()



Thursday, March 1, 2012
DDD - Building Blocks

                             Repository

                          For each object where you need global access create a
                          repository object that can provide the illusion of an in
                          memory collection of all objects of that type. Setup
                          access through a well knows global interface.

                          • typicaly methods for add() remove() and find*()
                          •find* methods communicate design decisions about how to
                          access the data


Thursday, March 1, 2012
DDD - Building Blocks

                              Repository

                          For each object where you need global access create a
                          repository object that can provide the illusion of an in
                          memory collection of all objects of that type. Setup
                          access through a well knows global interface.

                          • typicaly methods for add() remove() and find*()
                          •find* methods communicate design decisions about how to
                          access the data
                          • ..reconstitution?
Thursday, March 1, 2012
DDD - Building Blocks




Thursday, March 1, 2012
DDD - Building Blocks


                          Factory




Thursday, March 1, 2012
DDD - Building Blocks


                               Factory

                          A factory hides logic for building objects - this is
                          especially relevant for aggregates!




Thursday, March 1, 2012
DDD - Building Blocks


                                Factory

                          A factory hides logic for building objects - this is
                          especially relevant for aggregates!

                          • atomic (need to pass all essential parameters)




Thursday, March 1, 2012
DDD - Building Blocks


                               Factory

                          A factory hides logic for building objects - this is
                          especially relevant for aggregates!

                          • atomic (need to pass all essential parameters)
                          • not allowed to give wrong results (exceptions)



Thursday, March 1, 2012
DDD - Building Blocks


                               Factory

                          A factory hides logic for building objects - this is
                          especially relevant for aggregates!

                          • atomic (need to pass all essential parameters)
                          • not allowed to give wrong results (exceptions)
                          • entity vs. value factories



Thursday, March 1, 2012
DDD - Building Blocks


                               Factory

                          A factory hides logic for building objects - this is
                          especially relevant for aggregates!

                          • atomic (need to pass all essential parameters)
                          • not allowed to give wrong results (exceptions)
                          • entity vs. value factories
                          • (can also be used for reconstitution )


Thursday, March 1, 2012
Thursday, March 1, 2012
Find a Supple Design




Thursday, March 1, 2012
Find a Supple Design


                               vs.


Thursday, March 1, 2012
Supple Design „Speak in Domain Language“




Thursday, March 1, 2012
Supple Design „Speak in Domain Language“


                  ‣       Try to explain scenarios loud with the use of the model
                          and the ubiquitous language




Thursday, March 1, 2012
Supple Design „Speak in Domain Language“


                  ‣       Try to explain scenarios loud with the use of the model
                          and the ubiquitous language
                  ‣       Try to explain scenarios more simple/better (find easier
                          ways to say what you need to say).
                          => That helps refining the model.




Thursday, March 1, 2012
Supple Design „Reduce Associations“




Thursday, March 1, 2012
Supple Design „Reduce Associations“


                 ‣        Avoid many association and use only a minimum of
                          relations because they decrease maintainability!




Thursday, March 1, 2012
Supple Design „Reduce Associations“


                 ‣        Avoid many association and use only a minimum of
                          relations because they decrease maintainability!
                 ‣        traversal instead of bidirectional




Thursday, March 1, 2012
Supple Design „Reduce Associations“


                 ‣        Avoid many association and use only a minimum of
                          relations because they decrease maintainability!
                 ‣        traversal instead of bidirectional
                 ‣        adding qualifier to reduce multiplicity (class missing?)




Thursday, March 1, 2012
Supple Design „Reduce Associations“


                 ‣        Avoid many association and use only a minimum of
                          relations because they decrease maintainability!
                 ‣        traversal instead of bidirectional
                 ‣        adding qualifier to reduce multiplicity (class missing?)
                 ‣        eliminate non essential assoc.




Thursday, March 1, 2012
Supple Design „Reduce Associations“


                 ‣        Avoid many association and use only a minimum of
                          relations because they decrease maintainability!
                 ‣        traversal instead of bidirectional
                 ‣        adding qualifier to reduce multiplicity (class missing?)
                 ‣        eliminate non essential assoc.
                 ‣        find and use aggregates




Thursday, March 1, 2012
Supple Design „Reduce Associations“


                 ‣        Avoid many association and use only a minimum of
                          relations because they decrease maintainability!
                 ‣        traversal instead of bidirectional
                 ‣        adding qualifier to reduce multiplicity (class missing?)
                 ‣        eliminate non essential assoc.
                 ‣        find and use aggregates

                 => Intuition and Refactoring


Thursday, March 1, 2012
Supple Design „Reduce Associations“


                 ‣        Avoid many association and use only a minimum of
                          relations because they decrease maintainability!
                 ‣        traversal instead of bidirectional
                 ‣        adding qualifier to reduce multiplicity (class missing?)
                 ‣        eliminate non essential assoc.
                 ‣        find and use aggregates

                 => Intuition and Refactoring

                 ... country / president example ...
Thursday, March 1, 2012
Supple Design - Aggregates




Thursday, March 1, 2012
Supple Design - Aggregates


                  ‣       An aggregate is a group of objects that belong together
                          (a group of individual objects that represents a unit)




Thursday, March 1, 2012
Supple Design - Aggregates


                  ‣       An aggregate is a group of objects that belong together
                          (a group of individual objects that represents a unit)

                  ‣       ...car example... (root, boundary, invariants )




Thursday, March 1, 2012
Supple Design - „Explicit constrains“




Thursday, March 1, 2012
Supple Design - „Explicit constrains“


                ‣         name and make constrains explicit. That gives it a name
                          you can talk about and the code is more
                          understandable




Thursday, March 1, 2012
Supple Design - „Explicit constrains“


                ‣         name and make constrains explicit. That gives it a name
                          you can talk about and the code is more
                          understandable


                Bucket example




Thursday, March 1, 2012
Supple Design - „Specifications“




Thursday, March 1, 2012
Supple Design - „Specifications“


                ‣         you can use „Specifications“ to explicit express rules




Thursday, March 1, 2012
Supple Design - „Specifications“


                ‣         you can use „Specifications“ to explicit express rules

                examples:




Thursday, March 1, 2012
Supple Design - „Specifications“


                ‣         you can use „Specifications“ to explicit express rules

                examples:
                „InventoryDelinquentSpecification“->isSatisfied()




Thursday, March 1, 2012
Supple Design - „Specifications“


                ‣         you can use „Specifications“ to explicit express rules

                examples:
                „InventoryDelinquentSpecification“->isSatisfied()
                „GoldenCustomerSpecification“->isSatisfied($customer)




Thursday, March 1, 2012
Supple Design - Modules




                          If your model tells a story a module is a chapter
Thursday, March 1, 2012
Supple Design - Modules

                          Customer                              Order
                            Customer      Contract               Basket   Order


                                                                          OrderItems




                          Product
                                              AbstractProduct



                                    Prepaid




Thursday, March 1, 2012
Supple Design - Modules

                          Customer                                     Order
                            Customer      Contract                      Basket     Order


                                                                                   OrderItems




                          Product
                                              AbstractProduct
                                                                • group by meaning in the domain

                                    Prepaid




Thursday, March 1, 2012
Supple Design - Modules

                          Customer                                     Order
                            Customer      Contract                      Basket     Order


                                                                                   OrderItems




                          Product
                                              AbstractProduct
                                                                • group by meaning in the domain
                                                                • loose coupling between modules
                                    Prepaid




Thursday, March 1, 2012
Supple Design - What else




Thursday, March 1, 2012
Supple Design - What else

                 • Intention Revalving Interfaces




Thursday, March 1, 2012
Supple Design - What else

                 • Intention Revalving Interfaces
                 • standalone classes where possible




Thursday, March 1, 2012
Supple Design - What else

                 • Intention Revalving Interfaces
                 • standalone classes where possible
                 • closure of operations




Thursday, March 1, 2012
Supple Design - What else

                 • Intention Revalving Interfaces
                 • standalone classes where possible
                 • closure of operations
                 • side effect free functions




Thursday, March 1, 2012
Thank you for great year!




Thursday, March 1, 2012
Thank you for great year!
                                  Thanks




Thursday, March 1, 2012

Contenu connexe

Tendances

Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven DesignRyan Riley
 
Domain Driven Design Demonstrated
Domain Driven Design Demonstrated Domain Driven Design Demonstrated
Domain Driven Design Demonstrated Alan Christensen
 
Domain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) DistilledDomain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) DistilledNicola Costantino
 
Domain Driven Design(DDD) Presentation
Domain Driven Design(DDD) PresentationDomain Driven Design(DDD) Presentation
Domain Driven Design(DDD) PresentationOğuzhan Soykan
 
Domain driven design
Domain driven designDomain driven design
Domain driven designtatyaso
 
Domain Driven Design: Zero to Hero
Domain Driven Design: Zero to HeroDomain Driven Design: Zero to Hero
Domain Driven Design: Zero to HeroFabrício Rissetto
 
Domain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and MicroservicesDomain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and MicroservicesRadosław Maziarka
 
Refactoring for Domain Driven Design
Refactoring for Domain Driven DesignRefactoring for Domain Driven Design
Refactoring for Domain Driven DesignDavid Berliner
 
Domain driven design
Domain driven designDomain driven design
Domain driven designits_skm
 
Domain Driven Design and Hexagonal Architecture
Domain Driven Design and Hexagonal ArchitectureDomain Driven Design and Hexagonal Architecture
Domain Driven Design and Hexagonal ArchitectureCrishantha Nanayakkara
 
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 SDLCAbdul Karim
 
Domain driven design and model driven development
Domain driven design and model driven developmentDomain driven design and model driven development
Domain driven design and model driven developmentDmitry Geyzersky
 
Cloud interoperability
Cloud interoperabilityCloud interoperability
Cloud interoperabilitygaurav jain
 

Tendances (20)

Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Domain Driven Design
Domain Driven Design Domain Driven Design
Domain Driven Design
 
Domain Driven Design 101
Domain Driven Design 101Domain Driven Design 101
Domain Driven Design 101
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Domain Driven Design Demonstrated
Domain Driven Design Demonstrated Domain Driven Design Demonstrated
Domain Driven Design Demonstrated
 
Domain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) DistilledDomain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) Distilled
 
Domain Driven Design(DDD) Presentation
Domain Driven Design(DDD) PresentationDomain Driven Design(DDD) Presentation
Domain Driven Design(DDD) Presentation
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Istio presentation jhug
Istio presentation jhugIstio presentation jhug
Istio presentation jhug
 
Domain driven design
Domain driven designDomain driven design
Domain driven design
 
Domain Driven Design: Zero to Hero
Domain Driven Design: Zero to HeroDomain Driven Design: Zero to Hero
Domain Driven Design: Zero to Hero
 
Domain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and MicroservicesDomain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and Microservices
 
Refactoring for Domain Driven Design
Refactoring for Domain Driven DesignRefactoring for Domain Driven Design
Refactoring for Domain Driven Design
 
Domain driven design
Domain driven designDomain driven design
Domain driven design
 
Domain Driven Design and Hexagonal Architecture
Domain Driven Design and Hexagonal ArchitectureDomain Driven Design and Hexagonal Architecture
Domain Driven Design and Hexagonal Architecture
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
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
 
Domain driven design and model driven development
Domain driven design and model driven developmentDomain driven design and model driven development
Domain driven design and model driven development
 
Cloud interoperability
Cloud interoperabilityCloud interoperability
Cloud interoperability
 

Similaire à Domain Driven Design

Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven DesignAOE
 
From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012
From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012
From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012Marc Dutoo
 
Domain Driven Design and Model Driven Software Development
Domain Driven Design and Model Driven Software DevelopmentDomain Driven Design and Model Driven Software Development
Domain Driven Design and Model Driven Software DevelopmentBahram Maravandi
 
Software engineering principles in system software design
Software engineering principles in system software designSoftware engineering principles in system software design
Software engineering principles in system software designTech_MX
 
Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)
Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)
Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)siouxhotornot
 
Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012
Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012
Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012Bjarni Kristjánsson
 
Developing with Phonegap - Adobe Refresh 2012
Developing with Phonegap - Adobe Refresh 2012Developing with Phonegap - Adobe Refresh 2012
Developing with Phonegap - Adobe Refresh 2012Ryan Stewart
 
Best Practices for (Enterprise) OSGi applications - Tim Ward
Best Practices for (Enterprise) OSGi applications - Tim WardBest Practices for (Enterprise) OSGi applications - Tim Ward
Best Practices for (Enterprise) OSGi applications - Tim Wardmfrancis
 
Feedback on Part 1 of the CSLP
Feedback on Part 1 of the CSLPFeedback on Part 1 of the CSLP
Feedback on Part 1 of the CSLPStephen Gilmore
 
Code & Cannoli - Domain Driven Design
Code & Cannoli - Domain Driven DesignCode & Cannoli - Domain Driven Design
Code & Cannoli - Domain Driven DesignFrank Levering
 
Multilingual solutions florian loretan
Multilingual solutions florian loretanMultilingual solutions florian loretan
Multilingual solutions florian loretandrupalconf
 
Waza keynote: Idea to Delivery
Waza keynote: Idea to DeliveryWaza keynote: Idea to Delivery
Waza keynote: Idea to DeliveryAdam Wiggins
 
Chapter 6 the modeling activity
Chapter 6   the modeling activityChapter 6   the modeling activity
Chapter 6 the modeling activityarief_rudyanto
 
Consulting toolkit analogies
Consulting toolkit   analogiesConsulting toolkit   analogies
Consulting toolkit analogieschrisdoran
 
Harnessing the Power of the Social Media Stream for Education and Training
Harnessing the Power of the Social Media Stream for Education and TrainingHarnessing the Power of the Social Media Stream for Education and Training
Harnessing the Power of the Social Media Stream for Education and TrainingAllen Partridge
 
Dispelling the mystery around resource planning revc
Dispelling the mystery around resource planning revcDispelling the mystery around resource planning revc
Dispelling the mystery around resource planning revckdelcol
 

Similaire à Domain Driven Design (20)

Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Ooad
OoadOoad
Ooad
 
From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012
From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012
From Eclipse to Document Management - Eclipse DemoCamp Grenoble 2012
 
Domain Driven Design and Model Driven Software Development
Domain Driven Design and Model Driven Software DevelopmentDomain Driven Design and Model Driven Software Development
Domain Driven Design and Model Driven Software Development
 
Software engineering principles in system software design
Software engineering principles in system software designSoftware engineering principles in system software design
Software engineering principles in system software design
 
Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)
Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)
Sioux Hot-or-Not: Domain Driven Design (Edwin Van Dillen)
 
Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012
Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012
Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012
 
Developing with Phonegap - Adobe Refresh 2012
Developing with Phonegap - Adobe Refresh 2012Developing with Phonegap - Adobe Refresh 2012
Developing with Phonegap - Adobe Refresh 2012
 
Best Practices for (Enterprise) OSGi applications - Tim Ward
Best Practices for (Enterprise) OSGi applications - Tim WardBest Practices for (Enterprise) OSGi applications - Tim Ward
Best Practices for (Enterprise) OSGi applications - Tim Ward
 
BDD by example
BDD by exampleBDD by example
BDD by example
 
Feedback on Part 1 of the CSLP
Feedback on Part 1 of the CSLPFeedback on Part 1 of the CSLP
Feedback on Part 1 of the CSLP
 
Architecting for failure
Architecting for failureArchitecting for failure
Architecting for failure
 
Code & Cannoli - Domain Driven Design
Code & Cannoli - Domain Driven DesignCode & Cannoli - Domain Driven Design
Code & Cannoli - Domain Driven Design
 
Multilingual solutions florian loretan
Multilingual solutions florian loretanMultilingual solutions florian loretan
Multilingual solutions florian loretan
 
05 ai uml_illik_students_part_1_eng
05 ai uml_illik_students_part_1_eng05 ai uml_illik_students_part_1_eng
05 ai uml_illik_students_part_1_eng
 
Waza keynote: Idea to Delivery
Waza keynote: Idea to DeliveryWaza keynote: Idea to Delivery
Waza keynote: Idea to Delivery
 
Chapter 6 the modeling activity
Chapter 6   the modeling activityChapter 6   the modeling activity
Chapter 6 the modeling activity
 
Consulting toolkit analogies
Consulting toolkit   analogiesConsulting toolkit   analogies
Consulting toolkit analogies
 
Harnessing the Power of the Social Media Stream for Education and Training
Harnessing the Power of the Social Media Stream for Education and TrainingHarnessing the Power of the Social Media Stream for Education and Training
Harnessing the Power of the Social Media Stream for Education and Training
 
Dispelling the mystery around resource planning revc
Dispelling the mystery around resource planning revcDispelling the mystery around resource planning revc
Dispelling the mystery around resource planning revc
 

Plus de AOE

Multithreaded XML Import (San Francisco Magento Meetup)
Multithreaded XML Import (San Francisco Magento Meetup)Multithreaded XML Import (San Francisco Magento Meetup)
Multithreaded XML Import (San Francisco Magento Meetup)AOE
 
rock-solid TYPO3 development with continuous integration and deployment
rock-solid TYPO3 development with continuous integration and deploymentrock-solid TYPO3 development with continuous integration and deployment
rock-solid TYPO3 development with continuous integration and deploymentAOE
 
Agile Management - Best Practice Day der Deutschen Bahn am 17.10.2013
Agile Management - Best Practice Day der Deutschen Bahn am 17.10.2013Agile Management - Best Practice Day der Deutschen Bahn am 17.10.2013
Agile Management - Best Practice Day der Deutschen Bahn am 17.10.2013AOE
 
Continuous Quality Assurance using Selenium WebDriver
Continuous Quality Assurance using Selenium WebDriverContinuous Quality Assurance using Selenium WebDriver
Continuous Quality Assurance using Selenium WebDriverAOE
 
Magento Imagine 2013: Fabrizio Branca - Learning To Fly: How Angry Birds Reac...
Magento Imagine 2013: Fabrizio Branca - Learning To Fly: How Angry Birds Reac...Magento Imagine 2013: Fabrizio Branca - Learning To Fly: How Angry Birds Reac...
Magento Imagine 2013: Fabrizio Branca - Learning To Fly: How Angry Birds Reac...AOE
 
SONY on TYPO3 - Rapid Global CMS Deployment
SONY on TYPO3 - Rapid Global CMS DeploymentSONY on TYPO3 - Rapid Global CMS Deployment
SONY on TYPO3 - Rapid Global CMS DeploymentAOE
 
The typo3.org Relaunch Project
The typo3.org Relaunch ProjectThe typo3.org Relaunch Project
The typo3.org Relaunch ProjectAOE
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling  am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling  am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdAOE
 
Searchperience Indexierungspipeline
Searchperience   IndexierungspipelineSearchperience   Indexierungspipeline
Searchperience IndexierungspipelineAOE
 
High Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der CloudHigh Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der CloudAOE
 
Selenium 2 for PHP(Unit)
Selenium 2 for PHP(Unit)Selenium 2 for PHP(Unit)
Selenium 2 for PHP(Unit)AOE
 
Angrybirds Magento Cloud Deployment
Angrybirds Magento Cloud DeploymentAngrybirds Magento Cloud Deployment
Angrybirds Magento Cloud DeploymentAOE
 
T3DD12 Caching with Varnish
T3DD12 Caching with VarnishT3DD12 Caching with Varnish
T3DD12 Caching with VarnishAOE
 
T3DD12 community extension
T3DD12  community extensionT3DD12  community extension
T3DD12 community extensionAOE
 
Performance measurement and tuning
Performance measurement and tuningPerformance measurement and tuning
Performance measurement and tuningAOE
 
Debugging, Monitoring and Profiling in TYPO3
Debugging, Monitoring and Profiling in TYPO3Debugging, Monitoring and Profiling in TYPO3
Debugging, Monitoring and Profiling in TYPO3AOE
 
Panasonic search
Panasonic searchPanasonic search
Panasonic searchAOE
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch CachingAOE
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch CachingAOE
 
Open Source CMS TYPO3 at Cisco WebEx
Open Source CMS TYPO3 at Cisco WebExOpen Source CMS TYPO3 at Cisco WebEx
Open Source CMS TYPO3 at Cisco WebExAOE
 

Plus de AOE (20)

Multithreaded XML Import (San Francisco Magento Meetup)
Multithreaded XML Import (San Francisco Magento Meetup)Multithreaded XML Import (San Francisco Magento Meetup)
Multithreaded XML Import (San Francisco Magento Meetup)
 
rock-solid TYPO3 development with continuous integration and deployment
rock-solid TYPO3 development with continuous integration and deploymentrock-solid TYPO3 development with continuous integration and deployment
rock-solid TYPO3 development with continuous integration and deployment
 
Agile Management - Best Practice Day der Deutschen Bahn am 17.10.2013
Agile Management - Best Practice Day der Deutschen Bahn am 17.10.2013Agile Management - Best Practice Day der Deutschen Bahn am 17.10.2013
Agile Management - Best Practice Day der Deutschen Bahn am 17.10.2013
 
Continuous Quality Assurance using Selenium WebDriver
Continuous Quality Assurance using Selenium WebDriverContinuous Quality Assurance using Selenium WebDriver
Continuous Quality Assurance using Selenium WebDriver
 
Magento Imagine 2013: Fabrizio Branca - Learning To Fly: How Angry Birds Reac...
Magento Imagine 2013: Fabrizio Branca - Learning To Fly: How Angry Birds Reac...Magento Imagine 2013: Fabrizio Branca - Learning To Fly: How Angry Birds Reac...
Magento Imagine 2013: Fabrizio Branca - Learning To Fly: How Angry Birds Reac...
 
SONY on TYPO3 - Rapid Global CMS Deployment
SONY on TYPO3 - Rapid Global CMS DeploymentSONY on TYPO3 - Rapid Global CMS Deployment
SONY on TYPO3 - Rapid Global CMS Deployment
 
The typo3.org Relaunch Project
The typo3.org Relaunch ProjectThe typo3.org Relaunch Project
The typo3.org Relaunch Project
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling  am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling  am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
 
Searchperience Indexierungspipeline
Searchperience   IndexierungspipelineSearchperience   Indexierungspipeline
Searchperience Indexierungspipeline
 
High Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der CloudHigh Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der Cloud
 
Selenium 2 for PHP(Unit)
Selenium 2 for PHP(Unit)Selenium 2 for PHP(Unit)
Selenium 2 for PHP(Unit)
 
Angrybirds Magento Cloud Deployment
Angrybirds Magento Cloud DeploymentAngrybirds Magento Cloud Deployment
Angrybirds Magento Cloud Deployment
 
T3DD12 Caching with Varnish
T3DD12 Caching with VarnishT3DD12 Caching with Varnish
T3DD12 Caching with Varnish
 
T3DD12 community extension
T3DD12  community extensionT3DD12  community extension
T3DD12 community extension
 
Performance measurement and tuning
Performance measurement and tuningPerformance measurement and tuning
Performance measurement and tuning
 
Debugging, Monitoring and Profiling in TYPO3
Debugging, Monitoring and Profiling in TYPO3Debugging, Monitoring and Profiling in TYPO3
Debugging, Monitoring and Profiling in TYPO3
 
Panasonic search
Panasonic searchPanasonic search
Panasonic search
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch Caching
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch Caching
 
Open Source CMS TYPO3 at Cisco WebEx
Open Source CMS TYPO3 at Cisco WebExOpen Source CMS TYPO3 at Cisco WebEx
Open Source CMS TYPO3 at Cisco WebEx
 

Dernier

H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 

Dernier (20)

H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 

Domain Driven Design

  • 2. Domain Driven Design short Refresher FLOW3 Usergroup @AOE by Daniel Pötzinger Thursday, March 1, 2012
  • 4. The problem that we want to solve Thursday, March 1, 2012
  • 6. The problem ‣ We need to write an application that solves buissiness problems Thursday, March 1, 2012
  • 7. The problem ‣ We need to write an application that solves buissiness problems ‣ We want to use OOP Thursday, March 1, 2012
  • 8. The problem ‣ We need to write an application that solves buissiness problems ‣ We want to use OOP ‣ We need to find a good design: Thursday, March 1, 2012
  • 9. The problem ‣ We need to write an application that solves buissiness problems ‣ We want to use OOP ‣ We need to find a good design: ‣ understanding the problem and the buissiness Thursday, March 1, 2012
  • 10. The problem ‣ We need to write an application that solves buissiness problems ‣ We want to use OOP ‣ We need to find a good design: ‣ understanding the problem and the buissiness ‣ find understandable class-structure Thursday, March 1, 2012
  • 11. The problem ‣ We need to write an application that solves buissiness problems ‣ We want to use OOP ‣ We need to find a good design: ‣ understanding the problem and the buissiness ‣ find understandable class-structure ‣ build maintainable software, that can be adjusted easy when the buissiness changes Thursday, March 1, 2012
  • 13. Domain Model ? Thursday, March 1, 2012
  • 14. Domain Model ? Thursday, March 1, 2012
  • 15. Domain Model ‣ The domain model offers a simplified, abstract view of the problem Domain Model Thursday, March 1, 2012
  • 16. Domain Model ‣ The domain model offers a simplified, abstract view of the problem Domain Experts Domain Model Thursday, March 1, 2012
  • 17. Domain Model ‣ The domain model offers a simplified, abstract view of the problem Domain Experts Domain Model Implementators Thursday, March 1, 2012
  • 18. Domain Model ‣ The domain model offers a simplified, abstract view of the problem Domain Experts Domain Model Implementators Thursday, March 1, 2012
  • 19. Domain Model ‣ The domain model offers a simplified, abstract view of the problem Domain Experts Knowledge Crunching Domain Model & Analysis Implementators Thursday, March 1, 2012
  • 20. Domain Model ‣ The domain model offers a simplified, abstract view of the problem Domain Experts Knowledge Crunching Domain Model & Analysis Implementators Thursday, March 1, 2012
  • 21. Domain Model ‣ a common language should be used to describe the problem Ubiquitous Domain Language Uses terms Domain Experts Both understand Domain Model Implementators Thursday, March 1, 2012
  • 22. Domain Model ‣ a common language should be used to describe the problem Ubiquitous Domain Language Uses terms Domain Experts Both understand Domain Model Implementators Thursday, March 1, 2012
  • 23. Domain Model ‣ The Domain Model can be represented as Text, Speech or Code... Domain Model Thursday, March 1, 2012
  • 24. Domain Model ‣ The Domain Model can be represented as Text, Speech or Code... A customer can have multiple contracts. The customer gets monthly bills to his Text billing address. Domain Model Thursday, March 1, 2012
  • 25. Domain Model ‣ The Domain Model can be represented as Text, Speech or Code... A customer can have multiple contracts. The customer gets monthly bills to his Text billing address. Domain Model UML Thursday, March 1, 2012
  • 26. Domain Model ‣ The Domain Model can be represented as Text, Speech or Code... A customer can have multiple contracts. The customer gets monthly bills to his Text billing address. Domain Model UML Code Thursday, March 1, 2012
  • 29. UML •UML is perfect to describe, scetch or discuss a domain model. UML Structural Diagrams Behavioral Diagrams Class Diagrams Object Diagrams ... Sequence Diagrams Use Case Diagram ... Thursday, March 1, 2012
  • 30. UML - Class Diagram Thursday, March 1, 2012
  • 31. UML - Class Diagram ‣ class diagram describes the attributes and operations of a class and also the constraints imposed on the system. Thursday, March 1, 2012
  • 32. UML - Class Diagram ‣ class diagram describes the attributes and operations of a class and also the constraints imposed on the system. ‣ Can be directly mapped to code (OOP) Thursday, March 1, 2012
  • 33. UML - Class Diagram ‣ class diagram describes the attributes and operations of a class and also the constraints imposed on the system. ‣ Can be directly mapped to code (OOP) ‣ Popular use-case is to explain conceptual important parts => keep it simple („draw it on a paper“) Thursday, March 1, 2012
  • 34. UML - Class Diagram - Examples ‣ classes with: ‣ attributes (<name>:<type> ) ‣ methods ‣ annotations and properties ‣ Associations ‣ Multiplicity, roles ‣ Traversal ‣ Aggregation, Composition ‣ Inheritance, Dependency ‣ Qualifier ‣ Association Class Thursday, March 1, 2012
  • 35. UML - Object Diagram ‣ Depend on class diagrams ‣ „Snapshot“ of instances and theire relations ‣ Perfect to understand object behaviour and their relationship from practical perspective Thursday, March 1, 2012
  • 36. UML - Sequence Diagram ‣ Depend on class diagrams ‣ Perfect to explain how objects work together to „fulfill“ a use-case. ‣ useful to detect weakness and improvements in your design Thursday, March 1, 2012
  • 38. Domain Driven Design Basics Thursday, March 1, 2012
  • 39. Domain Driven Design - Basics 1. Layered Architecture 2. Common Building Blocks and Rules 3. Find a „supple design“ 4. See the big picture Thursday, March 1, 2012
  • 40. DDD - Layered Architecture Thursday, March 1, 2012
  • 41. DDD - Layered Architecture Logging Persitence Infrastructure / System Speaking to Webservices File Formats Thursday, March 1, 2012
  • 42. DDD - Layered Architecture Domain Model Core Business Logic Logging Persitence Infrastructure / System Speaking to Webservices File Formats Thursday, March 1, 2012
  • 43. DDD - Layered Architecture Application Layer (thin) Controller / (Export/Import) Domain Model Core Business Logic Logging Persitence Infrastructure / System Speaking to Webservices File Formats Thursday, March 1, 2012
  • 44. DDD - Layered Architecture User / Application Layer (thin) Controller / (Export/Import) Other Apps Domain Model Core Business Logic Logging Persitence Infrastructure / System Speaking to Webservices File Formats Thursday, March 1, 2012
  • 45. DDD - Layered Architecture Templates / Presentation Objects View User / Application Layer (thin) Controller / (Export/Import) Other Apps Domain Model Core Business Logic Logging Persitence Infrastructure / System Speaking to Webservices File Formats Thursday, March 1, 2012
  • 49. DDD - Building Blocks Thursday, March 1, 2012
  • 50. DDD - Building Blocks Entities Thursday, March 1, 2012
  • 51. DDD - Building Blocks Entities Values Thursday, March 1, 2012
  • 52. DDD - Building Blocks Entities Values Services Thursday, March 1, 2012
  • 53. DDD - Building Blocks Entities Repository Values Services Thursday, March 1, 2012
  • 54. DDD - Building Blocks Entities Repository Values Factory Services Thursday, March 1, 2012
  • 55. DDD - Building Blocks Thursday, March 1, 2012
  • 56. DDD - Building Blocks Entities Thursday, March 1, 2012
  • 57. DDD - Building Blocks Entities Object which is primary defined by its identity (not by attributes). For example "Person", "Car", "Costumer" or "BankTransaction". Thursday, March 1, 2012
  • 58. DDD - Building Blocks Entities Object which is primary defined by its identity (not by attributes). For example "Person", "Car", "Costumer" or "BankTransaction". • often has some ID value Thursday, March 1, 2012
  • 59. DDD - Building Blocks Entities Object which is primary defined by its identity (not by attributes). For example "Person", "Car", "Costumer" or "BankTransaction". • often has some ID value • continuity through livecycle Thursday, March 1, 2012
  • 60. DDD - Building Blocks Entities Object which is primary defined by its identity (not by attributes). For example "Person", "Car", "Costumer" or "BankTransaction". • often has some ID value • continuity through livecycle • keep class definition simple / focus on live cycle Thursday, March 1, 2012
  • 61. DDD - Building Blocks Thursday, March 1, 2012
  • 62. DDD - Building Blocks Value Thursday, March 1, 2012
  • 63. DDD - Building Blocks Value describe the characteristic of a thing and identity is not required. (We care what they are - not who) Example: address, color ... Thursday, March 1, 2012
  • 64. DDD - Building Blocks Value describe the characteristic of a thing and identity is not required. (We care what they are - not who) Example: address, color ... • should represent a whole value (conceptual thing ) Thursday, March 1, 2012
  • 65. DDD - Building Blocks Value describe the characteristic of a thing and identity is not required. (We care what they are - not who) Example: address, color ... • should represent a whole value (conceptual thing ) • Often passed as arguments Thursday, March 1, 2012
  • 66. DDD - Building Blocks Value describe the characteristic of a thing and identity is not required. (We care what they are - not who) Example: address, color ... • should represent a whole value (conceptual thing ) • Often passed as arguments • No Identity gives freedom Thursday, March 1, 2012
  • 67. DDD - Building Blocks Value describe the characteristic of a thing and identity is not required. (We care what they are - not who) Example: address, color ... • should represent a whole value (conceptual thing ) • Often passed as arguments • No Identity gives freedom • should be Immutable! Thursday, March 1, 2012
  • 68. DDD - Building Blocks Thursday, March 1, 2012
  • 69. DDD - Building Blocks Service Thursday, March 1, 2012
  • 70. DDD - Building Blocks Service “...if a single process or transformation in domain is not a natural responsibility of an entity or value => make it a standalone service with a nice interface." Thursday, March 1, 2012
  • 71. DDD - Building Blocks Service “...if a single process or transformation in domain is not a natural responsibility of an entity or value => make it a standalone service with a nice interface." • stateless Thursday, March 1, 2012
  • 72. DDD - Building Blocks Service “...if a single process or transformation in domain is not a natural responsibility of an entity or value => make it a standalone service with a nice interface." • stateless • offer a useful service or action and deals with other domain objects Thursday, March 1, 2012
  • 73. DDD - Building Blocks Service “...if a single process or transformation in domain is not a natural responsibility of an entity or value => make it a standalone service with a nice interface." • stateless • offer a useful service or action and deals with other domain objects • defined in common domain language Thursday, March 1, 2012
  • 74. DDD - Building Blocks Service “...if a single process or transformation in domain is not a natural responsibility of an entity or value => make it a standalone service with a nice interface." • stateless • offer a useful service or action and deals with other domain objects • defined in common domain language • do not mix with other layers Thursday, March 1, 2012
  • 75. DDD - Building Blocks Service “...if a single process or transformation in domain is not a natural responsibility of an entity or value => make it a standalone service with a nice interface." • stateless • offer a useful service or action and deals with other domain objects • defined in common domain language • do not mix with other layers Examples: FundTransferService / PackageRoutingService / SimCardActivationService Thursday, March 1, 2012
  • 76. DDD - Building Blocks Thursday, March 1, 2012
  • 77. DDD - Building Blocks Repository Thursday, March 1, 2012
  • 78. DDD - Building Blocks Repository For each object where you need global access create a repository object that can provide the illusion of an in memory collection of all objects of that type. Setup access through a well knows global interface. Thursday, March 1, 2012
  • 79. DDD - Building Blocks Repository For each object where you need global access create a repository object that can provide the illusion of an in memory collection of all objects of that type. Setup access through a well knows global interface. • typicaly methods for add() remove() and find*() Thursday, March 1, 2012
  • 80. DDD - Building Blocks Repository For each object where you need global access create a repository object that can provide the illusion of an in memory collection of all objects of that type. Setup access through a well knows global interface. • typicaly methods for add() remove() and find*() •find* methods communicate design decisions about how to access the data Thursday, March 1, 2012
  • 81. DDD - Building Blocks Repository For each object where you need global access create a repository object that can provide the illusion of an in memory collection of all objects of that type. Setup access through a well knows global interface. • typicaly methods for add() remove() and find*() •find* methods communicate design decisions about how to access the data • ..reconstitution? Thursday, March 1, 2012
  • 82. DDD - Building Blocks Thursday, March 1, 2012
  • 83. DDD - Building Blocks Factory Thursday, March 1, 2012
  • 84. DDD - Building Blocks Factory A factory hides logic for building objects - this is especially relevant for aggregates! Thursday, March 1, 2012
  • 85. DDD - Building Blocks Factory A factory hides logic for building objects - this is especially relevant for aggregates! • atomic (need to pass all essential parameters) Thursday, March 1, 2012
  • 86. DDD - Building Blocks Factory A factory hides logic for building objects - this is especially relevant for aggregates! • atomic (need to pass all essential parameters) • not allowed to give wrong results (exceptions) Thursday, March 1, 2012
  • 87. DDD - Building Blocks Factory A factory hides logic for building objects - this is especially relevant for aggregates! • atomic (need to pass all essential parameters) • not allowed to give wrong results (exceptions) • entity vs. value factories Thursday, March 1, 2012
  • 88. DDD - Building Blocks Factory A factory hides logic for building objects - this is especially relevant for aggregates! • atomic (need to pass all essential parameters) • not allowed to give wrong results (exceptions) • entity vs. value factories • (can also be used for reconstitution ) Thursday, March 1, 2012
  • 90. Find a Supple Design Thursday, March 1, 2012
  • 91. Find a Supple Design vs. Thursday, March 1, 2012
  • 92. Supple Design „Speak in Domain Language“ Thursday, March 1, 2012
  • 93. Supple Design „Speak in Domain Language“ ‣ Try to explain scenarios loud with the use of the model and the ubiquitous language Thursday, March 1, 2012
  • 94. Supple Design „Speak in Domain Language“ ‣ Try to explain scenarios loud with the use of the model and the ubiquitous language ‣ Try to explain scenarios more simple/better (find easier ways to say what you need to say). => That helps refining the model. Thursday, March 1, 2012
  • 95. Supple Design „Reduce Associations“ Thursday, March 1, 2012
  • 96. Supple Design „Reduce Associations“ ‣ Avoid many association and use only a minimum of relations because they decrease maintainability! Thursday, March 1, 2012
  • 97. Supple Design „Reduce Associations“ ‣ Avoid many association and use only a minimum of relations because they decrease maintainability! ‣ traversal instead of bidirectional Thursday, March 1, 2012
  • 98. Supple Design „Reduce Associations“ ‣ Avoid many association and use only a minimum of relations because they decrease maintainability! ‣ traversal instead of bidirectional ‣ adding qualifier to reduce multiplicity (class missing?) Thursday, March 1, 2012
  • 99. Supple Design „Reduce Associations“ ‣ Avoid many association and use only a minimum of relations because they decrease maintainability! ‣ traversal instead of bidirectional ‣ adding qualifier to reduce multiplicity (class missing?) ‣ eliminate non essential assoc. Thursday, March 1, 2012
  • 100. Supple Design „Reduce Associations“ ‣ Avoid many association and use only a minimum of relations because they decrease maintainability! ‣ traversal instead of bidirectional ‣ adding qualifier to reduce multiplicity (class missing?) ‣ eliminate non essential assoc. ‣ find and use aggregates Thursday, March 1, 2012
  • 101. Supple Design „Reduce Associations“ ‣ Avoid many association and use only a minimum of relations because they decrease maintainability! ‣ traversal instead of bidirectional ‣ adding qualifier to reduce multiplicity (class missing?) ‣ eliminate non essential assoc. ‣ find and use aggregates => Intuition and Refactoring Thursday, March 1, 2012
  • 102. Supple Design „Reduce Associations“ ‣ Avoid many association and use only a minimum of relations because they decrease maintainability! ‣ traversal instead of bidirectional ‣ adding qualifier to reduce multiplicity (class missing?) ‣ eliminate non essential assoc. ‣ find and use aggregates => Intuition and Refactoring ... country / president example ... Thursday, March 1, 2012
  • 103. Supple Design - Aggregates Thursday, March 1, 2012
  • 104. Supple Design - Aggregates ‣ An aggregate is a group of objects that belong together (a group of individual objects that represents a unit) Thursday, March 1, 2012
  • 105. Supple Design - Aggregates ‣ An aggregate is a group of objects that belong together (a group of individual objects that represents a unit) ‣ ...car example... (root, boundary, invariants ) Thursday, March 1, 2012
  • 106. Supple Design - „Explicit constrains“ Thursday, March 1, 2012
  • 107. Supple Design - „Explicit constrains“ ‣ name and make constrains explicit. That gives it a name you can talk about and the code is more understandable Thursday, March 1, 2012
  • 108. Supple Design - „Explicit constrains“ ‣ name and make constrains explicit. That gives it a name you can talk about and the code is more understandable Bucket example Thursday, March 1, 2012
  • 109. Supple Design - „Specifications“ Thursday, March 1, 2012
  • 110. Supple Design - „Specifications“ ‣ you can use „Specifications“ to explicit express rules Thursday, March 1, 2012
  • 111. Supple Design - „Specifications“ ‣ you can use „Specifications“ to explicit express rules examples: Thursday, March 1, 2012
  • 112. Supple Design - „Specifications“ ‣ you can use „Specifications“ to explicit express rules examples: „InventoryDelinquentSpecification“->isSatisfied() Thursday, March 1, 2012
  • 113. Supple Design - „Specifications“ ‣ you can use „Specifications“ to explicit express rules examples: „InventoryDelinquentSpecification“->isSatisfied() „GoldenCustomerSpecification“->isSatisfied($customer) Thursday, March 1, 2012
  • 114. Supple Design - Modules If your model tells a story a module is a chapter Thursday, March 1, 2012
  • 115. Supple Design - Modules Customer Order Customer Contract Basket Order OrderItems Product AbstractProduct Prepaid Thursday, March 1, 2012
  • 116. Supple Design - Modules Customer Order Customer Contract Basket Order OrderItems Product AbstractProduct • group by meaning in the domain Prepaid Thursday, March 1, 2012
  • 117. Supple Design - Modules Customer Order Customer Contract Basket Order OrderItems Product AbstractProduct • group by meaning in the domain • loose coupling between modules Prepaid Thursday, March 1, 2012
  • 118. Supple Design - What else Thursday, March 1, 2012
  • 119. Supple Design - What else • Intention Revalving Interfaces Thursday, March 1, 2012
  • 120. Supple Design - What else • Intention Revalving Interfaces • standalone classes where possible Thursday, March 1, 2012
  • 121. Supple Design - What else • Intention Revalving Interfaces • standalone classes where possible • closure of operations Thursday, March 1, 2012
  • 122. Supple Design - What else • Intention Revalving Interfaces • standalone classes where possible • closure of operations • side effect free functions Thursday, March 1, 2012
  • 123. Thank you for great year! Thursday, March 1, 2012
  • 124. Thank you for great year! Thanks Thursday, March 1, 2012