SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
1giovedì 23 maggio 13
Goals
Quickly sketch a model for a complex
system
Have the basic concepts of Domain-
Driven Design emerge without
prerequirements.
2giovedì 23 maggio 13
3giovedì 23 maggio 13
In practice...
Stick a paper roll on a wall.
We might have up to 25 metres of
modeling space
Collaborative work
4giovedì 23 maggio 13
Yes, I mean that much
space...
5giovedì 23 maggio 13
Domain Events
Might resemble an Activity Diagram
...but we’re not doing UML
Events cannot be discussed. They happened. Deal
with it.
System-wide view.
Every team start to imagine a domain, instead
of asking to the domain expert... :-(
Real system might be a lot simpler
Real system might be a lot more complex
6giovedì 23 maggio 13
Hint:
...it gets a lot more interesting if we
explore areas we don’t know.
... with the domain expert.
... with concrete examples.
7giovedì 23 maggio 13
8giovedì 23 maggio 13
Event Origin
Events do not just appear out of the
blue:
some originate from user actions
some originate in external systems
some are generated by time
...some are originated as a response to other
events
9giovedì 23 maggio 13
10giovedì 23 maggio 13
FLOW (team decided this way)
Team decided to start
from the right... we
called it WOLF instead
of FLOW then.
11giovedì 23 maggio 13
12giovedì 23 maggio 13
Event Flow
Search for predecessors or
consequences of our events
Using verbs in the past helps clarify the
semantics:
“wedding” is not an event, it’s a process (don’t
tell it to your wife)
More actors are joining our system
13giovedì 23 maggio 13
14giovedì 23 maggio 13
Aggregates
“How do I correctly define
aggregates?” ... yes, that’s THE
question
Have a look to DDD mailing lists, if you don’t
believe it
Our goal is to define aggregates outside
in
15giovedì 23 maggio 13
Definition
An aggregate represents consistency
unit: a group of classes changing state
together.
...but it’s not always clear enough...
...how big these objects are?
...how do they look like?
It has something to do with transactional
boundaries but ours might be wrong.
16giovedì 23 maggio 13
Rule of thumb
To sketch aggregate boundaries we can
think about
Informations deleted together
Informations moved together
Informations distributed together
...but that’s still a little too data-centric
17giovedì 23 maggio 13
Invariants
Forget data:
An aggregate can accept or reject a
command.
Upon which information?
What is always guaranteed for our
aggregate?
18giovedì 23 maggio 13
19giovedì 23 maggio 13
Aggregates
Shifting the focus on invariants helps
aggregate modeling
Smaller, more controllable units
Variations are propagated via Domain Events
A better domain exploration
The whole is eventually consistent
20giovedì 23 maggio 13
Example
Max particpants per class:
Where does this constraint come from?
Classroom capacity? --> accept and look for a
better location (if there’s time available)
Class physiological limit --> stand-by and
waiting list or propose next edition
No accidental complexity requirements.
21giovedì 23 maggio 13
22giovedì 23 maggio 13
Subdomains
Business level system partitioning
Some portions are core for our company
competitivity.
Es. things that are going to sell more.
Other are simply necessary, but no key
differentiators.
Es. invoicing: it’s needed but no customer will
choose us for the invoice layout. Good enough is
good enough.
23giovedì 23 maggio 13
Languages
In mid/large-sized companies we’ll have
many stakeholders.
Different goals
different backgrounds,
different languages
...will require different models
Caution: we aren’t talking about Bounded
Contexts...yet
24giovedì 23 maggio 13
25giovedì 23 maggio 13
Bounded Contexts
Highlight the different models in play
Software components
Legacy components
Languages used
They’re a realistic snapshot, not the
image of our wishes...
26giovedì 23 maggio 13
27giovedì 23 maggio 13
Users & Personas
Got a chance to include users and their
categories in the picture? Why not!?
We can highlight personas and make
them part of the model...
...especially if this triggers an
interesting conversation with the
domain experts.
28giovedì 23 maggio 13
29giovedì 23 maggio 13
Tests
Some interesting details might emerge
during the conversation. Why not take a
note?
In natural language
...according to BDD lingo (--> Cucumber)
In an event driven perspective, the
structure Given [events] When
[command] Then [event] fits very well :-)
30giovedì 23 maggio 13
31giovedì 23 maggio 13
Takeaways
Model of a complex enterprise system
ignoring data
... what if data model is part of the problem?
Tight focus on system behavior and not
on static data structure.
32giovedì 23 maggio 13
Takeaways
The model is created collectively in a
cooperative learning fashion and
provides a good high-level view.
Are you sure DEs know everything?
Time-boxed, but....
Space-boxed but....
33giovedì 23 maggio 13
Legacy Systems
The sketched model is close to an “ideal
system model”
It’s NOT the starting point to rewrite from scratch!
But it’s a good reference to establish a direction
Legacy components that do not belong in the
domain emerge like accidental complexity.
batch operations, legacy stuff feel really
inappropriate.
34giovedì 23 maggio 13
35giovedì 23 maggio 13

