Case Study: Agile Request For Proposal (RFP) Process Agile RFP-1 Iterations Feedback Reduce Waste Reduce Risk Agile Principles Just Enough Just In Time Where do Stories Come from? Stories Process Practices Context Driven Adaptation FTDD Agile Requirements Effective Specification Functional Tests Retrospectives Domain Language Tools Agile RFP-2
Company RFP Process Vendor 1 Vendor 2 Vendor 3 The focus is on this process Specify Requirements Develop Proposal Develop Proposal Develop Proposal Evaluate Proposals Implement Solution Agile RFP-3 Typical RFP Specification Process Identify UC Agile RFP-4
Typical RFP Specification Process Complete Requirements Can we make this any more agile? Agile RFP-5 Typical XP vs Typical RFP When are requirements described? How are requirements communicated? What techniques are used? Typical XP Requirements Phase Just in time Face to face communication Stories and acceptance tests Typical RFP Requirements Phase All up front Documents Use cases How ed are the requirements? Promise for conversation --> acceptance tests Variable: sometimes too much, sometimes too little Agile RFP-6
How Agile Can RFP Be? When are requirements described? How are requirements communicated? What techniques are used? How ed are the requirements? Typical XP Requirements Phase Just in time Face to face communication Stories and acceptance tests Promise for conversation --> acceptance tests Typical RFP Requirements Phase All up front Documents Use cases Variable: just enough Agile RFP-7 How do we... Typical XP Requirements Phase Typical RFP Requirements Phase When are requirements described? How are requirements communicated? What techniques are used? Just in time Face to face communication Stories and acceptance tests How do we merge these together? All up front Documents Use cases How do we decide how much is enough? How ed are the requirements? Promise for conversation --> acceptance tests Variable: just enough sometimes too much, sometimes too little Agile RFP-8
Stories vs Use Cases Stories Use Cases Represents Business Value User Goal Describes Provides big picture? A chunk of the system that has business value No All scenarios related to the user goal Yes Good for Planning? Yes No, both too big and too small. Agile RFP-9 Best of Both Worlds Stories Use Cases Represents Business Value User Goal Package info together as use cases Describes Provides big picture? Break the info up into stories for planning A chunk of the system that has business value No All scenarios related to the user goal Yes Good for Planning? Yes No, both too big and too small. Agile RFP-10
Typical Use Case Template <use case name> : <overview of user goal> Pre-Condition Success Failure Main Scenario 1. <main step> 2. <main step> 3. [<main step #>] <alternate name> a) <alternate step> b) c) use case resumes at <main step#> [<main step #>] <alternate name> a) <alternate step> b) c) use case terminates <list of preconditions> <list of success end conditions> <list of failure end conditions> Agile RFP-11 Stories Embedded In Use Case <use case name> : <overview of user goal> Pre-Condition <list of preconditions> Success <list of success end conditions> Failure <list of failure end conditions> Story Description <story #>.Basic Functionality 1. <main step> 2. <main step> 3. <story #>. <story name> [<main step #>] <alternate name> a) <alternate step> b) c) use case resumes at <main step#> [<main step #>] <alternate name> a) <alternate step> b) c) use case terminates Agile RFP-12
Identity Level Create Volume: A Volume is entered into the system for the first time. The user is prevented from creating a duplicate volume. If the box and/or chart specified by the user do not already exist, the system will create them as a side effect. Pre-Condition nothing Success Failure Volume created (archived state) and associated with the specified Box, and Chart. Box / Chart is created if it did not exist previously. User name and date of action placed in audit log. nothing Agile RFP-13 Outline Level Create Volume: Pre-Condition Success Failure Story S1.Basic Functionality S2. User Input Validation Description 1. User enters volume information. 2. User requests that the information be saved. 3. System validates information. [F2. User Input Validation] 4. System saves information in a new Volume and places Volume in archived state. 5. System adds the Volume to the designated Box. 6. System adds the Volume to the designated Chart. 7. System records the transaction in the audit log [G1. Audit] [3] Duplicate Volume [3] Missing information Agile RFP-14
Detail Level Create Volume: Pre-Condition Success Failure Story Description S1.Basic Functionality... S2. User Input Validation [3] Duplicate Volume a) System detects another Volume with the same chart number, volume number and site. b) System informs the user of the error. c) Use case terminates. [3] Missing information a) System informs the user of the missing fields. Use case terminates. Agile RFP-15 Acceptance Test Level S1. Basic Functionality: Basic Success Test Pre conditions Box1 Chart1 Volume2 Process Parameters Box # 1 Chart # 1 Volume # 2 Patient Name Year Last Contact Archive Date Post conditions Volume2 Box1 Chart1 Exists, contains Volume1 Exists, contains Volume1 Does not exist <unique string> <ten years ago> <today> Exists with appropriate patient name, yr of last contact, archive date Contains Volume1 and Volume2 Contains Volume1 and Volume2 Agile RFP-16
Effort vs. Ambiguity Detail scenario Detail Scenario Test Case Test Case Test Case Test Case outline Detail scenario Test Case Effort Increases Ambiguity Decreases Estimate Accuracy Increases (for Complex Req s only) Agile RFP-17 Decision Tree Forces Choose target level of based on: Familiarity of the team with the domain Uniqueness of the requirement Complexity of the concepts Business criticality of the system / requirement Life / safety criticality of the system / requirement Agile RFP-18
Decision Tree Custom Dev t Id e n t it y L e v e l a. e n o u g h d e t a il? y e s n o O u t lin e L e v e l b. c o m p le x? n o y e s c. lif e / m is s io n c r it ic a l? n o D e t a il L e v e l y e s A c c e p t a n c e T e s ts L e v e l Agile RFP-19 Decision Tree Package Software Id e n tity L e v e l a. V e n d o r s u p p o rte d? y e s b. In d u s tr y S ta n d a r d? n o, (m u s t d e v e lo p ) O u tlin e L e v e l n o c. D e v e lo p e d B y? v e n d o r in h o u s e d. C a n w e e s t im a te? n o e. C rit ic a l / c o m p le x? y e s n o yes D e t a il L e v e l A c c e p t a n c e T e s ts L e v e l Agile RFP-20
Agile RFP Specification Process UC Identification outline tests Agile RFP-21 Agile RFP Specification Process UC Prioritization outline tests Agile RFP-22
Agile RFP Specification Process Target UC Detail outline tests Agile RFP-23 Agile RFP Specification Process Story Identification outline tests Agile RFP-24
Agile RFP Specification Process Story Prioritization outline tests Agile RFP-25 Agile RFP Specification Process Target Story Detail outline tests Agile RFP-26
Original RFP Specification Process 1. Sketch the system a) Find all user-goal use cases 2. Complete the requirements a) Write all use cases to full level of (main scenario and all alternate scenarios) Before vs. After Agile RFP Specification Process 1. Sketch the system a) Find all user-goal use cases b) Write use cases to Identity Level 2. Prioritize requirements 3. Assign target level of a) Develop decision tree b) Assign levels to use cases c) Anything > Identity Level taken to Outline Level d) Assign levels to stories 4. Complete the requirements a) Planning game i. Assign work to iterations ii. Prioritize stories if necessary iii. Velocity, yesterday s weather, spike b) Customer on-site c) Pair development Agile RFP-27 Goal: Increase the Agility of the RFP Process Sub-Goal Develop requirements to just enough Develop requirements just in time Improve the quality of the requirements Levels of Stories embedded in use cases Acceptance tests Decision tree Business value Accomplished By Planning game Iterative, incremental development Velocity Yesterday s weather Spike Pair Development On-site customer Agile RFP-28