0% found this document useful (0 votes)
34 views41 pages

AM FDDOverview AgileVancouver

This document provides an overview of Feature Driven Development (FDD) including its key practices and processes. FDD is an agile methodology that involves prioritizing features, developing features in small batches, modeling the domain, feature teams, and frequent integration and delivery of working results.

Uploaded by

varshe
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
34 views41 pages

AM FDDOverview AgileVancouver

This document provides an overview of Feature Driven Development (FDD) including its key practices and processes. FDD is an agile methodology that involves prioritizing features, developing features in small batches, modeling the domain, feature teams, and frequent integration and delivery of working results.

Uploaded by

varshe
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 41

Feature Driven

Development

David J. Anderson
PM Microsoft Solutions Framework
http://www.agilemanagement.net
Singapore Story

Peter Coad

The Coad Method


Frequent,
Tangible,
WorkingOn-time,
Results on-budget
with agreed stfunction
De Luca’s 1 Law
80% Psychology, 20% Jeff De Luca
Technology
http://www.agilemanagement.net/
FDD in the Agile Community

Jon Kern,
Director of Consulting
at Togethersoft stands
in for Peter Coad at
Snowbird, Feb 2001

Kent Beck James Grenning Robert C. Martin


Mike Beedle Jim Highsmith Steve Mellor
Arie van Bennekum Andrew Hunt Ken Schwaber
Alistair Cockburn Ron Jeffries Jeff Sutherland
Ward Cunningham Jon Kern Dave Thomas
Martin Fowler Brian Marick

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

Wide rather Deep rather


than deep than wide

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

“Java Modeling in Color : Enterprise Components and Process”,


Coad, Lefebvre and De Luca, PTR-PH 1999

http://www.agilemanagement.net/
Behavior of Colors Courtesy Stephen R. Palmer

totalValue() assessPerformance()_findByIdNumber() totalUnitsAvailable()


isComplete() salesMadeInPeriod()_findByName() totalUnitsManufacture
isUrgent() averageSalesOverPerio d()
d() isOfType() assessRoleAllowed()
assessAccuray() getValue()
assessSpeed() assessAcrossRoles()
isActive() listRolesPlayedBy()
isSuspended()

• Instances of Archetypes share similar attributes


• Instances of Archetypes share similar methods

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

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/
Modeling UI Flow (Statecharts)
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/
Modeling UI Flow (Visual Vocabulary)

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/
Class (code) ownership

• 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/
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

• 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/
Reporting Progress

• 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/
Cumulative Flow Diagram

220
200
180
160
140 Lead Time
Features

120
100
80
60
40
20
0
WIP

Time

Inventory Started Designed


Coded Complete Linear (Coded)

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

Inventory Started Designed Coded Complete

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

Selling Shipping Delivering Invoicing Setting up Making


Products Products Products Sales Product Product
Agreements Assessments
(22) (19) (10) (33) (13) (14)

99% 10% 30% 3% 75%

Nov 2001 Dec 2001 Dec 2001 Dec 2001 Dec 2001 Dec 2001

Customer A/C Mgmt (CA) Inventory Mgmt (IM)


CP-2 CP-2 CP-2 CP-3 CP-3 CP-3
Evaluating Opening Logging Establishing Accepting Moving
Account New Account Storage Units Movement Content
Applications Accounts Transactions Requests
(23) (11) (30) (26) (18) (19)

95% 100% 82% 100% 97% 82%

Oct 2001 Oct 2001 Nov 2001 Nov 2001 Nov 2001 Nov 2001

KEY: Work In Progress Attention Completed Progress Bar Not Started

http://www.agilemanagement.net/
Advanced Scheduling with Critical
Chain
Business Business Application Feeding
Logic 1 Logic 2 UI 1 Buffer

UI
Designer

UI Designer

Business Application System Product Project


Integration
Logic 3 UI 2 Interface 1 Test Buffer

Critical Chain with UI


Design as the CCR
Start End
• Schedule Tasks based on Feature Set groupings
• Buffers aggregated across many Features
• UI Designer as system constraint

http://www.agilemanagement.net/
Multi-project Schedule
Business Business Application Feeding
Logic 1 Logic 2 UI 1 Buffer

UI
Designer

UI Designer

Business Application System Product Project


Integration
Logic 3 UI 2 Interface 1 Test Buffer

Cap
Buf

Business Business Application Feeding


Logic 1 Logic 2 UI 1 Buffer

UI
Designer

UI Designer

Business Application System Product Project


Integration
Logic 3 UI 2 Interface 1 Test Buffer

Start Project 1 Start Project 2 End Project 1 End Project 2

• Multi-project scheduling works equally well


• UI Designer as synchronizing constraint
http://www.agilemanagement.net/
Project Overview

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/

You might also like