Agile Processes • Waterfall • Traditional • With prototyping • Sprial • Agile • • • • 1 Dynamic Systems Development Method (DSDM) Scrum Crystal eXtreme Programming (XP) Waterfall Spiral Agile Emphasizes: -Simplicity -Traceability -Risk management -Exploring alternatives -Flexibility -Immediacy Weakness: Requirement/design mistakes can be costly Exploring alternatives can be costly Continual rework can be costly Style: -Highly controlled -High ceremony -Moderately controlled -Moderate ceremony -Rapid & organic -Low ceremony Some definitions -“traceability”: relationships between requirements and system elements are documented -“immediacy”: getting some sort of working system to the customer as fast as possible -“rework”: redesigning the architecture and/or refactoring the program code -“controlled”: conformance to process is highly valued, even if it slows a project down -“ceremony”: how much analysis, documentation, and planning is involved 2 When to choose what • Waterfall: good for smaller systems where requirements can be fully understood before design and implementation • Spiral: good for larger systems with vague requirements and many alternatives for designing and coding • Agile: good for systems where you can rapidly create something very small but useful and then expand from there 3 Agile Manifesto • Individuals and interactions over processes and tools • Working software over comprehensive documentation • Customer collaboration over contract negotiation • Responding to change over following a plan 4 Agile Processes evaluate & control risk Customer provides short requirements Operation Prioritize requirements and plan Write/run/modify unit tests Implement System and acceptance tests 5 Iterations • Purpose • Iterative gives you a few “oh drat”s instead of one OMG at the end. • Timing • Scrum: 1 month • XP: 1-2 weeks • Grouping • Iterations can be grouped into releases • Not ever iteration results in a new release • Sub-dividing • Each iteration has “micro-iterations” 6 Principles of DSDM (Dynamic Systems Development Method) • Active user involvement is imperative • The team must be empowered to make decisions • Fitness for business purpose is the essential criterion for accepting deliverables • Requirements are specified at a high level • Focus on frequent delivery of products 7 Principles of DSDM (cont..) • Iterative and incremental development necessary to converge on a solution • All changes during development are reversible • Testing is integrated throughout life cycle • Collaboration and cooperation is essential 8 Key Practices of DSDM • Ambassador users and facilitated workshops • Users on-call and users en-masse (respectively) • Stages of iterations: • • • • • 9 Pre-project exploratory phase (kick around ideas) Feasibility study (explore if ideas are doable) Business study (explore if ideas worth doing) Model, design, implement (a “timebox” of work) Post-project phase (what went well and what didn’t?) Principles of XP (Extreme Programming) • Communication- It’s good to talk with customer and between developers • Simplicity- Keep it simple and grow the system (and models) when required • Feedback- Let users provide feedback early and often • Courage- Speak the truth, with respect 10 Practices of XP • • • • • • • 11 Whole team Metaphor The planning game Simple design Small releases Customer tests Pair programming • • • • • • Test-driven development Design improvement Collective code ownership Continuous integration Sustainable pace Coding standards Practices of XP • Whole team- Customer is part of team • Metaphor- Design around a coherent idea • The planning game- Be realistic re: meeting customer needs • Simple design- Simple models, architecture, code 12 Practices of XP • Small releases- Meet customer needs in small increments • Customer tests- Customer participates in testing • Pair programming- All code written with “co-pilot” • Test-driven development- Write tests first, then code 13 Practices of XP • Design improvement- Refactor only as needed • Collective code ownership- Anyone can modify any code • Continuous integration- Regularly check if system on track • Sustainable pace- No all-nighters, no superheroes • Coding standards- Pick a format, use it, move on 14 Agile Processes evaluate & control risk Customer provides short requirements Operation Prioritize requirements and plan Write/run/modify unit tests Implement System and acceptance tests 15 Agile Processes evaluate & control risk Prioritize requirements and plan Customer provides short requirements collect user stories Operation Write/run/modify unit tests Implement System and acceptance tests 16 Agile Processes estimate effort evaluate & control risk Customer provides short requirements Operation divide stories into tasks Prioritize requirements and plan Write/run/modify unit tests Implement System and acceptance tests 17 Agile Processes evaluate & control risk Customer provides short requirements customer selects stories allocate work among team Operation Prioritize requirements and plan Write/run/modify unit tests Implement System and acceptance tests 18 Agile Processes evaluate & control risk Prioritize requirements and plan Customer provides short requirements Write/run/modify unit tests Operation write unit tests System and acceptance tests 19 Implement Agile Processes evaluate & control risk Customer provides short requirements Operation Prioritize requirements and plan Write/run/modify unit tests Implement System and acceptance tests 20 write and refactor code Agile Processes evaluate & control risk Customer provides short requirements Operation Prioritize requirements and plan Write/run/modify unit tests Implement System and acceptance tests 21 customer tests system Agile Processes evaluate & control risk Customer provides short requirements Operation Prioritize requirements and plan Write/run/modify unit tests customer uses system Implement System and acceptance tests 22 Agile Processes estimate effort evaluate & control risk Customer provides short requirements divide stories into tasks collect user stories customer selects stories allocate work among team Operation Prioritize requirements and plan Write/run/modify unit tests write unit tests customer uses system System and acceptance tests 23 customer tests system Implement write and refactor code Concerns About XP • Constant refactoring can be expensive • Pair programming can take extra effort • XP is not very standardized • Programmers don’t always specialize 24 Lessons from DSDM and XP • Learn from: • Users (DSDM) • Customers (XP) • Design based on: • Business value (DSDM) • Customer direction (XP) • Requirements should be: • High-level (DSDM) • Succinct (XP) 25 Next Steps.. • HW #4 (Design) due Friday!! • Vision statement peer review next Tuesday!! • Bring hard copy of rough draft • Don’t forget your midterm!! • Due 11/25 26