FEATURE DRIVEN DEVELOPMENT By: John Bonjean Overview • History • Definition • Key Concepts • Process • Reporting • Pros • Cons History • 1997 • Jeff De Luca • Peter Coad • Singapore Bank • Large Scale Software Project • Create alternative to Waterfall process Feature Driven Development (FDD) • Agile Process • Incremental • Short Iterations • Model-Driven • Five Processes • Feature Agile Process Why FDD? • Emphasizes quality • Deliver frequent tangible results • Visible reporting • Communication • Decomposes problem • Distance between analysis and test phase reduced • Developing by feature Feature • Small client valued function • Implemented 10 days • Template • <action>the <result><by/for/of/to><a/an><object> • Example • Calculate the total of an account • Display the total of a balance Feature Set • Group of Business Related Features • <action><-ing><a/an><object> • Example • Creating an account • Features • Calculate the total of an account • Display the total of an account Feature Teams • Chief Programmer • Temporary 2-week team • Members can be in multiple teams Feature Team 1 Feature Team 2 Class Ownership • Individual class ownership • Sense of ownership • Local consistency • Quicker changes • Local expert Roles • Project Manager • Chief Architect • Development Manager • Chief Programmers • Class Owners (Developers) • Domain Experts Supporting Roles • Release Manager • Language Guru • Build Engineer • Toolsmith • System Administrator Process Development • Lightweight • Well-defined • Simple Creates • Repeatable success • Scalability to larger projects • Result focus rather than process micro-stepping • Shorter learning curve FDD Process Template ETVX • Entry Criteria • Tasks • Name • Teams involved • Optional/required • Description • Verification • Exit criteria Startup Phase Five Processes Develop an Overall Model • Develop an Overall Model • Build a Features List Build Feature List • Plan By Feature • Design By Feature • Build By Feature Plan By Feature Construction Phase Design By Feature Build By Feature 1. Develop an Overall Model • Entry • Domain experts, Chief Programmers, Chief Architect selected • Tasks • Form modeling team • Domain walk-through • Develop the model • Verification • Internal and external Assessment • Exit • Object Model created 2. Build a Features List • Entry • Domain experts, Chief Programmers, Chief Architect selected • Tasks • Form feature list team • Build Feature List • Verification • Internal and external Assessment • Exit • Features List Created 3. Plan By Feature • Entry • Features List completed • Tasks • Form the Planning Team • Determine the Development Sequence • Assign Business Activities to Chief Programmers • Assign classes to Developers • Verification • Self Assessment • Exit • Development plan 4. Design By Feature • Entry • Planning process completed • Tasks • Form feature team • Domain walk-through • Develop sequence diagrams • Refine the object model • Write class/method prologues • Verification • Design inspection • Exit • Successful design package 5. Build By Feature • Entry • Design package created • Tasks • Implement classes and methods • Code inspections • Unit test • Promote to build • Verification • Code inspections • Unit test • Exit • Completion of client valued feature FDD Model Track by Feature • Feature Progress • Processes 4,5 • Design by Feature (DBF) • Domain walkthrough (1%) • Design (40%) • Design Inspection (3%) • Build by Feature (BBF) • Code (45%) • Code Inspection (10%) • Promote to Build (1%) DBF BBF Parking Lot Report Parking Lot Report Feature Set Pros • Adaptable to large projects • Progress tracking/reporting • Frequent tangible results • Class ownership • Concise processes • Emphasizes quality • Just enough design initially Cons • Not as powerful on smaller projects • High reliance on chief programmer • No written documentation Conclusion • Agile process • Five processes • Develop an Overall Model • Build a Features List • Plan By Feature • Design By Feature • Build By Feature • Feature driven • Produces frequent tangible results Questions?