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
- The five stages of Feature-Driven Development
- Advantages of Feature-Driven Development
- Disadvantages of Feature-Driven Development
- Key takeaways
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.
- 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.
Main Free Guides: