Early software development approaches focused on program code as paramount, paying little attention to any analysis or understanding of its generative real-world context and needs. More modern problem-oriented approaches view software development as problem solving, and use many of the rich toolset and techniques of the knowledge engineering (KE) area.

The influence of KE is clearly visible: Jackson's Problem Frames (Jackson, 2001) capture recurring generic problem types encountered in software development with the intent to reuse them in the analysis of new problems. One recalls (Minsky, 1975), who states that:

‘When one encounters a new situation (or makes a substantial change in one's view of the present problem) one selects from memory a structure called a Frame. This is a remembered framework to be adapted to fit reality by changing details as necessary’.

Sutcliffe's Domain Theory (Sutcliffe, 2002) captures and formalises the memory of the expert for knowledge reuse into a set of re-usable grounded problem models. These models aim to stimulate an expert problem solver: ‘I have come across this before and it is the xxx problem'. In that respect, Clancey (1985) says:

‘We intuitively believe that experienced problem solvers construct new systems by modifying known systems’.

Both Problem Frames and Domain Theory use modelling as a means for problem understanding and representation. In this respect, they are akin to the Common KADS framework (Breuker & van de Velde, 2004) that provides a suite of re-usable knowledge models for expert systems development. According to Studer et al. (1998), modelling marks an important transition from first-generation to second-generation expert systems, as the modelling approach to knowledge engineering had taken over the knowledge transfer approach.

Problem-oriented approaches to software development have two essential attributes. Firstly, they recognise the need to work iteratively between real-world problem and software solution to increase understanding: solutions are sometimes straw men, allowing the developer to reflect on the problem to understand it better. Indeed, the importance of this knowledge building process in design has been widely acknowledged (Alexander, 1979; Dasgupta, 1991).

Secondly, they view software development as problem solving and knowledge reuse.

This special section collects the best papers presented at the International Workshop on Advances and Applications of Problem Orientation, held in Cape Town, South Africa, in May 2010. These papers represent a snapshot of current research and practice in problem-oriented approaches to software development.

In the first paper, Luigi Lavazza addresses the problem that during analysis and development user requirements are elicited and perceived at various levels of abstraction, by proposing a systematic approach to relating such diverse requirements through the establishment of requirements hierarchies. The work is situated within Problem Frames and applied to a comprehensive case study. The work is particularly relevant to addressing business problems in which a need arises to relate business goals to software requirements.

In the second paper, Xinyu Wang and his colleagues present an approach that guides a business analyst to derive a set of problem frames from a given problem description. The approach contains three steps. In the first step, business process models are developed to capture the behavioural view of the problem context. In the second step, object analysis models are used to capture the structural view of the problem context. Together, these two views collectively and comprehensively capture the early context knowledge. These two types of model are then used in a third step to construct context diagrams and problem frames.

Finally, Jelena Marincic and her colleagues address the problem of how to construct adequate problem models, the starting point of solution seeking, through methods that properly account for both formal and informal modelling decisions and steps. Their approach is located within an industrial setting and the development of embedded systems. Action research was applied in such a setting to help improve problem analysis and problem model validation.

Collectively, this special section aims to give a flavour of current thinking in this important area of research and practice. We hope this special section will continue to stimulate the debate and discussion.


  1. Top of page
  2. References
  • Alexander, C. (1979) The Timeless Way of Building. New York: Oxford University Press.
  • Breuker, J. and W.A. van de Velde. (2004) CommonKADS Library for Expertise Modelling: Reusable Problem-Solving Components. Ios Press Inc.
  • Clancey, W. (1985) Heuristic classification. Artificial Intelligence, 27, 289350.
  • Dasgupta, S. (1991) Design Theory and Computer Science. Cambridge: Cambridge University Press.
  • Jackson, M.A. (2001) Problem Frames. Addison-Wesley.
  • Minsky, M. (1975) A Framework for representing knowledge, in The Psychology of Computer Vision (P. Winston ed.). McGraw-Hill.
  • Studer, R., V.R. Benjamins and D. Fensel. (1998) Knowledge engineering: principles and methods. Data & Knowledge Engineering, 25, 161197.
  • Sutcliffe, A. (2002) The Domain Theory: Patterns for Knowledge and Software Reuse. CRC Press.