Feature Driven
Development
David J. Anderson
PM Microsoft Solutions Framework http://www.agilemanagement.net
Peter Coad
The Coad Method
Frequent,
Tangible,
Working Results with agreed function
Law
80% Psychology, 20%
Technology
Jeff De Luca http://www.agilemanagement.net/
Jon Kern,
Director of Consulting at Togethersoft stands in for Peter Coad at
Snowbird, Feb 2001
Kent Beck James Grenning
Mike Beedle Jim Highsmith
Arie van Bennekum Andrew Hunt
Alistair Cockburn
Ward Cunningham
Martin Fowler
Ron Jeffries
Jon Kern
Brian Marick
Robert C. Martin
Steve Mellor
Ken Schwaber
Jeff Sutherland
Dave Thomas http://www.agilemanagement.net/
Feature Driven Development (FDD)
• Highly Effective
But…
• No Time Tracking
• High Quality • No Gantt Charts
• Faster To Market
• No Task Tracking
• No Time on Task Estimates
• Team working
• No Overtime
• Productivity
– 2 to 10 fold improvement
• Quality improvement
– 3:1 to 2:100
Scary!!!
http://www.agilemanagement.net/
Marketing participates
MRD input
Carefully
Analyze
MRD
Prioritize and plan
Code development
Build code in small batches
1.Develop an
Overall
Model
Wide rather than deep
2.Build a
Feature
List
3.Plan
By
Feature
4.Design
By
Feature
5.Build
By
Feature
Deep rather than wide http://www.agilemanagement.net/
Engineering Lead Time
Marketing
Requirements Develop an
Overall
Model
Build
Feature
List
Plan
By
Feature
Design
By
Feature
Build
By
Feature
Finished
Code
Weekly
Integration
Build
Test
By
Feature
Bug Reports http://www.agilemanagement.net/
• Frequent, Tangible, Working Results
• A context for best practices
– Domain object modeling
– UI Flow Modeling
• (Statecharts or Visual Vocabulary)
– Feature teams
– Chief Programmer Work Packages
– Regular design and code review (by Feature
Team)
– Class (code) ownership
– Regular builds
– Configuration management (Promotion groups and Labeling)
– Visibility of results http://www.agilemanagement.net/
“Java Modeling in Color : Enterprise Components and Process”,
Coad, Lefebvre and De Luca, PTR-PH 1999 http://www.agilemanagement.net/
Courtesy Stephen R. Palmer totalValue() isComplete() isUrgent() assessPerformance() _findByIdNumber() totalUnitsAvailable() totalUnitsManufacture averageSalesOverPerio d() assessAccuray() isOfType() getValue() assessSpeed() isActive() assessAcrossRoles() listRolesPlayedBy() d() assessRoleAllowed() isSuspended()
• Instances of Archetypes share similar attributes
• Instances of Archetypes share similar methods http://www.agilemanagement.net/
• Tiny piece of client-valued functionality which can be delivered in less than 2 man weeks, typically 2 days
• 4 types of Features
– UI – User Interface
– PD (Problem Domain / Business Logic)
– SI (System Interface)
– DM (Data Management / Persistence)
• PD or SI Feature
– <action> <result> [of|to|from|for] <object>
– E.g. calculate the interest for the bank a/c http://www.agilemanagement.net/
Feature
List
Subject
Area
Subject
Area
Subject
Area
Feature Set
Feature Set
Feature Set
Feature Set
Feature Set
Feature Set
Feature Set
Feature Set
Feature Set
Individual
Features
A stockpile of inventory http://www.agilemanagement.net/
• Feature
– A method on the domain model
– 1 UML Sequence Diagram per Feature
• Feature Set
– Related to a <<moment-interval>> on the domain model
– All features in a set touch the same pink
• Subject Area
– Related to a chain of <<moment-interval>>s http://www.agilemanagement.net/
A different view of the
DNC showing the dynamic dependencies between classes.
Classes only hold dependencies to their immediate neighbors
The DNC is very loosely coupled http://www.agilemanagement.net/
http://www.agilemanagement.net/
http://www.agilemanagement.net/
http://www.agilemanagement.net/
Pinks and yellows are re-usable across multiple greens – the core Enterprise
Components
Greens and blues are re-usable across discrete Enterprise Applications modeled as sequences of pinks http://www.agilemanagement.net/
http://www.agilemanagement.net/Articles/Weblog/ArchitectureControlBoard.html
http://www.agilemanagement.net/
http://www.agilemanagement.net/Articles/Weblog/ArchitectureControlBoard.html
http://www.agilemanagement.net/
http://www.agilemanagement.net/Articles/Weblog/ArchitectureControlBoard.html
http://www.agilemanagement.net/
Create 1 UI Feature for each state with stereotype
<<View>>, <<Dialog>>,
<<Wizard>> etc.
Create 1 UI Feature for each distinct Event (not transition)
Maps directly to View and
Controller from MVC Type II pattern http://www.agilemanagement.net/
Jesse Garrett’s VV notation can be mapped to Statecharts and
MVC Type II pattrern
Some Ux people prefer VV as it was invented by a Ux person http://www.agilemanagement.net/
• Conceptual integrity of a class
• Consistent, concise class API
• Sense of satisfaction in ownership
• Scales better than collective ownership
• Combine with feature teams for best of both worlds http://www.agilemanagement.net/
• Dynamically formed per feature
– Only practical way to develop by feature and have class ownership
– Under guidance of a Chief Programmer
• Multiple minds on design
– Compare multiple options and chose the best
• All owners of relevant code in team
– Benefits of collective ownership
• Emphasizes teamwork
– Nobody finished until the feature team is finished http://www.agilemanagement.net/
http://www.agilemanagement.net/
• Chief Programmer Work Package
• A collection (or batch) of Features which can logically be grouped for development simultaneously, and can be delivered within 2 weeks or less
– i.e. each Feature must be less than 2 weeks and each CPW must be less than 2 weeks http://www.agilemanagement.net/
• FDD uses automated reporting
– Eliminates needs for annoying PMing
• Each Feature has 6 stages
– Requirement walkthrough, design, review, code & unit test, review, promote to build
• Each stage tracked through artifacts in version control system
• Progress is reported on a website http://www.agilemanagement.net/
220
200
180
160
140
120
100
80
60
40
20
0
10
-F eb
17
-F eb
Inventory
Coded
Lead Time
WIP
24
-F eb
2-
M ar
9-
M ar
Time
Started
Complete
16
-M ar
23
-M ar
Designed
Linear (Coded)
30
-M ar http://www.agilemanagement.net/
Device Management Ike II Cumulative Flow
240
220
200
180
160
140
120
100
80
60
40
20
0
10
-F eb
17
-F eb
24
-F eb
2-
M ar
9-
M ar
16
-M ar
23
-M ar
Time
Inventory Started Designed Coded Complete
30
-M ar http://www.agilemanagement.net/
Productivity is conservatively only
1/5 th of previous project
175
150
125
100
75
50
25
0
Time
Inventory Started Designed Coded Complete http://www.agilemanagement.net/
http://www.agilemanagement.net/
• Version Control uses Promotion Groups
• Head of build labeled “Dev”
– Class owner work in progress
• Feature Team Area
– Shared client, exclusive lock checkout
– Class Ownership insures integrity
• Integration Build labeled “Build”
– From the “promote to build” step in DBF-BBF
– Chief Programmer or Dev manager relabels approved revision of each class to “Build”
• Integration Build (Nightly/Weekly) runs against the
“Build” Label
• Promotion Groups and Class Ownership mean there is no need to branch & merge for each Feature
Team / Chief Programmer Work Package http://www.agilemanagement.net/
Selling
Products
(22)
CP-1
99%
Nov 2001
Shipping
Products
(19)
CP-1
10%
Dec 2001
Product Sale Management (PS)
CP-3
Delivering
Products
(10)
CP-1
Invoicing
Sales
(33)
CP-2
Setting up
Product
Agreements
(13)
30%
Dec 2001
3%
Dec 2001 Dec 2001
Customer A/C Mgmt (CA)
CP-2
Evaluating
Account
Applications
(23)
CP-2
Opening
New
Accounts
(11)
CP-2
Logging
Account
Transactions
(30)
95% 100% 82%
Oct 2001 Oct 2001 Nov 2001
KEY: Work In Progress Attention
CP-1
Making
Product
Assessments
(14)
75%
Dec 2001
CP-3
Establishing
Storage Units
(26)
Inventory Mgmt (IM)
CP-3
Accepting
Movement
Requests
(18)
CP-3
Moving
Content
(19)
100% 97% 82%
Nov 2001 Nov 2001 Nov 2001
Completed Progress Bar Not Started http://www.agilemanagement.net/
Business
Logic 1
Business
Logic 2
UI
Designer
Application
UI 1
Feeding
Buffer
UI Designer
Business
Logic 3
Application
UI 2
System
Interface 1
Integration
Product
Test
Project
Buffer
Start
Critical Chain with UI
Design as the CCR
End
• Schedule Tasks based on Feature Set groupings
• Buffers aggregated across many Features
• UI Designer as system constraint http://www.agilemanagement.net/
Business
Logic 1
Business
Logic 2
UI
Designer
Application
UI 1
Feeding
Buffer
UI Designer
Business
Logic 3
Application
UI 2
Cap
Buf
System
Interface 1
Integration
Product
Test
Project
Buffer
Business
Logic 1
Business
Logic 2
UI
Designer
Application
UI 1
Feeding
Buffer
UI Designer
Business
Logic 3
Application
UI 2
System
Interface 1
Integration
Product
Test
Project
Buffer
Start Project 1 Start Project 2 End Project 1
• Multi-project scheduling works equally well
• UI Designer as synchronizing constraint
End Project 2 http://www.agilemanagement.net/
http://www.agilemanagement.net/
http://www.agilemanagement.net/
http://www.agilemanagement.net/
http://www.agilemanagement.net/
http://www.agilemanagement.net/
David J. Anderson dja@agilemanagement.net
http://www.agilemanagement.net/ http://www.agilemanagement.net/