What is Feature Driven Development (FDD)?
June 22, 2021 Max 4min read
Feature Driven Development
Feature Driven Development Definition:
“FDD or feature driven development is a model that is agile and incremental in nature. It focuses on pushing the features of the software development cycle toward progress.
Because of constant releases of features, developers can deliver client requests on time, keeping them satisfied throughout the development.”
Feature driven development (FDD) is an agile model that follows an iterative software development approach. As the name suggests, it is the feature driven method that aligns the product creation’s progress with feature progress. FDD focuses on customer needs and experience.
The FDD promotes status checks at all stages of the project life cycle phase to keep an eye on the progress throughout.
It was introduced in 1997 by Jeff De Luca and Peter Coad.
In FDD, the features aren’t the product features but are analogous to the scrum user stories. You split the project into multiple features and sub-features.
How Feature Driven Development Works?
The FDD is divided into five steps, mainly planning and construction.
The planning phase involves getting to know the customer needs of the development team. It includes the first three-stage of feature driven development: developing the model, building the list of features, and planning the features.
The construction phase involves designing and building the feature driven development. The chief programmer will select the team members for making the features based on the requirement of the FDD.
In the following point, we will discuss the five stages of FDD in detail.
What Are the Stages of Feature Driven Development?
FDD Project Life Cycle Has Five Steps:
Development of Overall Model:
This model works like a draft layout that reflects the project’s core idea.
In this first stage, only focus on figuring out the following:
- Your target audience
- The purpose of your product
- The structure of the product
- Basic roadmap for the user interface
If you plan to dive deeper into the features at this stage, you might not be able to see the other opportunities around.
Create a List of Target Features:
Based on the above step, create a list of the required features that are user-centric.
This process resembles the scrum product backlog. It is advisable to schedule the development completion of the features in less than two weeks.
Note that in feature driven development, features are called “stories.” Hence, prioritize the development activities that will help the teams produce the product faster.
Plan by Features:
This step is an important one in FDD. You can plan the features in the following way:
- Set up your tasks based on features
- Study the features and plan the subtasks related to the feature
- Involve all the members in the planning process
- Finally, work on feature-based tasks. Watch out for the risks and obstacles in the development process.
Having every team member in these tasks is essential so that everyone is aware of the objectives that they need to meet.
Design by Feature:
The real task begins at this stage. That involves feature prioritization to select which features are to be developed and designed in the span of a project cycle. Collaboration and iteration are principles of this step.
After the design is complete, it undergoes a review for error spotting.
Build by Feature:
It is a focused approach by the individual members, and they work on their respective design duties.
Graphic designers work on UI while coders work on programming the features. Individual members address the particular features.
Once all the teams finish their work, the QA teams test the feature.
Importance of FDD
Let’s look at the feature driven development advantages and their importance below:
- First of all, feature driven development is a compact and straightforward process that provides the scope of revision and correction.
- It holds up default development standards that speed up the project
- Product management is improved through individual involvement in planning and execution in specific areas.
- Feature driven development is less complex as it works on tasks and subtasks that are feature-oriented, and you will require not more than two weeks to accomplish them.
- Feature driven development approach helps recognize user needs more effectively.
It helps in tweaking the errors and enhancement of the product.
Feature Driven Development Disadvantages Are:
- It encourages individual ownership rather than a shared experience.
- Other agile methods have better-defined iterations.
What Are the Feature Driven Development Examples?
One of the prominent feature driven development examples is a game-based website that used the combination of kanban and feature driven development.
The teams had to release a brand new site and code within 28 days. The site mouse breaker allows users to play any flash games. The demand was to add a feature that helps users play the games on a web page.
The feature driven development put the features in place of requirements. The product management and development team members then start working on these features first and put them in the backlog.
The developers follow the guidelines and work to deliver the features.
These are the core principles of feature driven development model:
Domain object modeling, developing by feature, individual accountability, feature teams, inspections, configuration management, regular build schedule, and progress reports.
The significant roles within an FDD team include:
- Project manager – the administrative head of the project,
- Chief programmer – the senior programmer who leads the team of programmers,
- Chief architect – responsible for the overall design of the project,
- Development manager – handles a team of developers and coordinates with the chief architect and chief programmer,
- Class owners – the individual designers and coders who work on the assigned sub-tasks,
- Domain experts – the experts of the feature’s domain like user or client.
FDD is an agile framework suitable for long-term projects where it is required to remove and replace certain features in a product consistently. FDD enhances product management. It is user-centric and driven towards achieving product excellence.