Feature-driven Development

CategoryIterative Development Methodology

Feature-driven Development blends a number of industry-recognized best practices driven from a client-valued feature perspective. Its main purpose is to guide project teams to deliver tangible, working and compelling software repeatedly in a timely manner.


Methodology Overview


Design by Feature, Build by Feature

Feature-driven Development (FDD) is a lightweight, iterative and incremental software development process for projects of any scale. It suggests to plan for results, measure them according to criteria, evaluate the progress in a believable way, and demonstrate a working product to customers and stakeholders.

The model-driven, short-iteration process consists of five basic activities, each having pre-defined entry and exit criteria to allow progress through the lifecycle efficiently, and expecting tangible outputs:

  • Develop Overall Model — conduct a walkthrough of the scope and assemble a multi-domain model.
  • Build Feature List — identify a list of features by functionally decomposing domains into subject areas.
  • Plan by Feature — produce a delivery plan and assign ownership of features to lead developers.
  • Design by Feature — work out detailed sequence diagrams for each feature and refine the model.
  • Build by Feature — develop code realizing features, complete unit testing and inspect the code.

Since features are small, completing a feature is a relatively quick task. For accurate state reporting and keeping track of the software development project, it is important to mark the progress made on each feature. FDD defines six milestones per feature that are to be completed sequentially: domain walkthrough, design and design inspection (design activity); code, code inspection and promotion to build (build activity).

The release manager meets with lead developers weekly, captures the status of their features, and issues a progress report. A consolidated report for upper management and client representatives is produced monthly, reflecting a percentage complete for each major feature set, as well as included ones.

feature

With FDD, the clients see plans with milestones and frequent results that they understand.

A small, measurable, client-valued feature is a tiny building block for planning, reporting and tracking, such that be implemented in two weeks or less.

An informal feature list is assembled first, while developing the overall model, and later grouped into feature sets and their hierarchies for delivery planning and task assignment.