SlideShare a Scribd company logo
1 of 30
Download to read offline
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 02Jorge 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 WorkAdaPro GmbH
 
Steve mcconnell
Steve mcconnellSteve mcconnell
Steve mcconnellShiraz316
 
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 TasksSujit Ghosh
 
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
 
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 ManagementKeith 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
 

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 engineeringVarsha Ajith
 
Abstract
AbstractAbstract
Abstractemaye
 
PATTERNS01 - An Introduction to Design Patterns
PATTERNS01 - An Introduction to Design PatternsPATTERNS01 - An Introduction to Design Patterns
PATTERNS01 - An Introduction to Design PatternsMichael 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 engineers9diov
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven DesignMuhammad 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.pdfbizuayehuadmasu1
 
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 - AnalysisRandy Connolly
 
Object-oriented modeling and design.pdf
Object-oriented modeling and  design.pdfObject-oriented modeling and  design.pdf
Object-oriented modeling and design.pdfSHIVAM691605
 
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 ReengineeringRichard 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
 

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

The Case for Technical Excellence
The Case for Technical ExcellenceThe Case for Technical Excellence
The Case for Technical ExcellenceKevlin Henney
 
Empirical Development
Empirical DevelopmentEmpirical Development
Empirical DevelopmentKevlin Henney
 
Lambda? You Keep Using that Letter
Lambda? You Keep Using that LetterLambda? You Keep Using that Letter
Lambda? You Keep Using that LetterKevlin Henney
 
Lambda? You Keep Using that Letter
Lambda? You Keep Using that LetterLambda? You Keep Using that Letter
Lambda? You Keep Using that LetterKevlin Henney
 
Solid Deconstruction
Solid DeconstructionSolid Deconstruction
Solid DeconstructionKevlin 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 AwayKevlin Henney
 
Structure and Interpretation of Test Cases
Structure and Interpretation of Test CasesStructure and Interpretation of Test Cases
Structure and Interpretation of Test CasesKevlin Henney
 
Refactoring to Immutability
Refactoring to ImmutabilityRefactoring to Immutability
Refactoring to ImmutabilityKevlin Henney
 
Turning Development Outside-In
Turning Development Outside-InTurning Development Outside-In
Turning Development Outside-InKevlin Henney
 
Giving Code a Good Name
Giving Code a Good NameGiving Code a Good Name
Giving Code a Good NameKevlin 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 QuadrantKevlin 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

A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 

Recently uploaded (20)

A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 

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