From Specification To Success
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,489
On Slideshare
1,267
From Embeds
222
Number of Embeds
7

Actions

Shares
Downloads
12
Comments
0
Likes
0

Embeds 222

http://blog.patchspace.co.uk 209
http://feeds.feedburner.com 7
http://www.linkedin.com 2
http://patchspace.posterous.com 1
http://webcache.googleusercontent.com 1
http://www.aussieproxy.info 1
https://www.linkedin.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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. Specification
  • 3. Specification We organise conferences
  • 4. Specification We organise conferences Such as BarCamp
  • 5. Specification We organise conferences Such as BarCamp We need a website to organise and promote our events
  • 6. User Roles
  • 7. User Roles External roles in green, internal roles in orange
  • 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. A User Story
  • 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. Valuable Stories
  • 12. Valuable Stories So that ... As a ... I want to ...
  • 13. Valuable Stories So that ... As a ... I want to ... The So that line is the most important
  • 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. 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. (Acceptance Criteria)2
  • 17. (Acceptance Criteria)2 Do write criteria that can be easily verified by humans
  • 18. (Acceptance Criteria)2 Do write criteria that can be easily verified by humans Do make them discrete (machines need to verify them)
  • 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. (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. (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. (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. (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. Your Task
  • 25. Your Task Put yourselves in the role on the role card
  • 26. Your Task Put yourselves in the role on the role card Think what value you want from the software
  • 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. 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. 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. Prioritising
  • 31. Prioritising In groups
  • 32. Prioritising In groups choose the single most valuable story from your stack
  • 33. Prioritising In groups choose the single most valuable story from your stack nominate someone to represent your table
  • 34. Prioritising In groups choose the single most valuable story from your stack nominate someone to represent your table Role representatives
  • 35. Prioritising In groups choose the single most valuable story from your stack nominate someone to represent your table Role representatives stand up!
  • 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. Prioritising
  • 38. Prioritising Remember
  • 39. Prioritising Remember We need a website to organise and promote our events
  • 40. Prioritising Remember We need a website to organise and promote our events Role representatives only:
  • 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. The Most Valuable Story
  • 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. 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. 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. Interlude
  • 47. Now to code
  • 48. Success
  • 49. Success Discussion encouraged
  • 50. Success Discussion encouraged In reality, developers work with users to write stories
  • 51. Success Discussion encouraged In reality, developers work with users to write stories Value delivered from the beginning
  • 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. 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. 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. 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. Thanks for joining in
  • 57. Thanks for joining in For slides, follow the blog link on www.patchspace.co.uk (tomorrow afternoon)
  • 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. 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. 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. Reference Some technical notes about the technologies used
  • 62. Tools: RSpec
  • 63. Tools: RSpec Behaviour-Driven Development equivalent to the xUnit family of tools, written in Ruby
  • 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. 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. Tools: Celerity
  • 67. Tools: Celerity Celerity is a JRuby project that wraps the Java library HtmlUnit and Rhino
  • 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. 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. 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. Tools: RSpec Stories
  • 72. Tools: RSpec Stories Run plain-text story scenarios with no translation
  • 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. 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. 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. Installation
  • 77. Installation If you’re on a Mac with MacPorts:
  • 78. Installation If you’re on a Mac with MacPorts: root# port install jruby
  • 79. Installation If you’re on a Mac with MacPorts: root# port install jruby root# jgem install celerity jruby-openssl hoe rspec
  • 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. 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. 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. 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