1) EventStorming is a technique that uses modeling with sticky notes, markers and paper to surface domain events and capture hotspots in a system. It enables cross-perspective conversations and can lead to unexpected insights.
2) Analyzing bottlenecks is important because most bottlenecks are found in business processes, policies, user interfaces and read models. However, simply documenting a bottleneck may not solve the problem, as organizational culture and emotions also influence whether issues are actually addressed.
3) When modeling legacy systems, it is important to identify bounded contexts and focus modeling and improvements within safer contexts first to minimize risk. Addressing technical issues alone may not be enough, as unaddressed cultural and emotional aspects can hinder
2. About me
Very hard to explain my job to my
mother
running www.avanscoperta.it
Modelling (almost) everything with
sticky notes, markers and a paper
roll.
Calling this stuff
12. More specificallyâŚ
No scope limitation (paper roll)
Exploration of boundaries (External
Systems & People)
-> The BOTTLENECK is in the picture.
-> The CORE DOMAIN is in the
picture
18. Bottleneck strategies
focus on it >>> Subordinate
everything else
improve it relentlessly
small short term improvements will
make a difference
⌠while you work on long term
improvements too
25. In the last 2 years
Been EventStorming in many
different situations
Different domains
large companies & small
organisations
Established business and startups
âŚmany different countriesâŚ
âŚfor different reasonsâŚ
32. Letâs look deeper
Here is where the
system is making
decisions:
Aggregate
Policy / Process
Domain Event
Command
External
System
33. Letâs look deeper
Here is where the
system is making
decisions:
Simple local decision
fit into Aggregates
Aggregate
Policy / Process
Domain Event
Command
External
System
34. Letâs look deeper
Here is where the
system is making
decisions:
Simple local decision
fit into Aggregates
Aggregate
Policy / Process
Domain Event
Command
External
System
35. Letâs look deeper
Here is where the
system is making
decisions:
Simple local decision
fit into Aggregates
More complex &
Reactive decision
making fits into
policies/Processes
Aggregate
Policy / Process
Domain Event
Command
External
System
36. Letâs look deeper
Here is where the
system is making
decisions:
Simple local decision
fit into Aggregates
More complex &
Reactive decision
making fits into
policies/Processes
Aggregate
Policy / Process
Domain Event
Command
External
System
37. Letâs look deeper
Here is where the
system is making
decisions:
Simple local decision
fit into Aggregates
More complex &
Reactive decision
making fits into
policies/Processes
Aggregate
Policy / Process
Domain Event
Command
External
System
#BusinessProcesses
#Transactions
#SWArchitecture
39. Letâs look deeper
Here is where the
USER is making
decisions:
Command/
Decision
User/
Actor/
Persona/âŚ
User
Interface
40. Letâs look deeper
Here is where the
USER is making
decisions:
âŚwhich are based
upon real world
experience, and the
information available
on the screen
Command/
Decision
User/
Actor/
Persona/âŚ
User
Interface
41. Letâs look deeper
Here is where the
USER is making
decisions:
âŚwhich are based
upon real world
experience, and the
information available
on the screen
Command/
Decision
User/
Actor/
Persona/âŚ
User
Interface
#UX
#FrontEndDevelopment
#UIDesign
44. Letâs look deeper
Domain
Event
Read Model
User
Interface
Here is were we
transform raw data
into readable
meaningful
information
#BusinessIntelligence
#Readability
67. The solution
A Draft Model with
loose integrity
constraints
Constraints
implemented as
warnings
68. The solution
A Draft Model with
loose integrity
constraints
Constraints
implemented as
warnings
A Validation barrier (constraints
implemented as blockers)
69. The solution
A Draft Model with
loose integrity
constraints
Constraints
implemented as
warnings
A Validation barrier (constraints
implemented as blockers)
An Execution Model,
with similar data
structure, but
different behaviour
72. Epic win!
1. EventStorming Works!
2. I was right 4 years ago!!
http://www.slideshare.net/ziobrando/why-do-all-my-ddd-apps-look-the-same-vienna-2014
75. Oversimplified, butâŚ
1) Sketch a logical
separation of
bounded contexts
2) Define a local copy of
the draft BC: only a few
operations required
76. Oversimplified, butâŚ
1) Sketch a logical
separation of
bounded contexts
2) Define a local copy of
the draft BC: only a few
operations required
3) âPublishâ the key
event, with all the
relevant data
77. Oversimplified, butâŚ
1) Sketch a logical
separation of
bounded contexts
2) Define a local copy of
the draft BC: only a few
operations required
3) âPublishâ the key
event, with all the
relevant data
4) Use the published data to
instantiate a valid object in
the execution BC
85. LEGO Entropy laws
Mixing LEGO boxes takes seconds
separating LEGO boxes takes ages
Moving a few pieces is reversibleâŚ
âŚuntil you forget
Then you loose control and call it âa
messâ
86. Identify the right
bounded contexts
as early as
possible
âŚmodel & linguistic boundaries onlyâŚ
In greenfieldâŚ.
100. Or, more explicitlyâŚ
Evolution here will
have a lot less
ripple effects⌠a
safer place to
improve!
And here situation
is better tooâŚ
101. Or, more explicitlyâŚ
Evolution here will
have a lot less
ripple effects⌠a
safer place to
improve!
And here situation
is better tooâŚ
1) we are reducing
the number of
people related to a
model
102. Or, more explicitlyâŚ
Evolution here will
have a lot less
ripple effects⌠a
safer place to
improve!
And here situation
is better tooâŚ
1) we are reducing
the number of
people related to a
model
2) we are driven by business,
not by smells
103. Smell is a good
driver if you have
no idea where the
money is
104. Refactoring danger zone
In code:
Dependencies
Compiler
Tests
In the database
A lot harder to know who will be
affected
105. Itâs not the
cleanup, itâs the
associated risk
It takes only one violation to get into âWe have no ideaâ zone
113. found the bottleneck, now what?
Write some documentation?
Call another meeting?
Letâs think about it!
114. found the bottleneck, now what?
Write some documentation?
Call another meeting?
Letâs think about it!
115. found the bottleneck, now what?
Write some documentation?
Call another meeting?
Letâs think about it!
⌠write a prototype?
116. found the bottleneck, now what?
Write some documentation?
Call another meeting?
Letâs think about it!
⌠write a prototype?
implementing a solution?
131. A few lessons
rationality doesnât explain everything
habits, unconscious, weâre not
machines.
Passion and Pride can become
attachment
LEARNING canât be skipped or
accelerated: sometimes things need
to be discovered again
133. Strong emotions
How would what if three lines of
your code created a million euro
hole?
Code persist, but the context is
gone
Itâs how people feel, not how they
should that drives some behaviour.
143. Data Centric
applications are
damaging your
business
The only thing that keeps companies in the market is
that competitors are in the same situationâŚ
I wasnât explicit enough