310 likes | 556 Views
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).
E N D
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 totalofanaccount • Display the totalofabalance
Feature Set • Group of Business Related Features • <action><-ing><a/an><object> • Example • Creatinganaccount • Features • Calculate the totalofanaccount • Display the totalofanaccount
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 • Repeatable success • Scalability to larger projects • Result focus rather than process micro-stepping • Shorter learning curve Creates
FDD Process Template ETVX • Entry Criteria • Tasks • Name • Teams involved • Optional/required • Description • Verification • Exit criteria
Five Processes Startup Phase Develop an Overall Model • Develop an Overall Model • Build a Features List • Plan By Feature • Design By Feature • Build By Feature Build Feature List 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
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%) BBF DBF
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