Feature-Driven Development (FDD) has gained widespread use, especially in larger organizations. FDD is a software development process centred around clients and architectures. The ‘client’, as referred to in FDD, is a stakeholder or a customer of the project. Although introduced to the world in 1999, FDD was first applied in 1997 on a 50-people project spread over 15 months for a large Singaporean bank. The challenges during the implementation of the project led to the development of five processes—developing an overall model, and listing, planning, designing and building of features. These processes, although slightly modified over the years, have remained the cornerstones of the entire feature-driven development framework. These five FDD steps ensure that teams follow the best of engineering practices as they develop small features over 1- or 2-week iterations. These steps ensure that project development is continuous, and also that new members can be easily added to the team and made to come to speed much faster.
‘Feature’ in FDD
Features are a fundamental part of feature-driven development. They are to FDD what user stories are to scrum: small functions that are valuable to the client. An example of a feature in the FDD context could be “complete the login process”.
History
The primary architect of FDD was Jeff De Luca, who developed the methodology as a process for computer software development. The major objective behind development of such a methodology was reduction in development cost, time and efforts. Since it was developed, the FDD approach, along with its five basic steps, has been continually used to develop enterprise software because it is seen as both agile and pragmatic. FDD combines the key advantages of eXtreme Programming and Scrum with model-centric techniques such as Domain-Driven Design and modelling in colour. Moreover, it can be easily scaled to large teams, thanks to concepts such as Just Enough Design Initially (JEDI) and peer reviews and dynamic feature teams.
Objectives of Feature-Driven Development
Its main purpose is to deliver tangible, working software repeatedly in a timely manner in accordance with the principles behind the Agile Manifesto. It works in short iterations to deliver frequent releases. The customer or the stakeholder is often involved in the initial design and iterative development reports.
Core Principles of Feature-Driven Development
- Domain Object Modelling: The teams involved in a software development process build class diagrams to identify and describe the objects that are identifiable in a domain, and the relationships they might share.
- Development on feature-level: If a particular process or function cannot be implemented within two weeks, it should be broken down into smaller features, which can be managed more easily.
- Individual Class (Code) Ownership: Different pieces or groupings of code (class) are assigned to different individuals. The owner takes responsibility for the consistency, performance, and conceptual integrity of the class.
- Feature Teams: There exist many small, dynamically formed feature teams that work on a single activity. Multiple people work on a single decision or design, before one is chosen as the final.
- Configuration Management: Refers to the process of keeping a record of the source codes of all the features and all the classes that have been developed to maintain a history as they are further enhanced.
- Regular Builds: ensure that the system is always up-to-date and always ready for client demonstration.
- Visibility of progress and results: The course of the project can be steered using frequent and accurate progress reporting from all levels of the project.
Advantages of Feature-Driven Development
- The five-step approach of FDD ensures big projects can move smoothly by getting work done in an easy and fast manner.
- Feature-driven development is centred around the standard set for the software development industry. Thus, it deploys the best practices in the industry.
- Feature-driven development provides well-defined progress tracking and reporting capabilities.
- FDD provides support for multiple teams to work together.
Where Feature-Driven Development Works
Previous software project development methodologies were usually centred around small teams of skilled and disciplined developers. Although such methodologies could be scaled to bigger teams, it was not often without challenges. However, Jeff De Luca’s Feature-Driven Development is designed with the idea of making it scalable to large teams. Smaller teams of developers can be easier to manage and more likely to succeed regardless of the agile method they use. However, in larger teams, not everyone might be so skilled and disciplined.
To ensure that FDD can be applied to larger teams, FDD uses the “just enough” technique. Under this, planners and reviewers review and modify the assignment of feature sets and classes to developers. However, not all classes are assigned at the same time -- only just enough -- and classes keep on increasing as the project grows.
How is FDD different from Scrum
Both Scrum and Feature-Driven Development are methodologies for efficient software development. However, FDD is more focused on features rather than delivery. Features are foundational, important components of FDD that are important to clients. In FDD, a feature is delivered every 2-10 days, while in Scrum, a sprint, the equivalent of a feature in FDD, is delivered every two weeks, and sometimes, four.
Other than this, FDD gives more weight to documentation. This makes daily meetings redundant. The teams rely more on documentation, for official communication and problem solving, and do not meet a lot. On the other hand, with scrum, teams meet up on a daily basis. Also, while in FDD, the actual user is viewed as the end user, in Scrum, the product owner is usually viewed as the end user.
Why Choose Evon for Feature-Driven Development
Evon Technologies, an offshore software consulting and development company, has successfully completed several software development projects using methodologies like FDD, Scrum and Agile. By using FDD, Evon Technologies promises an iterative and incremental software development process which combines various industry-recognized best practices into a cohesive whole. Our extensive hand-on experience in software development and availability of skilled resources make us a go-to technology partner for software development. Email us at This email address is being protected from spambots. You need JavaScript enabled to view it. to share your requirements with us, our experts will analyze those and get back to you shortly with solutions best suited for your software development project.