All software development requires project management and system-development-life-cycle (SDLC) management. These are the techniques and processes that are used to effectively manage the development process of a software application. Feature driven development is a technique that is based on quick development cycles. It provides the business with functionality faster then typical standard SLDC techniques.
In today’s competitive marketplace, it is important for organizations to react quickly to changing trends and market climates. Information technology has attempted to evolve software development into a more agile process that can anticipate the competitive needs of an organization. Feature driven development is a software development technique that attempts to implement application features in an iterative manner based on the priorities of a business.
Feature driven development is considered an iterative development process. This is because code is developed and deployed in iterations of functionality rather then as a full application. It was created by Jeff De Luca in 1997 as fast technique for delivering software applications. This agile process attempts to deliver prioritized features to a customer more quickly.
The feature driven development process is based on models and short development cycles. This is similar to the development techniques used in Extreme Programming (XP). Each project is broken into small features that can be coded, tested, and deployed in less than two weeks. This two-week cycle provides the business with a feature-rich system faster because it is continually evolving.
There are four primary areas of feature driven development. These are the domain model, feature list, plan by feature, and finally build and deploy by feature. These four areas have specific requirements and techniques that make them successful.
The domain model is a high-level overview and design of the entire application. It is the skeleton blueprint of what will be built during the iteration process. This is the first step of the feature driven process and is meant to give the development team a road map of the entire application.
Once the domain model is complete, a list of features needs to be created. The feature list will include all of the required functionality of the application. Each feature needs to be designed in specific detail to making it work. An example of a feature for a bank application could be “calculate the total available bank balance.”
Prioritization is the next step in featured driven development. After the entire feature list is created it should be prioritized by the business users. This prioritization should be based on the importance of functionality for the organization.
The final phase of feature driven development is based on building and deploying features based on the prioritized feature list. Each feature will be coded, tested, and deployed in two-week increments. This fast iterative approach gives the business an opportunity to use the application before it is completely finished.