SlideShare a Scribd company logo
1 of 83
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
Specification
Specification


We organise conferences
Specification


We organise conferences
  Such as BarCamp
Specification


We organise conferences
  Such as BarCamp
We need a website to organise and promote our
events
User Roles
User Roles
External roles in green, internal roles in orange
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
A User Story
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
Valuable Stories
Valuable Stories
 So that ...
 As a ...
 I want to ...
Valuable Stories
  So that ...
  As a ...
  I want to ...

 The So that line is the most important
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
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
(Acceptance   Criteria)2
(Acceptance             Criteria)2


Do write criteria that can be easily verified by humans
(Acceptance             Criteria)2


Do write criteria that can be easily verified by humans
Do make them discrete (machines need to verify them)
(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)
(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
(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
(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
(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
Your Task
Your Task

Put yourselves in the role on the role card
Your Task

Put yourselves in the role on the role card
Think what value you want from the software
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)
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
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!
Prioritising
Prioritising
 In groups
Prioritising
 In groups
   choose the single most valuable story from your
   stack
Prioritising
 In groups
   choose the single most valuable story from your
   stack
   nominate someone to represent your table
Prioritising
 In groups
   choose the single most valuable story from your
   stack
   nominate someone to represent your table
 Role representatives
Prioritising
 In groups
   choose the single most valuable story from your
   stack
   nominate someone to represent your table
 Role representatives
   stand up!
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
Prioritising
Prioritising

 Remember
Prioritising

 Remember
  We need a website to organise and promote our
  events
Prioritising

 Remember
   We need a website to organise and promote our
   events
 Role representatives only:
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
The Most Valuable Story
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
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
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 :)
Interlude
Now to code
Success
Success
Discussion encouraged
Success
Discussion encouraged
  In reality, developers work with users to write stories
Success
Discussion encouraged
  In reality, developers work with users to write stories
Value delivered from the beginning
Success
Discussion encouraged
  In reality, developers work with users to write stories
Value delivered from the beginning
  Or at least after any bootstrapping work
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
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
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
Thanks for joining in
Thanks for joining in


 For slides, follow the blog link on
 www.patchspace.co.uk (tomorrow afternoon)
Thanks for joining in


 For slides, follow the blog link on
 www.patchspace.co.uk (tomorrow afternoon)
 Download slides contain a reference section
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
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?
Reference
Some technical notes about
the technologies used
Tools: RSpec
Tools: RSpec


Behaviour-Driven Development equivalent to the xUnit
family of tools, written in Ruby
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)
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
Tools: Celerity
Tools: Celerity

 Celerity is a JRuby project that wraps the Java library
 HtmlUnit and Rhino
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
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
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
Tools: RSpec Stories
Tools: RSpec Stories

Run plain-text story scenarios with no translation
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
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
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
Installation
Installation

 If you’re on a Mac with MacPorts:
Installation

 If you’re on a Mac with MacPorts:
   root# port install jruby
Installation

 If you’re on a Mac with MacPorts:
   root# port install jruby

   root# jgem install celerity jruby-openssl hoe rspec
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:
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
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
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

More Related Content

Similar to From Specification To Success

Prototyping for effective UX
Prototyping for effective UXPrototyping for effective UX
Prototyping for effective UXRan Liron
 
How To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven PetersHow To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven PetersZeroTurnaround
 
Meeting the Service Sandbox
Meeting the Service SandboxMeeting the Service Sandbox
Meeting the Service SandboxJane Vita
 
Cultivating Lean Startup Teams When People Don't Know What Lean Is
Cultivating Lean Startup Teams When People Don't Know What Lean IsCultivating Lean Startup Teams When People Don't Know What Lean Is
Cultivating Lean Startup Teams When People Don't Know What Lean IsEmily Holmes
 
The Junior Developer Survival Guide - GDI Ann Arbor 2/10/15
The Junior Developer Survival Guide -  GDI Ann Arbor 2/10/15The Junior Developer Survival Guide -  GDI Ann Arbor 2/10/15
The Junior Developer Survival Guide - GDI Ann Arbor 2/10/15James York
 
Planning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsChristian Heilmann
 
The Whole Story of The User Story
The Whole Story of The User StoryThe Whole Story of The User Story
The Whole Story of The User StoryXPDays
 
Xp 2016 superchargeyourproductbacklogwithuserstories-suzannelaz
Xp 2016 superchargeyourproductbacklogwithuserstories-suzannelazXp 2016 superchargeyourproductbacklogwithuserstories-suzannelaz
Xp 2016 superchargeyourproductbacklogwithuserstories-suzannelazLaz Allen
 
Realizzare un Virtual Assistant con Bot Framework Azure e Unity
Realizzare un Virtual Assistant con Bot Framework Azure e UnityRealizzare un Virtual Assistant con Bot Framework Azure e Unity
Realizzare un Virtual Assistant con Bot Framework Azure e UnityMarco Parenzan
 
We hear you!. Collecting and processing user feedback, for real!
We hear you!. Collecting and processing user feedback, for real!We hear you!. Collecting and processing user feedback, for real!
We hear you!. Collecting and processing user feedback, for real!penpotapp
 
JAZOON'13 - Sven Peters - How to do Kick-Ass Software Development
JAZOON'13 - Sven Peters - How to do Kick-Ass Software DevelopmentJAZOON'13 - Sven Peters - How to do Kick-Ass Software Development
JAZOON'13 - Sven Peters - How to do Kick-Ass Software Developmentjazoon13
 
Paris Web - Javascript as a programming language
Paris Web - Javascript as a programming languageParis Web - Javascript as a programming language
Paris Web - Javascript as a programming languageMarco Cedaro
 
Jr devsurvivalguide
Jr devsurvivalguideJr devsurvivalguide
Jr devsurvivalguideJames York
 
Cloud AI GenAI Overview.pptx
Cloud AI GenAI Overview.pptxCloud AI GenAI Overview.pptx
Cloud AI GenAI Overview.pptxSahithiGurlinka
 
Software Craftsmanship
Software CraftsmanshipSoftware Craftsmanship
Software CraftsmanshipMike Clement
 
27_07_Landing Pages_Gilles de Clerck_EIA Porto 2022.pdf
27_07_Landing Pages_Gilles de Clerck_EIA Porto 2022.pdf27_07_Landing Pages_Gilles de Clerck_EIA Porto 2022.pdf
27_07_Landing Pages_Gilles de Clerck_EIA Porto 2022.pdfEuropean Innovation Academy
 

Similar to From Specification To Success (20)

Prototyping for effective UX
Prototyping for effective UXPrototyping for effective UX
Prototyping for effective UX
 
Designing for Voice
Designing for VoiceDesigning for Voice
Designing for Voice
 
How To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven PetersHow To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven Peters
 
Meeting the Service Sandbox
Meeting the Service SandboxMeeting the Service Sandbox
Meeting the Service Sandbox
 
Cultivating Lean Startup Teams When People Don't Know What Lean Is
Cultivating Lean Startup Teams When People Don't Know What Lean IsCultivating Lean Startup Teams When People Don't Know What Lean Is
Cultivating Lean Startup Teams When People Don't Know What Lean Is
 
The Junior Developer Survival Guide - GDI Ann Arbor 2/10/15
The Junior Developer Survival Guide -  GDI Ann Arbor 2/10/15The Junior Developer Survival Guide -  GDI Ann Arbor 2/10/15
The Junior Developer Survival Guide - GDI Ann Arbor 2/10/15
 
Planning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teams
 
The Whole Story of The User Story
The Whole Story of The User StoryThe Whole Story of The User Story
The Whole Story of The User Story
 
Xp 2016 superchargeyourproductbacklogwithuserstories-suzannelaz
Xp 2016 superchargeyourproductbacklogwithuserstories-suzannelazXp 2016 superchargeyourproductbacklogwithuserstories-suzannelaz
Xp 2016 superchargeyourproductbacklogwithuserstories-suzannelaz
 
Realizzare un Virtual Assistant con Bot Framework Azure e Unity
Realizzare un Virtual Assistant con Bot Framework Azure e UnityRealizzare un Virtual Assistant con Bot Framework Azure e Unity
Realizzare un Virtual Assistant con Bot Framework Azure e Unity
 
We hear you!. Collecting and processing user feedback, for real!
We hear you!. Collecting and processing user feedback, for real!We hear you!. Collecting and processing user feedback, for real!
We hear you!. Collecting and processing user feedback, for real!
 
JAZOON'13 - Sven Peters - How to do Kick-Ass Software Development
JAZOON'13 - Sven Peters - How to do Kick-Ass Software DevelopmentJAZOON'13 - Sven Peters - How to do Kick-Ass Software Development
JAZOON'13 - Sven Peters - How to do Kick-Ass Software Development
 
Paris Web - Javascript as a programming language
Paris Web - Javascript as a programming languageParis Web - Javascript as a programming language
Paris Web - Javascript as a programming language
 
50.000 orange stickies later
50.000 orange stickies later50.000 orange stickies later
50.000 orange stickies later
 
Jr devsurvivalguide
Jr devsurvivalguideJr devsurvivalguide
Jr devsurvivalguide
 
Tec314
Tec314Tec314
Tec314
 
Cloud AI GenAI Overview.pptx
Cloud AI GenAI Overview.pptxCloud AI GenAI Overview.pptx
Cloud AI GenAI Overview.pptx
 
Software Craftsmanship
Software CraftsmanshipSoftware Craftsmanship
Software Craftsmanship
 
BDD, Behat & Drupal
BDD, Behat & DrupalBDD, Behat & Drupal
BDD, Behat & Drupal
 
27_07_Landing Pages_Gilles de Clerck_EIA Porto 2022.pdf
27_07_Landing Pages_Gilles de Clerck_EIA Porto 2022.pdf27_07_Landing Pages_Gilles de Clerck_EIA Porto 2022.pdf
27_07_Landing Pages_Gilles de Clerck_EIA Porto 2022.pdf
 

More from PatchSpace Ltd

Conflict in Complex Systems
Conflict in Complex SystemsConflict in Complex Systems
Conflict in Complex SystemsPatchSpace Ltd
 
Personal Kanban (lightning talk)
Personal Kanban (lightning talk)Personal Kanban (lightning talk)
Personal Kanban (lightning talk)PatchSpace Ltd
 
Parsing for Fun and Profit
Parsing for Fun and ProfitParsing for Fun and Profit
Parsing for Fun and ProfitPatchSpace Ltd
 
Why Won't My Car Start?
Why Won't My Car Start?Why Won't My Car Start?
Why Won't My Car Start?PatchSpace Ltd
 
ShRUG 5 - Scottish Ruby Conf edition
ShRUG 5  - Scottish Ruby Conf editionShRUG 5  - Scottish Ruby Conf edition
ShRUG 5 - Scottish Ruby Conf editionPatchSpace Ltd
 
Encouraging Agile Discipline
Encouraging Agile DisciplineEncouraging Agile Discipline
Encouraging Agile DisciplinePatchSpace Ltd
 
Uses & Abuses of Mocks & Stubs
Uses & Abuses of Mocks & StubsUses & Abuses of Mocks & Stubs
Uses & Abuses of Mocks & StubsPatchSpace Ltd
 
NWRUG July 2009 - Darcs
NWRUG July 2009 - DarcsNWRUG July 2009 - Darcs
NWRUG July 2009 - DarcsPatchSpace Ltd
 
Elephants In The Meeting Room
Elephants In The Meeting RoomElephants In The Meeting Room
Elephants In The Meeting RoomPatchSpace Ltd
 

More from PatchSpace Ltd (10)

Conflict in Complex Systems
Conflict in Complex SystemsConflict in Complex Systems
Conflict in Complex Systems
 
Personal Kanban (lightning talk)
Personal Kanban (lightning talk)Personal Kanban (lightning talk)
Personal Kanban (lightning talk)
 
Parsing for Fun and Profit
Parsing for Fun and ProfitParsing for Fun and Profit
Parsing for Fun and Profit
 
Speedy TDD with Rails
Speedy TDD with RailsSpeedy TDD with Rails
Speedy TDD with Rails
 
Why Won't My Car Start?
Why Won't My Car Start?Why Won't My Car Start?
Why Won't My Car Start?
 
ShRUG 5 - Scottish Ruby Conf edition
ShRUG 5  - Scottish Ruby Conf editionShRUG 5  - Scottish Ruby Conf edition
ShRUG 5 - Scottish Ruby Conf edition
 
Encouraging Agile Discipline
Encouraging Agile DisciplineEncouraging Agile Discipline
Encouraging Agile Discipline
 
Uses & Abuses of Mocks & Stubs
Uses & Abuses of Mocks & StubsUses & Abuses of Mocks & Stubs
Uses & Abuses of Mocks & Stubs
 
NWRUG July 2009 - Darcs
NWRUG July 2009 - DarcsNWRUG July 2009 - Darcs
NWRUG July 2009 - Darcs
 
Elephants In The Meeting Room
Elephants In The Meeting RoomElephants In The Meeting Room
Elephants In The Meeting Room
 

Recently uploaded

ClimART Action | eTwinning Project
ClimART Action    |    eTwinning ProjectClimART Action    |    eTwinning Project
ClimART Action | eTwinning Projectjordimapav
 
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...Team Lead Succeed – Helping you and your team achieve high-performance teamwo...
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...Association for Project Management
 
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...Nguyen Thanh Tu Collection
 
4.11.24 Mass Incarceration and the New Jim Crow.pptx
4.11.24 Mass Incarceration and the New Jim Crow.pptx4.11.24 Mass Incarceration and the New Jim Crow.pptx
4.11.24 Mass Incarceration and the New Jim Crow.pptxmary850239
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfJemuel Francisco
 
How to Manage Buy 3 Get 1 Free in Odoo 17
How to Manage Buy 3 Get 1 Free in Odoo 17How to Manage Buy 3 Get 1 Free in Odoo 17
How to Manage Buy 3 Get 1 Free in Odoo 17Celine George
 
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...DhatriParmar
 
BIOCHEMISTRY-CARBOHYDRATE METABOLISM CHAPTER 2.pptx
BIOCHEMISTRY-CARBOHYDRATE METABOLISM CHAPTER 2.pptxBIOCHEMISTRY-CARBOHYDRATE METABOLISM CHAPTER 2.pptx
BIOCHEMISTRY-CARBOHYDRATE METABOLISM CHAPTER 2.pptxSayali Powar
 
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...DhatriParmar
 
DIFFERENT BASKETRY IN THE PHILIPPINES PPT.pptx
DIFFERENT BASKETRY IN THE PHILIPPINES PPT.pptxDIFFERENT BASKETRY IN THE PHILIPPINES PPT.pptx
DIFFERENT BASKETRY IN THE PHILIPPINES PPT.pptxMichelleTuguinay1
 
CHEST Proprioceptive neuromuscular facilitation.pptx
CHEST Proprioceptive neuromuscular facilitation.pptxCHEST Proprioceptive neuromuscular facilitation.pptx
CHEST Proprioceptive neuromuscular facilitation.pptxAneriPatwari
 
CLASSIFICATION OF ANTI - CANCER DRUGS.pptx
CLASSIFICATION OF ANTI - CANCER DRUGS.pptxCLASSIFICATION OF ANTI - CANCER DRUGS.pptx
CLASSIFICATION OF ANTI - CANCER DRUGS.pptxAnupam32727
 
4.9.24 School Desegregation in Boston.pptx
4.9.24 School Desegregation in Boston.pptx4.9.24 School Desegregation in Boston.pptx
4.9.24 School Desegregation in Boston.pptxmary850239
 
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITWQ-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITWQuiz Club NITW
 
ARTERIAL BLOOD GAS ANALYSIS........pptx
ARTERIAL BLOOD  GAS ANALYSIS........pptxARTERIAL BLOOD  GAS ANALYSIS........pptx
ARTERIAL BLOOD GAS ANALYSIS........pptxAneriPatwari
 
ICS 2208 Lecture Slide Notes for Topic 6
ICS 2208 Lecture Slide Notes for Topic 6ICS 2208 Lecture Slide Notes for Topic 6
ICS 2208 Lecture Slide Notes for Topic 6Vanessa Camilleri
 
Sulphonamides, mechanisms and their uses
Sulphonamides, mechanisms and their usesSulphonamides, mechanisms and their uses
Sulphonamides, mechanisms and their usesVijayaLaxmi84
 

Recently uploaded (20)

ClimART Action | eTwinning Project
ClimART Action    |    eTwinning ProjectClimART Action    |    eTwinning Project
ClimART Action | eTwinning Project
 
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...Team Lead Succeed – Helping you and your team achieve high-performance teamwo...
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...
 
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
 
4.11.24 Mass Incarceration and the New Jim Crow.pptx
4.11.24 Mass Incarceration and the New Jim Crow.pptx4.11.24 Mass Incarceration and the New Jim Crow.pptx
4.11.24 Mass Incarceration and the New Jim Crow.pptx
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
 
How to Manage Buy 3 Get 1 Free in Odoo 17
How to Manage Buy 3 Get 1 Free in Odoo 17How to Manage Buy 3 Get 1 Free in Odoo 17
How to Manage Buy 3 Get 1 Free in Odoo 17
 
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...
 
Faculty Profile prashantha K EEE dept Sri Sairam college of Engineering
Faculty Profile prashantha K EEE dept Sri Sairam college of EngineeringFaculty Profile prashantha K EEE dept Sri Sairam college of Engineering
Faculty Profile prashantha K EEE dept Sri Sairam college of Engineering
 
BIOCHEMISTRY-CARBOHYDRATE METABOLISM CHAPTER 2.pptx
BIOCHEMISTRY-CARBOHYDRATE METABOLISM CHAPTER 2.pptxBIOCHEMISTRY-CARBOHYDRATE METABOLISM CHAPTER 2.pptx
BIOCHEMISTRY-CARBOHYDRATE METABOLISM CHAPTER 2.pptx
 
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...
 
DIFFERENT BASKETRY IN THE PHILIPPINES PPT.pptx
DIFFERENT BASKETRY IN THE PHILIPPINES PPT.pptxDIFFERENT BASKETRY IN THE PHILIPPINES PPT.pptx
DIFFERENT BASKETRY IN THE PHILIPPINES PPT.pptx
 
prashanth updated resume 2024 for Teaching Profession
prashanth updated resume 2024 for Teaching Professionprashanth updated resume 2024 for Teaching Profession
prashanth updated resume 2024 for Teaching Profession
 
CHEST Proprioceptive neuromuscular facilitation.pptx
CHEST Proprioceptive neuromuscular facilitation.pptxCHEST Proprioceptive neuromuscular facilitation.pptx
CHEST Proprioceptive neuromuscular facilitation.pptx
 
CLASSIFICATION OF ANTI - CANCER DRUGS.pptx
CLASSIFICATION OF ANTI - CANCER DRUGS.pptxCLASSIFICATION OF ANTI - CANCER DRUGS.pptx
CLASSIFICATION OF ANTI - CANCER DRUGS.pptx
 
4.9.24 School Desegregation in Boston.pptx
4.9.24 School Desegregation in Boston.pptx4.9.24 School Desegregation in Boston.pptx
4.9.24 School Desegregation in Boston.pptx
 
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITWQ-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
 
Mattingly "AI & Prompt Design: Large Language Models"
Mattingly "AI & Prompt Design: Large Language Models"Mattingly "AI & Prompt Design: Large Language Models"
Mattingly "AI & Prompt Design: Large Language Models"
 
ARTERIAL BLOOD GAS ANALYSIS........pptx
ARTERIAL BLOOD  GAS ANALYSIS........pptxARTERIAL BLOOD  GAS ANALYSIS........pptx
ARTERIAL BLOOD GAS ANALYSIS........pptx
 
ICS 2208 Lecture Slide Notes for Topic 6
ICS 2208 Lecture Slide Notes for Topic 6ICS 2208 Lecture Slide Notes for Topic 6
ICS 2208 Lecture Slide Notes for Topic 6
 
Sulphonamides, mechanisms and their uses
Sulphonamides, mechanisms and their usesSulphonamides, mechanisms and their uses
Sulphonamides, mechanisms and their uses
 

From Specification To Success

  • 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
  • 5. Specification We organise conferences Such as BarCamp We need a website to organise and promote our events
  • 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
  • 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
  • 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
  • 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!
  • 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
  • 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
  • 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 :)
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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