Anthony J H Simons, MA PhD

Senior Lecturer in Computer Science

You are here: Simons Home / Research / Projects / Discovery /
Department of Computer Science
Verification and Testing Research Group
The Discovery Method

The Discovery Method for Object-Oriented Software Engineering

"The real voyage of discovery consists not in seeking new landscapes, but in having new eyes" - after Marcel Proust.

The Discovery Method is a lightweight software engineering method for developing object-oriented systems. It provides structured guidance for novice, apprentice and expert software engineers, paying equal attention to the cognitive, social and technological aspects of systems development. The Discovery Method is so-called because every activity is codified as a discovery procedure, that is, a rule-based technique that is designed to uncover more information, given what is already known. Every discovery procedure has an initial trigger, a feedback loop and a completion criterion. Different techniques may be sequenced to form discovery paths through the method, where each technique builds obviously on the deliverables produced by earlier techniques. High quality software systems are eventually produced by following rule-based transformations. The resulting architectural designs exhibit families of recognised design patterns, as evidence of their proven quality.

The Discovery Method is informed by insights from Gestalt psychology, delaying the formation and fixing of concepts until all influences have been considered. The method is highly selective, directing the developer's attention using sharply-focused techniques, which concentrate on one aspect at a time. All techniques are chosen for their fitness-of-purpose and are evaluated in their original, intended context of usage. This avoids the pitfalls of eclecticism, in which techniques are applied out of context and diagrams contain mixed notational influences. Eclectic diagrams display multiple, conflicting design forces, preventing any sensible resolution and progression of the design. Instead, a deliberatly simplified UML 2.x profile is adopted as the accompanying notation, which also has a formal semantics. The Discovery Method suits both agile, and more traditional, software engineering processes. It is compatible with the OPEN Process Specification.

Project History

The Precise UML Group

The Discovery Method came about through a consultancy with Hollowbrook Computer Services Ltd (Simons, 1993), to advise on object-oriented analysis and design. At the time, there was no single object-oriented method, but a number of partial approaches that were data-centric, behaviour-centric or simply an eclectic mixture of several approaches. A number of methods, including Shlaer/Mellor [1], Coad/Yourdon [2], Wirfs-Brock [3], Booch [4], OMT [5], Jacobson [6] and Fusion [7] were surveyed and more promising parts were extracted, if they could be made compatible with each other. The OMG's UML standardisation effort began in 1994.

OPEN: Object-Oriented Process, Environment and Notation

The Discovery Method became one of the participating submissions in the OPEN Consortium's collation of software engineering processes in 1995. A working group was established to look at the Technical Process in 1996, chaired by Simons. Object-oriented analysis and design techniques were scrutinized and tested in a variety of case studies, including GEC Marconi's in-flight shopping and entertainment system (Śmiałek, 1996), a personal and company loan financing system (Fu, 1996), an academic registration and tracking system for Institut Teknologi Bandung, Indonesia (Sardjono, 1997), Gable CAD's computer aided design package (Flynn, 1997) and British Glass Ltd's process control for glass gob manufacture (Donnelly, 1997). These case studies proved the value of some techniques, such as dictionary definition, composable task models, or responsibility cards, and revealed problems with other techniques, such as restricted grammar analysis, or interaction diagrams used in analysis. Task-based analysis had also been adopted by Graham, in the SOMA method [8].

The OPEN Toolbox of Techniques (on Amazon)

The 1997 establishment of the UML standard had not led to greater clarity in object-oriented analysis and design. This was partly due to the eclectic notations, which suffered from inconsistencies, ambiguities, incompleteness and especially ignored the human cognitive aspects of information capture. Collaborations with Ian Graham, Monique Snoeck and Klaas van den Berg led to the publication of several critiques of UML in general (Simons and Graham, 1998; 1999), of the use case model in particular (van den Berg and Simons, 1999; Simons, 1999) and developed the theme of systematic object-oriented design, through rule-based transformations (Simons and Snoeck, 1998; Simons, et al., 1998; 1999). The Discovery Method was mentioned in the OPEN MeNtOR tutorial at ECOOP (Simons and Swatman, 1997) and first published in 1998 at the BCS Object Technology conference (Simons, 1998a) and ECOOP (Simons, 1998b). Many techniques from the Discovery Method were catalogued in the OPEN Consortium's encyclopaedic reference of object-oriented development techniques (Henderson-Sellers, et al., 1998).

The Discovery Method became the basis for teaching Object-Oriented Analysis and Design at the University of Sheffield, from 1998. Further research into automating design transformations found that families of design patterns could be generated by rule, using coupling information (Baldwin, 1999). The method was applied to the design of an on-line electronic journal (Adams, 2002). An extension was provided for distributed systems design, which blended top-down architectural concerns with bottom-up subsystem design (Sardjono, 2005). The Discovery Method has been tested in competition with eXtreme Programming in the Sheffield Software Observatory and performed favourably. An experiment was conducted in model-checking designs using Daniel Jackson's Alloy (Simons and Fernández, 2005). A CASE tool for the Discovery Method is also under development (Parkes, 2008).

Related Publications

Discovery Method Resources

This section contains various links to public resources to help developers apply the Discovery Method. The latest exciting resource is the fledgeling Discovery Method CASE Tool, developed by Thom Parkes (2008). This supports creation and editing of Task Structure models, and has hooks to support Narratives and Task Flow models. The tool will be extended in 2009.

Several people have asked whether there is a book available about the Discovery Method. While there is no complete book yet, as a taster, a couple of first draft chapters from the forthcoming book: Discovery and Invention, by Anthony J H Simons, are given here:

Access to the rest of the book is restricted. In the meantime, many of the techniques deployed by the Discovery Method are described in The OPEN Toolbox of Techniques, which is well recommended.

Regent Court, 211 Portobello Street, Sheffield S1 4DP, United Kingdom