Feature Driven Development

Feature Driven development is designed to provide an end to end (UI to DB) set of features providing a higher rate of success for the stakeholders. A feature set is composed of a set of requested features. 

Development Process

The Feature Driven Development Process focuses on the user experience at first. By conducting Joint Application Development sessions with the stakeholders and end users the development team can determine the functionality the end user requires.

First- Develop Use Cases:

Defining the use cases for the system to precisely understand the way people will use the system. These use cases will act as the foundation of Test by Feature (Test Driven Development).

The system must mirror the way people work or they will not use the system or begrudgingly. By determining the business processes that must be preformed and in what order they are preformed by the end user a higher level of customer satisfaction and the easier the software is to use.

Determine the way people do business; this derives the functionality the system is to exhibit and how it is to be exhibited.

Second – Develop the User Interface:

The user interface is often the most problematic as it is the window to the system and the information it gathers. The user interface must be defined with the business processes in mind. Develop the user interface with the end user and the stakeholders. Remember, they are the ones that will be using it every day, colors and fonts are important to the end user, they have to stare at it the most.

Third – Develop Sequence Diagrams:

By analyzing the Use Case and the User Interface the development team then creates Sequence Diagrams to map out the internal flow of information. These drive the creation of objects necessary to complete these processes. The objects themselves are then decomposed into sequence diagrams of their own that drive finer granular object models. This helps keep down the number of object needlessly created and that are never used.

Forth – Develop Object Models:

If your sequence diagrams were properly, they were derived from the outmost objects with the objects responsibilities well defined (Craig Larman’s desert Island skill “assign Object Responsibility” http://www.craiglarman.com/ ).

Next, analyze these objects and derive more sequence diagrams and define finer granular sets objects to support the required functionality digging deeper to each layer.

Sixth- Determine Feature Set:

Now review the Use Cases, the User Interface and Sequence Diagrams. Create a Feature set of closely related Features. Identify all the underlying objects to support this feature. A completed feature shall complete the flow of data, whether it is from the database or into the database.   

Seventh- Plan By Feature:

Determine the time and money required to complete each Feature Set. Conduct a JAD session with the stakeholders and end-user to prioritize the feature sets.

Remember, at the beginning of the development of the feature sets, the underlying architecture is being built also (Security, Data Access and Error Handling). As more and more of the Architecture is built and reused for all the rest of the features, each feature will develop quicker.

• Design By Feature • Plan By Feature • Budget by Feature • Test by Feature • Release by Feature Feature Set Example: A typical web site includes the user login. All these features are required before the simplest login is fully functional For the by the administrator it must include the functionality to: • add • update • remove users The end users must be able to: • login • submit a request to the system • retrieve a password • reset the password


Feature Driven Development is a trademarked process, this is only as I understand it and make no guarantees or imply any trademark infringments. This is for the sole purpose of academic research only.

 
Thank You,
 

Will Weaver
BizTalk Solutions Architect 
Jacksonville, FL