Weitere ähnliche Inhalte

Was ist angesagt?

The Architecture of Uncertainty
The Architecture of UncertaintyThe Architecture of Uncertainty
The Architecture of UncertaintyKevlin Henney
 
Redesigning everything ITARC Stockholm 2021
Redesigning everything ITARC Stockholm 2021Redesigning everything ITARC Stockholm 2021
Redesigning everything ITARC Stockholm 2021Alberto Brandolini
 
4 PM Anti-Patterns
4 PM Anti-Patterns4 PM Anti-Patterns
4 PM Anti-PatternsBert Heymans
 
30% faster coder on-boarding when you have a code cookbook
30% faster coder on-boarding when you have a code cookbook30% faster coder on-boarding when you have a code cookbook
30% faster coder on-boarding when you have a code cookbookGabriel Paunescu 🤖
 
How to be Pixel Perfect (Replaces Making Accessibility Accessible) - Matt Gy...
How to be Pixel Perfect  (Replaces Making Accessibility Accessible) - Matt Gy...How to be Pixel Perfect  (Replaces Making Accessibility Accessible) - Matt Gy...
How to be Pixel Perfect (Replaces Making Accessibility Accessible) - Matt Gy...City University London
 
1. solution design 1 design sprint
1. solution design 1  design sprint1. solution design 1  design sprint
1. solution design 1 design sprintKaline Mesquita
 
User stories applied ch4
User stories applied ch4User stories applied ch4
User stories applied ch4Jen-Chieh Ko
 
Experience Agile Programming - Kiev
Experience Agile Programming - KievExperience Agile Programming - Kiev
Experience Agile Programming - KievJohannes Brodwall
 
Design sprint info deck
Design sprint info deckDesign sprint info deck
Design sprint info deckDaniil Lanovyi
 
Real developers-dont-need-unit-tests
Real developers-dont-need-unit-testsReal developers-dont-need-unit-tests
Real developers-dont-need-unit-testsSkills Matter
 

Was ist angesagt? (18)

It's not simple at all
It's not simple at allIt's not simple at all
It's not simple at all
 
The sweet spot
The sweet spotThe sweet spot
The sweet spot
 
What lies beneath
What lies beneathWhat lies beneath
What lies beneath
 
Optimized for what
Optimized for whatOptimized for what
Optimized for what
 
The Architecture of Uncertainty
The Architecture of UncertaintyThe Architecture of Uncertainty
The Architecture of Uncertainty
 
Redesigning everything ITARC Stockholm 2021
Redesigning everything ITARC Stockholm 2021Redesigning everything ITARC Stockholm 2021
Redesigning everything ITARC Stockholm 2021
 
Extreme DDD modelling
Extreme DDD modellingExtreme DDD modelling
Extreme DDD modelling
 
Pissing against the wind
Pissing against the windPissing against the wind
Pissing against the wind
 
4 PM Anti-Patterns
4 PM Anti-Patterns4 PM Anti-Patterns
4 PM Anti-Patterns
 
30% faster coder on-boarding when you have a code cookbook
30% faster coder on-boarding when you have a code cookbook30% faster coder on-boarding when you have a code cookbook
30% faster coder on-boarding when you have a code cookbook
 
How to be Pixel Perfect (Replaces Making Accessibility Accessible) - Matt Gy...
How to be Pixel Perfect  (Replaces Making Accessibility Accessible) - Matt Gy...How to be Pixel Perfect  (Replaces Making Accessibility Accessible) - Matt Gy...
How to be Pixel Perfect (Replaces Making Accessibility Accessible) - Matt Gy...
 
