Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Modelling Heuristics

Modelling Heuristics


“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.


Mathias Verraes

November 20, 2014

More Decks by Mathias Verraes

Other Decks in Technology


  1. Modelling Heuristics @mathiasverraes

  2. Mathias Verraes Independent Consultant Value Object Comm.V Student of Systems

    Meddler of Models Labourer of Legacy verraes.net
  3. Is modelling a learnable skill?

  4. The pain of a wrong abstraction

  5. Upfront Model? 1 1 Scott W. Ambler, "Big Modeling Up

    Front (BMUF) Anti-Pattern", http://www.agilemodeling.com/ essays/bmuf.htm
  6. You are always making mental models

  7. Analysis model 2 vs Domain model 2 Martin Fowler, 1996,

    "Analysis Patterns: Reusable Object Models"
  8. Heuristic Domain Language

  9. Linguistic Relativism Sapir-Whorf Hypothesis 3,4 4 Paul Graham, "Beating the

    Averages", http://www.paulgraham.com/avg.html 3 Steven Pinker, 1994, "The Language Instinct"
  10. Heuristic Find the Nouns Anti-pattern?

  11. Heuristic Descriptive vs Influential Properties

  12. [ { "licensePlate": "1-ABC-123", "brand": "BMW", "make": "X1", "color": "Aggregate

    Blue", ..., "location": "40.7127837,-74.0059413" }, ... ]
  13. Heuristic Static / Dynamic

  14. Heuristic Find the Verbs Commands

  15. Verb-based: f = chain( breakTextIntoWords() : [String] groupWordsIntoLines() : [[String]]

    joinWordsInBrokenLines() : [String] joinBrokenLines() : String ) f("A long paragraph") -> "A long\nparagraph"
  16. 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
  17. Heuristic Find the Sentences Find the Idioms

  18. Heuristic Find the Scenarios

  19. Given I have a product When I look at the

    price of a product ... or Given I have a product When I lookup the product in the pricing table ... ?
  20. Remember, you are always making mental models

  21. As a customer I want to ... Given there is

    a product When I look at the price of a product ... As a shop owner I want to ... Given I have a product When I lookup the product in the pricing table ...
  22. Heuristic Actors and Roles

  23. Heuristic The Worker and the Beneficiary

  24. When I look at the price of a product ...

    When I lookup the product in the pricing table ...
  25. Heuristic Segregating Reading and Writing

  26. Heuristic Being Behaving Becoming Three B's 5 5 Gerald M.

    Weinberg, 1988, "Rethinking Systems Analysis and Design"
  27. The customer sometimes has an email. Missing concept?

  28. Heuristic Collaborative Construction6 Execution Tracking aka Planning/Execution/Analysis 6 Cyrille Martraire,

    "Collaborative Construction by Alberto Brandolini", http:// cyrille.martraire.com/2012/09/collaborative-construction-by-alberto-brandolini/
  29. Heuristic Domain Events8 8 http://verraes.net/2014/11/domain-events/

  30. Time ->

  31. Heuristic Cause & Consequence

  32. None
  33. Cause & Consequence Human External system Process Time

  34. Heuristic Business Rules Reasons for failure

  35. None
  36. Heuristic Consistency Boundary

  37. None
  38. None
  39. Heuristic Entity Inclusion

  40. None
  41. Heuristic Temporal Expansion

  42. None
  43. Heuristic Temporal Shift

  44. None
  45. Heuristic Invariant Inclusion

  46. None
  47. Heuristic Conceptual Shift

  48. None
  49. Heuristic Crossing Streams

  50. None
  51. 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/
  52. Formal Informal Aformal

  53. Throw Away the Model

  54. @mathiasverraes verraes.net Workshops Domain-Driven Design verraes.net/workshops Ghent, Belgium, January 20-22

    Newcastle, UK (TBC)