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.[1] The First International Workshop on Applications and Advances in Problem Frames[2] 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[3] was held as part of ICSE 2006 in Shanghai, China. The Third International Workshop on Applications and Advances in Problem Frames (IWAAPF)[4] 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.[5] IWAAPO-2010 was held as part of ICSE 2010 in Cape Town, South Africa.[6]

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[7][8] Interesting work is being done by Professors Lavazza and del Bianco on using problem frames with UML.[9]

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:

It is more helpful ... to recognize that the solution is located in the computer and its software, and the problem is in the world outside. ... The computers can provide solutions to these problems because they are connected to the world outside. [11]

The moral is clear: to study and analyse a problem you must focus on studying and analysing the problem world in some depth, and in your investigations you must be willing to travel some distance away from the computer. ... [In a call forwarding problem...] You need to describe what's there – people and offices and holidays and moving office and delegating responsibility – and what effects [in the problem world] you would like the system to achieve – calls to A's number must reach A, and [when B is on vacation, and C is temporarily working at D's desk] calls to B's or C's number must reach C. [12]

None of these appear in the interface with the computer.... They are all deeper into the world than that. [13]

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:

  1. required behavior
  2. commanded behavior
  3. information display
  4. simple workpieces
  5. transformation

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:

You're an engineer planning to build a bridge across a river. So you visit the site. Standing on one bank of the river, you look at the surrounding land, and at the river traffic. You feel how exposed the place is, and how hard the wind is blowing and how fast the river is running. You look at the bank and wonder what faults a geological survey will show up in the rocky terrain. You picture to yourself the bridge that you are going to build. (Software Requirements & Specifications: "The Problem Context")

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:

  1. required behavior
  2. commanded behavior
  3. information display
  4. simple workpieces
  5. transformation

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.

References

  1. 9th International Workshop on Requirements Engineering: Foundation for Software Quality (REFSQ) held in Klagenfurt/Velden, Austria in 2003.
  2. First International Workshop on Applications and Advances in Problem Frames
  3. Second International Workshop on Applications and Advances in Problem Frames
  4. Third International Workshop on Applications and Advances in Problem Frames
  5. International Workshop on Applications and Advances of Problem-Orientation
  6. IWAAPO-2010
  7. Relating Problem & Solution Structures research theme.
  8. For example: "Relating software requirements and architectures using problem frames" by Hall, J.G.; Jackson, M.; Laney, R.C.; Nuseibeh, B.; Rapanotti, L., in Proceedings of the IEEE Joint International Conference on Requirements Engineering (2002), pp. 137–144
  9. Lavazza, Luigi; Del Bianco, Vieri. "Using problem frames with UML" (PDF).
  10. Jackson, Michael (1995). "Problem Decomposition for Reuse". pp. 1, 2.
  11. Jackson, Michael (2001). Problem Frames. Addison-Wesley. pp. 3, 4.
  12. Jackson, Michael (2001). Problem Frames. Addison-Wesley. p. 9.
  13. Jackson, Michael (2001). Problem Frames. Addison-Wesley. pp. 9, 10.
  14. J. G. Hall, L. Rapanotti, and M. Jackson. Problem-oriented software engineering: solving the package router control problem. IEEE Trans. Software Eng., 2008. doi:10.1109/TSE.2007.70769.
  15. J. G. Hall and L. Rapanotti. Assurance-driven design. In Proceedings of the third International Conference on Software Engineering Advances. 2008.
  16. L. Rapanotti and J. G. Hall. Designing an online part-time master of philosophy. In Proceedings of the Fourth International Conference on Internet and Web Applications and Services. IEEE Press, May 24–28, 2009.

External links

This article is issued from Wikipedia - version of the 6/5/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.