Transactions redefined
Transactions redefinedTransactions redefined
Transactions redefined
 
Ppp2
Ppp2Ppp2
Ppp2
 
1. solution design 1 design sprint
1. solution design 1  design sprint1. solution design 1  design sprint
1. solution design 1 design sprint
 
User stories applied ch4
User stories applied ch4User stories applied ch4
User stories applied ch4
 
Experience Agile Programming - Kiev
Experience Agile Programming - KievExperience Agile Programming - Kiev
Experience Agile Programming - Kiev
 
Design sprint info deck
Design sprint info deckDesign sprint info deck
Design sprint info deck
 
Real developers-dont-need-unit-tests
Real developers-dont-need-unit-testsReal developers-dont-need-unit-tests
Real developers-dont-need-unit-tests
 

Andere mochten auch

Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)DotNetMarche
 
DDD 2011 - Dove Desideriamo Dirigerci
DDD 2011 - Dove Desideriamo DirigerciDDD 2011 - Dove Desideriamo Dirigerci
DDD 2011 - Dove Desideriamo DirigerciAlberto Brandolini
 
Domain Model e SOA (Service Oriented Architecture)
Domain Model e SOA (Service Oriented Architecture)Domain Model e SOA (Service Oriented Architecture)
Domain Model e SOA (Service Oriented Architecture)DotNetMarche
 
EventStorming Agile Tour Aix-Marseille
EventStorming Agile Tour Aix-MarseilleEventStorming Agile Tour Aix-Marseille
EventStorming Agile Tour Aix-MarseilleClement Bouillier
 
How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignAndrea Saltarello
 
Domain Driven Design Up And Running
Domain Driven Design Up And RunningDomain Driven Design Up And Running
Domain Driven Design Up And RunningIASA
 
Domain Driven Design - DDDSydney 2011
Domain Driven Design - DDDSydney 2011Domain Driven Design - DDDSydney 2011
Domain Driven Design - DDDSydney 2011thinkddd
 
Unleash Your Domain With Greg Young @ DDD-Day
Unleash Your Domain With Greg Young @ DDD-DayUnleash Your Domain With Greg Young @ DDD-Day
Unleash Your Domain With Greg Young @ DDD-DayDotNetMarche
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven DesignAndré Borgonovo
 
Projections explained
Projections explainedProjections explained
Projections explainedYves Reynhout
 
Greg Young on Architectural Innovation: Eventing, Event Sourcing
Greg Young on Architectural Innovation: Eventing, Event SourcingGreg Young on Architectural Innovation: Eventing, Event Sourcing
Greg Young on Architectural Innovation: Eventing, Event SourcingSkills Matter
 
A Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation SlidesA Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation Slidesthinkddd
 
Socrates BE - Projections Explained
Socrates BE - Projections ExplainedSocrates BE - Projections Explained
Socrates BE - Projections ExplainedYves Reynhout
 

Andere mochten auch (18)

Model storming
Model stormingModel storming
Model storming
 
Event storming
Event stormingEvent storming
Event storming
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)
 
DDD 2011 - Dove Desideriamo Dirigerci
DDD 2011 - Dove Desideriamo DirigerciDDD 2011 - Dove Desideriamo Dirigerci
DDD 2011 - Dove Desideriamo Dirigerci
 
Domain Model e SOA (Service Oriented Architecture)
Domain Model e SOA (Service Oriented Architecture)Domain Model e SOA (Service Oriented Architecture)
Domain Model e SOA (Service Oriented Architecture)
 
EventStorming Agile Tour Aix-Marseille
EventStorming Agile Tour Aix-MarseilleEventStorming Agile Tour Aix-Marseille
EventStorming Agile Tour Aix-Marseille
 
How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven Design
 
Domain Driven Design Up And Running
Domain Driven Design Up And RunningDomain Driven Design Up And Running
Domain Driven Design Up And Running
 
DDDesign Challenges
DDDesign ChallengesDDDesign Challenges
DDDesign Challenges
 
Event sourcing
Event sourcingEvent sourcing
Event sourcing
 
Domain Driven Design - DDDSydney 2011
Domain Driven Design - DDDSydney 2011Domain Driven Design - DDDSydney 2011
Domain Driven Design - DDDSydney 2011
 
