Sunday, December 17, 2006

Feature Driven Development (FDD)

FDD is a model-driven, short-iteration process. It begins with establishing an overall model shape. Then it continues with a series of two-week "design by feature, build by feature" iterations. The features are small, "useful in the eyes of the client" results. FDD consists of following five processes or activities (see Figure 1):

1. Develop an Overall Model
2. Build a Feature List
3. Plan By Feature
4. Design By Feature
5. Build By Feature


The five activities in FDD are performed iteratively. The first is Develop an Overall Model, the initial result being a high-level object model and notes. At the start of a project your goal is to identify and understand the fundamentals of the domain that your system is addressing, and throughout the project you will flesh this model out to reflect what you’re building. The second step is Build a Features List, grouping them into related sets and subject areas. Next you Plan By Feature, the end result being a development plan, the identification of class owner, and the identification of feature set owners. The majority of the effort on an FDD project, roughly 75%, is comprised of the fourth and fifth steps: Design By Feature and Build By Feature. These two activities include tasks such as detailed modeling, programming, testing, and packaging of the system.