Feature Driven Development (FDD): The Beginner's Guide

Among the various agile methodologies, there is a little-known one: feature-driven development (FDD) or feature-based development in French.
This method is ideal for large and complex projects where the amount of work cannot be managed effectively with a Scrum method. It is suitable for long-term projects that change regularly and to which new functionalities are added through regular and predictable iterations.
Definition
Feature driven development (FDD) is an agile methodology whose particularity is to organize software development around the realization and progression of functionalities. Following the agile philosophy, the idea is to work in short iterations (one to two weeks) and to produce a functional deliverable at the end of each iteration. If a feature cannot be completed in two weeks, it should be divided into smaller, more manageable features.
From small teams to large multidisciplinary teams, the FDD method is highly scalable because it is designed to always focus on the needs and requirements of the customer.
Feature-driven development takes place in five stages, which ensures consistency in project development and allows new team members to upgrade much more quickly.
Origin of the FDD method
The feature-driven development method was developed by Jeff De Luca in order to meet the specific needs of a major software development project (15 months and a team of 50 people) for a Singaporean bank in 1997.
The objective was to help his team be more responsive and able to adapt to the needs of the client. To do this, he created a five-stage development model that focuses on developing features in short iterations.
How does it work?
The FDD method follows a five-phase development process.
1. Develop a global model
During this first step, you must define the main lines of your domain model, that is to say the problem that your software development project will solve. The team works closely with the Chief Architect to define the scope and context of the system.
Several domain models are created (for each modeling domain) by different small groups, and then the selected ones are merged to form a global model.
2. Establishing a list of functionalities
The list of features corresponds to the Scrum method product backlog. Here, you need to identify which software functions are important to the customer. These functionalities can be formulated as actions, results, or objects. For example, “calculate the total amount of a customer's basket” or “validate a user's password” are functionalities.
Each feature should take no more than two weeks to develop, otherwise it should be broken down into smaller features.
3. Plan based on features
This step allows you to plan the order in which each feature will be developed and implemented. As with any project, you must take into account the potential risks, the dependencies between the various tasks, the workload of your collaborators as well as any other obstacles that may hinder the smooth running of the project.
Then, assign the functionalities to the most competent people (programmers) so that they can complete them on time.
4. Design by features
The lead programmer determines which features will be designed during two-week iterations. He is also the one who defines priorities and designates the members of the team who will be involved. Before moving on to the next iteration, the entire team reviews the feature design.
5. Building from features
In this stage, all the elements that accompany the design of the feature are realized. The user interface is created, and a prototype of the feature is built and tested. If the test is successful and the functionality is validated, its final version is then added to the software and it becomes available to customers.
Advantages and disadvantages
The FDD method has various advantages.
- As an agile method, it is an approach that focuses on the end user.
- Its simple five-step process allows for faster product development.
- Dividing features into small, regular iterations makes it easier to track and correct errors, reduces risks, and allows customer needs to be responded to quickly.
- The method allows large teams to move forward with the project by building on a series of successes.
- Teams have a good understanding of the context and scope of the project, and they are progressing more quickly thanks to predefined development standards.
However, like all methods, FDD also has its weaknesses.
- It is not suitable for small projects.
- This method relies heavily on one person: the lead programmer. This person must play multiple roles (coordinator, lead designer, and mentor to new team members), which, in a large and complex project, can increase the risk of making mistakes.
- Very little written documentation is provided to the customer.
- FDD does not work very well with systems that are already in place. It is best to start from scratch.
Conclusion
If you hesitate between several agile methods, know that feature-driven development will suit you if you are part of a large company and you work on large and complex software development projects that extend over the long term. By focusing on features, you'll be able to respond to customer needs more quickly, and you'll be more effective in identifying and correcting issues that may arise.
However, note that it is important that this method corresponds to the culture of your company in order to be more easily adopted by your employees.
Source: https://www.lucidchart.com/blog/why-use-feature-driven-development



