Feature driven development is aligned with Agile methodology. It is a design oriented agile process in which the project is divided into features wherein the features are a small part of the complete project. With the help of FDD, we are able to create designs, code and code inspections without elaborate paperwork. The focus ultimately shifts to the people and their roles as developers.
FDD follows a 5 step process:-
Develop a model
Building an object model in a feature driven project is an intense, collaborative and enjoyable process as the team involving developers and designers come together under the guidance of a chief programmer.
Build a feature list
Using the knowledge of the 1st process, the team constructs the feature list instead of a product backlog. All information gathered in the first step is used to make a list of the required features. The whole project is further divided into features which need to be delivered every two weeks based on the length of the Sprint. The features are decided by the development team based on the time consumed. It must be less than two weeks as the app build is submitted to the client at the end of the sprint.
Plan by feature
The third step is deciding the sequence of the feature and assigning them to programmers. Once the feature list is planned. It is up to the development team to decide which features to develop first. Teams are selected and assigned the feature set.
The team may adjust the overall sequence of the feature listed on technical risks and dependencies as required. The dependencies may purely be technical in nature but may revolve around which feature is assigned to which programmer.
FDD is different from traditional agile as it gives responsibility to individual developers instead of adopting collective ownership.
Design by feature
A lead developer selects a set of features to be developed in the next sprint. Depending on the requirements, testers, designers, and technical authors may join the team in the sprint. This team works together under a domain expert on the details of each selected feature and consequently
Build by feature
After the design inspection is complete, the code is developed and unit tested. The complete set of features are added to the build after the approval of the technical architect.
A comparison between FDD and SCRUM
It is quite clear that both are collaborative, both put more emphasis on quality of components while developing short iteration features that are constantly tracked.
The difference is that SCRUM does not focus on any specific engineering practice while FDD focuses on a specific engineering practice with long feedback loops along with a feature team that takes clear recognizable goals.
In simple terms, it could be said that FDD was formed taking into account the strengths and weaknesses of humans. It is a highly effective way to build complex products. The entire feature list is built on the priority of business users by using two-week increments.