|
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.
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.
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 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).
[1] S Shlaer and S Mellor,
Object-Oriented Systems Analysis: Modeling the World in
Data, (Yourdon Press, 1988).
[2] P Coad and E Yourdon,
Object-Oriented Systems Analysis, 2nd. Edition,
(Yourdon Press, 1991).
[3] R Wirfs-Brock, B Wilkerson and L Wiener,
Designing Object-Oriented Software,
(Prentice Hall, 1990).
[4] G Booch,
Object-Oriented Design, with Applications, 1st Edition,
(Benjamin Cummings, 1991).
[5] J Rumbaugh, M Blaha, W Premerlani, F Eddy and
W Lorensen,
Object-Oriented Modeling and Design,
(Prentice Hall, 1991).
[6] I Jacobson, M Christerson, P Jonsson and G Overgaard,
Object-Oriented Software Engineering: A Use-Case Driven Approach,
(Addison-Wesley, 1992).
[7] D Coleman, P Arnold, S Bodoff, C Dollin, H Gilchrist,
F Hayes and P Jeremaes,
Object-Oriented Development: the Fusion Method,
(Prentice Hall, 1994).
[8] I Graham,
Migrating to Object Technology,
(Addison Wesley, 1995).
- A J H Simons,
Object-oriented analysis and design: a survey,
Hollowbrook Computing Services, Ltd, (Sheffield: Department of
Computer Science, 1993; revised 1994).
- M Śmiałek
In-Flight Shopping and Entertainment Systems
MSc Dissertation, Department of Computer Science, University of Sheffield
(Sheffield: GEC Marconi/DCS, 1996).
- Fu, C Y,
A Personal and Company Loan Financing System
MSc Dissertation, Department of Computer Science, University of Sheffield
(Sheffield: DCS, 1996).
- W P Sardjono,
A Student Academic Record and Tracking System
MSc Dissertation, Department of Computer Science, University of Sheffield
(Sheffield: Institut Teknologi Bandung/DCS, 1997).
- R Flynn,
Re-engineering a 10 Year Old CAD System
MSc Dissertation, Department of Computer Science, University of Sheffield
(Sheffield: Gable CAD/DCS, 1997).
- A Donnelly,
Process Control of Glass Gob Manufacture
MSc Dissertation, Department of Computer Science, University of Sheffield
(Sheffield: British Glass Ltd/DCS, 1997).
- A J H Simons and I Graham,
37 Things that don't work in object modelling with UML,
Proc. 2nd. ECOOP Workshop on Precise Behavioural Semantics, TUM-I9813,
eds. H Kilov and B Rumpe (Brussels : TU Munich, 1998), 209-232.
- A J H Simons and I Graham,
37 Things that don't work in object modelling with UML,
British Computer Society Obj.-Oriented Prog. Sys. Newsletter, 35,
eds. S Kent and R Mitchell (BCS: Autumn, 1998), 1-24.
- A J H Simons and I Graham,
30 Things that go wrong in object modelling with UML 1.3, Chap. 17 in:
Behavioral Specifications of Businesses and Systems,
eds. H Kilov, B Rumpe, I Simmonds (Kluwer Academic Publishers, 1999), 237-257.
- K G van den Berg and A J H Simons,
Control flow semantics of use cases in UML,
Information and Software Technology, 41 (10),
(North Holland: Elsevier, 1999), 651-659.
- A J H Simons,
Use cases considered harmful,
Proc. 29th Conf. Tech. Obj.-Oriented Prog. Lang. and Sys.,
(TOOLS-29 Europe), eds. R Mitchell, A C Wills, J Bosch and B Meyer
(Los Alamitos, CA : IEEE Computer Society, 1999), 194-203.
- A J H Simons and M Snoeck,
Rigorous object-oriented system design,
Proc. 2nd Conf. Rigorous Object-Oriented Methods,
eds. A Clarke, A Evans and K Lano (Bradford : 1998), 2/1-2/24.
- A J H Simons, M Snoeck and K S Y Hung,
Design patterns as litmus paper to test the strength of object-oriented
methods,
Proc. 5th. Int. Conf. Object-Oriented Info. Sys.,
eds. C Rolland and G Grosz, (Paris: Springer Verlag, 1998), 129-147.
- A J H Simons, M Snoeck and K S Y Hung,
Using design patterns to reveal the competence of object-oriented methods in
system-level design, rev. and enl.,
Computer Systems Science and Engineering, 14 (6),
eds. G Grosz and T Dillon (CRL Publishing Ltd., 1999), 343-352.
- A J H Simons and P Swatman,
Engineering the object-oriented software process: OPEN and MeNtOR,
ECOOP '97 Tutorial 15,
(Jyvaskyla : AITO/ACM Press, 1997), 96pp.
- A J H Simons,
Object Discovery: A process for developing applications,
Workshop 6, BCS Conf. Object Technology,
(Oxford : BCS, 1998), 116pp, printed 2-up.
- A J H Simons,
Object Discovery: A process for developing medium-sized applications,
Tutorial 14, ECOOP 1998 Tutorials,
(Brussels : AITO/ACM, 1998), 109pp, printed 2-up.
- B Henderson-Sellers, A J H Simons and H Younessi,
The OPEN Toolbox of Techniques, including CD ROM with
additional appendices and three CASE tools, ISBN 0-201-33134-9
(Wokingham: Addison-Wesley Longman, 1998).
- T Baldwin,
Automatic Object-Oriented Design
MRes Dissertation, Department of Computer Science, University of Sheffield
(Sheffield: DCS, 1999).
- M Adams,
A Self-Resourcing Web-Based Electronic Journal
BSc Dissertation, Department of Computer Science, University of Sheffield
(Sheffield: DCS, 2002).
- W P Sardjono,
A Hybrid Approach for Partitioning Distributed Object Applications
PhD Thesis, Department of Computer Science, University of Sheffield
(Sheffield: DCS, 2005).
- A J H Simons and C A Fernández-y-Fernández,
Using Alloy to model-check visual design notations,
Proc. 6th Mexican Int. Conf. on Computer Science, 26-30 September,
eds. V Estivill-Castro and J A Sanchez,
(Puebla: IEEE Computer Society, 2005), 121-128.
- T Parkes,
A Task Editor for the Discovery Method
BSc Dissertation, Department of Computer Science, University of Sheffield
(Sheffield: DCS, 2008).
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.
|