My contemplations and diurnal novelties are publicized here

Archive for April, 2013

User story

A user story is one or more sentences in the everyday or business language of the end user or user of a system that captures

  • What a user does or needs to do as part of his or her job function

User stories are used with agile software development methodologies as the basis for

  • Defining the functions a business system must provide, and to facilitate requirements management.
  • It captures the
    • ‘who’,
    • ‘what’ and
    • ‘why’

      Of a requirement in a simple, concise way, often limited in detail by what can be hand-written on a small paper notecard.

User stories are written by or for the business user as that user’s primary way to influence the functionality of the system being developed. User stories may also be written by developers to express non-functional requirements (security, performance, quality, etc.) though primarily it is the task of a product manager to ensure user stories are captured.

User stories are a quick way of handling customer requirements without having to create formalized requirement documents and without performing administrative tasks related to maintaining them. The intention of the user story is to be able to respond faster and with less overhead to rapidly changing real-world requirements.

A user story is an informal statement of the requirement as long as the correspondence of acceptance testing procedures is lacking. Before a user story is to be implemented, an appropriate acceptance procedure must be written by the customer to ensure by testing or otherwise whether the goals of the user story have been fulfilled. Some formalization finally happens when the developer accepts the user story and the acceptance procedure as a work specific order.

Creating user stories

When the time comes for creating user stories, one of the developers (or the product owner in Scrum) gets together with a customer representative. The customer has the responsibility for formulating the user stories. The developer may use a series of questions to get the customer going, such as asking about the desirability of some particular functionality, but must take care not to dominate the idea-creation process.

As the customer conceives the user stories, they are written down
on a note card (e.g. 3×5 inches or 8×13 cm) with a name and a description which the customer has formulated. If the developer and customer find a user story deficient in some way (too large, complicated, imprecise), it is rewritten until it is satisfactory – often using the INVEST guidelines from the Scrum project-management framework. However, Extreme Programming (XP) emphasizes that user stories are not to be definite once they have been written down. Requirements tend to change during the development period, which the process handles by not carving them in stone.

A team at Connextra developed the traditional user-story template in 2001:[2]

“As a <role>, I want <goal/desire> so that <benefit>”

Mike Cohn, a well-known author on user stories, regards the “so that” clause as optional:[3]

“As a <role>, I want <goal/desire>”

Chris Matts suggested that “hunting the value” was the first step in successfully delivering software, and proposed this alternative as part of Feature Injection:[4]

“In order to <receive benefit> as a <role>, I want <goal/desire>”

Another template based on the Five Ws specifies:

“As <who> <when> <where>, I <what> because <why>.”

The <what> portion of the user story should use either “need” or “want” to differentiate between stories that must be fulfilled for proper software operation versus stories that improve the operation, but are not critical for correct behavior.


  • As a user,
    • I want to search for my customers by their first and last names.
  • As a non-administrative user,
    • I want to modify my own schedules but not the schedules of other users.
  • As a mobile application tester,
    • I want to test my test cases and report results to my management.
  • Starting Application
    • The application begins by bringing up the last document the user was working with.
  • As a user closing the application,
    • I want to be prompted to save if I have made any change in my data since the last save.
  • Closing Application
    • Upon closing the application, the user is prompted to save (when ANYTHING has changed in data since the last save!).


As a user closing the application, I want to be prompted to save anything that has changed since the last save, so that I can preserve useful work and discard erroneous work.

The consultant will enter expenses on an expense form.

The consultant will enter items on the form like expense type, description, amount, and any comments regarding the expense.

At any time the consultant can do any of the following options:

(1) When the consultant has finished entering the expense,

the consultant will “Submit”. If the expense is under fifty (<50),

the expense will go directly to the system for processes.

(2) In the event the consultant has not finished entering the

expense, the consultant may want to “Save for later”. The

entered data should then be displayed on a list (queue) for

the consultant with the status of “Incomplete”.

(3) In the event the consultant decides to clear the data and

close the form, the consultant will “Cancel and exit”. The

entered data will not be saved anywhere.


user stories define what has to be built in the software project. User stories are prioritized by the customer to indicate which are most important for the system and will be broken down in tasks and estimated by the developers.

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.

Every user story must at some point have one or more acceptance tests attached, allowing the developer to test when the user story is done and also allowing the customer to validate it. Without a precise formulation of the requirements, prolonged nonconstructive arguments may arise when the product is to be delivered.


XP and other agile methodologies favor face-to-face communication over comprehensive documentation and quick adaptation to change instead of fixation on the problem. User stories achieve this by:

  • Being very short. They represent small chunks of business value that can be implemented in a period of days to weeks.
  • Allowing developer and the client representative to discuss requirements throughout the project lifetime.
  • Needing very little maintenance.
  • Only being considered at the time of use.
  • Maintaining a close customer contact.
  • Allowing projects to be broken into small increments.
  • Being suited to projects where the requirements are volatile or poorly understood. Iterations of discovery drive the refinement process.
  • Making it easier to estimate development effort.
  • Require close customer contact throughout the project so that the most valued parts of the software get implemented.

