Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

From Specification To Success

1,233 views

Published on

Published in: Education
  • Be the first to comment

  • Be the first to like this

From Specification To Success

  1. 1. Sheffield - Oct 2008 From Specification to Success Turning real user stories into runnable, reliable code Creative Commons Attribution-Noncommercial-Share Alike Ashley Moran 2.0 UK: England & Wales License PatchSpace Ltd
  2. 2. Specification
  3. 3. Specification We organise conferences
  4. 4. Specification We organise conferences Such as BarCamp
  5. 5. Specification We organise conferences Such as BarCamp We need a website to organise and promote our events
  6. 6. User Roles
  7. 7. User Roles External roles in green, internal roles in orange
  8. 8. User Roles External roles in green, internal roles in orange Potential Delegate Potential Sponsor Confirmed Delegate Confirmed Sponsor Potential Speaker Organiser Confirmed Speaker Steering Group Member Potential Steward Promoter Steward
  9. 9. A User Story
  10. 10. A User Story Story: Organiser confirms Proposed Talk So that Delegates and Speakers know what Talks are happening As an Organiser I want to confirm Proposed Talks Acceptance criteria: Talk clearly viewable as confirmed by everyone Can choose which Room and Timeslot to book Talk against Can’t double-book a Room
  11. 11. Valuable Stories
  12. 12. Valuable Stories So that ... As a ... I want to ...
  13. 13. Valuable Stories So that ... As a ... I want to ... The So that line is the most important
  14. 14. Valuable Stories So that ... As a ... I want to ... The So that line is the most important You don’t do anything with a story until you’ve identified what makes it valuable
  15. 15. Valuable Stories So that ... As a ... I want to ... The So that line is the most important You don’t do anything with a story until you’ve identified what makes it valuable You don’t do anything at all until you have a valuable story
  16. 16. (Acceptance Criteria)2
  17. 17. (Acceptance Criteria)2 Do write criteria that can be easily verified by humans
  18. 18. (Acceptance Criteria)2 Do write criteria that can be easily verified by humans Do make them discrete (machines need to verify them)
  19. 19. (Acceptance Criteria)2 Do write criteria that can be easily verified by humans Do make them discrete (machines need to verify them) Don’t be too prescriptive (eg define the user interface)
  20. 20. (Acceptance Criteria)2 Do write criteria that can be easily verified by humans Do make them discrete (machines need to verify them) Don’t be too prescriptive (eg define the user interface) Button ‘Confirm this talk’ next to each Talk on Talks admin page
  21. 21. (Acceptance Criteria)2 Do write criteria that can be easily verified by humans Do make them discrete (machines need to verify them) Don’t be too prescriptive (eg define the user interface) Button ‘Confirm this talk’ next to each Talk on Talks admin page Don’t hide new stories in acceptance criteria
  22. 22. (Acceptance Criteria)2 Do write criteria that can be easily verified by humans Do make them discrete (machines need to verify them) Don’t be too prescriptive (eg define the user interface) Button ‘Confirm this talk’ next to each Talk on Talks admin page Don’t hide new stories in acceptance criteria Organisers can search for unconfirmed talks
  23. 23. (Acceptance Criteria)2 Do write criteria that can be easily verified by humans Do make them discrete (machines need to verify them) Don’t be too prescriptive (eg define the user interface) Button ‘Confirm this talk’ next to each Talk on Talks admin page Don’t hide new stories in acceptance criteria Organisers can search for unconfirmed talks Email notification of confirmation sent to Speaker
  24. 24. Your Task
  25. 25. Your Task Put yourselves in the role on the role card
  26. 26. Your Task Put yourselves in the role on the role card Think what value you want from the software
  27. 27. Your Task Put yourselves in the role on the role card Think what value you want from the software Working as a team, brainstorm stories (follow the structure on the cards)
  28. 28. Your Task Put yourselves in the role on the role card Think what value you want from the software Working as a team, brainstorm stories (follow the structure on the cards) Think about the relative value of each story as you write them
  29. 29. Your Task Put yourselves in the role on the role card Think what value you want from the software Working as a team, brainstorm stories (follow the structure on the cards) Think about the relative value of each story as you write them You’ve got 10 minutes!
  30. 30. Prioritising
  31. 31. Prioritising In groups
  32. 32. Prioritising In groups choose the single most valuable story from your stack
  33. 33. Prioritising In groups choose the single most valuable story from your stack nominate someone to represent your table
  34. 34. Prioritising In groups choose the single most valuable story from your stack nominate someone to represent your table Role representatives
  35. 35. Prioritising In groups choose the single most valuable story from your stack nominate someone to represent your table Role representatives stand up!
  36. 36. Prioritising In groups choose the single most valuable story from your stack nominate someone to represent your table Role representatives stand up! in turn, read the title and body of your story, skipping any acceptance criteria for now
  37. 37. Prioritising
  38. 38. Prioritising Remember
  39. 39. Prioritising Remember We need a website to organise and promote our events
  40. 40. Prioritising Remember We need a website to organise and promote our events Role representatives only:
  41. 41. Prioritising Remember We need a website to organise and promote our events Role representatives only: Identify between yourselves the most valuable story to our organisation
  42. 42. The Most Valuable Story
  43. 43. The Most Valuable Story This was one of the stories written out on the night by a member of the audience, and decided among them the most important
  44. 44. The Most Valuable Story This was one of the stories written out on the night by a member of the audience, and decided among them the most important
  45. 45. The Most Valuable Story This was one of the stories written out on the night by a member of the audience, and decided among them the most important No prizes for noticing the spelling mistake :)
  46. 46. Interlude
  47. 47. Now to code
  48. 48. Success
  49. 49. Success Discussion encouraged
  50. 50. Success Discussion encouraged In reality, developers work with users to write stories
  51. 51. Success Discussion encouraged In reality, developers work with users to write stories Value delivered from the beginning
  52. 52. Success Discussion encouraged In reality, developers work with users to write stories Value delivered from the beginning Or at least after any bootstrapping work
  53. 53. Success Discussion encouraged In reality, developers work with users to write stories Value delivered from the beginning Or at least after any bootstrapping work Functionality automatically verified against the users’ own acceptance criteria
  54. 54. Success Discussion encouraged In reality, developers work with users to write stories Value delivered from the beginning Or at least after any bootstrapping work Functionality automatically verified against the users’ own acceptance criteria Actual needs satisfied vs on time, on spec, on budget... but off target
  55. 55. Success Discussion encouraged In reality, developers work with users to write stories Value delivered from the beginning Or at least after any bootstrapping work Functionality automatically verified against the users’ own acceptance criteria Actual needs satisfied vs on time, on spec, on budget... but off target Less waste means more value, more profit
  56. 56. Thanks for joining in
  57. 57. Thanks for joining in For slides, follow the blog link on www.patchspace.co.uk (tomorrow afternoon)
  58. 58. Thanks for joining in For slides, follow the blog link on www.patchspace.co.uk (tomorrow afternoon) Download slides contain a reference section
  59. 59. Thanks for joining in For slides, follow the blog link on www.patchspace.co.uk (tomorrow afternoon) Download slides contain a reference section Speak to me later if you’d like to know more
  60. 60. Thanks for joining in For slides, follow the blog link on www.patchspace.co.uk (tomorrow afternoon) Download slides contain a reference section Speak to me later if you’d like to know more Questions?
  61. 61. Reference Some technical notes about the technologies used
  62. 62. Tools: RSpec
  63. 63. Tools: RSpec Behaviour-Driven Development equivalent to the xUnit family of tools, written in Ruby
  64. 64. Tools: RSpec Behaviour-Driven Development equivalent to the xUnit family of tools, written in Ruby Lets you write low-level specs for Ruby or Java code (with JtestR)
  65. 65. Tools: RSpec Behaviour-Driven Development equivalent to the xUnit family of tools, written in Ruby Lets you write low-level specs for Ruby or Java code (with JtestR) Not the focus of this presentation
  66. 66. Tools: Celerity
  67. 67. Tools: Celerity Celerity is a JRuby project that wraps the Java library HtmlUnit and Rhino
  68. 68. Tools: Celerity Celerity is a JRuby project that wraps the Java library HtmlUnit and Rhino HtmlUnit is a virtual browser, with HTTPS, cookie etc support, but no GUI dependencies
  69. 69. Tools: Celerity Celerity is a JRuby project that wraps the Java library HtmlUnit and Rhino HtmlUnit is a virtual browser, with HTTPS, cookie etc support, but no GUI dependencies Rhino is a Java implementation of JavaScript that HtmlUnit uses to drive dynamic web sites
  70. 70. Tools: Celerity Celerity is a JRuby project that wraps the Java library HtmlUnit and Rhino HtmlUnit is a virtual browser, with HTTPS, cookie etc support, but no GUI dependencies Rhino is a Java implementation of JavaScript that HtmlUnit uses to drive dynamic web sites Celerity exposes a Watir interface to HtmlUnit, and can be used in place of Watir or Selenium
  71. 71. Tools: RSpec Stories
  72. 72. Tools: RSpec Stories Run plain-text story scenarios with no translation
  73. 73. Tools: RSpec Stories Run plain-text story scenarios with no translation Currently being re-implemented by Aslak Hellesøy under the name Cucumber - this will be the default implementation after RSpec 1.1.5
  74. 74. Tools: RSpec Stories Run plain-text story scenarios with no translation Currently being re-implemented by Aslak Hellesøy under the name Cucumber - this will be the default implementation after RSpec 1.1.5 Cucumber can run in JRuby with JTestR too
  75. 75. Tools: RSpec Stories Run plain-text story scenarios with no translation Currently being re-implemented by Aslak Hellesøy under the name Cucumber - this will be the default implementation after RSpec 1.1.5 Cucumber can run in JRuby with JTestR too Cucumber + Celerity = verify your real app directly against real user stories
  76. 76. Installation
  77. 77. Installation If you’re on a Mac with MacPorts:
  78. 78. Installation If you’re on a Mac with MacPorts: root# port install jruby
  79. 79. Installation If you’re on a Mac with MacPorts: root# port install jruby root# jgem install celerity jruby-openssl hoe rspec
  80. 80. Installation If you’re on a Mac with MacPorts: root# port install jruby root# jgem install celerity jruby-openssl hoe rspec Currently (27-Sep-2008) the Cucumber gem on GitHub is broken, install from source:
  81. 81. Installation If you’re on a Mac with MacPorts: root# port install jruby root# jgem install celerity jruby-openssl hoe rspec Currently (27-Sep-2008) the Cucumber gem on GitHub is broken, install from source: you% git clone git://github.com/aslakhellesoy/cucumber.git
  82. 82. Installation If you’re on a Mac with MacPorts: root# port install jruby root# jgem install celerity jruby-openssl hoe rspec Currently (27-Sep-2008) the Cucumber gem on GitHub is broken, install from source: you% git clone git://github.com/aslakhellesoy/cucumber.git you% cd cucumber && rake gem
  83. 83. Installation If you’re on a Mac with MacPorts: root# port install jruby root# jgem install celerity jruby-openssl hoe rspec Currently (27-Sep-2008) the Cucumber gem on GitHub is broken, install from source: you% git clone git://github.com/aslakhellesoy/cucumber.git you% cd cucumber && rake gem root# jgem install pkg/cucumber-X.Y.Z.gem

×