Problem frames approach

Problem analysis or the problem frames approach is an approach to software requirements analysis. It was developed by British software consultant Michael A. Jackson in the 1990s.
History.
The problem frames approach was first sketched by Jackson in his book "Software Requirements & Specifications" (1995) and in a number of articles in various journals devoted to software engineering. It has received its fullest description in his "Problem Frames: Analysing and Structuring Software Development Problems" (2001).
A session on problem frames was part of the 9th International Workshop on Requirements Engineering: Foundation for Software Quality (REFSQ)] held in Klagenfurt/Velden, Austria in 2003. The First International Workshop on Applications and Advances in Problem Frames was held as part of ICSE’04 held in Edinburgh, Scotland. One outcome of that workshop was a 2005 special issue on problem frames in the "International Journal of Information and Software Technology".
The Second International Workshop on Applications and Advances in Problem Frames was held as part of ICSE 2006 in Shanghai, China. The Third International Workshop on Applications and Advances in Problem Frames (IWAAPF) was held as part of ICSE 2008 in Leipzig, Germany. In 2010, the IWAAPF workshops were replaced by the International Workshop on Applications and Advances of Problem-Orientation (IWAAPO). IWAAPO broadens the focus of the workshops to include alternative and complementary approaches to software development that share an emphasis on problem analysis. IWAAPO-2010 was held as part of ICSE 2010 in Cape Town, South Africa.
Today research on the problem frames approach is being conducted at a number of universities, most notably at the Open University in the United Kingdom as part of its "Relating Problem & Solution Structures" research theme 
The ideas in the problem frames approach have been generalized into the concepts of problem-oriented development (POD) and problem-oriented engineering (POE), of which problem-oriented software engineering (POSE) is a particular sub-category. The first International Workshop on Problem-Oriented Development was held in June 2009.
Overview.
Fundamental philosophy.
"Problem analysis" or the "problem frames approach" is an approach — a set of concepts — to be used when gathering requirements and creating specifications for computer software. Its basic philosophy is strikingly different from other software requirements methods in insisting that:
The approach uses three sets of conceptual tools.
Tools for describing specific problems.
Concepts used for describing specific problems include: 
"phenomena" (of various kinds, including "events"), 
"problem context", 
"problem domain",
"solution domain" (aka the "machine"), 
"shared phenomena" (which exist in "domain interfaces"), 
"domain requirements" (which exist in the problem domains) and 
"specifications" (which exist at the problem domain:machine interface).
The graphical tools for describing problems are the "context diagram" and the 
"problem diagram".
Tools for describing classes of problems (problem frames).
The Problem Frames Approach includes concepts for describing classes of problems. A recognized class of problems is called a "problem frame" (roughly analogous to a design pattern).
In a problem frame, domains are given general names and described in terms of their important characteristics. A domain, for example, may be classified as "causal" (reacts in a deterministic, predictable way to events) or "biddable" (can be bid, or asked, to respond to events, but cannot be expected always to react to events in any predictable, deterministic way). (A biddable domain usually consists of people.)
The graphical tool for representing a problem frame is a "frame diagram". A frame diagram looks generally like a problem diagram except for a few minor differences—domains have general, rather than specific, names; and rectangles representing domains are annotated to indicate the type (causal or biddable) of the domain.
A list of recognized classes of problems (problem frames).
The first group of problem frames identified by Jackson included:
Subsequently, other researchers have described or proposed additional problem frames.
Describing problems.
The problem context.
Problem analysis considers a software application to be a kind of software "machine". A software development project aims to change the problem context by creating a software machine and adding it to the problem context, where it will bring about certain desired effects.
The particular portion of the problem context that is of interest in connection with a particular problem — the particular portion of the problem context that forms the context of the problem — is called the "application domain".
After the software development project has been finished, and the software machine has been inserted into the problem context, the problem context will contain both the application domain and the machine. At that point, the situation will look like this:
The problem context contains the machine and the application domain. The "machine interface" is where the Machine and the application domain meet and interact.
The same situation can be shown in a different kind of diagram, a "context diagram", this way:
The context diagram.
The problem analyst's first task is to truly understand the problem. That means understanding the context in which the problem is set. And that means drawing a "context diagram."
Here is Jackson's description of examining the problem context, in this case the context for a bridge to be built:
An analyst trying to understand a software development problem must go through the same process as the bridge engineer. He starts by examining the various problem domains in the application domain. These domains form the context into which the planned Machine must fit. Then he imagines how the Machine will fit into this context. And then he constructs a context diagram showing his vision of the problem context with the Machine installed in it.
The context diagram shows the various "problem domains" in the application domain, their connections, and the Machine and its connections to (some of) the problem domains. Here is what a context diagram looks like.
This diagram shows:
A domain is simply a part of the world that we are interested in. It consists of "phenomena" — individuals, events, states of affairs, relationships, and behaviors.
A domain interface is an area where domains connect and communicate. Domain interfaces are not data flows or messages. An interface is a place where domains partially overlap, so that the phenomena in the interface are "shared phenomena" — they exist in both of the overlapping domains.
You can imagine domains as being like primitive one-celled organisms (like amoebas). They are able to extend parts of themselves into pseudopods. Imagine that two such organisms extend pseudopods toward each other in a sort of handshake, and that the cellular material in the area where they are shaking hands is mixing, so that it belongs to both of them. That's an interface.
In the following diagram, X is the interface between domains A and B. Individuals that exist or events that occur in X, exist or occur in both A and B. 
Shared individuals, states and events may look differently to the domains that share them. Consider for example an interface between a computer and a keyboard. When the keyboard domain sees an event "Keyboard operator presses the spacebar" the computer will see the same event as "Byte hex("20") appears in the input buffer."
Problem diagrams.
The problem analyst's basic tool for describing a problem is a "problem diagram". Here is a generic problem diagram.
In addition to the kinds of things shown on a context diagram, a problem diagram shows:
An interface that connects a problem domain to the machine is called a "specification interface" and the phenomena in the specification interface are called "specification phenomena". The goal of the requirements analyst is to develop a specification for the behavior that the Machine must exhibit at the Machine interface in order to satisfy the requirement.
Here is an example of a real, if simple, problem diagram.
This problem might be part of a computer system in a hospital. In the hospital, patients are connected to sensors that can detect and measure their temperature and blood pressure. The requirement is to construct a Machine that can display information about patient conditions on a panel in the nurses station.
The name of the requirement is "Display ~ Patient Condition". The tilde (~) indicates that the requirement is about a relationship or correspondence between the panel display and patient conditions. The arrowhead indicates that the requirement reference connected to the Panel Display domain is also a requirement constraint. That means that the requirement contains some kind of stipulation that the Panel display must meet. In short, the requirement is that "The panel display must display information that matches and accurately reports the condition of the patients."
Describing classes of problems.
Problem frames.
A "problem frame" is a description of a recognizable class of problems, where the class of problems has a known solution. In a sense, problem frames are problem patterns.
Each problem frame has its own "frame diagram". A frame diagram looks essentially like a problem diagram, but instead of showing specific domains and requirements, it shows types of domains and types of requirements; domains have general, rather than specific, names; and rectangles representing domains are annotated to indicate the type (causal or biddable) of the domain.
Variant frames.
In "Problem Frames" Jackson discussed variants of the five basic problem
frames that he had identified. A variant typically adds a domain to the problem context.
Problem concerns.
Jackson also discusses certain kinds of concerns that arise when working with problem frames.
Particular concerns 
Composition concerns 
Recognized problem frames.
The first problem frames identified by Jackson included:
Subsequently, other researchers have described or proposed additional problem frames.
Required-behavior problem frame.
The intuitive idea behind this problem frame is:
Commanded-behavior problem frame.
The intuitive idea behind this problem frame is:
Information display problem frame.
The intuitive idea behind this problem frame is:
Simple workpieces problem frame.
The intuitive idea behind this problem frame is:
Transformation problem frame.
The intuitive idea behind this problem frame is:
Problem analysis and the software development process.
When problem analysis is incorporated into the software development process, the software development lifecycle starts with the problem analyst, who studies the situation and:
At this point, problem analysis — "problem decomposition" — is complete. The next step is to reverse the process and to build the desired software system though a process of "solution composition".
The solution composition process is not yet well understood, and is still very much a research topic. Extrapolating from hints in "Software Requirements & Specifications", we can guess that the software development process would continue with the developers, who would:
Similar approaches.
There are a few other software development ideas that are similar in some ways to problem analysis.