SlideShare ist ein Scribd-Unternehmen logo
1 von 124
Downloaden Sie, um offline zu lesen
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
ā€£ We need to write an application that solves
buissiness problems
The problem
Thursday, March 1, 2012
ā€£ We need to write an application that solves
buissiness problems
ā€£ We want to use OOP
The problem
Thursday, March 1, 2012
ā€£ We need to write an application that solves
buissiness problems
ā€£ We want to use OOP
ā€£ We need to ļ¬nd a good design:
The problem
Thursday, March 1, 2012
ā€£ We need to write an application that solves
buissiness problems
ā€£ We want to use OOP
ā€£ We need to ļ¬nd a good design:
ā€£ understanding the problem and the buissiness
The problem
Thursday, March 1, 2012
ā€£ We need to write an application that solves
buissiness problems
ā€£ We want to use OOP
ā€£ We need to ļ¬nd a good design:
ā€£ understanding the problem and the buissiness
ā€£ ļ¬nd understandable class-structure
The problem
Thursday, March 1, 2012
ā€£ We need to write an application that solves
buissiness problems
ā€£ We want to use OOP
ā€£ We need to ļ¬nd a good design:
ā€£ understanding the problem and the buissiness
ā€£ ļ¬nd understandable class-structure
ā€£ build maintainable software, that can be adjusted
easy when the buissiness changes
The problem
Thursday, March 1, 2012
Thursday, March 1, 2012
Domain Model ?
Thursday, March 1, 2012
Domain Model ?
Thursday, March 1, 2012
ā€£ The domain model offers a simpliļ¬ed, abstract view of
the problem
Domain Model
Domain Model
Thursday, March 1, 2012
ā€£ The domain model offers a simpliļ¬ed, abstract view of
the problem
Domain Model
Domain Model
Domain Experts
Thursday, March 1, 2012
ā€£ The domain model offers a simpliļ¬ed, abstract view of
the problem
Domain Model
Domain Model
Domain Experts
Implementators
Thursday, March 1, 2012
ā€£ The domain model offers a simpliļ¬ed, abstract view of
the problem
Domain Model
Domain Model
Domain Experts
Implementators
Thursday, March 1, 2012
ā€£ The domain model offers a simpliļ¬ed, abstract view of
the problem
Domain Model
Domain Model
Domain Experts
Implementators
Knowledge Crunching
& Analysis
Thursday, March 1, 2012
ā€£ The domain model offers a simpliļ¬ed, abstract view of
the problem
Domain Model
Domain Model
Domain Experts
Implementators
Knowledge Crunching
& Analysis
Thursday, March 1, 2012
ā€£ a common language should be used to describe the
problem
Domain Model
Domain Model
Domain Experts
Implementators
Ubiquitous
Domain Language
Uses terms
Both understand
Thursday, March 1, 2012
ā€£ a common language should be used to describe the
problem
Domain Model
Domain Model
Domain Experts
Implementators
Ubiquitous
Domain Language
Uses terms
Both understand
Thursday, March 1, 2012
ā€£ The Domain Model can be represented as Text, Speech
or Code...
Domain Model
Domain Model
Thursday, March 1, 2012
ā€£ The Domain Model can be represented as Text, Speech
or Code...
Domain Model
Domain Model
Text
A customer can have multiple contracts.
The customer gets monthly bills to his
billing address.
Thursday, March 1, 2012
ā€£ The Domain Model can be represented as Text, Speech
or Code...
Domain Model
Domain Model
Text
UML
A customer can have multiple contracts.
The customer gets monthly bills to his
billing address.
Thursday, March 1, 2012
ā€£ The Domain Model can be represented as Text, Speech
or Code...
Domain Model
Domain Model
Text
UML
A customer can have multiple contracts.
The customer gets monthly bills to his
billing address.
Code
Thursday, March 1, 2012
Thursday, March 1, 2012
UML
Thursday, March 1, 2012
ā€¢UML is perfect to describe, scetch or discuss a domain
model.
UML
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
ā€£ class diagram describes the attributes and operations of
a class and also the constraints imposed on the system.
UML - Class Diagram
Thursday, March 1, 2012
ā€£ 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)
UML - Class Diagram
Thursday, March 1, 2012
ā€£ 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ā€œ)
UML - Class Diagram
Thursday, March 1, 2012
ā€£ classes with:
ā€£ attributes (<name>:<type> )
ā€£ methods
ā€£ annotations and properties
ā€£ Associations
ā€£ Multiplicity, roles
ā€£ Traversal
ā€£ Aggregation, Composition
ā€£ Inheritance, Dependency
ā€£ Qualiļ¬er
ā€£ Association Class
UML - Class Diagram - Examples
Thursday, March 1, 2012
ā€£ Depend on class diagrams
ā€£ ā€žSnapshotā€œ of instances and theire relations
ā€£ Perfect to understand object behaviour and their
relationship from practical perspective
UML - Object Diagram
Thursday, March 1, 2012
ā€£ Depend on class diagrams
ā€£ Perfect to explain how objects work together to
ā€žfulļ¬llā€œ a use-case.
ā€£ useful to detect weakness and improvements in your
design
UML - Sequence Diagram
Thursday, March 1, 2012
Thursday, March 1, 2012
Domain Driven Design
Basics
Thursday, March 1, 2012
1. Layered Architecture
2. Common Building Blocks and Rules
3. Find a ā€žsupple designā€œ
4. See the big picture
Domain Driven Design - Basics
Thursday, March 1, 2012
DDD - Layered Architecture
Thursday, March 1, 2012
DDD - Layered Architecture
Infrastructure / System
Logging
Persitence
Speaking to Webservices
File Formats
Thursday, March 1, 2012
DDD - Layered Architecture
Domain Model
Infrastructure / System
Logging
Persitence
Speaking to Webservices
File Formats
Core Business Logic
Thursday, March 1, 2012
DDD - Layered Architecture
Domain Model
Application Layer (thin)
Infrastructure / System
Logging
Persitence
Speaking to Webservices
File Formats
Core Business Logic
Controller / (Export/Import)
Thursday, March 1, 2012
DDD - Layered Architecture
Domain Model
Application Layer (thin)
Infrastructure / System
Logging
Persitence
Speaking to Webservices
File Formats
Core Business Logic
Controller / (Export/Import)User /
Other Apps
Thursday, March 1, 2012
DDD - Layered Architecture
Domain Model
Application Layer (thin)
View
Infrastructure / System
Logging
Persitence
Speaking to Webservices
File Formats
Core Business Logic
Controller / (Export/Import)
Templates / Presentation Objects
User /
Other Apps
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
Values
Services
Repository
Thursday, March 1, 2012
DDD - Building Blocks
Entities
Values
Services
Repository
Factory
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 deļ¬ned 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 deļ¬ned 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 deļ¬ned 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 deļ¬ned by its identity (not by
attributes). For example "Person", "Car", "Costumer" or
"BankTransaction".
ā€¢ often has some ID value
ā€¢ continuity through livecycle
ā€¢ keep class deļ¬nition 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
ā€¢ deļ¬ned 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
ā€¢ deļ¬ned 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
ā€¢ deļ¬ned 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 ļ¬nd*()
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 ļ¬nd*()
ā€¢ļ¬nd* 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 ļ¬nd*()
ā€¢ļ¬nd* 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
ā€£ Try to explain scenarios loud with the use of the model
and the ubiquitous language
Supple Design ā€žSpeak in Domain Languageā€œ
Thursday, March 1, 2012
ā€£ Try to explain scenarios loud with the use of the model
and the ubiquitous language
ā€£ Try to explain scenarios more simple/better (ļ¬nd easier
ways to say what you need to say).
=> That helps reļ¬ning the model.
Supple Design ā€žSpeak in Domain Languageā€œ
Thursday, March 1, 2012
Supple Design ā€žReduce Associationsā€œ
Thursday, March 1, 2012
ā€£ Avoid many association and use only a minimum of
relations because they decrease maintainability!
Supple Design ā€žReduce Associationsā€œ
Thursday, March 1, 2012
ā€£ Avoid many association and use only a minimum of
relations because they decrease maintainability!
ā€£ traversal instead of bidirectional
Supple Design ā€žReduce Associationsā€œ
Thursday, March 1, 2012
ā€£ Avoid many association and use only a minimum of
relations because they decrease maintainability!
ā€£ traversal instead of bidirectional
ā€£ adding qualiļ¬er to reduce multiplicity (class missing?)
Supple Design ā€žReduce Associationsā€œ
Thursday, March 1, 2012
ā€£ Avoid many association and use only a minimum of
relations because they decrease maintainability!
ā€£ traversal instead of bidirectional
ā€£ adding qualiļ¬er to reduce multiplicity (class missing?)
ā€£ eliminate non essential assoc.
Supple Design ā€žReduce Associationsā€œ
Thursday, March 1, 2012
ā€£ Avoid many association and use only a minimum of
relations because they decrease maintainability!
ā€£ traversal instead of bidirectional
ā€£ adding qualiļ¬er to reduce multiplicity (class missing?)
ā€£ eliminate non essential assoc.
ā€£ ļ¬nd and use aggregates
Supple Design ā€žReduce Associationsā€œ
Thursday, March 1, 2012
ā€£ Avoid many association and use only a minimum of
relations because they decrease maintainability!
ā€£ traversal instead of bidirectional
ā€£ adding qualiļ¬er to reduce multiplicity (class missing?)
ā€£ eliminate non essential assoc.
ā€£ ļ¬nd and use aggregates
=> Intuition and Refactoring
Supple Design ā€žReduce Associationsā€œ
Thursday, March 1, 2012
ā€£ Avoid many association and use only a minimum of
relations because they decrease maintainability!
ā€£ traversal instead of bidirectional
ā€£ adding qualiļ¬er to reduce multiplicity (class missing?)
ā€£ eliminate non essential assoc.
ā€£ ļ¬nd and use aggregates
=> Intuition and Refactoring
... country / president example ...
Supple Design ā€žReduce Associationsā€œ
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 ā€žSpeciļ¬cationsā€œ to explicit express rules
Thursday, March 1, 2012
Supple Design - ā€žSpecificationsā€œ
ā€£ you can use ā€žSpeciļ¬cationsā€œ to explicit express rules
examples:
Thursday, March 1, 2012
Supple Design - ā€žSpecificationsā€œ
ā€£ you can use ā€žSpeciļ¬cationsā€œ to explicit express rules
examples:
ā€žInventoryDelinquentSpeciļ¬cationā€œ->isSatisļ¬ed()
Thursday, March 1, 2012
Supple Design - ā€žSpecificationsā€œ
ā€£ you can use ā€žSpeciļ¬cationsā€œ to explicit express rules
examples:
ā€žInventoryDelinquentSpeciļ¬cationā€œ->isSatisļ¬ed()
ā€žGoldenCustomerSpeciļ¬cationā€œ->isSatisļ¬ed($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
Product
Customer Contract Basket Order
OrderItems
AbstractProduct
Prepaid
Thursday, March 1, 2012
Supple Design - Modules
Customer Order
Product
Customer Contract Basket Order
OrderItems
AbstractProduct
Prepaid
ā€¢ group by meaning in the domain
Thursday, March 1, 2012
Supple Design - Modules
Customer Order
Product
Customer Contract Basket Order
OrderItems
AbstractProduct
Prepaid
ā€¢ group by meaning in the domain
ā€¢ loose coupling between modules
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

Weitere Ƥhnliche Inhalte

Ƅhnlich wie Domain Driven Design

Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven DesignAOE
Ā 
Importance Of Being Driven
Importance Of Being DrivenImportance Of Being Driven
Importance Of Being DrivenAntonio Terreno
Ā 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven DesignLalit Kale
Ā 
Sig A&D - Documentation And Communication
Sig A&D - Documentation And CommunicationSig A&D - Documentation And Communication
Sig A&D - Documentation And CommunicationDavid Meijers
Ā 
How to integrate the results of the Country Reports in the Semantic Wiki
How to integrate the results of the Country Reports in the Semantic WikiHow to integrate the results of the Country Reports in the Semantic Wiki
How to integrate the results of the Country Reports in the Semantic WikiAtrium Forest
Ā 
Games for the Masses - Wie DevOps die Entwicklung von Architektur verƤndert (...
Games for the Masses - Wie DevOps die Entwicklung von Architektur verƤndert (...Games for the Masses - Wie DevOps die Entwicklung von Architektur verƤndert (...
Games for the Masses - Wie DevOps die Entwicklung von Architektur verƤndert (...Wooga
Ā 
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
Ā 
Design Types
Design TypesDesign Types
Design Types1&1
Ā 
Ooad
OoadOoad
Ooadjojikhan
Ā 
Multilingual solutions florian loretan
Multilingual solutions florian loretanMultilingual solutions florian loretan
Multilingual solutions florian loretandrupalconf
Ā 
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
Ā 
Object-Oriented Analysis and Design
Object-Oriented Analysis and DesignObject-Oriented Analysis and Design
Object-Oriented Analysis and DesignRiazAhmad786
Ā 
Help Me Design A Better Homepage
Help Me Design A Better HomepageHelp Me Design A Better Homepage
Help Me Design A Better Homepagejtcchan
Ā 
Inventing The Next Business Programming Language
Inventing The Next Business Programming LanguageInventing The Next Business Programming Language
Inventing The Next Business Programming LanguageRichard Green
Ā 
PHP development for large agile projects
PHP development for large agile projectsPHP development for large agile projects
PHP development for large agile projectsGrzegorz Godlewski
Ā 
Introduction to Object Oriented Design
Introduction to Object Oriented DesignIntroduction to Object Oriented Design
Introduction to Object Oriented DesignComputing Cage
Ā 
NCDevCon2012_designing the mobile experience
NCDevCon2012_designing the mobile experienceNCDevCon2012_designing the mobile experience
NCDevCon2012_designing the mobile experienceDee Sadler
Ā 
Constructing a Contemporary Textbook
Constructing a Contemporary TextbookConstructing a Contemporary Textbook
Constructing a Contemporary TextbookRandy Connolly
Ā 

Ƅhnlich wie Domain Driven Design (20)

Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
Ā 
Importance Of Being Driven
Importance Of Being DrivenImportance Of Being Driven
Importance Of Being Driven
Ā 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
Ā 
Sig A&D - Documentation And Communication
Sig A&D - Documentation And CommunicationSig A&D - Documentation And Communication
Sig A&D - Documentation And Communication
Ā 
How to integrate the results of the Country Reports in the Semantic Wiki
How to integrate the results of the Country Reports in the Semantic WikiHow to integrate the results of the Country Reports in the Semantic Wiki
How to integrate the results of the Country Reports in the Semantic Wiki
Ā 
Games for the Masses - Wie DevOps die Entwicklung von Architektur verƤndert (...
Games for the Masses - Wie DevOps die Entwicklung von Architektur verƤndert (...Games for the Masses - Wie DevOps die Entwicklung von Architektur verƤndert (...
Games for the Masses - Wie DevOps die Entwicklung von Architektur verƤndert (...
Ā 
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
Ā 
Design Types
Design TypesDesign Types
Design Types
Ā 
Ooad
OoadOoad
Ooad
Ā 
Multilingual solutions florian loretan
Multilingual solutions florian loretanMultilingual solutions florian loretan
Multilingual solutions florian loretan
Ā 
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
Ā 
Object-Oriented Analysis and Design
Object-Oriented Analysis and DesignObject-Oriented Analysis and Design
Object-Oriented Analysis and Design
Ā 
Help Me Design A Better Homepage
Help Me Design A Better HomepageHelp Me Design A Better Homepage
Help Me Design A Better Homepage
Ā 
Inventing The Next Business Programming Language
Inventing The Next Business Programming LanguageInventing The Next Business Programming Language
Inventing The Next Business Programming Language
Ā 
PHP development for large agile projects
PHP development for large agile projectsPHP development for large agile projects
PHP development for large agile projects
Ā 
Introduction to Object Oriented Design
Introduction to Object Oriented DesignIntroduction to Object Oriented Design
Introduction to Object Oriented Design
Ā 
NCDevCon2012_designing the mobile experience
NCDevCon2012_designing the mobile experienceNCDevCon2012_designing the mobile experience
NCDevCon2012_designing the mobile experience
Ā 
Constructing a Contemporary Textbook
Constructing a Contemporary TextbookConstructing a Contemporary Textbook
Constructing a Contemporary Textbook
Ā 
OOA&D Lecture1
OOA&D Lecture1OOA&D Lecture1
OOA&D Lecture1
Ā 
Object Oriented Analysis and Design
Object Oriented Analysis and DesignObject Oriented Analysis and Design
Object Oriented Analysis and Design
Ā 

Mehr von AOE

Re-inventing airport non-aeronautical revenue generation post COVID-19
Re-inventing airport non-aeronautical revenue generation post COVID-19Re-inventing airport non-aeronautical revenue generation post COVID-19
Re-inventing airport non-aeronautical revenue generation post COVID-19AOE
Ā 
Flamingo - Inspiring Commerce Frontend made in Go - Meet Magento 2019
Flamingo - Inspiring Commerce Frontend made in Go - Meet Magento 2019Flamingo - Inspiring Commerce Frontend made in Go - Meet Magento 2019
Flamingo - Inspiring Commerce Frontend made in Go - Meet Magento 2019AOE
Ā 
Flamingo presentation at code.talks commerce by Daniel Pƶtzinger
Flamingo presentation at code.talks commerce by Daniel PƶtzingerFlamingo presentation at code.talks commerce by Daniel Pƶtzinger
Flamingo presentation at code.talks commerce by Daniel PƶtzingerAOE
Ā 
A bag full of trust - Christof Braun at AOE Conference 2018
A bag full of trust - Christof Braun at AOE Conference 2018A bag full of trust - Christof Braun at AOE Conference 2018
A bag full of trust - Christof Braun at AOE Conference 2018AOE
Ā 
Digitalizing the Global Travel Retail World - Kian Gould at Global Retailing ...
Digitalizing the Global Travel Retail World - Kian Gould at Global Retailing ...Digitalizing the Global Travel Retail World - Kian Gould at Global Retailing ...
Digitalizing the Global Travel Retail World - Kian Gould at Global Retailing ...AOE
Ā 
Frankfurt Airport Digitalization Case Study
Frankfurt Airport Digitalization Case StudyFrankfurt Airport Digitalization Case Study
Frankfurt Airport Digitalization Case StudyAOE
Ā 
This is what has to change for Travel Retail to survive - Manuel Heidler, AOE
This is what has to change for Travel Retail to survive - Manuel Heidler, AOEThis is what has to change for Travel Retail to survive - Manuel Heidler, AOE
This is what has to change for Travel Retail to survive - Manuel Heidler, AOEAOE
Ā 
AOEconf17: Application Security
AOEconf17: Application SecurityAOEconf17: Application Security
AOEconf17: Application SecurityAOE
Ā 
AOEconf17: AOE Tech Radar Insights
AOEconf17: AOE Tech Radar InsightsAOEconf17: AOE Tech Radar Insights
AOEconf17: AOE Tech Radar InsightsAOE
Ā 
AOEconf17: A flight through our OMĀ³ Systems
AOEconf17: A flight through our OMĀ³ SystemsAOEconf17: A flight through our OMĀ³ Systems
AOEconf17: A flight through our OMĀ³ SystemsAOE
Ā 
AOEconf17: AOE Tech Radar Insights
AOEconf17: AOE Tech Radar InsightsAOEconf17: AOE Tech Radar Insights
AOEconf17: AOE Tech Radar InsightsAOE
Ā 
AOEconf17: Pets vs. Cattle - modern Application Infrastructure - by Fabrizio ...
AOEconf17: Pets vs. Cattle - modern Application Infrastructure - by Fabrizio ...AOEconf17: Pets vs. Cattle - modern Application Infrastructure - by Fabrizio ...
AOEconf17: Pets vs. Cattle - modern Application Infrastructure - by Fabrizio ...AOE
Ā 
AOEconf17: Agile scaling concepts
AOEconf17: Agile scaling conceptsAOEconf17: Agile scaling concepts
AOEconf17: Agile scaling conceptsAOE
Ā 
AOEcon17: Searchperience - The journey from PHP and Solr to Scala and Elastic...
AOEcon17: Searchperience - The journey from PHP and Solr to Scala and Elastic...AOEcon17: Searchperience - The journey from PHP and Solr to Scala and Elastic...
AOEcon17: Searchperience - The journey from PHP and Solr to Scala and Elastic...AOE
Ā 
AOEconf17: UI challenges in a microservice world
AOEconf17: UI challenges in a microservice worldAOEconf17: UI challenges in a microservice world
AOEconf17: UI challenges in a microservice worldAOE
Ā 
AOEconf17: Application Security - Bastian Ike
AOEconf17: Application Security - Bastian IkeAOEconf17: Application Security - Bastian Ike
AOEconf17: Application Security - Bastian IkeAOE
Ā 
AOEconf17: Management 3.0 - the secret to happy, performing and motivated sel...
AOEconf17: Management 3.0 - the secret to happy, performing and motivated sel...AOEconf17: Management 3.0 - the secret to happy, performing and motivated sel...
AOEconf17: Management 3.0 - the secret to happy, performing and motivated sel...AOE
Ā 
AOEconf17: How to eat an elePHPant, congstar style - Timo Fuchs & Stefan Rotsch
AOEconf17: How to eat an elePHPant, congstar style - Timo Fuchs & Stefan RotschAOEconf17: How to eat an elePHPant, congstar style - Timo Fuchs & Stefan Rotsch
AOEconf17: How to eat an elePHPant, congstar style - Timo Fuchs & Stefan RotschAOE
Ā 
Joern Bock: The basic concept of an agile organisation
Joern Bock: The basic concept of an agile organisationJoern Bock: The basic concept of an agile organisation
Joern Bock: The basic concept of an agile organisationAOE
Ā 
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...AOE
Ā 

Mehr von AOE (20)

Re-inventing airport non-aeronautical revenue generation post COVID-19
Re-inventing airport non-aeronautical revenue generation post COVID-19Re-inventing airport non-aeronautical revenue generation post COVID-19
Re-inventing airport non-aeronautical revenue generation post COVID-19
Ā 
Flamingo - Inspiring Commerce Frontend made in Go - Meet Magento 2019
Flamingo - Inspiring Commerce Frontend made in Go - Meet Magento 2019Flamingo - Inspiring Commerce Frontend made in Go - Meet Magento 2019
Flamingo - Inspiring Commerce Frontend made in Go - Meet Magento 2019
Ā 
Flamingo presentation at code.talks commerce by Daniel Pƶtzinger
Flamingo presentation at code.talks commerce by Daniel PƶtzingerFlamingo presentation at code.talks commerce by Daniel Pƶtzinger
Flamingo presentation at code.talks commerce by Daniel Pƶtzinger
Ā 
A bag full of trust - Christof Braun at AOE Conference 2018
A bag full of trust - Christof Braun at AOE Conference 2018A bag full of trust - Christof Braun at AOE Conference 2018
A bag full of trust - Christof Braun at AOE Conference 2018
Ā 
Digitalizing the Global Travel Retail World - Kian Gould at Global Retailing ...
Digitalizing the Global Travel Retail World - Kian Gould at Global Retailing ...Digitalizing the Global Travel Retail World - Kian Gould at Global Retailing ...
Digitalizing the Global Travel Retail World - Kian Gould at Global Retailing ...
Ā 
Frankfurt Airport Digitalization Case Study
Frankfurt Airport Digitalization Case StudyFrankfurt Airport Digitalization Case Study
Frankfurt Airport Digitalization Case Study
Ā 
This is what has to change for Travel Retail to survive - Manuel Heidler, AOE
This is what has to change for Travel Retail to survive - Manuel Heidler, AOEThis is what has to change for Travel Retail to survive - Manuel Heidler, AOE
This is what has to change for Travel Retail to survive - Manuel Heidler, AOE
Ā 
AOEconf17: Application Security
AOEconf17: Application SecurityAOEconf17: Application Security
AOEconf17: Application Security
Ā 
AOEconf17: AOE Tech Radar Insights
AOEconf17: AOE Tech Radar InsightsAOEconf17: AOE Tech Radar Insights
AOEconf17: AOE Tech Radar Insights
Ā 
AOEconf17: A flight through our OMĀ³ Systems
AOEconf17: A flight through our OMĀ³ SystemsAOEconf17: A flight through our OMĀ³ Systems
AOEconf17: A flight through our OMĀ³ Systems
Ā 
AOEconf17: AOE Tech Radar Insights
AOEconf17: AOE Tech Radar InsightsAOEconf17: AOE Tech Radar Insights
AOEconf17: AOE Tech Radar Insights
Ā 
AOEconf17: Pets vs. Cattle - modern Application Infrastructure - by Fabrizio ...
AOEconf17: Pets vs. Cattle - modern Application Infrastructure - by Fabrizio ...AOEconf17: Pets vs. Cattle - modern Application Infrastructure - by Fabrizio ...
AOEconf17: Pets vs. Cattle - modern Application Infrastructure - by Fabrizio ...
Ā 
AOEconf17: Agile scaling concepts
AOEconf17: Agile scaling conceptsAOEconf17: Agile scaling concepts
AOEconf17: Agile scaling concepts
Ā 
AOEcon17: Searchperience - The journey from PHP and Solr to Scala and Elastic...
AOEcon17: Searchperience - The journey from PHP and Solr to Scala and Elastic...AOEcon17: Searchperience - The journey from PHP and Solr to Scala and Elastic...
AOEcon17: Searchperience - The journey from PHP and Solr to Scala and Elastic...
Ā 
AOEconf17: UI challenges in a microservice world
AOEconf17: UI challenges in a microservice worldAOEconf17: UI challenges in a microservice world
AOEconf17: UI challenges in a microservice world
Ā 
AOEconf17: Application Security - Bastian Ike
AOEconf17: Application Security - Bastian IkeAOEconf17: Application Security - Bastian Ike
AOEconf17: Application Security - Bastian Ike
Ā 
AOEconf17: Management 3.0 - the secret to happy, performing and motivated sel...
AOEconf17: Management 3.0 - the secret to happy, performing and motivated sel...AOEconf17: Management 3.0 - the secret to happy, performing and motivated sel...
AOEconf17: Management 3.0 - the secret to happy, performing and motivated sel...
Ā 
AOEconf17: How to eat an elePHPant, congstar style - Timo Fuchs & Stefan Rotsch
AOEconf17: How to eat an elePHPant, congstar style - Timo Fuchs & Stefan RotschAOEconf17: How to eat an elePHPant, congstar style - Timo Fuchs & Stefan Rotsch
AOEconf17: How to eat an elePHPant, congstar style - Timo Fuchs & Stefan Rotsch
Ā 
Joern Bock: The basic concept of an agile organisation
Joern Bock: The basic concept of an agile organisationJoern Bock: The basic concept of an agile organisation
Joern Bock: The basic concept of an agile organisation
Ā 
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...
Ā 

KĆ¼rzlich hochgeladen

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
Ā 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
Ā 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
Ā 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
Ā 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
Ā 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
Ā 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
Ā 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
Ā 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
Ā 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
Ā 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
Ā 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
Ā 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
Ā 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
Ā 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...gurkirankumar98700
Ā 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
Ā 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
Ā 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
Ā 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
Ā 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
Ā 

KĆ¼rzlich hochgeladen (20)

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Ā 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
Ā 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
Ā 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
Ā 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Ā 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Ā 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
Ā 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Ā 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
Ā 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Ā 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
Ā 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Ā 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Ā 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
Ā 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Ā 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Ā 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Ā 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Ā 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Ā 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
Ā 

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. ā€£ We need to write an application that solves buissiness problems The problem Thursday, March 1, 2012
  • 7. ā€£ We need to write an application that solves buissiness problems ā€£ We want to use OOP The problem Thursday, March 1, 2012
  • 8. ā€£ We need to write an application that solves buissiness problems ā€£ We want to use OOP ā€£ We need to ļ¬nd a good design: The problem Thursday, March 1, 2012
  • 9. ā€£ We need to write an application that solves buissiness problems ā€£ We want to use OOP ā€£ We need to ļ¬nd a good design: ā€£ understanding the problem and the buissiness The problem Thursday, March 1, 2012
  • 10. ā€£ We need to write an application that solves buissiness problems ā€£ We want to use OOP ā€£ We need to ļ¬nd a good design: ā€£ understanding the problem and the buissiness ā€£ ļ¬nd understandable class-structure The problem Thursday, March 1, 2012
  • 11. ā€£ We need to write an application that solves buissiness problems ā€£ We want to use OOP ā€£ We need to ļ¬nd a good design: ā€£ understanding the problem and the buissiness ā€£ ļ¬nd understandable class-structure ā€£ build maintainable software, that can be adjusted easy when the buissiness changes The problem Thursday, March 1, 2012
  • 13. Domain Model ? Thursday, March 1, 2012
  • 14. Domain Model ? Thursday, March 1, 2012
  • 15. ā€£ The domain model offers a simpliļ¬ed, abstract view of the problem Domain Model Domain Model Thursday, March 1, 2012
  • 16. ā€£ The domain model offers a simpliļ¬ed, abstract view of the problem Domain Model Domain Model Domain Experts Thursday, March 1, 2012
  • 17. ā€£ The domain model offers a simpliļ¬ed, abstract view of the problem Domain Model Domain Model Domain Experts Implementators Thursday, March 1, 2012
  • 18. ā€£ The domain model offers a simpliļ¬ed, abstract view of the problem Domain Model Domain Model Domain Experts Implementators Thursday, March 1, 2012
  • 19. ā€£ The domain model offers a simpliļ¬ed, abstract view of the problem Domain Model Domain Model Domain Experts Implementators Knowledge Crunching & Analysis Thursday, March 1, 2012
  • 20. ā€£ The domain model offers a simpliļ¬ed, abstract view of the problem Domain Model Domain Model Domain Experts Implementators Knowledge Crunching & Analysis Thursday, March 1, 2012
  • 21. ā€£ a common language should be used to describe the problem Domain Model Domain Model Domain Experts Implementators Ubiquitous Domain Language Uses terms Both understand Thursday, March 1, 2012
  • 22. ā€£ a common language should be used to describe the problem Domain Model Domain Model Domain Experts Implementators Ubiquitous Domain Language Uses terms Both understand Thursday, March 1, 2012
  • 23. ā€£ The Domain Model can be represented as Text, Speech or Code... Domain Model Domain Model Thursday, March 1, 2012
  • 24. ā€£ The Domain Model can be represented as Text, Speech or Code... Domain Model Domain Model Text A customer can have multiple contracts. The customer gets monthly bills to his billing address. Thursday, March 1, 2012
  • 25. ā€£ The Domain Model can be represented as Text, Speech or Code... Domain Model Domain Model Text UML A customer can have multiple contracts. The customer gets monthly bills to his billing address. Thursday, March 1, 2012
  • 26. ā€£ The Domain Model can be represented as Text, Speech or Code... Domain Model Domain Model Text UML A customer can have multiple contracts. The customer gets monthly bills to his billing address. Code Thursday, March 1, 2012
  • 29. ā€¢UML is perfect to describe, scetch or discuss a domain model. UML 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. ā€£ class diagram describes the attributes and operations of a class and also the constraints imposed on the system. UML - Class Diagram Thursday, March 1, 2012
  • 32. ā€£ 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) UML - Class Diagram Thursday, March 1, 2012
  • 33. ā€£ 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ā€œ) UML - Class Diagram Thursday, March 1, 2012
  • 34. ā€£ classes with: ā€£ attributes (<name>:<type> ) ā€£ methods ā€£ annotations and properties ā€£ Associations ā€£ Multiplicity, roles ā€£ Traversal ā€£ Aggregation, Composition ā€£ Inheritance, Dependency ā€£ Qualiļ¬er ā€£ Association Class UML - Class Diagram - Examples Thursday, March 1, 2012
  • 35. ā€£ Depend on class diagrams ā€£ ā€žSnapshotā€œ of instances and theire relations ā€£ Perfect to understand object behaviour and their relationship from practical perspective UML - Object Diagram Thursday, March 1, 2012
  • 36. ā€£ Depend on class diagrams ā€£ Perfect to explain how objects work together to ā€žfulļ¬llā€œ a use-case. ā€£ useful to detect weakness and improvements in your design UML - Sequence Diagram Thursday, March 1, 2012
  • 39. 1. Layered Architecture 2. Common Building Blocks and Rules 3. Find a ā€žsupple designā€œ 4. See the big picture Domain Driven Design - Basics Thursday, March 1, 2012
  • 40. DDD - Layered Architecture Thursday, March 1, 2012
  • 41. DDD - Layered Architecture Infrastructure / System Logging Persitence Speaking to Webservices File Formats Thursday, March 1, 2012
  • 42. DDD - Layered Architecture Domain Model Infrastructure / System Logging Persitence Speaking to Webservices File Formats Core Business Logic Thursday, March 1, 2012
  • 43. DDD - Layered Architecture Domain Model Application Layer (thin) Infrastructure / System Logging Persitence Speaking to Webservices File Formats Core Business Logic Controller / (Export/Import) Thursday, March 1, 2012
  • 44. DDD - Layered Architecture Domain Model Application Layer (thin) Infrastructure / System Logging Persitence Speaking to Webservices File Formats Core Business Logic Controller / (Export/Import)User / Other Apps Thursday, March 1, 2012
  • 45. DDD - Layered Architecture Domain Model Application Layer (thin) View Infrastructure / System Logging Persitence Speaking to Webservices File Formats Core Business Logic Controller / (Export/Import) Templates / Presentation Objects User / Other Apps 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 Values Services Repository Thursday, March 1, 2012
  • 54. DDD - Building Blocks Entities Values Services Repository Factory 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 deļ¬ned 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 deļ¬ned 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 deļ¬ned 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 deļ¬ned by its identity (not by attributes). For example "Person", "Car", "Costumer" or "BankTransaction". ā€¢ often has some ID value ā€¢ continuity through livecycle ā€¢ keep class deļ¬nition 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 ā€¢ deļ¬ned 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 ā€¢ deļ¬ned 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 ā€¢ deļ¬ned 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 ļ¬nd*() 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 ļ¬nd*() ā€¢ļ¬nd* 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 ļ¬nd*() ā€¢ļ¬nd* 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. ā€£ Try to explain scenarios loud with the use of the model and the ubiquitous language Supple Design ā€žSpeak in Domain Languageā€œ Thursday, March 1, 2012
  • 94. ā€£ Try to explain scenarios loud with the use of the model and the ubiquitous language ā€£ Try to explain scenarios more simple/better (ļ¬nd easier ways to say what you need to say). => That helps reļ¬ning the model. Supple Design ā€žSpeak in Domain Languageā€œ Thursday, March 1, 2012
  • 95. Supple Design ā€žReduce Associationsā€œ Thursday, March 1, 2012
  • 96. ā€£ Avoid many association and use only a minimum of relations because they decrease maintainability! Supple Design ā€žReduce Associationsā€œ Thursday, March 1, 2012
  • 97. ā€£ Avoid many association and use only a minimum of relations because they decrease maintainability! ā€£ traversal instead of bidirectional Supple Design ā€žReduce Associationsā€œ Thursday, March 1, 2012
  • 98. ā€£ Avoid many association and use only a minimum of relations because they decrease maintainability! ā€£ traversal instead of bidirectional ā€£ adding qualiļ¬er to reduce multiplicity (class missing?) Supple Design ā€žReduce Associationsā€œ Thursday, March 1, 2012
  • 99. ā€£ Avoid many association and use only a minimum of relations because they decrease maintainability! ā€£ traversal instead of bidirectional ā€£ adding qualiļ¬er to reduce multiplicity (class missing?) ā€£ eliminate non essential assoc. Supple Design ā€žReduce Associationsā€œ Thursday, March 1, 2012
  • 100. ā€£ Avoid many association and use only a minimum of relations because they decrease maintainability! ā€£ traversal instead of bidirectional ā€£ adding qualiļ¬er to reduce multiplicity (class missing?) ā€£ eliminate non essential assoc. ā€£ ļ¬nd and use aggregates Supple Design ā€žReduce Associationsā€œ Thursday, March 1, 2012
  • 101. ā€£ Avoid many association and use only a minimum of relations because they decrease maintainability! ā€£ traversal instead of bidirectional ā€£ adding qualiļ¬er to reduce multiplicity (class missing?) ā€£ eliminate non essential assoc. ā€£ ļ¬nd and use aggregates => Intuition and Refactoring Supple Design ā€žReduce Associationsā€œ Thursday, March 1, 2012
  • 102. ā€£ Avoid many association and use only a minimum of relations because they decrease maintainability! ā€£ traversal instead of bidirectional ā€£ adding qualiļ¬er to reduce multiplicity (class missing?) ā€£ eliminate non essential assoc. ā€£ ļ¬nd and use aggregates => Intuition and Refactoring ... country / president example ... Supple Design ā€žReduce Associationsā€œ 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 ā€žSpeciļ¬cationsā€œ to explicit express rules Thursday, March 1, 2012
  • 111. Supple Design - ā€žSpecificationsā€œ ā€£ you can use ā€žSpeciļ¬cationsā€œ to explicit express rules examples: Thursday, March 1, 2012
  • 112. Supple Design - ā€žSpecificationsā€œ ā€£ you can use ā€žSpeciļ¬cationsā€œ to explicit express rules examples: ā€žInventoryDelinquentSpeciļ¬cationā€œ->isSatisļ¬ed() Thursday, March 1, 2012
  • 113. Supple Design - ā€žSpecificationsā€œ ā€£ you can use ā€žSpeciļ¬cationsā€œ to explicit express rules examples: ā€žInventoryDelinquentSpeciļ¬cationā€œ->isSatisļ¬ed() ā€žGoldenCustomerSpeciļ¬cationā€œ->isSatisļ¬ed($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 Product Customer Contract Basket Order OrderItems AbstractProduct Prepaid Thursday, March 1, 2012
  • 116. Supple Design - Modules Customer Order Product Customer Contract Basket Order OrderItems AbstractProduct Prepaid ā€¢ group by meaning in the domain Thursday, March 1, 2012
  • 117. Supple Design - Modules Customer Order Product Customer Contract Basket Order OrderItems AbstractProduct Prepaid ā€¢ group by meaning in the domain ā€¢ loose coupling between modules 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