A use case diagram is a graphical depiction of a user’s possible interactions with a system. A use case diagram shows various use cases and different types of users the system has and will often be accompanied by other types of diagrams as well. The use cases are represented by either circles or ellipses. The actors are often shown as stick figures.
In 1987, Ivar Jacobson presented the first article on use cases at the OOPSLA’87 conference. He described how this technique was used at Ericsson to capture and specify the requirements of a system using textual, structural, and visual modeling techniques to drive object-oriented analysis and design. Originally he had used the terms usage scenarios and usage case – the latter a direct translation of his Swedish term användningsfall – but found that neither of these terms sounded natural in English, and eventually he settled on the use case.
In 1992 he co-authored the book Object-Oriented Software Engineering – A Use Case Driven Approach, which laid the foundation of the OOSE system engineering method and helped to popularize use cases for capturing functional requirements, especially in software development. In 1994 he published a book about use cases and object-oriented techniques applied to business models and business process reengineering.
At the same time, Grady Booch and James Rumbaugh worked at unifying their object-oriented analysis and design methods, the Booch method and Object Modeling Technique (OMT) respectively. In 1995 Ivar Jacobson joined them and together they created the Unified Modelling Language (UML), which includes use case modeling. UML was standardized by the Object Management Group (OMG) in 1997. Jacobson, Booch, and Rumbaugh also worked on a refinement of the Objective software development process. The resulting Unified Process was published in 1999 and promoted a use case-driven approach.
Since then, many authors have contributed to the development of the technique, notably: Larry Constantine developed in 1995, in the context of usage-centered design, so-called “essential use-cases” that aim to describe user intents rather than sequences of actions or scenarios which might constrain or bias the design of user interface; Alistair Cockburn published in 2000 a goal-oriented use case practice based on text narratives and tabular specifications; Kurt Bittner and Ian Spence developed in 2002 advanced practices for analyzing functional requirements with use cases; Dean Leffingwell and Don Widrig proposed to apply use cases to change management and stakeholder communication activities; Gunnar Overgaard proposed in 2004 to extend the principles of design patterns to use cases.
In 2011, Jacobson published with Ian Spence and Kurt Bittner the ebook Use Case 2.0 to adapt the technique to an agile context, enriching it with incremental use case “slices”, and promoting its use across the full development lifecycle after having presented the renewed approach at the annual IIBA conference.
Use cases are a technique for capturing, modeling and specifying the requirements of a system.[10] A use case corresponds to a set of behaviours that the system may perform in interaction with its actors, and which produces an observable result that contribute to its goals. Actors represent the role that human users or other systems have in the interaction.
In the requirement analysis, at their identification, a use case is named according to the specific user-goal that it represents for its primary actor. The case is further detailed with a textual description or with additional graphical models that explains the general sequence of activities and events, as well as variants such as special conditions, exceptions or error situations.
According to the Software Engineering Body of Knowledge (SWEBOK),[16] use cases belong to the scenario-based requirement elicitation techniques, as well as the model-based analysis techniques. But the use cases also supports narrative-based requirement gathering, incremental requirement acquisition, system documentation, and acceptance testing.