Definition

feature-driven development (FDD)

What is feature-driven development (FDD)?

Feature-driven development (FDD) is an Agile software development framework that organizes work around product features. FDD is known for its short iterations and frequent releases. Like Scrum -- another Agile software development framework -- FDD requires the customer, also known as the project business owner, to attend the initial design meeting and iteration retrospectives.

By releasing new features in an incremental fashion, developers can prioritize client requests, respond to requests in a timely manner and keep clients satisfied. To achieve this, developers map out what features they can create, break complex requests into a series of smaller feature sets and then create a plan for how to complete each goal over time.

Jeff De Luca and Peter Coad are credited with developing the concept of FDD as they worked on a banking project in Singapore in 1997. Feature-driven development is ideal for projects that have large development teams, follow predefined standards and require quick releases. This methodology is not well suited for projects that are small and highly dependent on the skill sets of specific lead developers.

Steps of feature-driven development

Feature-driven development is made up of five basic process steps or phases:

  1. Develop a model. The overall model is created by the chief architect, or another professional leading the project, by identifying the scope and context of the system.
  2. Build a list of features. Developers brainstorm a list of potential items that would be useful to users and could be completed along a set timeline for release. Each feature should be manageable within a time frame of around two weeks.
  3. Plan out each feature. Features are organized by how long they take to create and how important they are to the client. Ownership of each feature is also assigned.
  4. Design each feature. The details of each feature are produced, inspected and finalized.
  5. Build each feature. After the design is improved, the completed feature is added to the official build for delivery to the client.
Graphic depicting the steps of Agile
FDD focuses the Agile software development cycle on specific application features.

Best practices for feature-driven development

To achieve the highest level of success, FDD is built around overall software engineering best practices, including the following:

  1. Identify the domain object model, or the scope of the problem that needs to be solved, to help with the framework for feature development.
  2. Break down complex features into smaller functions and subsets.
  3. Assign features to a single owner to ensure consistency and code integrity.
  4. Build dynamic and diverse feature teams to collect multiple design options.
  5. Perform routine code inspections of each feature before implementation into the main build.
  6. Enforce project visibility with frequent, accurate progress reports during all steps.
This was last updated in April 2024

Continue Reading About feature-driven development (FDD)

Dig Deeper on Agile, DevOps and software development methodologies