Part of a series on |
Software development |
---|
In software development and product management, a user story is an informal, natural language description of features of a software system. They are written from the perspective of an end user or user of a system, and may be recorded on index cards, Post-it notes, or digitally in specific management software. [1] Depending on the product, user stories may be written by different stakeholders like client, user, manager, or development team.
User stories are a type of boundary object. They facilitate sensemaking and communication; and may help software teams document their understanding of the system and its context. [2]
User stories are written by or for users or customers to influence the functionality of the system being developed. In some teams, the product manager (or product owner in Scrum), is primarily responsible for formulating user stories and organizing them into a product backlog. In other teams, anyone can write a user story. User stories can be developed through discussion with stakeholders, based on personas or are simply made up.
User stories may follow one of several formats or templates.
The most common is the Connextra template, stated below. [12] [7] [13] Mike Cohn suggested the "so that" clause is optional although still often helpful. [14]
As a <role> I can <capability>, so that <receive benefit>
Chris Matts suggested that "hunting the value" was the first step in successfully delivering software, and proposed this alternative: [15]
In order to <receive benefit> as a <role>, I can <goal/desire>
Another template based on the Five Ws specifies: [16]
As <who> <when> <where>, I want <what> because <why>
A template that's commonly used to improve security is called the "Evil User Story" or "Abuse User Story" and is used as a way to think like a hacker in order to consider scenarios that might occur in a cyber-attack. These stories are written from the perspective of an attacker attempting to compromise or damage the application, rather the typical personae found in a user story: [17]
As a disgruntled employee, I want to wipe out the user database to hurt the company
A central part of many agile development methodologies, such as in extreme programming's planning game, user stories describe what may be built in the software product. User stories are prioritized by the customer (or the product owner in Scrum) to indicate which are most important for the system and will be broken down into tasks and estimated by the developers. One way of estimating is via a Fibonacci scale.
When user stories are about to be implemented, the developers should have the possibility to talk to the customer about it. The short stories may be difficult to interpret, may require some background knowledge or the requirements may have changed since the story was written.
User stories can be expanded to add detail based on these conversations. This can include notes, attachments and acceptance criteria.
Mike Cohn defines acceptance criteria as "notes about what the story must do in order for the product owner to accept it as complete." [20] They define the boundaries of a user story and are used to confirm when a story is completed and working as intended.
The appropriate amount of information to be included in the acceptance criteria varies by team, program and project. Some may include 'predecessor criteria', "The user has already logged in and has already edited his information once".[ This quote needs a citation ] Some may write the acceptance criteria in typical agile format, Given-When-Then. Others may simply use bullet points taken from original requirements gathered from customers or stakeholders. [20] In order for a story to be considered done or complete, all acceptance criteria must be met.
There is no good evidence that using user stories increases software success or developer productivity. However, user stories facilitate sensemaking without undue problem structuring, which is linked to success. [21]
Limitations of user stories include:
In many contexts, user stories are used and also summarized in groups for ontological, semantic and organizational reasons. Initiative is also referred to as Program in certain scaled agile frameworks. The different usages depend on the point-of-view, e.g. either looking from a user perspective as product owner in relation to features or a company perspective in relation to task organization.
While some suggest to use 'epic' and 'theme' as labels for any thinkable kind of grouping of user stories, organization management tends to use it for strong structuring and uniting work loads. For instance, Jira seems to use a hierarchically organized to-do-list, in which they named the first level of to-do-tasks 'user-story', the second level 'epics' (grouping of user stories) and the third level 'initiatives' (grouping of epics). However, initiatives are not always present in product management development and just add another level of granularity. In Jira, 'themes' exist (for tracking purposes) that allow to cross-relate and group items of different parts of the fixed hierarchy. [23] [24]
In this usage, Jira shifts the meaning of themes in an organization perspective: e.g how much time did we spent on developing theme "xyz". But another definition of themes is: a set of stories, epics, features etc for a user that forms a common semantic unit or goal. There is probably not a common definition because different approaches exist for different styles of product design and development. In this sense, some also suggest to not use any kind of hard groups and hierarchies. [25] [26] [27] [28] [29] [30]
Multiple epics or many very large stories that are closely related are summarized as themes. A common explanation of epics is also: so much work that requires many sprints, or in scaled frameworks -- a Release Train or Solution Train.
Multiple themes, epics, or stories grouped together hierarchically. [31]
Multiple themes or stories grouped together by ontology and/or semantic relationship.
A story map [32] organises user stories according to a narrative flow that presents the big picture of the product. The technique was developed by Jeff Patton from 2005 to 2014 to address the risk of projects flooded with very detailed user stories that distract from realizing the product's main objectives.[ citation needed ]
User story mapping [33] uses workshops with users to identify first the main business activities. Each of these main activities may involve several kind of users or personas.
The horizontal cross-cutting narrative line is then drawn by identifying the main tasks of the individual user involved in these business activities. The line is kept throughout the project. More detailed user stories are gathered and collected as usual with the user story practice. But each new user story is either inserted into the narrative flow or related vertically to a main tasks.
The horizontal axis corresponds to the coverage of the product objectives, and the vertical axis to the needs of the individual users.
In this way it becomes possible to describe even large systems without losing the big picture.
Story maps can easily provide a two-dimensional graphical visualization of the product backlog: At the top of the map are the headings under which stories are grouped, usually referred to as 'epics' (big coarse-grained user stories), 'themes' (collections of related user stories [34] ) or 'activities'. These are identified by orienting at the user’s workflow or "the order you'd explain the behavior of the system". Vertically, below the epics, the actual story cards are allocated and ordered by priority. The first horizontal row is a "walking skeleton" [35] and below that represents increasing sophistication. [36] [ clarification needed ]
A user journey map [37] intends to show the big picture but for a single user category. Its narrative line focuses on the chronology of phases and actions that a single user has to perform in order to achieve their objectives.
This allows to map the user experience beyond a set of user stories. Based on user feedback, the positive and negative emotions can be identified across the journey. Points of friction or unfulfilled needs can be identified on the map. This technique is used to improve the design of a product, [38] allowing to engage users in participatory approaches. [39]
A use case has been described as "a generalized description of a set of interactions between the system and one or more actors, where an actor is either a user or another system." [40] While user stories and use cases have some similarities, there are several differences between them.
User Stories | Use Cases | |
---|---|---|
Similarities |
|
|
Differences |
|
|
Template | As a <type of user>, I can <some goal> so that <some reason>. [19] |
|
Kent Beck, Alistair Cockburn, Martin Fowler and others discussed this topic further on the c2.com wiki (the home of extreme programming). [42]
In engineering and its various subdisciplines, acceptance testing is a test conducted to determine if the requirements of a specification or contract are met. It may involve chemical tests, physical tests, or performance tests.
In software and systems engineering, the phrase use case is a polyseme with two senses:
In systems engineering and software engineering, requirements analysis focuses on the tasks that determine the needs or conditions to meet the new or altered product or project, taking account of the possibly conflicting requirements of the various stakeholders, analyzing, documenting, validating, and managing software or system requirements.
In engineering, a requirement is a condition that must be satisfied for the output of a work effort to be acceptable. It is an explicit, objective, clear and often quantitative description of a condition to be satisfied by a material, design, product, or service.
Agile software development is an umbrella term for approaches to developing software that reflect the values and principles agreed upon by The Agile Alliance, a group of 17 software practitioners in 2001. As documented in their Manifesto for Agile Software Development the practitioners value:
The MoSCoW method is a prioritization technique used in management, business analysis, project management, and software development to reach a common understanding with stakeholders on the importance they place on the delivery of each requirement; it is also known as MoSCoW prioritization or MoSCoW analysis.
In computing, a scenario is a narrative of foreseeable interactions of user roles and the technical system, which usually includes computer hardware and software.
Behavior-driven development (BDD) involves naming software tests using domain language to describe the behavior of the code.
Scrum is an agile team collaboration framework commonly used in software development and other industries.
Confluence is a web-based corporate wiki developed by Australian software company Atlassian. Atlassian wrote Confluence in the Java programming language and first published it in 2004. Confluence Standalone comes with a built-in Tomcat web server and hsql database, and also supports other databases.
Jira is a proprietary product developed by Atlassian that allows bug tracking, issue tracking and agile project management. Jira is used by a large number of clients and users globally for project, time, requirements, task, bug, change, code, test, release, sprint management.
Jira Studio was an integrated, hosted software development suite developed by Atlassian Software Systems. Jira Studio included Subversion for revision control, Jira for issue tracking and bug tracking, Confluence for content management, Jira Agile for agile planning and management, Bamboo for continuous integration, Crucible for code review and FishEye for source code repository browsing.
The INVEST mnemonic for Agile software development projects was created by Bill Wake as a reminder of the characteristics of a good quality Product Backlog Item or PBI for short. Such PBIs may be used in a Scrum backlog, Kanban board or XP project.
Atlassian Corporation is an Australian software company that develops products for software developers, and project managers among other groups. The company is domiciled in Delaware, with global headquarters in Sydney, Australia, and US headquarters in San Francisco.
iRise is a software company based in El Segundo, California. It provides a cloud-based requirements definition and visualization platform for teams and businesses. iRise allows product owners, product managers, business analysts and other stakeholders to prototype new products, features, and enhancements without any code or scripting. iRise also supports creating interactive business process flows, use cases, and other diagrams. Each screen, UI element, and diagram can be annotated with detailed requirements that can be exported into custom documentation.
Business requirements, also known as stakeholder requirements specifications (StRS), describe the characteristics of a proposed system from the viewpoint of the system's end user like a CONOPS. Products, systems, software, and processes are ways of how to deliver, satisfy, or meet business requirements. Consequently, business requirements are often discussed in the context of developing or procuring software or other systems.
Trello is a web-based, kanban-style, list-making application developed by Atlassian. Created in 2011 by Fog Creek Software, it was spun out to form the basis of a separate company in New York City in 2014 and sold to Atlassian in January 2017.
Aha! is a cloud-based software company that provides product development software for companies in the United States and internationally. Aha! offers Software-as-a-Service (SaaS) products for organizations to set strategy, ideate, plan, showcase, build, and launch new products and enhancements.
Gliffy is software for diagramming via an HTML5 cloud-based app. It is used to create UML diagrams, floor plans, Venn diagrams, flowcharts and various other kinds of diagrams online. Gliffy diagrams can be shared with and edited by users in real time. The SaaS is supported in all modern web-browsers, including Google Chrome, Firefox, Safari and Internet Explorer 9+.
BigGantt is a project management app for Jira. Released in 2015, it delivers tools for project managers, i.e. a Gantt chart, and work breakdown structure.
a great number of software tools that provide, inter alia, support for practices based on user stories have emerged in recent years.
{{cite book}}
: CS1 maint: location missing publisher (link)The most prevalent user story template is the 'original' one proposed by Connextra
Another name is the "Connextra format", in recognition of its origins
While I consider the so-that clause optional, I really like this template.
"As (who) (when) (where), I (want) because (why)." – this phrase is based on typical W questions: who, when, where, what and why.
An 'initiative' is a very large body of work, which spans multiple epics and sometimes, multiple teams. [...] An initiative is also an issue type in Jira.
{{cite book}}
: CS1 maint: location missing publisher (link){{cite web}}
: |first=
has generic name (help){{cite journal}}
: Cite journal requires |journal=
(help)