Software requirements is a communication problem.Software Engineer != Construction.Building software is side effect of discovering the customer’s problems.
The communication problem is between those who want the software and those who build the software
If either side dominates the business loses.
The functionality and dates are mandated with little regard for reality or whether the developers understand the requirements.
… technical jargon replaces the language of business and developers lose the opportunity to learn from listening.
We need a way of working together so that resource allocation becomes a shared problemProject fails when the problem of resource allocation falls too far to one side
We cannot predict a software schedule. Estimation is the calculated approximation of a result which is usable even if input data may be incomplete or uncertain (Wikipedia). Estimation is prediction NOT planning. Typical first estimate is off by factor of 4 0.25x to 4x. They should be naturally realigned as we gather more information during the project.
Human beings in general are bad at absolute estimates. They are good at relative estimation.
We make decisions based on the information we have, but do it often
Rather than making one all-encompassing set of decisions, we spread decision making across project
Card – Stories are traditionally written on note cards. Cards may be annotated with estimates, notes, etc
Conversation – Details behind the story come out during conversations with product owner
Confirmation – Acceptance tests confirm the story was coded correctly
Stories that are big are called EPIC. They can potentially be broken down into smaller stories. Epics are listed in the product backlog for future sprints / iterations.
A collection of related user stories
If the requirements are written down then At best the customer will get what was written. Customer may make lot of assumptions while writing the requirements.
Stories support and encourage iterative development. Encourage deferring the detail until you have the best understanding of what you really need.
Intentionally left blank.Think what points might go in this slide
A user story is request for valuable stuffPromise for future conversationIn scrum it goes into product backlog item.
Identifies who the user is, what they want to do and why?
This mnemonic helps determining whether a story is acceptable or not.
If there is lot of dependency it might suggest we are breaking work in horizontal layers (in tiers – Database, db layer, business logic, UI)Agile methodology suggest to breaking work in vertical layers (slice through tiers)If not independent, it make product backlog difficult to manage multiple layers of dependency.If dependency is unavoidable, then prioritize dependent stories after the stories they depend on.Or use mocking architecture, decouple dependency.
Story should be request for value.Should not dictate what they want.Advantage is it will avoid biased opinion Eg: By how many runs will England win against India. This mean we are assuming that England will win.Too much detail turns user story into contract which is taking away self-organization capability of scrum team.
Identifying value is key part of writing the story.Everything in scrum is value driven.
Common reasons why they’re not estimableLack domain knowledgeCan discuss with business people and learnLack technical knowledgeCan spike on the story to learn more about itTwo stories, one for the spike one for the real workStory is too big – cannot commit to big stories.Sometimes useful to write the epic to be a placeholder for some glossed over part of a system.Pulled from thin air estimate!Or break it down.
Small stories are easier to estimate.A story that is too big to do in single sprint is an “EPIC”
Cross cutting concerns: compliance with corporate needs. External regulations.
User Stories<br />- Sunil Kumar<br />
Agenda<br />What is the need for user stories?<br />What is a story?<br />Why story?<br />What is criteria for a good story?<br />What are not stories?<br />Prerequisite? Knowledge of Scrum and it’s terms<br />
What problems do user stories address?<br />(mis)Communication!<br />
Between?<br />Those who want the software<br />Those who build the software<br />
Resource allocation<br />Need to work together to make it a shared problem.<br />
Developers Responsibility of resource allocation!<br />May trade quality for additional features<br />May only partially implement the feature<br />May solely take decisions that should involve business side<br />
Only business shoulders the responsibility<br />Lengthy upfront requirements negotiation and signoff<br />Features are dropped as the deadline nears<br />
Words are imprecise!<br />Main dish comes with soup or salad and bread<br />(Soup or salad) and Bread?<br />(Soup) or (Salad and bread)?<br />The User can enter a name. it can be 127 characters<br />Must the user enter a name?<br />Can it be other than 127 chars?<br />
Words are imprecise contd…<br />The system should prominently display a warning message whenever the user enter invalid data<br />What does should mean?<br />What does prominently display mean?<br />Is invalid data defined elsewhere?<br />
Stories shift the focus from writing to talking<br />“You built what I asked for, but it’s not what I need”<br />
Stories are equally understandable by developers and customers<br />
Stories emphasize user’s goals not system attributes<br />What are we building?<br />The product shall have a gas engine<br />The product shall have four wheels<br />The product shall have rubber tyre mounted to each wheel<br />The product shall have a steering wheel<br />The product shall have a steel body<br />
Don’t forget the purpose<br />The story text we write on cards is less important than the conversations we have<br />
User Story Template<br />“As a <Some Role><br />I want <Some Need><br />So that <Some Benefit>”<br />
A “real” Story card<br />As an <unregistered user of <br />[an online game]><br /> I want <to setup a trial team><br />So that <I can try the game without signing up><br />
Advantages of “As a user, I want” user story template<br />With “I want” phrase, person more closely identifies with stories and person’s mind goes instantly to imagining as he or she is such-and-such.<br />Helps in prioritizing story. The product owner is forced to understand the feature, benefits and value (“so that” phrase)<br />This format is a best practice towards executable requirements and a domain specific language<br />
What is criteria for good story?<br />Independent<br />Negotiable<br />Valuable to users or customers<br />Estimable<br />Small<br />Testable<br />
Independent<br />Introduce as little dependencies as possible<br />Break up work in vertical layers<br />Dependent stories should not be done in same sprint<br />
Company can pay for a job posting with one type of a credit card
Company can pay for a job posting with two additional types of credit cards</li></li></ul><li>Negotiable<br />Not contracts<br />Describe what, not how<br />Should be imprecise and open for negotiation<br />Should encourage conversation<br />Not requirements, leads to requirements<br />
Valuable<br />If we can’t specify value of a story we probably don’t know enough about it<br />
Valuable to purchasers or users<br /><ul><li>Throughout the development process, the development team will produce documentation suitable for an ISO 9001 audit. -- purchaser
All connections to the database are through a connection pool
All error handling and logging is done through a set of common classes.
If there’s a technical story put it in terms the business can understand
Up to fifty users should be able to use the application with a five-user database license
All errors are presented to the user and logged in a consistent manner.</li></li></ul><li>Estimable*<br />“Make login button look ‘cool’” is not estimable<br />If we can’t estimate a story we cant commit to it<br /><ul><li>Lack domain knowledge
Story is too big</li></ul>* Yes, it is a word!<br />
Small<br />Size does matter<br />A user can plan a vacation (EPIC)<br />Based on team and capabilities and technology in use.<br />Allows more granular tracking of progress<br />Easier to estimate (less error prone)<br />
Testable<br />If you can’t test it, how do you know<br />It’s done?<br />It’s done right?<br />Should have done criteria<br />Business criteria<br />Technical Debt<br />Cross-cutting concerns<br />Regression failures allowable?<br />
Testable<br /><ul><li>User must find the software easy to use.
A novice user is able to complete common workflows without training
A user must not have to wait long for a screen to appear.
New screens appear within two seconds in 95% of all cases.
In the end the customer has to prioritize them so they need to know the language on the card fully.</li></li></ul><li>Don’t number the cards<br /><ul><li>Pointless over head
You’ll be shredding cards and creating cards often</li></li></ul><li>Don’t forget the purpose<br /><ul><li>Reminder about the requirements not the document of the requirements.
Don’t replace the conversation by adding the detail.</li></li></ul><li>References<br />http://www.mountaingoatsoftware.com/presentations/103-user-stories<br />http://www.slideshare.net/guest446c0/user-stories-1015064<br />http://www.danube.com/webinars<br />All images collected through google<br />