Soumettre la recherche
Mettre en ligne
Keith Braithwaite on Domain Driven Design
•
0 j'aime
•
656 vues
Skills Matter
Suivre
Keith Braithwaite on Domain Driven Design
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 24
Recommandé
Narrative Acceptance Tests River Glide Antony Marcano
Narrative Acceptance Tests River Glide Antony Marcano
Skills Matter
Sug Jan 19
Sug Jan 19
Skills Matter
Oc Cloud Obscurity
Oc Cloud Obscurity
Skills Matter
Cqrs Ldnug 200100304
Cqrs Ldnug 200100304
Skills Matter
Five Steps to Kanban
Five Steps to Kanban
Skills Matter
In the Brain of Hans Dockter: Gradle
In the Brain of Hans Dockter: Gradle
Skills Matter
Using Language Oriented Programming to Execute Computations on the GPU
Using Language Oriented Programming to Execute Computations on the GPU
Skills Matter
UK G-Cloud: The First Instantiation of True Cloud?
UK G-Cloud: The First Instantiation of True Cloud?
Skills Matter
Recommandé
Narrative Acceptance Tests River Glide Antony Marcano
Narrative Acceptance Tests River Glide Antony Marcano
Skills Matter
Sug Jan 19
Sug Jan 19
Skills Matter
Oc Cloud Obscurity
Oc Cloud Obscurity
Skills Matter
Cqrs Ldnug 200100304
Cqrs Ldnug 200100304
Skills Matter
Five Steps to Kanban
Five Steps to Kanban
Skills Matter
In the Brain of Hans Dockter: Gradle
In the Brain of Hans Dockter: Gradle
Skills Matter
Using Language Oriented Programming to Execute Computations on the GPU
Using Language Oriented Programming to Execute Computations on the GPU
Skills Matter
UK G-Cloud: The First Instantiation of True Cloud?
UK G-Cloud: The First Instantiation of True Cloud?
Skills Matter
5 things cucumber is bad at by Richard Lawrence
5 things cucumber is bad at by Richard Lawrence
Skills Matter
Patterns for slick database applications
Patterns for slick database applications
Skills Matter
Scala e xchange 2013 haoyi li on metascala a tiny diy jvm
Scala e xchange 2013 haoyi li on metascala a tiny diy jvm
Skills Matter
Oscar reiken jr on our success at manheim
Oscar reiken jr on our success at manheim
Skills Matter
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Skills Matter
Cukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc ian dees on elixir, erlang, and cucumberl
Skills Matter
Cukeup nyc peter bell on getting started with cucumber.js
Cukeup nyc peter bell on getting started with cucumber.js
Skills Matter
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Skills Matter
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Skills Matter
Progressive f# tutorials nyc don syme on keynote f# in the open source world
Progressive f# tutorials nyc don syme on keynote f# in the open source world
Skills Matter
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Skills Matter
Dmitry mozorov on code quotations code as-data for f#
Dmitry mozorov on code quotations code as-data for f#
Skills Matter
A poet's guide_to_acceptance_testing
A poet's guide_to_acceptance_testing
Skills Matter
Russ miles-cloudfoundry-deep-dive
Russ miles-cloudfoundry-deep-dive
Skills Matter
Serendipity-neo4j
Serendipity-neo4j
Skills Matter
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelism
Skills Matter
Plug 20110217
Plug 20110217
Skills Matter
Lug presentation
Lug presentation
Skills Matter
I went to_a_communications_workshop_and_they_t
I went to_a_communications_workshop_and_they_t
Skills Matter
Plug saiku
Plug saiku
Skills Matter
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
Fwdays
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
Rick Flair
Contenu connexe
Plus de Skills Matter
5 things cucumber is bad at by Richard Lawrence
5 things cucumber is bad at by Richard Lawrence
Skills Matter
Patterns for slick database applications
Patterns for slick database applications
Skills Matter
Scala e xchange 2013 haoyi li on metascala a tiny diy jvm
Scala e xchange 2013 haoyi li on metascala a tiny diy jvm
Skills Matter
Oscar reiken jr on our success at manheim
Oscar reiken jr on our success at manheim
Skills Matter
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Skills Matter
Cukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc ian dees on elixir, erlang, and cucumberl
Skills Matter
Cukeup nyc peter bell on getting started with cucumber.js
Cukeup nyc peter bell on getting started with cucumber.js
Skills Matter
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Skills Matter
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Skills Matter
Progressive f# tutorials nyc don syme on keynote f# in the open source world
Progressive f# tutorials nyc don syme on keynote f# in the open source world
Skills Matter
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Skills Matter
Dmitry mozorov on code quotations code as-data for f#
Dmitry mozorov on code quotations code as-data for f#
Skills Matter
A poet's guide_to_acceptance_testing
A poet's guide_to_acceptance_testing
Skills Matter
Russ miles-cloudfoundry-deep-dive
Russ miles-cloudfoundry-deep-dive
Skills Matter
Serendipity-neo4j
Serendipity-neo4j
Skills Matter
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelism
Skills Matter
Plug 20110217
Plug 20110217
Skills Matter
Lug presentation
Lug presentation
Skills Matter
I went to_a_communications_workshop_and_they_t
I went to_a_communications_workshop_and_they_t
Skills Matter
Plug saiku
Plug saiku
Skills Matter
Plus de Skills Matter
(20)
5 things cucumber is bad at by Richard Lawrence
5 things cucumber is bad at by Richard Lawrence
Patterns for slick database applications
Patterns for slick database applications
Scala e xchange 2013 haoyi li on metascala a tiny diy jvm
Scala e xchange 2013 haoyi li on metascala a tiny diy jvm
Oscar reiken jr on our success at manheim
Oscar reiken jr on our success at manheim
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Cukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc peter bell on getting started with cucumber.js
Cukeup nyc peter bell on getting started with cucumber.js
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Progressive f# tutorials nyc don syme on keynote f# in the open source world
Progressive f# tutorials nyc don syme on keynote f# in the open source world
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Dmitry mozorov on code quotations code as-data for f#
Dmitry mozorov on code quotations code as-data for f#
A poet's guide_to_acceptance_testing
A poet's guide_to_acceptance_testing
Russ miles-cloudfoundry-deep-dive
Russ miles-cloudfoundry-deep-dive
Serendipity-neo4j
Serendipity-neo4j
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelism
Plug 20110217
Plug 20110217
Lug presentation
Lug presentation
I went to_a_communications_workshop_and_they_t
I went to_a_communications_workshop_and_they_t
Plug saiku
Plug saiku
Dernier
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
Fwdays
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
Rick Flair
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
hariprasad279825
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
Alan Dix
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
gvaughan
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
Pixlogix Infotech
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
Fwdays
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
LoriGlavin3
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
Nicole Novielli
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
Dilum Bandara
Training state-of-the-art general text embedding
Training state-of-the-art general text embedding
Zilliz
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
BookNet Canada
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
LoriGlavin3
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Mark Simos
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
LoriGlavin3
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
BookNet Canada
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
Manik S Magar
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
BookNet Canada
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
Raghuram Pandurangan
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
mohitsingh558521
Dernier
(20)
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
Training state-of-the-art general text embedding
Training state-of-the-art general text embedding
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
Keith Braithwaite on Domain Driven Design
1.
Nothing New Under
the Sun Techniques that still work no matter how hard we try to forget them Nothing New Under the Sun Slide 1 21 July 2009 Keith Braithwaite © Zühlke 2010 Context “I come as an entertainer, not as a salesman. I want you to enjoy these ideas because I enjoy them”— Alan Watts Nothing New Under the Sun Slide 2 21 July 2009 Keith Braithwaite © Zühlke 2010 1
2.
If IT were
a person… It would be diagnosed with • ADHD • Retrograde amnesia • OCD Nothing New Under the Sun Slide 3 21 July 2009 Keith Braithwaite © Zühlke 2010 If IT were a person… Nothing New Under the Sun Slide 4 21 July 2009 Keith Braithwaite © Zühlke 2010 2
3.
If IT were
a person… It would be diagnosed with • ADHD – We have difficulty retaining focus on the job at hand – We are very easily distracted by • Retrograde amnesia – We don’t recall our past • OCD Nothing New Under the Sun Slide 5 21 July 2009 Keith Braithwaite © Zühlke 2010 If IT were a person… It would be diagnosed with • ADHD – We have difficulty retaining focus on the job at hand – We are very easily distracted by • Retrograde amnesia – We don’t recall our past – We don’t recall our past • OCD Nothing New Under the Sun Slide 6 21 July 2009 Keith Braithwaite © Zühlke 2010 3
4.
If IT were
a person… It would be diagnosed with • ADHD – We have difficulty retaining focus on the job at hand – We are very easily distracted by • Retrograde amnesia – We don’t recall our past – We don’t recall our past • OCD – We follow rituals independent of their effectiveness Nothing New Under the Sun Slide 7 21 July 2009 Keith Braithwaite © Zühlke 2010 If IT were a person… It would be diagnosed with • ADHD – We have difficulty retaining focus on the job at hand – We are very easily distracted by • Retrograde amnesia – We don’t recall our past – We don’t recall our past • OCD – We follow rituals independent of their effectiveness Nothing New Under the Sun Slide 8 21 July 2009 Keith Braithwaite © Zühlke 2010 4
5.
Tony Hoare said…
“If we could only learn the right lessons from the successes of the past we would not need to learn from the failures ” Nothing New Under the Sun Slide 9 21 July 2009 Keith Braithwaite © Zühlke 2010 Zombies www.flickr.com/photos/ hryckowian/3540744713/ Nothing New Under the Sun Slide 10 21 July 2009 Keith Braithwaite © Zühlke 2010 5
6.
Zombies Given half a
chance they will eat your brain • Code the works “first time” • Structured Programming These, and others, we should forget Nothing New Under the Sun Slide 11 21 July 2009 Keith Braithwaite © Zühlke 2010 Code that works “first time” City and Guilds COBOL • 3 attempts to compile, run and test or fail There was a time when this sort of thing made sense Nothing New Under the Sun Slide 12 21 July 2009 Keith Braithwaite © Zühlke 2010 6
7.
Code that works
“first time” There was a time when this sort of thing made sense Nothing New Under the Sun Slide 13 21 July 2009 Keith Braithwaite © Zühlke 2010 Code that works “first time” Jerry Weinberg tells of being told that • Thecomputer (singular) earns more than you do, so behave accordingly Nothing New Under the Sun Slide 14 21 July 2009 Keith Braithwaite © Zühlke 2010 7
8.
Code that works
“first time” The computer learns more than you, behave accordingly • cost(processor time) >> cost(developer time) • Cycle time to get feedback—hours to days Nothing New Under the Sun Slide 15 21 July 2009 Keith Braithwaite © Zühlke 2010 Code that works “first time” The computer learns more than you, behave accordingly • cost(processor time) >> cost(developer time) • Cycle time to get feedback—hours to days In fact, you earn much more than the computer Nothing New Under the Sun Slide 16 21 July 2009 Keith Braithwaite © Zühlke 2010 8
9.
Code that works
“first time” The computer learns more than you, behave accordingly • cost(processor time) >> cost(developer time) • Cycle time to get feedback—hours to days You earn much more than the computer, behave accordingly • cost(processor time) << cost(developer time) • Cycle time to get feedback—milliseconds to minutes • A top-end dev workstation amortised over 3 years – £1 per day – 2 or 3 orders of magnitude cheaper than a programmer Nothing New Under the Sun Slide 17 21 July 2009 behave accordingly Keith Braithwaite © Zühlke 2010 Code that works “first time” low Uncertainty high high ch cs ao liti s po Disagreement sim pli gy city olo Nothing New Under the Sun Slide 18 ide 21 July 2009 low Keith Braithwaite © Zühlke 2010 9
10.
Code that works
“first time” low Uncertainty high high N pr ovel ac pr ood e tic tic e ac G Disagreement Be st Pr ac e pr od tic tic Go Nothing New Under the Sun e ac Slide 19 21 July 2009 low Keith Braithwaite © Zühlke 2010 Code that works “first time” low Uncertainty high high Sense ActNo pr vel ac pr ood e tic Analyze Sense tic e ac G Disagreement Respond Respond Sense Be Sense st Pr Categorize Analyze ac e pr od tic tic Go Nothing New Under the Sun e ac Slide 20 Respond Respond 21 July 2009 low Keith Braithwaite © Zühlke 2010 10
11.
Old School: things
we got right Nothing New Under the Sun Slide 21 21 July 2009 http://commons.wikimedia.org/wiki/File:Vincent_Series_C_Black_Shadow_1950.jpg Keith Braithwaite © Zühlke 2010 Old School: things we got right Nothing New Under the Sun Slide 22 21 July 2009 Keith Braithwaite http://www.digibarn.com/collections/screenshots/xerox-star-8010/xerox-star-8010-02.jpg © Zühlke 2010 11
12.
Old School: things
we got right Analysis Architecture Modelling Nothing New Under the Sun Slide 23 21 July 2009 http://commons.wikimedia.org/wiki/File:Vincent_Series_C_Black_Shadow_1950.jpg Keith Braithwaite © Zühlke 2010 Analysis There used to be this thing called Systems Analysis • It used to be a core skill • But it got a bad name Nothing New Under the Sun Slide 24 21 July 2009 Keith Braithwaite © Zühlke 2010 12
13.
Analysis So, we stopped
doing it • Agile gave some of us an excuse Nothing New Under the Sun Slide 25 21 July 2009 Keith Braithwaite © Zühlke 2010 Analysis We had to re-invent understanding • Behaviour Driven Development – (AKA TDD the way you were always supposed to do it) • Domain Driven Design – “Until I started working in "enterprise IT" I didn't realize that people didn't do this. I suppose that this is an important book, but it's depressing that this is so”—Nat Pryce Nothing New Under the Sun Slide 26 21 July 2009 Keith Braithwaite © Zühlke 2010 13
14.
Analysis Domain Driven Design “Leading
software designers have recognized domain modeling and design as critical topics for at least 20 years, yet surprisingly little has been written about what needs to be done or how to do it.”—Evans Nothing New Under the Sun Slide 27 21 July 2009 Keith Braithwaite © Zühlke 2010 Syntropy Three Perspectives: • Essential • Specification • Implementation Three Kinds of Domain • Concept • Interaction • Infrastructure Nothing New Under the Sun Slide 28 11 March 2010 http://www.syntropy.co.uk/syntropy/designing-object-systems.pdf Keith Braithwaite © Zühlke 2010 14
15.
Syntropy: Essential Perspective Essential
models talk about • (someone’s understanding of) • (a part of) • (a situation in) The World • Objects with observable state, identity • Globally broadcast, instantaneous events • Objects change state in response to events Nothing New Under the Sun – Not “message sending” Slide 29 11 March 2010 Keith Braithwaite © Zühlke 2010 Syntropy: Specification Perspective Specification models talk about a (proposed) system “At some point during a development (which may or may not be at the beginning), the interface at the boundary between the software and its environment must be specified, and the specification model provides a way to specify this interface precisely.”—Cook and Daniels §6.1 emphasis in original • Objects with observable state, identity • Globally broadcast, instantaneous events Nothing New Under the Sun Slide 30 • Objectschange state in response to events and 11 March 2010 generate new events Keith Braithwaite © Zühlke 2010 15
16.
Syntropy: Implementation Perspective Implementation
models talk about design • Objects with observable state, identity, and responsibilities • Point-to-point messages • Objects change state in response to messages and send new messages Nothing New Under the Sun Slide 31 11 March 2010 Keith Braithwaite © Zühlke 2010 Syntropy: Domains Three kinds of domain • Interaction: at the system boundary • Concept: what the system is about • Infrastructure: How it works Essential Perspective models concentrate on concept domains Specification Perspective models have Interaction domains Kiln control system, Cook and Daniels fig 11.2 Implementation Perspective models have Nothing New Under the Sun Slide 32 all three 11 March 2010 Keith Braithwaite © Zühlke 2010 16
17.
Syntropy: Relationship Between
Models “…the main correspondence between all three [perspectives] is in the type views for the concept domains.” —Cook and Daniels §10.3 emphasis in original “State diagrams do not, in general, correspond between essential and specification models.” —ibid Nothing New Under the Sun Slide 33 11 March 2010 Keith Braithwaite © Zühlke 2010 Syntropy: The System Boundary “If the software boundary is implicit in the situation itself, essential modelling may not be very helpful, because the essential model would express the same behaviour as the specification model without specifying which events are software-generated. However, when the software boundary is to be designed, an essential model provides a systematic way of designing it.” —Cook and Daniels §10.5 Nothing New Under the Sun Slide 34 11 March 2010 Keith Braithwaite © Zühlke 2010 17
18.
Aside: Diagnostic Instrument If
everyone agrees that it’s obviously correct: • That the system has layers • The one at the “top” is a website • The one at the bottom is a database Then: • You probably don’t have much of a domain • Notethat adding an ORM layer does not magically create a domain Nothing New Under the Sun Slide 35 11 March 2010 Keith Braithwaite © Zühlke 2010 Syntropy: Implications There is no “seamlessness” • From world to spec to system requires translation You can’t sensibly use exactly one modelling language: • To understand the world • To specify a system • To design an implementation Nothing New Under the Sun Slide 36 11 March 2010 Keith Braithwaite © Zühlke 2010 18
19.
Problem Frames “The problem
is not at the computer interface—it is deeper into the world, further away form the computer”—Jackson Problem Frames §1.4 “Many descriptions that aught to be about the world […] are really about the computer and the software”—ibid §1.7 “Not everything worth thinking about has to result in a piece of program text or a designed domain. And conversely, the fact that there will be no model of [some things] doesn’t mean that you don’t have to describe them in your problem analysis” —ibid §2. Nothing New Under the Sun Slide 37 11 March 2010 Keith Braithwaite © Zühlke 2010 Problem Frame: Required Behaviour The Control Machine, which is to be built, directs Causal Phenomena (C1) at the Control Controlled Domain Machine The Controlled Domain may respond with CM!C1 CD!C2 Causal Phenomena (C2) to provide feedback The Controlled Domain is a a Causal Domain, so Controlled we can predict how C2 depends on C1 Domain C The Required Behaviour specifies some Causal Phenomena (C3) which must be satisfied if C3 the Control Machine is to be correct Nothing New Under the Sun Required Slide 38 Example: timed traffic lights 11 March 2010 Behaviour Keith Braithwaite © Zühlke 2010 19
20.
Problem Frame: Commanded
Behaviour The Control Machine and Controlled Domain interact as in Required Control Behaviour Machine Additionally an Operator observes events in OP!E4 CD!C2 the context of the Commanded CM!C1 Behaviour (such as E4) and sends commands to the control machine Operator Controlled Domain The Operator is a merely “biddable” B C domain, we cannot predict to a certainty C3 how E4 and C3 are related E4 Nothing New Under the Sun Example: opening or closing a sluicegate Commanded Slide 39 11 March 2010 under manual control Behaviour Keith Braithwaite © Zühlke 2010 Problem Frame: Information Display The Real World is a Causal Domain, but an automomous, active one. It does it’s own Information thing. It shares causal phenomena (such as Machine C1) with the Information Machine. The Information Machine sends events (E2) IM!E2 RW!C1 to the Display (also a Causal Domain) Display Real World The Display updates shared symbolic values (such as Y4) which must reflect C C phenomena C shared with the Real World, C3 but which can only be inferred from C1 Y4 Nothing New Under the Sun Example: vehicle odometer Display~Real Slide 40 11 March 2010 World Keith Braithwaite © Zühlke 2010 20
21.
Problem Frame: Simple
Workpieces The Editing Tool can send commands (in the form of events such as E1) to the work Editing pieces. Tool The workpieces are are leXical domain and US!E3 WP!Y2 may present symbolic phenomena (Y2) ET!E1 to the Editing Tool. User Work The User may send events (E3) reflecting Pieces their desires for the workpieces. B X Example: a party planning tool Y4 E3 Nothing New Under the Sun Command Slide 41 11 March 2010 Effects Keith Braithwaite © Zühlke 2010 Problem Frame: Transformation The Transform Machine notes symbolic phenomena (such as Y1) as input and Transform emits symbolic phenomena (such as Machine Y2) as output. TM!Y2 IN!Y1 Input and Output are both lexical domains. Example: email statistics analyser Outputs Inputs X X Y3 Y4 Nothing New Under the Sun IO Relation Slide 42 11 March 2010 Keith Braithwaite © Zühlke 2010 21
22.
Problem Frames: Three
Descriptions Three different things, three different descriptions • The requirement is in the world • The specification is at the system interface • The domains join them up Real problems have multiple, overlapping frames • The book contains much guidance on managing this Nothing New Under the Sun Slide 43 11 March 2010 Keith Braithwaite © Zühlke 2010 Problem Frames: The aspiration “Ideally, each problem frame would be associate with a systematic method that is known to be effective for analyzing and solving any problem that fits the frame” Nothing New Under the Sun Slide 44 11 March 2010 Keith Braithwaite © Zühlke 2010 22
23.
Re–invention About 20 years
ago a bunch of really smart people thought really hard about domains and their relationship to design. They came up with a bunch of really good ideas, and about 15 years ago, wrote them down. We had to re–invent the idea of understanding domains as a guide to building systems Are we going to have to re–discover those good ideas, too? Nothing New Under the Sun Slide 45 11 March 2010 Keith Braithwaite © Zühlke 2010 Not Doing Your Homework —Oliver Heaviside, 1884 Nothing New Under the Sun Slide 46 11 March 2010 Keith Braithwaite © Zühlke 2010 23
24.
Not Doing Your
Homework Domain Driven Design “Leading software designers have recognized domain modeling and design as critical topics for at least 20 years, yet surprisingly little has been written about what needs to be done or how to do it.”—Evans But what has been written contains valuable lessons Maybe it would be worth looking… Nothing New Under the Sun Slide 47 21 July 2009 Keith Braithwaite © Zühlke 2010 24