Handling Non Functional Requirements on an Agile Project

9,525 views
9,150 views

Published on

When adjectives and adverbs appear in User Stories, they can be easily overlooked and seen as simple adornments to the story. There are a couple schools of thought on how to handle non-functional requirements on Agile projects. Mike Cohn recommends writing a User Story for each non-functional requirement, while others recommend creating task cards to drive out specification using Thomas Gilb’s approach. In this session, examples of various techniques for handling non-functional requirements will be demonstrated, with a discussion of pros and cons of each technique.

Published in: Technology, Business
1 Comment
21 Likes
Statistics
Notes
No Downloads
Views
Total views
9,525
On SlideShare
0
From Embeds
0
Number of Embeds
190
Actions
Shares
0
Downloads
0
Comments
1
Likes
21
Embeds 0
No embeds

No notes for slide

Handling Non Functional Requirements on an Agile Project

  1. 1. Handling Non-Functional Requirements<br />On an Agile Project<br />Ken Howard<br />Improving Enterprises<br />ken@improvingenterprises.com<br />Blog: www.agilist.net<br />
  2. 2. Here’s my story…<br />As an Agile Consultant, I want to travel from Dallas to Chicago so that I can present at Agile2009.<br />
  3. 3. As an Agile Consultant, I want to travel from Dallas to Chicago so that I can present at Agile2009.<br />quickly<br /> ^<br />
  4. 4. As an Agile Consultant, I want to travel from Dallas to Chicago so that I can present at Agile2009.<br />quickly, affordably & safely<br /> ^<br />
  5. 5. Why do Non-Functionals Matter?<br />
  6. 6.
  7. 7.
  8. 8. Quick Refresher…<br />Functional Requirements<br />The Batmobile Shall…<br />Start when a key is turned.<br />Accelerate from 0..60 in 3 seconds<br />Decelerate when the brakes are pressed.<br />Non-Functional Requirements<br />The Batmobile Shall be…<br /><ul><li>Fast
  9. 9. Fuel Efficient
  10. 10. Reliable
  11. 11. Comfortable
  12. 12. Bulletproof</li></li></ul><li>Lingo Check<br />Non Functional Requirements<br />NFRs<br />Constraints<br />…ilities<br />Quality Requirements<br />Operational Requirements<br />System Attributes<br />Other labels??<br />
  13. 13. Try this… <br />Draw a pizza that has eight slices with three lines.<br />
  14. 14.
  15. 15.
  16. 16.
  17. 17. “Projects without clear goals will not achieve their goals clearly.” <br /> Thomas Gilb<br />“Design is the progressive elimination of ambiguity.”<br /> Gerald Weinberg<br />
  18. 18. Remember…<br />…every problem…<br />…has many possible solutions.<br />
  19. 19. Narrowing the Field of Candidates<br />Limitations<br />Possible Solutions<br />Constraints<br />Constraints<br />Attributes<br />Limitations<br />Anti-Preferences<br />Constraints<br />
  20. 20. Grammatical Adornments<br />As a fox, I can jump over the dog.<br />+ Adjectives & Adverbs<br />As a quick brown fox, I can jump <br />quickly over the lazy dog.<br />
  21. 21. Adjectives can be Subjective…<br />
  22. 22. Adjectives can be Relative…<br />Okay, so you want a nice cake?<br />YES!!<br />YES!!<br />
  23. 23. Context Matters…<br />…shallbe dressed appropriately<br />
  24. 24. Context Matters…<br />…shallbe dressed appropriately<br />
  25. 25. Non Functional Requirements<br />System Dimension<br />Context<br />(What)<br />Attribute<br />Shall Be…<br />Metric<br />How we’ll know<br />“Should” Value<br />“Must” Value<br />
  26. 26. Non Functional Requirements<br />“Check Out” Transaction<br />Context<br />(What)<br />Efficient<br />Shall Be…<br /># Clicks Required<br />How we’ll know<br />Should: &lt; 5<br />Must: &lt;10<br />
  27. 27. Adjective/Adverb Yardsticks…<br />Nice but not required.<br />Elapsed seconds from “submit” to display<br />As a CSR, I can quickly retrieve a customer record so that I can provide efficient customer service.<br />Nope, never, no way…<br />
  28. 28. Non Functional Requirements<br />Try some…<br />
  29. 29. How do you measure…<br />User Friendly<br />Efficient<br />Fast<br />Responsive<br />Reliable<br />Secure<br />Accessible<br />Portable<br />Compliant<br />Easily Maintainable<br />Highly Available<br />
  30. 30. The NFR SCRUM Dilemma…<br />User Stories are meant to be completed.<br />Most NFR’s must be addressed throughout the project.<br />Tunnel vision: when focused on a story, it’s easy to forget about NFR’s (e.g. user friendly was nailed in Sprint 1, but overlooked in Sprint 3)<br />
  31. 31. The Non Functional Requirement……within a User Story<br />As a Blogger, I want topost an entry <br />quickly and efficientlyso that I can easily update my blog.<br />
  32. 32. The Non Functional Requirement……making it testable:<br />Test that…<br /><ul><li>A blog entry can be posted in less than 3 keystrokes.
  33. 33. A blog entry can be posted in under 5 seconds.</li></li></ul><li>The Non Functional Requirement……as a User Story<br />As a Blogger, I want tosupport many web feed formats so that I can reach a wide audience<br />
  34. 34. The Non Functional Requirement……making it testable:<br />Test that…<br /><ul><li>RSS 1.0 is supported.
  35. 35. RSS 2.0 is supported.
  36. 36. Atom 0.3 is supported.
  37. 37. Atom 1.0 is supported.</li></li></ul><li>What we’re really talking about is..<br />..how to handle something that has a potential impact on all stories and tasks.<br />Given &lt;a condition&gt;<br />When &lt;event occurs&gt;<br />Then&lt;system should ...&gt;<br />Given &lt;a condition&gt;<br />When &lt;event occurs&gt;<br />Then&lt;system should ...&gt;<br />What’s the most efficient way to do this?<br />Given &lt;a condition&gt;<br />When &lt;event occurs&gt;<br />Then&lt;system should ...&gt;<br />Given &lt;a condition&gt;<br />When &lt;event occurs&gt;<br />Then&lt;system should ...&gt;<br />Given &lt;a condition&gt;<br />When &lt;event occurs&gt;<br />Then&lt;system should ...&gt;<br />Given &lt;a condition&gt;<br />When &lt;event occurs&gt;<br />Then&lt;system should ...&gt;<br />As a Blogger, I want topost an entry<br />quickly and efficientlyso that I can easily update my blog.<br />
  38. 38. The System MUST be SOX Compliant…<br />How do we make sure?<br />
  39. 39. NFR Idea<br />Regression tests for NFR’s<br />
  40. 40. NFR Idea<br />NFR Filters Applied to Each Story<br />As a Blogger, I want toquickly and efficiently<br />post an entryso that I can easily update my blog.<br />User Friendly<br />Efficient<br />As a Blogger, I want topost an entryso that I can update my blog.<br />
  41. 41. NFR Idea<br />Reminder radiators…<br />User Friendly<br />Fast<br />Efficient<br />
  42. 42. NFR Idea<br />Assign NFR Stewards<br />User Friendly<br />User Friendly<br />Fast<br />Efficient<br />
  43. 43. NFR Idea<br />Others?<br />What have you done?<br />
  44. 44.
  45. 45. Feel free to…Email me. Call me. Read my Blog.…Hire us!<br />Ken Howard<br />ken@improvingenterprises.com<br />Blog: www.agilist.net<br />972.467.3001<br />

×