Feature-Driven Development In A Nutshell

Feature-Driven Development is a pragmatic software process that is client and architecture-centric. Feature-Driven Development (FDD) is an agile software development model that organizes workflow according to which features need to be developed next.

Understanding Feature-Driven Development

Feature-Driven Development is client and architecture-centric where the term “client” equates to the project stakeholders of Agile Modeling (AM) and the customers of eXtreme Programming (XP). The model was created in 1997 by Jeff De Luca, who used FDD principles in a 15-month software development project for a Singaporean bank.

As the name suggests, features are an integral facet of FDD. However, features are not confined to the commonly associated attributes of products or services. Instead, features in the context of FDD are more closely related to the user stories of Scrum. 

Examples of such features include:

  • “Validate the user password.”
  • “Calculate the total value of a sale.”
  • “Complete the user login process.”

The five stages of Feature-Driven Development

While Scrum and XP advocate an iterative approach to software development, FDD requires project teams to follow a suite of engineering best practices. 

Following is a look at each of the five stages of activity that incorporate these practices.

1 – Develop an overall model

Initially, project team members must collaborate to propose a model for the domain area. It’s important to focus on the shape and scope of the model. It should capture the vision of the product but not contain any detailed or specific content. 

Teams may choose to focus on the target audience, context, mission, and content structure. They may also form preliminary thoughts around UX and UI.

2 – Build a feature list

With the insights gained from the first stage, the team must create a list of features by splitting the domain model into subject areas. In turn, subject areas containing feature groups are then split into a discrete list of features to be prioritized. 

As we have noted, features in the FDD methodology tend to be small pieces of client-valued functionality as opposed to specific product features. 

3 – Plan by feature

Next, prioritize the list of features and assign each to a two-week timebox of work called an iteration. 

Where possible, plan a whole feature group for a specific iteration and then assign the development and testing activities for that iteration according to the feature.

4 – Design by feature

In the fourth stage, it is finally time to begin designing collaboratively. Here, the chief programmer should select the features to be developed while also identifying the domain classes.

Detailed sequence diagrams for each feature should also be developed to refine the model.

5 – Building by feature

The final stage involves pulling everything together and sending a feature prototype to QA for testing. If successful, the completed version can be added to the main product and the project team can move to the next feature.

Advantages of Feature-Driven Development

Some of the more noteworthy advantages of FDD include:

  • Minimizing complexity. The FDD approach is ideal for large and complex projects because it breaks them down into smaller components that can be delivered relatively quickly. As a result, FDD is ideal for teams who consistently fall behind schedule.
  • Fewer meetings. Many project teams find the meeting-centric nature of some agile practices tiresome. Since FDD relies on documentation to communicate, teams can spend more time working on concrete, actionable steps.
  • Scalable. FDD projects grow as a company grows. By developing small feature sets in one to two-week iterations, development occurs at a consistent pace so that progress is maintained and new employees are brought up to speed efficiently.

Disadvantages of Feature-Driven Development

While feature-driven development is a great starting point to speed up the development process by simplifying complex projects and reducing their complexity, it can also have major drawbacks. A company might lose sight of its customers and instead only think in terms of features. Indeed, a good product should always start with the customer in mind. Therefore, a feature-driven development approach combined with other frameworks like user journeys and customer mapping experience might help make the whole development process much better.

Perceptual mapping is the visual representation of consumer perceptions of brands, products, services, and organizations as a whole. Indeed, perceptual mapping asks consumers to place competing products relative to one another on a graph to assess how they perform with respect to each other in terms of perception.
Value stream mapping uses flowcharts to analyze and then improve on the delivery of products and services. Value stream mapping (VSM) is based on the concept of value streams – which are a series of sequential steps that explain how a product or service is delivered to consumers.
Empathy mapping is a visual representation of knowledge regarding user behavior and attitudes. An empathy map can be built by defining the scope, purpose to gain user insights, and for each action, add a sticky note, summarize the findings. Expand the plan and revise.

Key takeaways

  • Feature-Driven Development is an agile framework that organizes software development around product features.
  • Feature-Driven Development is built on a foundation of five engineering best practices. These practices help project teams maintain a focus on discrete features with respect to the project lifecycle.
  • Feature-Driven Development is ideal for large and complex projects where there is a tendency to fall behind schedule. It is also scalable in the sense that FDD projects can easily accommodate extra staff as the company grows.

Read Next: Business AnalysisCompetitor Analysis, Continuous InnovationAgile MethodologyLean StartupBusiness Model InnovationProject Management.

Main Free Guides:

Scroll to Top