Modelling Heuristics @mathiasverraes
Jul 08, 2015
Modelling Heuristics@mathiasverraes
Mathias Verraes
Independent ConsultantValue Object Comm.V
Student of SystemsMeddler of ModelsLabourer of Legacy
verraes.net
Is modelling a learnable skill?
The pain of awrong abstraction
Upfront Model? 1
1 Scott W. Ambler, "Big Modeling Up Front (BMUF) Anti-Pattern", http://www.agilemodeling.com/essays/bmuf.htm
You are always making
mental models
Analysis model 2vs
Domain model
2 Martin Fowler, 1996, "Analysis Patterns: Reusable Object Models"
Heuristic
Domain Language
Linguistic RelativismSapir-Whorf Hypothesis 3,4
4 Paul Graham, "Beating the Averages", http://www.paulgraham.com/avg.html
3 Steven Pinker, 1994, "The Language Instinct"
Heuristic
Find the NounsAnti-pattern?
Heuristic
Descriptive vs InfluentialProperties
[ { "licensePlate": "1-ABC-123", "brand": "BMW", "make": "X1", "color": "Aggregate Blue", ..., "location": "40.7127837,-74.0059413" }, ...]
Heuristic
Static / Dynamic
Heuristic
Find the VerbsCommands
Verb-based:
f = chain( breakTextIntoWords() : [String] groupWordsIntoLines() : [[String]] joinWordsInBrokenLines() : [String] joinBrokenLines() : String)
f("A long paragraph") -> "A long\nparagraph"
Noun-based: 7
f = chain( words() : [String] brokenLines() : [[String]] wordJoinedLines() : [String] joinedLines() : String)
f("A long paragraph") -> "A long\nparagraph"
7 Michael Feathers, "A Type Driven Approach to Functional Design", InfoQ
Heuristic
Find the SentencesFind the Idioms
Heuristic
Find the Scenarios
Given I have a productWhen I look at the price of a product ...
or
Given I have a productWhen I lookup the product in the pricing table ...
?
Remember, you are alwaysmaking mental models
As a customer I want to ...
Given there is a productWhen I look at the price of a product ...
As a shop owner I want to ...
Given I have a productWhen I lookup the product in the pricing table ...
Heuristic
Actors and Roles
Heuristic
The Worker and the Beneficiary
When I look at the price of a product ...
When I lookup the product in the pricing table ...
HeuristicSegregating
Reading and Writing
Heuristic
BeingBehavingBecoming
Three B's 5
5 Gerald M. Weinberg, 1988, "Rethinking Systems Analysis and Design"
The customer sometimes has an email.
Missing concept?
HeuristicCollaborative Construction6
ExecutionTracking
aka Planning/Execution/Analysis
6 Cyrille Martraire, "Collaborative Construction by Alberto Brandolini", http://cyrille.martraire.com/2012/09/collaborative-construction-by-alberto-brandolini/
Heuristic
Domain Events8
8 http://verraes.net/2014/11/domain-events/
Time ->
Heuristic
Cause & Consequence
Cause & Consequence
HumanExternal system
ProcessTime
Heuristic
Business RulesReasons for failure
Heuristic
Consistency Boundary
Heuristic
Entity Inclusion
Heuristic
Temporal Expansion
Heuristic
Temporal Shift
Heuristic
Invariant Inclusion
Heuristic
Conceptual Shift
Heuristic
Crossing Streams
Heuristic
Happy Path / Divergent Path9
9 Mathias Verraes, "Event Storming: on Fake Domains and Happy Paths", http://verraes.net/2014/07/event-storming-fake-domains-happy-paths/
FormalInformalAformal
Throw Away the Model
@mathiasverraesverraes.net
Workshops Domain-Driven Design
verraes.net/workshops
Ghent, Belgium, January 20-22Newcastle, UK (TBC)