Upload
mathias-verraes
View
126
Download
2
Embed Size (px)
DESCRIPTION
http://verraes.net “How do you approach software modelling problems?” When a client asked me about my mental process, I didn’t have a proper answer — yet. The question intrigued me. Do you need a propensity for modelling, or is it a learnable skill? I embarked on a mission to find modelling heuristics: the mental tools, that help us look at the problem from different angles; the little tricks to validate a model before we build it; the rules of thumb that lead us to iteratively refine our solutions. In this talk, I share some of the ideas I collected from books, from people I interviewed, and from my own experiences. -- Mathias Verraes is a recovering music composer turned programmer, consultant, blogger, and speaker. He advises companies on how to build enterprise web applications for complex business domains. For some weird reason, he enjoys working on large legacy projects: the kind where there’s half a million lines of spaghetti code, and nobody knows how to get the codebase under control. He’s the founder of the Domain-Driven Design Belgium community. When he’s not working, he’s at home in Kortrijk, Belgium, helping his two sons build crazy Lego train tracks.
Citation preview
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)