Unleash Your Domain With Greg Young @ DDD-Day
Unleash Your Domain With Greg Young @ DDD-DayUnleash Your Domain With Greg Young @ DDD-Day
Unleash Your Domain With Greg Young @ DDD-Day
 
DDD Dirty Harry style
DDD Dirty Harry styleDDD Dirty Harry style
DDD Dirty Harry style
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven Design
 
Projections explained
Projections explainedProjections explained
Projections explained
 
Greg Young on Architectural Innovation: Eventing, Event Sourcing
Greg Young on Architectural Innovation: Eventing, Event SourcingGreg Young on Architectural Innovation: Eventing, Event Sourcing
Greg Young on Architectural Innovation: Eventing, Event Sourcing
 
A Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation SlidesA Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation Slides
 
Socrates BE - Projections Explained
Socrates BE - Projections ExplainedSocrates BE - Projections Explained
Socrates BE - Projections Explained
 

Ähnlich wie Event based modeling - eng

Rethinking Enterprise Software - Brandolini
Rethinking Enterprise Software - BrandoliniRethinking Enterprise Software - Brandolini
Rethinking Enterprise Software - BrandoliniCodemotion
 
Three examples of building for play in data science.
Three examples of building for play in data science.Three examples of building for play in data science.
Three examples of building for play in data science.Sam Pottinger
 
Adopting Domain-Driven Design in your organization
Adopting Domain-Driven Design in your organizationAdopting Domain-Driven Design in your organization
Adopting Domain-Driven Design in your organizationAleix Morgadas
 
Neo4j Graph Data Science Training - June 9 & 10 - Slides #7 GDS Best Practices
Neo4j Graph Data Science Training - June 9 & 10 - Slides #7 GDS Best PracticesNeo4j Graph Data Science Training - June 9 & 10 - Slides #7 GDS Best Practices
Neo4j Graph Data Science Training - June 9 & 10 - Slides #7 GDS Best PracticesNeo4j
 
HeadFirstOOAD_Ch04.ppt
HeadFirstOOAD_Ch04.pptHeadFirstOOAD_Ch04.ppt
HeadFirstOOAD_Ch04.pptCngNguyn725230
 
BlueHat v17 || You Are Making Application Whitelisting Difficult
BlueHat v17 || You Are Making Application Whitelisting Difficult BlueHat v17 || You Are Making Application Whitelisting Difficult
BlueHat v17 || You Are Making Application Whitelisting Difficult BlueHat Security Conference
 
Builiding Modular monoliths that can scale to microservices. JBCNConf 2021
Builiding Modular monoliths that can scale to microservices. JBCNConf 2021Builiding Modular monoliths that can scale to microservices. JBCNConf 2021
Builiding Modular monoliths that can scale to microservices. JBCNConf 2021David Gómez García
 
SAD06 - Use Case Diagrams
SAD06 - Use Case DiagramsSAD06 - Use Case Diagrams
SAD06 - Use Case DiagramsMichael Heron
 
MachinaFiesta: A Vision into Machine Learning 🚀
MachinaFiesta: A Vision into Machine Learning 🚀MachinaFiesta: A Vision into Machine Learning 🚀
MachinaFiesta: A Vision into Machine Learning 🚀GDSCNiT
 
An illustrated guide to microservices (boston python meetup - Aug 2016)
An illustrated guide to microservices (boston python meetup - Aug 2016)An illustrated guide to microservices (boston python meetup - Aug 2016)
An illustrated guide to microservices (boston python meetup - Aug 2016)Ambassador Labs
 
GIS 5103 – Fundamentals of GISLecture 83D GIS.docx
GIS 5103 – Fundamentals of GISLecture 83D GIS.docxGIS 5103 – Fundamentals of GISLecture 83D GIS.docx
GIS 5103 – Fundamentals of GISLecture 83D GIS.docxshericehewat
 
The abstract art of software development
The abstract art of software developmentThe abstract art of software development
The abstract art of software developmentStephen Erdman
 
Git Makes Me Angry Inside - DrupalCon Prague
Git Makes Me Angry Inside - DrupalCon PragueGit Makes Me Angry Inside - DrupalCon Prague
Git Makes Me Angry Inside - DrupalCon PragueEmma Jane Hogbin Westby
 
Chapter 5 software design
Chapter 5   software designChapter 5   software design
Chapter 5 software designGoutam Majumder
 