Story maps

A Story Map in Action

A story map is the graphical, two-dimensional product backlog. At the top of the map are big user stories, which can sometimes be considered “epics” as Mike Cohn describes them and other times correspond to “themes” or “activities“. These grouping units are created 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” and below that represents increasing sophistication.

In this way it becomes possible to describe even big systems without losing the big picture.


Some of the limitations of user stories in agile methodologies:

  • They can be difficult to scale to large projects.
  • They are regarded as conversation starters.

User stories and use cases

While both user stories and use cases serve the purpose to capture specific user requirements in terms of interactions between the user and the system, there are major differences between them.

User Stories

Use Cases

  • Provide a small-scale and easy-to-use presentation of information. Are generally formulated in the everyday language of the user and contain little detail, thus remaining open to interpretation. They should help the reader understand what the software should accomplish.
  • Must be accompanied by acceptance testing procedures (acceptance criteria) for clarification of behavior where stories appear ambiguous.
  • Describe a process and its steps in detail, and may be worded in terms of a formal model. A use case is intended to provide sufficient detail for it to be understood on its own. 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”.
  • May be delivered in a stand-alone document.

The INVEST mnemonic was created by Bill Wake as a reminder of the characteristics of a good quality user story.






The user story should be self-contained, in a way that there is no inherent dependency on another user story.



User stories, up until they are part of an iteration, can always be changed and rewritten.



A user story must deliver value to the end user.



You must always be able to estimate the size of a user story.


Sized appropriately or Small

User stories should not be so big as to become impossible to plan/task/prioritize with a certain level of certainty.



The user story or its related description must provide the necessary information to make test development possible.




Different Ports on you PC/Laptop

What is Business System Analysis (BSA)?

Copied (and edited) from

Absence of a Business System Analyst is often the reason that relationships between Business People and Programmers go ugly. Most of us have heard stories about business people who bring a project to programmers, and later on the project is either delivered late, or comes short of the specs. That’s not always the case specially when the Programmer does a good system analysis job during the project, but again not every programmer makes a good system analyst.

Photography by Rastin Mehr © Some rights reserved

In larger organizations, System Analysts make the communication between IT and Business departments possible. In the absence of System Analysts this relationship becomes gradually dysfunctional, until at some point one department manages to dominate the other in the power hierarchy. During this struggle, people on both side become overworked, undermined, and frustrated. Eventually, the excessive loss of resources and lack of productivity could bring down an entire organization.

What System Analysts (SA) do,

  • Is to study a business model, break it down to smaller bits of tangible information and understand how they should be processed.
  • Then, these bits of information are compiled in the form of documents (User Stories, User cases, flow diagram) and visual diagrams (UML, ER, IA Garrett ) for Programmers to comprehend and follow. It is impossible to put down every detail of a project at the beginning, that is because designs usually change as the project moves on and by the time the project is finished it probably has little in common with the original specs. Despite that, the initial documentation could provide a development team, a good starting point and a big picture view.

In some companies the Sales and Marketing team have the superior authority over the IT department. Business people do what they can to write project specs which often contain technical and logical mistakes. IT managers who have little authority to discuss the specs with the Sales and Marketing team, often have to bend backward to find workarounds and hacks in order to implement a flawed spec. This leads into an inferior quality end product, and a frustrated team of IT professionals.

It doesn’t have to be that way!

Business Managers are human too, therefore capable of making logical mistakes in their inquiries. Once those shortcomings are discovered by their programmers, System Analysts could discuss and resolve the issues with the business team using a simple, non-technical language.

System Analysts understand the Architecture behind different software solutions and ways that they can be customized. For example, System Analysts can recommend the most suitable web application to a business or organization, and also figure out ways to incorporate the power of multiple web applications together in order to solve a business problem.

They can identify the most efficient software in terms of speed, usability, cost of implementation, and maintenance. They can recommend suitable Hardware and Server Architecture, conduct Cost vs. Benefits studies, and perform risk assessment.

Education Background

A Business System Analyst often has a degree in Computer Science or Management of Information Systems. In addition to that, they often have done studies in Business, Marketing, or Accounting.

System Analysis also demands great abstract thinking abilities which is often considered to be a natural talent. Great System Analysts can view a project from a 10,000 feet perspective, as well as zooming into an atomic project detail.

Knowledge of Math and Logical thinking is absolutely necessary. Great verbal and writing abilities are also very important. Having good Communication skills is so essential that sometimes Business or English major graduates who happen to be technology hobbyists, find their way into the System Analysis market, but again you are always better off with someone who has done Programming and Software Architecture in the past.

%d bloggers like this: