SlideShare a Scribd company logo
Framing the Problem
Kevlin Henney
kevlin@curbralan.com
@KevlinHenney
See http://programmer.97things.oreilly.com
(also http://tr.im/97tepsk)
and follow @97TEPSK
A criticism often leveled at
software development is that,
individually and culturally, it is
often too solution-centric [...].
Either the world of the solution
absorbs software developers to
the detriment of the problem be
solved or, in more extreme
cases, solutions precede the
problems that they might solve:
there sometimes appears to be
an abundance of ‘solutions’ in
search of a problem.
We know that every pattern is an instruction of the general form:
context  conflicting forces  configuration
So we say that a pattern is good, whenever we can show that it
meets the following two empirical conditions:
1. The problem is real. This means that we can express the problem
as a conflict among forces which really do occur within the
stated context, and cannot normally be resolved within that
context. This is an empirical question.
2. The configuration solves the problem. This means that when the
stated arrangement of parts is present in the stated context, the
conflict can be resolved, without any side effects. This is an
empirical question.
Christopher Alexander, The Timeless Way of Building
So, even within the world of patterns,
which intentionally promote friendly
relations between the worlds of the
problem and the solution, there is often
still a lingering solution bias that
assumes a proper understanding of the
problem domain [...].
The common, stock answer to all of this
is to adopt a prescribed method that
has, within its lifecycle, an extensive
analysis activity that follows one
specific particular school of thought.
[...] Many such approaches, however,
can end up resembling more of a
synthesis (composing a solution to a
problem) than an analysis
(understanding the problem), trying to
shoehorn a problem into a view that
does not fit comfortably.
Description and Prescription
 Describing is not the same as
prescribing
 Indicative properties assert facts about
a domain
 Optative properties express a desired
outcome that one has on a domain,
i.e., requirements
 The distinction is subtle but important
Requirements come in many possible flavours, but are
commonly cast into two categories: functional and non-
functional requirements. As a label, it has to be admitted
that non-functional is fairly lame. It is unhelpfully vague
and amusingly ambiguous.
Most things that are non-functional don’t work: washing
machines, cars and programs that are non-functional are
broken. Also, by prefixing functional requirements with non,
other requirements seem to be relegated to second- or
third-class citizenship.
Requirements can be better and more fairly considered
under the headings of functional requirements, operational
requirements and developmental requirements.
Kevlin Henney, "Inside Requirements"
An abstract model (or conceptual model) is a theoretical
construct that represents something, with a set of variables
and a set of logical and quantitative relationships between
them. Models in this sense are constructed to enable reasoning
within an idealized logical framework about these processes
and are an important component of scientific theories.
Idealized here means that the model may make explicit
assumptions that are known to be false (or incomplete) in
some detail. Such assumptions may be justified on the grounds
that they simplify the model while, at the same time, allowing
the production of acceptably accurate solutions.
http://www.wikinfo.org/index.php/Model_(abstract)
 A given model will emphasise one
perspective at the expense of others
 Good abstraction omits irrelevant
detail
 Poor abstraction omits necessary detail
or retains unnecessary detail
 The identification of (in)appropriate
detail is key to effective modelling
Model Properties
To deal with a significant problem
you have to analyse and structure it.
That means analysing and
structuring the problem itself, not
the system that will solve it. Too
often we push the problem into the
background because we are in a
hurry to proceed to a solution. If
you read most software
development texts thoughtfully,
you will see that almost everything
is about the solution; almost
nothing is about the problem.
Context Diagrams
 Context diagrams offer a big picture
of the world around the software
 They are not use case diagrams
 They are not architectural diagrams
 Different approaches, from
intentional to physical, can be used
 UML "use–case-less" diagrams, DFD-
centred diagrams, etc.
Jackson Context Diagram
Heating
Controller
Operator Furnace
Heating
Plan
Heated
Rooms
The machine domain
A designed domain
A given domain
Kinds of Domains
Heating
Controller
Operator Furnace
Heating
Plan
Heated
Rooms
B
X
C
C
A lexical domain
A biddable domain A causal domain
Shared Phenomena
Heating
Controller
Operator Furnace
Heating
Plan
Heated
Rooms
B
X
C
C
Temperature
Temperature Knob
Water Flow
Water Heat
Flame On
Flame Off
Flame State
Pump On
Pump Off
Water Temperature
Room
Start Time
End Time
Enter Room
Enter Start Time
Enter End Time
phenomenon (plural: phenomena):
An element of what we can observe in
the world. Phenomena may be
individuals or relations. Individuals are
entities, events, or values. Relations
are roles, states, or truths.
individual: An individual is a
phenomenon that can be named and
is distinct from every other individual:
for example, the number 17, George
III, or Deep Blue's first move against
Kasparov.
relationship: A kind of phenomenon.
An association among two or more
individuals, for example, Mother(Lucy,
Joe). Also, generally, any pattern or
structure among phenomena of a
domain.
Events. An event is an individual
happening, taking place at some particular
point in time. Each event is indivisible and
instantaneous.
Entities. An entity is an individual that
persists over time and can change its
properties and states from one point in
time to another.
Values. A value is an intangible individual
that exists outside time and space, and is
not subject to change.
States. A state is a relation among
individual entities and values; it can
change over time.
Truths. A truth is a relation among
individuals that cannot possibly change
over time.
Roles. A role is a relation between an
event and individuals that participate in it in
a particular way.
Subproblems
 A subproblem is a projection or slice
of the whole problem space
 A subproblem may correspond to a set
of use cases or features, or the
operation of some domain
 Requirements are relationships or
constraints imposed on a domain or
between domains
Problem Diagrams
Heating
Controller
Operator
Heating
Plan
B
X
Heating
Plan Entry
Rules
Requirements
imposed on a slice of
the problem space
A problem frame is a
generalization of a class of
problem. If there are many
other problems that fit the
same frame as the problem
you’re dealing with, then you
can hope to apply the method
and techniques that worked
for those other problems to
the problems you’re trying to
solve right now.
Control
Machine
Controlled
Domain
C
Required
Behaviour
Required behaviour: there is some part of the physical world
whose behaviour is to be controlled so that it satisfies certain
conditions. The problem is to build a machine that will impose
that control.
Control
Machine
Operator
Controlled
Domain
B
C
Commanded
Behaviour
Commanded behaviour: there is some part of the physical
world whose behaviour is to be controlled in accordance with
commands issued by an operator. The problem is to build a
machine that will accept the operator’s commands and
impose the control accordingly.
Information
Machine
Display
Real
World
C
C
Display ~
Real World
Information display: there is some part of the physical world
about whose states and behaviour certain information is
continually needed. The problem is to build a machine that
will obtain this information from the world and present it at
the required place in the required form.
Editing
Tool
User
Work
Pieces
B
X
Command
Effects
Simple workpieces: a tool is needed to allow a user to create
and edit a certain class of computer-processable text or
graphic objects, or similar structures, so that they can be
subsequently copied, printed, analysed or used in other ways.
The problem is to build a machine that can act as this tool.
Transform
Machine
Outputs
Inputs
X
X
I/O Relation
Transformation: there are some given computer-readable
input files whose data must be transformed to give certain
required output files. The output data must be in a particular
format, and it must be derived from the input data according
to certain rules. The problem is to build a machine that will
produce the required outputs from the inputs.
Frame Applicability
 Whether you use Jackson's frames
directly or not is not the concern
 And, similarly, whether you choose to
use them formally or informally
 The value is in slicing up and
characterising the problem space
 Different kinds of problem have their
own terms of description
Bounding the problem is an
important ingredient in successful
software development. A pattern-
based approach aims to do this by
understanding the forces within a
given context that give rise to the
problem that the pattern’s solution
part resolves. There is no formal
guidance, however, for identifying
the context, its forces, and the
motivation that gives rise to the
problem.
In contrast, problem frames propose a
discipline for talking about and
delimiting the world of the problem
without involving or being distracted by
solution specifics. Within a given
problem frame there are likely to be
some patterns that are readily
applicable at a strategic level and some
that are not. For example, within a
composite frame comprising Simple
Workpieces and an Information
Display, Model–View–Controller
suggests itself as such a strategic
pattern, defining the core shape and
style of the architecture.
Composite Frames
 Realistic problems typically
embrace many frame concerns
 E.g., consider the frames involved in a
browser or word processor... more than
just either Information Display or Simple
Workpieces
 Composite frames are not different
problem frames that are 'glued'
together at 'component' boundaries
Framing Bias
The first step in making a decision is to frame the
question, but it is also where you can first go
wrong. The way a problem is framed can
profoundly influence the subsequent choices we
make. People tend to accept the frame they are
given; they seldom stop to reframe it in their own
words.
Lee Merkhofer
http://www.maxwideman.com/guests/portfolio/framing.htm
The ability to simplify means to eliminate the
unnecessary so that the necessary may speak.
Hans Hofmann

More Related Content

What's hot

Maturity Models and agile chap 02
Maturity Models and agile chap 02Maturity Models and agile chap 02
Maturity Models and agile chap 02
Jorge Boria
 
Responsibility Driven Design
Responsibility Driven DesignResponsibility Driven Design
Responsibility Driven DesignHarsh Jegadeesan
 
Mastering the Unpredictable - Improving Knowledge Work
Mastering the Unpredictable - Improving Knowledge WorkMastering the Unpredictable - Improving Knowledge Work
Mastering the Unpredictable - Improving Knowledge Work
AdaPro GmbH
 
Steve mcconnell
Steve mcconnellSteve mcconnell
Steve mcconnell
Shiraz316
 
Grasp principles
Grasp principlesGrasp principles
Grasp principles
Yuriy Shapovalov
 
1.10 evaluation
1.10 evaluation1.10 evaluation
1.10 evaluationmrmwood
 
ABC of Agile (Scrum & Extreme Programming)
ABC of Agile (Scrum & Extreme Programming)ABC of Agile (Scrum & Extreme Programming)
ABC of Agile (Scrum & Extreme Programming)
Amardeep Vishwakarma
 
Four principles seminar manageware seminar
Four principles seminar   manageware seminarFour principles seminar   manageware seminar
Four principles seminar manageware seminarManageware
 
Mixed Model Management:Manage Projects and Not Tasks
Mixed Model Management:Manage Projects and Not TasksMixed Model Management:Manage Projects and Not Tasks
Mixed Model Management:Manage Projects and Not Tasks
Sujit Ghosh
 
Evaluating Project Success
Evaluating Project SuccessEvaluating Project Success
Evaluating Project Success
Baker Khader Abdallah, PMP
 
Anti-Patterns
Anti-PatternsAnti-Patterns
Anti-Patterns
CleanestCode
 
Unit iii design patterns 9
Unit iii design patterns 9Unit iii design patterns 9
Unit iii design patterns 9
kiruthikamurugesan2628
 
04 designing architectures
04 designing architectures04 designing architectures
04 designing architecturesMajong DevJfu
 
Design_Thinking_CA1_N00147768
Design_Thinking_CA1_N00147768Design_Thinking_CA1_N00147768
Design_Thinking_CA1_N00147768Stephen Norman
 
Ced unit 1 notes-new
Ced unit 1 notes-newCed unit 1 notes-new
Ced unit 1 notes-new
Dr.Yogesh Dewang
 
Taming The Unpredictable: Real-World Adaptive Case Management
Taming The Unpredictable: Real-World Adaptive Case ManagementTaming The Unpredictable: Real-World Adaptive Case Management
Taming The Unpredictable: Real-World Adaptive Case Management
Keith Swenson
 
Howto Promote the Logical Thinking Process (LTP) using The Norovirus Approach...
Howto Promote the Logical Thinking Process (LTP) using The Norovirus Approach...Howto Promote the Logical Thinking Process (LTP) using The Norovirus Approach...
Howto Promote the Logical Thinking Process (LTP) using The Norovirus Approach...
Seuils Labs
 
Hawaii International Conference on System Science - Chabada&Molka-Danielsen
Hawaii International Conference on System Science - Chabada&Molka-DanielsenHawaii International Conference on System Science - Chabada&Molka-Danielsen
Hawaii International Conference on System Science - Chabada&Molka-DanielsenMichal Chabada
 
Grasp
GraspGrasp

What's hot (20)

Maturity Models and agile chap 02
Maturity Models and agile chap 02Maturity Models and agile chap 02
Maturity Models and agile chap 02
 
Responsibility Driven Design
Responsibility Driven DesignResponsibility Driven Design
Responsibility Driven Design
 
Mastering the Unpredictable - Improving Knowledge Work
Mastering the Unpredictable - Improving Knowledge WorkMastering the Unpredictable - Improving Knowledge Work
Mastering the Unpredictable - Improving Knowledge Work
 
Steve mcconnell
Steve mcconnellSteve mcconnell
Steve mcconnell
 
Grasp principles
Grasp principlesGrasp principles
Grasp principles
 
Dit yvol2iss24
Dit yvol2iss24Dit yvol2iss24
Dit yvol2iss24
 
1.10 evaluation
1.10 evaluation1.10 evaluation
1.10 evaluation
 
ABC of Agile (Scrum & Extreme Programming)
ABC of Agile (Scrum & Extreme Programming)ABC of Agile (Scrum & Extreme Programming)
ABC of Agile (Scrum & Extreme Programming)
 
Four principles seminar manageware seminar
Four principles seminar   manageware seminarFour principles seminar   manageware seminar
Four principles seminar manageware seminar
 
Mixed Model Management:Manage Projects and Not Tasks
Mixed Model Management:Manage Projects and Not TasksMixed Model Management:Manage Projects and Not Tasks
Mixed Model Management:Manage Projects and Not Tasks
 
Evaluating Project Success
Evaluating Project SuccessEvaluating Project Success
Evaluating Project Success
 
Anti-Patterns
Anti-PatternsAnti-Patterns
Anti-Patterns
 
Unit iii design patterns 9
Unit iii design patterns 9Unit iii design patterns 9
Unit iii design patterns 9
 
04 designing architectures
04 designing architectures04 designing architectures
04 designing architectures
 
Design_Thinking_CA1_N00147768
Design_Thinking_CA1_N00147768Design_Thinking_CA1_N00147768
Design_Thinking_CA1_N00147768
 
Ced unit 1 notes-new
Ced unit 1 notes-newCed unit 1 notes-new
Ced unit 1 notes-new
 
Taming The Unpredictable: Real-World Adaptive Case Management
Taming The Unpredictable: Real-World Adaptive Case ManagementTaming The Unpredictable: Real-World Adaptive Case Management
Taming The Unpredictable: Real-World Adaptive Case Management
 
Howto Promote the Logical Thinking Process (LTP) using The Norovirus Approach...
Howto Promote the Logical Thinking Process (LTP) using The Norovirus Approach...Howto Promote the Logical Thinking Process (LTP) using The Norovirus Approach...
Howto Promote the Logical Thinking Process (LTP) using The Norovirus Approach...
 
Hawaii International Conference on System Science - Chabada&Molka-Danielsen
Hawaii International Conference on System Science - Chabada&Molka-DanielsenHawaii International Conference on System Science - Chabada&Molka-Danielsen
Hawaii International Conference on System Science - Chabada&Molka-Danielsen
 
Grasp
GraspGrasp
Grasp
 

Similar to Framing the Problem

Object oriented software engineering
Object oriented software engineeringObject oriented software engineering
Object oriented software engineering
Varsha Ajith
 
Abstract
AbstractAbstract
Abstract
emaye
 
PATTERNS01 - An Introduction to Design Patterns
PATTERNS01 - An Introduction to Design PatternsPATTERNS01 - An Introduction to Design Patterns
PATTERNS01 - An Introduction to Design Patterns
Michael Heron
 
Sofwear deasign and need of design pattern
Sofwear deasign and need of design patternSofwear deasign and need of design pattern
Sofwear deasign and need of design patternchetankane
 
Grokking Techtalk: Problem solving for sw engineers
Grokking Techtalk: Problem solving for sw engineersGrokking Techtalk: Problem solving for sw engineers
Grokking Techtalk: Problem solving for sw engineers
9diov
 
Building an Information System
Building an Information SystemBuilding an Information System
Building an Information System
Jo Balucanag - Bitonio
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
Muhammad Ali
 
Problem Solving Techniques
Problem Solving TechniquesProblem Solving Techniques
Problem Solving TechniquesAshesh R
 
#2. Limitations of Operation Research.pdf
#2. Limitations of Operation Research.pdf#2. Limitations of Operation Research.pdf
#2. Limitations of Operation Research.pdf
bizuayehuadmasu1
 
Hci activity#3
Hci activity#3Hci activity#3
Hci activity#3
Desalegn Aweke
 
07 software design
07   software design07   software design
07 software designkebsterz
 
07 software design
07   software design07   software design
07 software designkebsterz
 
OO Development 5 - Analysis
OO Development 5 - AnalysisOO Development 5 - Analysis
OO Development 5 - Analysis
Randy Connolly
 
Object-oriented modeling and design.pdf
Object-oriented modeling and  design.pdfObject-oriented modeling and  design.pdf
Object-oriented modeling and design.pdf
SHIVAM691605
 
Enterprise Architecture for BPR
Enterprise Architecture for BPREnterprise Architecture for BPR
Enterprise Architecture for BPRRichard Freggi
 
The Role of the Enterprise Architect in Business Process Reengineering
The Role of the Enterprise Architect in Business Process ReengineeringThe Role of the Enterprise Architect in Business Process Reengineering
The Role of the Enterprise Architect in Business Process Reengineering
Richard Freggi
 
Seminar - Scalable Enterprise Application Development Using DDD and CQRS
Seminar - Scalable Enterprise Application Development Using DDD and CQRSSeminar - Scalable Enterprise Application Development Using DDD and CQRS
Seminar - Scalable Enterprise Application Development Using DDD and CQRSMizanur Sarker
 
Sdlc
SdlcSdlc
Sdlc
SdlcSdlc

Similar to Framing the Problem (20)

Design Pattern
Design PatternDesign Pattern
Design Pattern
 
Object oriented software engineering
Object oriented software engineeringObject oriented software engineering
Object oriented software engineering
 
Abstract
AbstractAbstract
Abstract
 
PATTERNS01 - An Introduction to Design Patterns
PATTERNS01 - An Introduction to Design PatternsPATTERNS01 - An Introduction to Design Patterns
PATTERNS01 - An Introduction to Design Patterns
 
Sofwear deasign and need of design pattern
Sofwear deasign and need of design patternSofwear deasign and need of design pattern
Sofwear deasign and need of design pattern
 
Grokking Techtalk: Problem solving for sw engineers
Grokking Techtalk: Problem solving for sw engineersGrokking Techtalk: Problem solving for sw engineers
Grokking Techtalk: Problem solving for sw engineers
 
Building an Information System
Building an Information SystemBuilding an Information System
Building an Information System
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Problem Solving Techniques
Problem Solving TechniquesProblem Solving Techniques
Problem Solving Techniques
 
#2. Limitations of Operation Research.pdf
#2. Limitations of Operation Research.pdf#2. Limitations of Operation Research.pdf
#2. Limitations of Operation Research.pdf
 
Hci activity#3
Hci activity#3Hci activity#3
Hci activity#3
 
07 software design
07   software design07   software design
07 software design
 
07 software design
07   software design07   software design
07 software design
 
OO Development 5 - Analysis
OO Development 5 - AnalysisOO Development 5 - Analysis
OO Development 5 - Analysis
 
Object-oriented modeling and design.pdf
Object-oriented modeling and  design.pdfObject-oriented modeling and  design.pdf
Object-oriented modeling and design.pdf
 
Enterprise Architecture for BPR
Enterprise Architecture for BPREnterprise Architecture for BPR
Enterprise Architecture for BPR
 
The Role of the Enterprise Architect in Business Process Reengineering
The Role of the Enterprise Architect in Business Process ReengineeringThe Role of the Enterprise Architect in Business Process Reengineering
The Role of the Enterprise Architect in Business Process Reengineering
 
Seminar - Scalable Enterprise Application Development Using DDD and CQRS
Seminar - Scalable Enterprise Application Development Using DDD and CQRSSeminar - Scalable Enterprise Application Development Using DDD and CQRS
Seminar - Scalable Enterprise Application Development Using DDD and CQRS
 
Sdlc
SdlcSdlc
Sdlc
 
Sdlc
SdlcSdlc
Sdlc
 

More from Kevlin Henney

Program with GUTs
Program with GUTsProgram with GUTs
Program with GUTs
Kevlin Henney
 
The Case for Technical Excellence
The Case for Technical ExcellenceThe Case for Technical Excellence
The Case for Technical Excellence
Kevlin Henney
 
Empirical Development
Empirical DevelopmentEmpirical Development
Empirical Development
Kevlin Henney
 
Lambda? You Keep Using that Letter
Lambda? You Keep Using that LetterLambda? You Keep Using that Letter
Lambda? You Keep Using that Letter
Kevlin Henney
 
Lambda? You Keep Using that Letter
Lambda? You Keep Using that LetterLambda? You Keep Using that Letter
Lambda? You Keep Using that Letter
Kevlin Henney
 
Solid Deconstruction
Solid DeconstructionSolid Deconstruction
Solid Deconstruction
Kevlin Henney
 
Get Kata
Get KataGet Kata
Get Kata
Kevlin Henney
 
Procedural Programming: It’s Back? It Never Went Away
Procedural Programming: It’s Back? It Never Went AwayProcedural Programming: It’s Back? It Never Went Away
Procedural Programming: It’s Back? It Never Went Away
Kevlin Henney
 
Structure and Interpretation of Test Cases
Structure and Interpretation of Test CasesStructure and Interpretation of Test Cases
Structure and Interpretation of Test Cases
Kevlin Henney
 
Agility ≠ Speed
Agility ≠ SpeedAgility ≠ Speed
Agility ≠ Speed
Kevlin Henney
 
Refactoring to Immutability
Refactoring to ImmutabilityRefactoring to Immutability
Refactoring to Immutability
Kevlin Henney
 
Old Is the New New
Old Is the New NewOld Is the New New
Old Is the New New
Kevlin Henney
 
Turning Development Outside-In
Turning Development Outside-InTurning Development Outside-In
Turning Development Outside-In
Kevlin Henney
 
Giving Code a Good Name
Giving Code a Good NameGiving Code a Good Name
Giving Code a Good Name
Kevlin Henney
 
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Kevlin Henney
 
Thinking Outside the Synchronisation Quadrant
Thinking Outside the Synchronisation QuadrantThinking Outside the Synchronisation Quadrant
Thinking Outside the Synchronisation Quadrant
Kevlin Henney
 
Code as Risk
Code as RiskCode as Risk
Code as Risk
Kevlin Henney
 
Software Is Details
Software Is DetailsSoftware Is Details
Software Is Details
Kevlin Henney
 
Game of Sprints
Game of SprintsGame of Sprints
Game of Sprints
Kevlin Henney
 
Good Code
Good CodeGood Code
Good Code
Kevlin Henney
 

More from Kevlin Henney (20)

Program with GUTs
Program with GUTsProgram with GUTs
Program with GUTs
 
The Case for Technical Excellence
The Case for Technical ExcellenceThe Case for Technical Excellence
The Case for Technical Excellence
 
Empirical Development
Empirical DevelopmentEmpirical Development
Empirical Development
 
Lambda? You Keep Using that Letter
Lambda? You Keep Using that LetterLambda? You Keep Using that Letter
Lambda? You Keep Using that Letter
 
Lambda? You Keep Using that Letter
Lambda? You Keep Using that LetterLambda? You Keep Using that Letter
Lambda? You Keep Using that Letter
 
Solid Deconstruction
Solid DeconstructionSolid Deconstruction
Solid Deconstruction
 
Get Kata
Get KataGet Kata
Get Kata
 
Procedural Programming: It’s Back? It Never Went Away
Procedural Programming: It’s Back? It Never Went AwayProcedural Programming: It’s Back? It Never Went Away
Procedural Programming: It’s Back? It Never Went Away
 
Structure and Interpretation of Test Cases
Structure and Interpretation of Test CasesStructure and Interpretation of Test Cases
Structure and Interpretation of Test Cases
 
Agility ≠ Speed
Agility ≠ SpeedAgility ≠ Speed
Agility ≠ Speed
 
Refactoring to Immutability
Refactoring to ImmutabilityRefactoring to Immutability
Refactoring to Immutability
 
Old Is the New New
Old Is the New NewOld Is the New New
Old Is the New New
 
Turning Development Outside-In
Turning Development Outside-InTurning Development Outside-In
Turning Development Outside-In
 
Giving Code a Good Name
Giving Code a Good NameGiving Code a Good Name
Giving Code a Good Name
 
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
 
Thinking Outside the Synchronisation Quadrant
Thinking Outside the Synchronisation QuadrantThinking Outside the Synchronisation Quadrant
Thinking Outside the Synchronisation Quadrant
 
Code as Risk
Code as RiskCode as Risk
Code as Risk
 
Software Is Details
Software Is DetailsSoftware Is Details
Software Is Details
 
Game of Sprints
Game of SprintsGame of Sprints
Game of Sprints
 
Good Code
Good CodeGood Code
Good Code
 

Recently uploaded

AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
Google
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Enterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptxEnterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptx
QuickwayInfoSystems3
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
abdulrafaychaudhry
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 

Recently uploaded (20)

AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Enterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptxEnterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptx
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 

Framing the Problem

  • 1. Framing the Problem Kevlin Henney kevlin@curbralan.com @KevlinHenney
  • 3. A criticism often leveled at software development is that, individually and culturally, it is often too solution-centric [...]. Either the world of the solution absorbs software developers to the detriment of the problem be solved or, in more extreme cases, solutions precede the problems that they might solve: there sometimes appears to be an abundance of ‘solutions’ in search of a problem.
  • 4. We know that every pattern is an instruction of the general form: context  conflicting forces  configuration So we say that a pattern is good, whenever we can show that it meets the following two empirical conditions: 1. The problem is real. This means that we can express the problem as a conflict among forces which really do occur within the stated context, and cannot normally be resolved within that context. This is an empirical question. 2. The configuration solves the problem. This means that when the stated arrangement of parts is present in the stated context, the conflict can be resolved, without any side effects. This is an empirical question. Christopher Alexander, The Timeless Way of Building
  • 5. So, even within the world of patterns, which intentionally promote friendly relations between the worlds of the problem and the solution, there is often still a lingering solution bias that assumes a proper understanding of the problem domain [...]. The common, stock answer to all of this is to adopt a prescribed method that has, within its lifecycle, an extensive analysis activity that follows one specific particular school of thought. [...] Many such approaches, however, can end up resembling more of a synthesis (composing a solution to a problem) than an analysis (understanding the problem), trying to shoehorn a problem into a view that does not fit comfortably.
  • 6. Description and Prescription  Describing is not the same as prescribing  Indicative properties assert facts about a domain  Optative properties express a desired outcome that one has on a domain, i.e., requirements  The distinction is subtle but important
  • 7. Requirements come in many possible flavours, but are commonly cast into two categories: functional and non- functional requirements. As a label, it has to be admitted that non-functional is fairly lame. It is unhelpfully vague and amusingly ambiguous. Most things that are non-functional don’t work: washing machines, cars and programs that are non-functional are broken. Also, by prefixing functional requirements with non, other requirements seem to be relegated to second- or third-class citizenship. Requirements can be better and more fairly considered under the headings of functional requirements, operational requirements and developmental requirements. Kevlin Henney, "Inside Requirements"
  • 8. An abstract model (or conceptual model) is a theoretical construct that represents something, with a set of variables and a set of logical and quantitative relationships between them. Models in this sense are constructed to enable reasoning within an idealized logical framework about these processes and are an important component of scientific theories. Idealized here means that the model may make explicit assumptions that are known to be false (or incomplete) in some detail. Such assumptions may be justified on the grounds that they simplify the model while, at the same time, allowing the production of acceptably accurate solutions. http://www.wikinfo.org/index.php/Model_(abstract)
  • 9.  A given model will emphasise one perspective at the expense of others  Good abstraction omits irrelevant detail  Poor abstraction omits necessary detail or retains unnecessary detail  The identification of (in)appropriate detail is key to effective modelling Model Properties
  • 10. To deal with a significant problem you have to analyse and structure it. That means analysing and structuring the problem itself, not the system that will solve it. Too often we push the problem into the background because we are in a hurry to proceed to a solution. If you read most software development texts thoughtfully, you will see that almost everything is about the solution; almost nothing is about the problem.
  • 11. Context Diagrams  Context diagrams offer a big picture of the world around the software  They are not use case diagrams  They are not architectural diagrams  Different approaches, from intentional to physical, can be used  UML "use–case-less" diagrams, DFD- centred diagrams, etc.
  • 12. Jackson Context Diagram Heating Controller Operator Furnace Heating Plan Heated Rooms The machine domain A designed domain A given domain
  • 13. Kinds of Domains Heating Controller Operator Furnace Heating Plan Heated Rooms B X C C A lexical domain A biddable domain A causal domain
  • 14. Shared Phenomena Heating Controller Operator Furnace Heating Plan Heated Rooms B X C C Temperature Temperature Knob Water Flow Water Heat Flame On Flame Off Flame State Pump On Pump Off Water Temperature Room Start Time End Time Enter Room Enter Start Time Enter End Time
  • 15. phenomenon (plural: phenomena): An element of what we can observe in the world. Phenomena may be individuals or relations. Individuals are entities, events, or values. Relations are roles, states, or truths. individual: An individual is a phenomenon that can be named and is distinct from every other individual: for example, the number 17, George III, or Deep Blue's first move against Kasparov. relationship: A kind of phenomenon. An association among two or more individuals, for example, Mother(Lucy, Joe). Also, generally, any pattern or structure among phenomena of a domain.
  • 16. Events. An event is an individual happening, taking place at some particular point in time. Each event is indivisible and instantaneous. Entities. An entity is an individual that persists over time and can change its properties and states from one point in time to another. Values. A value is an intangible individual that exists outside time and space, and is not subject to change. States. A state is a relation among individual entities and values; it can change over time. Truths. A truth is a relation among individuals that cannot possibly change over time. Roles. A role is a relation between an event and individuals that participate in it in a particular way.
  • 17. Subproblems  A subproblem is a projection or slice of the whole problem space  A subproblem may correspond to a set of use cases or features, or the operation of some domain  Requirements are relationships or constraints imposed on a domain or between domains
  • 19. A problem frame is a generalization of a class of problem. If there are many other problems that fit the same frame as the problem you’re dealing with, then you can hope to apply the method and techniques that worked for those other problems to the problems you’re trying to solve right now.
  • 20. Control Machine Controlled Domain C Required Behaviour Required behaviour: there is some part of the physical world whose behaviour is to be controlled so that it satisfies certain conditions. The problem is to build a machine that will impose that control.
  • 21. Control Machine Operator Controlled Domain B C Commanded Behaviour Commanded behaviour: there is some part of the physical world whose behaviour is to be controlled in accordance with commands issued by an operator. The problem is to build a machine that will accept the operator’s commands and impose the control accordingly.
  • 22. Information Machine Display Real World C C Display ~ Real World Information display: there is some part of the physical world about whose states and behaviour certain information is continually needed. The problem is to build a machine that will obtain this information from the world and present it at the required place in the required form.
  • 23. Editing Tool User Work Pieces B X Command Effects Simple workpieces: a tool is needed to allow a user to create and edit a certain class of computer-processable text or graphic objects, or similar structures, so that they can be subsequently copied, printed, analysed or used in other ways. The problem is to build a machine that can act as this tool.
  • 24. Transform Machine Outputs Inputs X X I/O Relation Transformation: there are some given computer-readable input files whose data must be transformed to give certain required output files. The output data must be in a particular format, and it must be derived from the input data according to certain rules. The problem is to build a machine that will produce the required outputs from the inputs.
  • 25. Frame Applicability  Whether you use Jackson's frames directly or not is not the concern  And, similarly, whether you choose to use them formally or informally  The value is in slicing up and characterising the problem space  Different kinds of problem have their own terms of description
  • 26. Bounding the problem is an important ingredient in successful software development. A pattern- based approach aims to do this by understanding the forces within a given context that give rise to the problem that the pattern’s solution part resolves. There is no formal guidance, however, for identifying the context, its forces, and the motivation that gives rise to the problem.
  • 27. In contrast, problem frames propose a discipline for talking about and delimiting the world of the problem without involving or being distracted by solution specifics. Within a given problem frame there are likely to be some patterns that are readily applicable at a strategic level and some that are not. For example, within a composite frame comprising Simple Workpieces and an Information Display, Model–View–Controller suggests itself as such a strategic pattern, defining the core shape and style of the architecture.
  • 28. Composite Frames  Realistic problems typically embrace many frame concerns  E.g., consider the frames involved in a browser or word processor... more than just either Information Display or Simple Workpieces  Composite frames are not different problem frames that are 'glued' together at 'component' boundaries
  • 29. Framing Bias The first step in making a decision is to frame the question, but it is also where you can first go wrong. The way a problem is framed can profoundly influence the subsequent choices we make. People tend to accept the frame they are given; they seldom stop to reframe it in their own words. Lee Merkhofer http://www.maxwideman.com/guests/portfolio/framing.htm
  • 30. The ability to simplify means to eliminate the unnecessary so that the necessary may speak. Hans Hofmann