An illustrated guide to microservices (ploneconf 10 21-2016)
An illustrated guide to microservices (ploneconf 10 21-2016)An illustrated guide to microservices (ploneconf 10 21-2016)
An illustrated guide to microservices (ploneconf 10 21-2016)Ambassador Labs
 
Reds interpretability report
Reds interpretability reportReds interpretability report
Reds interpretability reportRaouf KESKES
 
Structured Software Design
Structured Software DesignStructured Software Design
Structured Software DesignGiorgio Zoppi
 

Ähnlich wie Event based modeling - eng (20)

Rethinking Enterprise Software - Brandolini
Rethinking Enterprise Software - BrandoliniRethinking Enterprise Software - Brandolini
Rethinking Enterprise Software - Brandolini
 
Three examples of building for play in data science.
Three examples of building for play in data science.Three examples of building for play in data science.
Three examples of building for play in data science.
 
Adopting Domain-Driven Design in your organization
Adopting Domain-Driven Design in your organizationAdopting Domain-Driven Design in your organization
Adopting Domain-Driven Design in your organization
 
Neo4j Graph Data Science Training - June 9 & 10 - Slides #7 GDS Best Practices
Neo4j Graph Data Science Training - June 9 & 10 - Slides #7 GDS Best PracticesNeo4j Graph Data Science Training - June 9 & 10 - Slides #7 GDS Best Practices
Neo4j Graph Data Science Training - June 9 & 10 - Slides #7 GDS Best Practices
 
HeadFirstOOAD_Ch04.ppt
HeadFirstOOAD_Ch04.pptHeadFirstOOAD_Ch04.ppt
HeadFirstOOAD_Ch04.ppt
 
BlueHat v17 || You Are Making Application Whitelisting Difficult
BlueHat v17 || You Are Making Application Whitelisting Difficult BlueHat v17 || You Are Making Application Whitelisting Difficult
BlueHat v17 || You Are Making Application Whitelisting Difficult
 
Builiding Modular monoliths that can scale to microservices. JBCNConf 2021
Builiding Modular monoliths that can scale to microservices. JBCNConf 2021Builiding Modular monoliths that can scale to microservices. JBCNConf 2021
Builiding Modular monoliths that can scale to microservices. JBCNConf 2021
 
SAD06 - Use Case Diagrams
SAD06 - Use Case DiagramsSAD06 - Use Case Diagrams
SAD06 - Use Case Diagrams
 
MachinaFiesta: A Vision into Machine Learning 🚀
MachinaFiesta: A Vision into Machine Learning 🚀MachinaFiesta: A Vision into Machine Learning 🚀
MachinaFiesta: A Vision into Machine Learning 🚀
 
An illustrated guide to microservices (boston python meetup - Aug 2016)
An illustrated guide to microservices (boston python meetup - Aug 2016)An illustrated guide to microservices (boston python meetup - Aug 2016)
An illustrated guide to microservices (boston python meetup - Aug 2016)
 
GIS 5103 – Fundamentals of GISLecture 83D GIS.docx
GIS 5103 – Fundamentals of GISLecture 83D GIS.docxGIS 5103 – Fundamentals of GISLecture 83D GIS.docx
GIS 5103 – Fundamentals of GISLecture 83D GIS.docx
 
The abstract art of software development
The abstract art of software developmentThe abstract art of software development
The abstract art of software development
 
Git Makes Me Angry Inside - DrupalCon Prague
Git Makes Me Angry Inside - DrupalCon PragueGit Makes Me Angry Inside - DrupalCon Prague
Git Makes Me Angry Inside - DrupalCon Prague
 
Chapter 5 software design
Chapter 5   software designChapter 5   software design
Chapter 5 software design
 
An illustrated guide to microservices (ploneconf 10 21-2016)
An illustrated guide to microservices (ploneconf 10 21-2016)An illustrated guide to microservices (ploneconf 10 21-2016)
An illustrated guide to microservices (ploneconf 10 21-2016)
 
Complexity 2
Complexity 2Complexity 2
Complexity 2
 
CQRS In An Hour Or So
CQRS In An Hour Or SoCQRS In An Hour Or So
CQRS In An Hour Or So
 
Reds interpretability report
Reds interpretability reportReds interpretability report
Reds interpretability report
 
The R of War
The R of WarThe R of War
The R of War
 
