Feature-Driven Development (FDD)

CSE4033 - IT Project Management | Module 4: Agile Project Management

Learning Outcomes

By the end of this section, you will be able to:

What is Feature-Driven Development?

Feature-Driven Development (FDD) is an iterative and incremental Agile software development methodology that focuses on delivering tangible, working software repeatedly in a timely manner. Key characteristics:

The Five Processes of FDD

1. Develop Overall Model

Create a high-level object model of the domain to establish a common understanding. Domain experts and developers collaborate to build class diagrams and sequence diagrams.

2. Build Feature List

Identify and categorize features that collectively make up the system. Features are small, client-valued functions expressed as: "action result by object" (e.g., "Calculate total for order").

3. Plan by Feature

Prioritize features, assign them to Chief Programmers, and schedule their implementation. Features are grouped into milestones based on business priorities and technical dependencies.

4. Design by Feature

For each feature, detailed design work is done by the Chief Programmer with their team. Sequence diagrams are created, and classes/methods are designed.

5. Build by Feature

Implement the feature according to the design. Includes coding, unit testing, code inspection, and promotion to the build. Each feature is completed before moving to the next.

Interactive Feature Planning

Feature List Development

Select features to see how they would be developed in FDD:

Calculate order total
Action: Calculate, Result: total, Object: order
Validate user credentials
Action: Validate, Result: credentials, Object: user
Generate monthly report
Action: Generate, Result: report, Object: monthly data
Notify shipping department
Action: Notify, Result: notification, Object: shipping department

Feature Details

FDD Roles and Practices

Key Roles in FDD

Project Manager

Overall project coordination, reporting, and resource management

Chief Architect

Responsible for overall design and technical coherence

Development Manager

Leads the day-to-day development activities

Chief Programmer

Experienced developers who lead feature teams

Class Owner

Developers responsible for specific classes

Domain Expert

Provides business knowledge and requirements

FDD vs. Other Agile Methods

Aspect FDD Scrum XP
Primary Focus Feature delivery Iterative delivery Technical excellence
Team Size Works well for large teams Best for small teams Small co-located teams
Process Formality More formal processes Less formal Least formal
Documentation More documentation Minimal documentation Very little documentation
Best For Large, complex projects Projects with changing requirements Quality-critical projects

Test Your FDD Knowledge

Feature-Driven Development Quiz

1. How are features typically expressed in FDD?

As user stories
As "action result by object"
As use cases
As epics

2. Which FDD process involves creating class diagrams and sequence diagrams?

Develop Overall Model
Build Feature List
Design by Feature
Build by Feature

3. What is the role of a Chief Programmer in FDD?

Manage the entire project
Lead a feature team through design and implementation
Create all the documentation
Handle customer communications

4. Which of these is NOT an advantage of FDD?

Scalability for large projects
Clear progress tracking
Minimal documentation requirements
Client-valued feature focus

Further Learning Resources