What is Feature Driven Development?
Technically, FDD is said to be:
This software development process is amalgamated with agile methodology.
In FDD the project is divided into features. As per an essay on FDD and agile modeling, features are small, client-valued function in the form of <action><result><object>. For instance, “Calculate the total of a sale”, “Validate the password of a user”, “Authorize the sales transaction of a customer.”
FDD is desirable for:
- Organizations who are trying to passage to iterative approach from a phase-based approach.
- Another factor that organizations are worried about is post-transition. Even after trying to switch, the thought of getting rid of all tasks and assignments are something they are not comfortable with.
Features of using FDD:
- Builds an object model of the domain problem.
- Focus on Domain Modeling.
Aren’t you curious to know more about Feature Driven Development and how it is beneficial to your company?
Let’s check what we have to add up to your knowledge of FDD
Let’s dive in details.
1. The 5 main activities in FDD
Image Source: http://agilemodeling.com/essays/fdd.htm
The 5 main activities in FDD are listed below:
- Develop an overall model
- Build a Features List
- Plan by Feature
- Design by feature
- Build by feature
I) Develop an overall Model: An overall model of the domain is built. The reason is to define the scope of the system and provide a common understanding of the system.
II) Build a features list: Once the overall model is built as mentioned in the earlier phase, in this step features have to be constructed. This is done on the basis of the information collected in the previous phase. These features should be valuable to the client and these would be guiding the project.
III) The plan by Feature: This step basically includes a development plan where the order of the sets will be realized. Here it will be planned which chief programmers are responsible for which feature sets and which class owners are responsible for each class.
IV) Design by Feature and Build by Feature: A series of iterations are launched in this step. They include tasks such as detailed modelling, programming, testing, and packaging of the system.
V) Repeat step 4 until no features exist.
2. Short Iteration Process
An overall model of the domain is built in the first step itself. The features are then built through various “design by feature, build by feature” iterations. These iterations result in such features which are useful from the clients perspective of development.
With businesses hurrying for results within the stipulated time, the two week limit of FDD has to be met. A feature is built within 12 days. But if this wasn’t met, then these features will be later on divided into an equal volume of features unless the 2-week rule condition is met.
4. Ownership of Class
- Class ownership is one of the most noticeable features of FDD.
- Each class is built with a set of features which is assigned to a developer.
- The reason behind this is whatever it takes while implementing the features into a class is solely the responsibility of the developer.
- Due to this, the role-based tasks retain their reliability and authenticity which in turn enhances the processes.
5. Methodologies at it’s best
- The methodologies like Scrum and Extreme programming are methods in Agile format.
- FDD comprises both XP and Scrum.
- Since the features of FDD achieves fast results, functional resources are brought under the same roof.
- UML color standards are also followed within FDD approach as it makes the process trackable and comprehensible.
6. Results obtained are tangible
Since FDD has an incremental feature, the main focus is on developing features one by one. The advantage of this is the achievement of tangible results in a short span. This, in turn, leads in confident proceedings with their plans with quality results.
7. Feature Teams
FDD has a concept of feature teams who have their own tasks and responsibilities. Design decisions can be contributed freely as per the requirements.
8. Scaled to large projects
Feature Driven Development allows adding different modules and components in the project while development of the same thus providing flexibility. Another factor that hasn’t to be mind is about the consistency of the component separately.
9. An Inclusive Methodology
- If offerings are considered, FDD is comprehensive in its scope and range.
- Thus FDD becomes your companion as per different project needs.
- Some of the qualities of FDD are relevancy, comprehensive reporting to keep all in the loop, and so on.
- This enables alignment and iteration of tasks. Resources for the tasks are assigned for gaining maximum value and fast response for achieving optimum results.
What are the applications of FDD?
- Systems where businesses change rapidly during long projects.
- For web design and web development projects
- To build and design software.
- For an enterprise that uses application life-cycle management solutions.
Advantages of FDD
- With a shorter ramp-up time, the staff can be recruited if the 5 stages are practised of FDD.
- The risks are reduced due to iteration and small chunks build up.
- While developing an entire model, two factors are kept in mind- clarification of the requirements for future phases and a better understanding of the entire system.
- Accuracy is another factor that is obtained by costing the feature leads.
- Allows team working in parallel.
- Well defined tracking and reporting capabilities.
Comparison of FDD with other Agile methodologies:
FDD Vs. XP
|Points of Differentiation||XP||FDD|
|Units of Planning||User Story||Feature|
|Domain Modeling||Shared Metaphor||Color Modeling|
|Collaborative Construction||Pair Programming||Formal Inspection|
|Development Testing||Unit Testing/Test Driven Development||Unit Testing|
|Integration Testing||Automated Acceptance Testing||Manual Testing|
|Builds||Continuous Integration||Daily Builds|
FDD Vs. SCRUM
|Points of Differentiation||Scrum||FDD|
|Time Period for Iteration||2-4 weeks||2 days- 2 weeks|
|Team Size||All Sizes||Many members and more than one team|
|Suitable Project Size||All types of projects||More complex projects.|
|User Involvement||Involvement through the product owner.||Involvement through reports.|
|Documentation||Only basic documentation||Documentation is important|
|Major Practices||Sprint, Product and sprint backlog, scrum meetings.||UML Diagrams|
Drawbacks of FDD
- It is not powerful in the case of smaller projects.
- There is more reliance on the chief programmer as he has multiple roles like a coordinator, mentor and lead designer.
- No written documentation.
- Individual code ownership is promoted rather than team ownership.
- No well-defined iterations as others have.
- While working on the old systems where there is no system model, the model-centric aspect has a huge impact.
The entire idea of Feature Driven App Development surrounds along the lines of Agile methodology where different teams are assigned to different models. Practices of Agile methodologies form the base of applications of FDD. That’s all from my side. If you want to share your ideas do comment in the box below.
Disclaimer: We at eSparkBiz Technologies have created this blog with all the consideration and utmost care. We always strive for excellence in each of our blog posts and for that purpose, we ensure that all the information written in the blog is complete, correct, comprehensible, accurate and up-to-date. However, we can’t always guarantee that the information written in the blog correct, accurate or up-to-date. Therefore, we always advise our valuable readers not to take any kind of decisions based on the information as well as the views shared by our authors. The readers should always conduct an in-depth research before making the final decision. In addition to these, all the logos, 3rd part trademarks and screenshots of websites & mobile apps are the property of the individual owners. We’re not associated with any of them.