Structured Software Design
Structured Software DesignStructured Software Design
Structured Software Design
 

Mehr von Alberto Brandolini

L'illusione dell'ortogonalità
L'illusione dell'ortogonalitàL'illusione dell'ortogonalità
L'illusione dell'ortogonalitàAlberto Brandolini
 
Software design as a cooperative game with EventStorming
Software design as a cooperative game with EventStormingSoftware design as a cooperative game with EventStorming
Software design as a cooperative game with EventStormingAlberto Brandolini
 
Reshaping enterrprise software
Reshaping enterrprise softwareReshaping enterrprise software
Reshaping enterrprise softwareAlberto Brandolini
 
Guerrilla portfolio management
Guerrilla portfolio managementGuerrilla portfolio management
Guerrilla portfolio managementAlberto Brandolini
 
Bullshit Asymmetry Principle lightning talk
Bullshit Asymmetry Principle lightning talkBullshit Asymmetry Principle lightning talk
Bullshit Asymmetry Principle lightning talkAlberto Brandolini
 
Model storming - a different approach to collaborative model discovery (Vilni...
Model storming - a different approach to collaborative model discovery (Vilni...Model storming - a different approach to collaborative model discovery (Vilni...
Model storming - a different approach to collaborative model discovery (Vilni...Alberto Brandolini
 
Kanban unbounded - Cosa succede sulla linea di faglia tra il team ed il resto...
Kanban unbounded - Cosa succede sulla linea di faglia tra il team ed il resto...Kanban unbounded - Cosa succede sulla linea di faglia tra il team ed il resto...
Kanban unbounded - Cosa succede sulla linea di faglia tra il team ed il resto...Alberto Brandolini
 

Mehr von Alberto Brandolini (15)

L'illusione dell'ortogonalità
L'illusione dell'ortogonalitàL'illusione dell'ortogonalità
L'illusione dell'ortogonalità
 
The gordian knot
The gordian knotThe gordian knot
The gordian knot
 
Software design as a cooperative game with EventStorming
Software design as a cooperative game with EventStormingSoftware design as a cooperative game with EventStorming
Software design as a cooperative game with EventStorming
 
La fatina dei denti
La fatina dei dentiLa fatina dei denti
La fatina dei denti
 
50.000 orange stickies later
50.000 orange stickies later50.000 orange stickies later
50.000 orange stickies later
 
Chasing elephants
Chasing elephantsChasing elephants
Chasing elephants
 
Reshaping enterrprise software
Reshaping enterrprise softwareReshaping enterrprise software
Reshaping enterrprise software
 
Guerrilla portfolio management
Guerrilla portfolio managementGuerrilla portfolio management
Guerrilla portfolio management
 
The precision blade
The precision bladeThe precision blade
The precision blade
 
Managing debt remastered
Managing debt remasteredManaging debt remastered
Managing debt remastered
 
Liberate il kraken
Liberate il krakenLiberate il kraken
Liberate il kraken
 
Bullshit Asymmetry Principle lightning talk
Bullshit Asymmetry Principle lightning talkBullshit Asymmetry Principle lightning talk
Bullshit Asymmetry Principle lightning talk
 
Idea - post-it - test verdi.
Idea - post-it - test verdi.Idea - post-it - test verdi.
Idea - post-it - test verdi.
 
Model storming - a different approach to collaborative model discovery (Vilni...
Model storming - a different approach to collaborative model discovery (Vilni...Model storming - a different approach to collaborative model discovery (Vilni...
Model storming - a different approach to collaborative model discovery (Vilni...
 
Kanban unbounded - Cosa succede sulla linea di faglia tra il team ed il resto...
Kanban unbounded - Cosa succede sulla linea di faglia tra il team ed il resto...Kanban unbounded - Cosa succede sulla linea di faglia tra il team ed il resto...
Kanban unbounded - Cosa succede sulla linea di faglia tra il team ed il resto...
 

Kürzlich hochgeladen

FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
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
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
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
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
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
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
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
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
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
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 

Kürzlich hochgeladen (20)

FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
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
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
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
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
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
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
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
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 

Event based modeling - eng

  • 2. Goals Quickly sketch a model for a complex system Have the basic concepts of Domain- Driven Design emerge without prerequirements. 2giovedì 23 maggio 13
  • 4. In practice... Stick a paper roll on a wall. We might have up to 25 metres of modeling space Collaborative work 4giovedì 23 maggio 13
  • 5. Yes, I mean that much space... 5giovedì 23 maggio 13
  • 6. Domain Events Might resemble an Activity Diagram ...but we’re not doing UML Events cannot be discussed. They happened. Deal with it. System-wide view. Every team start to imagine a domain, instead of asking to the domain expert... :-( Real system might be a lot simpler Real system might be a lot more complex 6giovedì 23 maggio 13
  • 7. Hint: ...it gets a lot more interesting if we explore areas we don’t know. ... with the domain expert. ... with concrete examples. 7giovedì 23 maggio 13
  • 9. Event Origin Events do not just appear out of the blue: some originate from user actions some originate in external systems some are generated by time ...some are originated as a response to other events 9giovedì 23 maggio 13
  • 11. FLOW (team decided this way) Team decided to start from the right... we called it WOLF instead of FLOW then. 11giovedì 23 maggio 13
  • 13. Event Flow Search for predecessors or consequences of our events Using verbs in the past helps clarify the semantics: “wedding” is not an event, it’s a process (don’t tell it to your wife) More actors are joining our system 13giovedì 23 maggio 13
  • 15. Aggregates “How do I correctly define aggregates?” ... yes, that’s THE question Have a look to DDD mailing lists, if you don’t believe it Our goal is to define aggregates outside in 15giovedì 23 maggio 13
  • 16. Definition An aggregate represents consistency unit: a group of classes changing state together. ...but it’s not always clear enough... ...how big these objects are? ...how do they look like? It has something to do with transactional boundaries but ours might be wrong. 16giovedì 23 maggio 13
  • 17. Rule of thumb To sketch aggregate boundaries we can think about Informations deleted together Informations moved together Informations distributed together ...but that’s still a little too data-centric 17giovedì 23 maggio 13
  • 18. Invariants Forget data: An aggregate can accept or reject a command. Upon which information? What is always guaranteed for our aggregate? 18giovedì 23 maggio 13
  • 20. Aggregates Shifting the focus on invariants helps aggregate modeling Smaller, more controllable units Variations are propagated via Domain Events A better domain exploration The whole is eventually consistent 20giovedì 23 maggio 13
  • 21. Example Max particpants per class: Where does this constraint come from? Classroom capacity? --> accept and look for a better location (if there’s time available) Class physiological limit --> stand-by and waiting list or propose next edition No accidental complexity requirements. 21giovedì 23 maggio 13
  • 23. Subdomains Business level system partitioning Some portions are core for our company competitivity. Es. things that are going to sell more. Other are simply necessary, but no key differentiators. Es. invoicing: it’s needed but no customer will choose us for the invoice layout. Good enough is good enough. 23giovedì 23 maggio 13
  • 24. Languages In mid/large-sized companies we’ll have many stakeholders. Different goals different backgrounds, different languages ...will require different models Caution: we aren’t talking about Bounded Contexts...yet 24giovedì 23 maggio 13
  • 26. Bounded Contexts Highlight the different models in play Software components Legacy components Languages used They’re a realistic snapshot, not the image of our wishes... 26giovedì 23 maggio 13
  • 28. Users & Personas Got a chance to include users and their categories in the picture? Why not!? We can highlight personas and make them part of the model... ...especially if this triggers an interesting conversation with the domain experts. 28giovedì 23 maggio 13
  • 30. Tests Some interesting details might emerge during the conversation. Why not take a note? In natural language ...according to BDD lingo (--> Cucumber) In an event driven perspective, the structure Given [events] When [command] Then [event] fits very well :-) 30giovedì 23 maggio 13
  • 32. Takeaways Model of a complex enterprise system ignoring data ... what if data model is part of the problem? Tight focus on system behavior and not on static data structure. 32giovedì 23 maggio 13
  • 33. Takeaways The model is created collectively in a cooperative learning fashion and provides a good high-level view. Are you sure DEs know everything? Time-boxed, but.... Space-boxed but.... 33giovedì 23 maggio 13
  • 34. Legacy Systems The sketched model is close to an “ideal system model” It’s NOT the starting point to rewrite from scratch! But it’s a good reference to establish a direction Legacy components that do not belong in the domain emerge like accidental complexity. batch operations, legacy stuff feel really inappropriate. 34giovedì 23 maggio 13