In large-scale software development, delegation is necessary to orchestrate and successfully implement all the features that a client requests. For this reason, some teams choose a methodology that focuses and delegates on the features of the application.

Assumptions

  • Understanding of SDLC phases.
  • Knowledge of agile.
  • Familiarity with waterfall is a plus!

What is Feature Driven Development?

Feature-driven development (FDD) is an iterative approach to software development that adopts an agile methodology. The core focus of FDD is to build a working product around the features, which are analogous to items in the backlog in a Scrum setting; "tasks" might be a more descriptive word for both.

Features

A formal definition of a feature in the context of FDD is any client-valued function that takes on the expression of {action} {result} {object}. For instance; "enable the account of a new user" takes on the form "{enable} {the account} of a {new user}".

FDD Overview

Feature Driven Development follows five steps to implement software projects:

  1. Develop Overall Model: In the beginning phase of the project, a high-level design document is created by individuals who are experts in their domain, along with the development team.
  2. Build Feature List: From the overall model, a list of features as defined above is produced that are intended to take no more than two weeks to achieve. If a feature is slated to take more time than this, usually it can be broken down into more features.
  3. Plan by Feature: Once the feature list is built, the features are organized into a development plan that details who will be implementing what features, and what order the features will be implemented in.
  4. Design by Feature: Taking a handful of features, the chief programmers create sequence diagrams for each feature that outlines the interactions between processes. Once this is complete, the designs are reviewed. Generally, when picking features, the team will be vigilant to keep the total time less than two weeks.
  5. Build by Feature: Now that all features have been thoroughly designed, the development team programs the features. Once the features have been implemented, they are tested, and the code is inspected. From here, a successful inspection will result in the feature being inserted into the main software project.

> Some developers may observe that this process represents a midpoint between the waterfall model and agile practices.

Advantages of FDD

  • Works well for large projects that contain rolling updates.
  • The process is simple compared to other agile methodologies.
  • Makes use of industry-standard development methods, making for a simple learning curve.

Disadvantages of FDD

  • May not be effective for small team sizes; FDD is a methodology that leverages larger team sizes to delegate the workload.
  • Less documentation that can lead to faster development in some cases, although risky projects may fall prey here as there may be unclarified details that other models might produce.
  • Places high dependency on the competence of the chief programmers and lead staff. Additionally, a skilled development team is also needed as there is less management in this model than other's like scrum might have.