AM FDDOverview AgileVancouver
AM FDDOverview AgileVancouver
Development
David J. Anderson
PM Microsoft Solutions Framework
http://www.agilemanagement.net
Singapore Story
Peter Coad
Jon Kern,
Director of Consulting
at Togethersoft stands
in for Peter Coad at
Snowbird, Feb 2001
http://www.agilemanagement.net/
FDD is Powerful
Feature Driven Development (FDD)
But…
• Highly Effective • No Time Tracking
• • No Gantt Charts
High Quality
• No Task Tracking
• Faster To Market
• No Time on Task Estimates
• Team working
• No Overtime
• Productivity
– 2 to 10 fold improvement
Scary!!!
• Quality improvement
– 3:1 to 2:100
http://www.agilemanagement.net/
FDD – an agile methodology
Marketing Carefully Prioritize and plan Build code
participates Analyze Code development in small
MRD input MRD batches
1.Develop
2.Build a 3.Plan 4.Design 5.Build
an
Feature By By By
Overall
List Feature Feature Feature
Model
http://www.agilemanagement.net/
Engineering process
Engineering Lead Time
Marketing
Requirements Develop
Build Plan Design Build
an
Feature By By By
Overall
List Feature Feature Feature
Model
Test
By
Feature
Finished Weekly
Code Integration
Build
Bug Reports
http://www.agilemanagement.net/
Practices in FDD
• 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/
Domain Modeling Drives FDD
http://www.agilemanagement.net/
Behavior of Colors Courtesy Stephen R. Palmer
http://www.agilemanagement.net/
Definition of a Feature
• 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/
FDD – How it works
Feature Set Individual
Features
Subject Feature Set
Area
Feature Set
Feature Set
Feature Subject Feature Set
List Area
Feature Set
Feature Set
Subject Feature Set
Area
Feature Set
A stockpile of
inventory
http://www.agilemanagement.net/
Relating Features to the Model
• 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/
Law of Demeter
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/
LoD Compliant Sequence Diagram
http://www.agilemanagement.net/
Wrong – not LoD Compliant
http://www.agilemanagement.net/
Postponed Component Definition
http://www.agilemanagement.net/
Re-usable Enterprise Components
Pinks and yellows are re-usable across
multiple greens – the core Enterprise
Components
http://www.agilemanagement.net/
Modeling UI Flow (Visual Vocabulary)
http://www.agilemanagement.net/
Class (code) ownership
http://www.agilemanagement.net/
Feature teams
• 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/
Definition of a CPWP
http://www.agilemanagement.net/
Reporting Progress
http://www.agilemanagement.net/
Cumulative Flow Diagram
220
200
180
160
140 Lead Time
Features
120
100
80
60
40
20
0
WIP
Time
http://www.agilemanagement.net/
Achieving Smooth Flow
Device Management Ike II Cumulative Flow
240
220
200
180
160
Features
140
120
100
80
60
40
20
0
b b b ar ar ar ar ar
Fe Fe Fe M M M M M
10
-
17
-
24
- 2- 9- 16
-
23
-
30
-
Time
Inventory Started Designed Coded Complete
http://www.agilemanagement.net/
Ragged Flow
Productivity is conservatively only
Project B Cumulative Flow
1/5th of previous project
175
150
Features
125
100
75
50
25
0
6-Nov
20-Nov
15-Jan
29-Jan
1-Jan
11-Mar
12-Feb
26-Feb
9-Oct
23-Oct
18-Dec
4-Dec
Time
http://www.agilemanagement.net/
Scope Creep & Dark Matter
http://www.agilemanagement.net/
Configuration Management
• 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/
Parking Lot Chart
Product Sale Management (PS)
CP-1 CP-1 CP-3 CP-1 CP-2 CP-1
Nov 2001 Dec 2001 Dec 2001 Dec 2001 Dec 2001 Dec 2001
Oct 2001 Oct 2001 Nov 2001 Nov 2001 Nov 2001 Nov 2001
http://www.agilemanagement.net/
Advanced Scheduling with Critical
Chain
Business Business Application Feeding
Logic 1 Logic 2 UI 1 Buffer
UI
Designer
UI Designer
http://www.agilemanagement.net/
Multi-project Schedule
Business Business Application Feeding
Logic 1 Logic 2 UI 1 Buffer
UI
Designer
UI Designer
Cap
Buf
UI
Designer
UI Designer
http://www.agilemanagement.net/
Feature List
http://www.agilemanagement.net/
Subject Area
http://www.agilemanagement.net/
Feature Set
http://www.agilemanagement.net/
Chief Programmer Worksheet
http://www.agilemanagement.net/
Contact Details
David J. Anderson
[email protected]
http://www.agilemanagement.net/
http://www.agilemanagement.net/