Feature Driven Development (FDD)

advertisement

Feature Driven

Development

David J. Anderson

PM Microsoft Solutions Framework http://www.agilemanagement.net

Singapore Story

Peter Coad

The Coad Method

Frequent,

Tangible,

Working Results with agreed function

Law

80% Psychology, 20%

Technology

Jeff De Luca 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

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/

FDD is Powerful

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/

FDD – an agile methodology

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 process

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/

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() 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/

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

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/

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

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/

Achieving Smooth Flow

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/

Ragged Flow

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/

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

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/

Advanced Scheduling with Critical

Chain

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/

Multi-project Schedule

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/

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 dja@agilemanagement.net

http://www.agilemanagement.net/ http://www.agilemanagement.net/

Download