next up previous
Next: Background Up: Essential Use Cases and Previous: Essential Use Cases and

Introduction

Use cases are the accepted best practice for capturing requirements for object-oriented software development, and they are widely supported in modeling languages and in development processes. Constantine and Lockwood's Usage-Centered Design [9] introduced essential use cases -- use cases written specially to be abstract, lightweight, and tech-nology-free -- to support user interface design. Following a conventional process, essential use cases would be used to produce the user interface design, then, once that design was complete, essential use cases could be translated into more conventional use cases -- much more concrete and detailed descriptions of a system and its interface design. Unfortunately, translating essential use cases to a more conventional form requires effort, costs time, and delays work on the object-oriented development until the user interface design is complete.

In this paper, we explore the application of essential use cases directly to object-oriented software development. We speculated that essential use cases would work just as well as conventional use cases as a starting point for object-oriented design; that technology independence could better support requirements gathering, because there would be less need to specify details that are only relevant to the design; and that the brevity of essential use cases would better support communication between developers and stakeholders.

We began using essential use cases as our prime requirements gathering tool. We now suggest that essential use cases are suitable for object-oriented software development in general, and indeed have significant advantages over conventional use cases.

We have four general results to report. The first is what we speculated: that essential use cases can drive object-oriented design directly, without first writing more concrete conventional use cases. The other results were unanticipated. One is that essential use cases provide practical, operational guidance on how to move to an object-oriented design from the requirements. Another is that responsibilities provides a common vocabulary that supports seamless traceability forwards and backwards between essential use cases and objects. The last is that, because essential use cases show only the bare essentials of the use case, we are able to identify patterns of use cases, which can be used to make the requirements gathering more efficient.

This paper is organized as follows. We begin with an introduction to essential use cases, discussing their philosophy as developed by Constantine and Lockwood and comparing them to conventional use cases. Then, in section gif, we describe how to write essential use cases, and use role-play to verify that they are correct and consistent. Section gif shows how essential use cases can be used to design object-oriented systems, reflecting on the role of responsibilities for both essential use cases and object-oriented design, and including a short example. Section gif presents patterns for writing essential use cases. Section gif then discusses some practical issues such as using essential use cases for systems without human users, development processes, and business process design. We then discuss related work in section gif, and finally present our conclusions.


next up previous
Next: Background Up: Essential Use Cases and Previous: Essential Use Cases and

Robert Biddle
Sun May 20 12:22:36 NZST 2001