# Scenario (computing)

In computing, a scenario (UK: /sɪˈnɑːrioʊ/, US: /səˈnɛərioʊ/; loaned from Italian scenario (pronounced), from Latin scena 'scene') is a narrative of foreseeable interactions of user roles (known in the Unified Modeling Language as 'actors') and the technical system, which usually includes computer hardware and software.
A scenario has a goal, which is usually functional. A scenario describes one way that a system is used, or is envisaged to be used, in the context of an activity in a defined time-frame. The time-frame for a scenario could be (for example) a single transaction; a business operation; a day or other period; or the whole operational life of a system. Similarly the scope of a scenario could be (for example) a single system or a piece of equipment; an equipped team or a department; or an entire organization.
Scenarios are frequently used as part of the system development process. They are typically produced by usability or marketing specialists, often working in concert with end users and developers. Scenarios are written in plain language, with minimal technical details, so that stakeholders (designers, usability specialists, programmers, engineers, managers, marketing specialists, etc.) can have a common ground to focus their discussions.
Increasingly, scenarios are used directly to define the wanted behaviour of software: replacing or supplementing traditional functional requirements. Scenarios are often defined in use cases, which document alternative and overlapping ways of reaching a goal.

## Types of scenario in system development

Many types of scenario are in use in system development. Alexander and Maiden list the following types:
* Story: "a narrated description of a causally connected sequence of events, or of actions taken". $^{:8–10}$ Brief User stories are written in the Agile style of software development.
* Situation, Alternative World: "a projected future situation or snapshot". This meaning is common in planning, but less usual in software development. $^{:10}$
* Simulation: use of models to explore and animate 'Stories' or 'Situations', to "give precise answers about whether such a scenario could be realized with any plausible design" or "to evaluate the implications of alternative possible worlds or situations". $^{:10–11}$
* Storyboard: a drawing, or a sequence of drawings, used to describe a user interface or to tell a story. This meaning is common in Human–computer interaction to define what a user will see on a screen. $^{:12}$
* Sequence: a list of interactive steps taken by human or machine agents playing system roles. The many forms of scenario written as sequences of steps include Operational Scenarios, Concepts of Operations, and Test Cases. $^{:12–14}$
* Structure: any more elaborately-structured representation of a scenario, including Flowcharts, UML/ITU 'Sequence Charts', and especially in software development Use cases. $^{:14–17}$
Negative scenarios or misuse cases may be written to indicate likely threats which should be countered to ensure that systems have sufficient security, safety, and reliability. These help to discover non-functional requirements.

## Uses in system development

Scenarios have numerous possible applications in system development. Carroll (1995) lists 10 different "roles of scenarios in the system development lifecycle":
* Requirements analysis: scenarios describe the "state-of-the-art" (often called "as-is"); acted scenarios help to discover requirements as analysts "stage a simulated work situation".
* User-designer communication: users contribute scenarios important to them, or situations they want to experience or avoid.
* Design rationale: rationale can explain design "with respect to particular scenarios of user interaction".
* Envisionment: scenarios "can be a medium for working out what a system being designed should look like and do." In this role, scenarios can be "graphical mockups such as storyboards or video-based simulations", and may form early prototypes of the system under design.
* Software design: "scenarios can be analyzed to identify the central problem domain objects" needed; the same scenarios can be developed to describe the objects' state, behavior and interactions.
* Implementation: software can be built one scenario at a time, helping "to keep developers focused" and "producing code that is more generally useful". Further information: Use case and Software development process
* Documentation and Training: "scenarios of interaction that are meaningful to the users" can bridge the gap between the system as built "and the tasks that users want to accomplish using it".
* Evaluation and testing: since "a system must be evaluated against the specific user tasks it is intended to support", scenarios are ideal for evaluation.
* Abstraction: general rules that apply across different tasks (or systems) can be identified by comparing scenarios.
* Team building: "a set of touchstone stories is an important cohesive element in any social system".

## In differing styles of system development

The choice of scenario representation varies widely with style of development, which is related to the industrial context.
Scenarios in differing project contexts :
| Project context | Example | Scenario style | Development style |
| Large military project | Fighter aircraft | Operational View, Concept of operations | Staged life-cycles, thorough documentation (see DoDAF) |
| Combined Hardware/Software product | Car | Use case | RUP |
| Business software | Mobile phone application | User story | Agile software development |