modelling heuristics

Post on 08-Jul-2015

124 Views

Category:

Software

2 Downloads

Preview:

Click to see full reader

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.

TRANSCRIPT

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)

top related