Experiencing Agility, from the knowledge worker to the knowledge economy.
Friday, January 15, 2010
Agile Simplified with Feature Driven Development
FDD differs from other Agile methods in its focus on upfront design and planning. As can be seen from the FDD process diagram in this picture, the Object Model, feature list, and planning are done once at the beginning of the project, and iterations are essentially an incremental building of identified features. This is not to say that the model, feature list, and plans never change; rather, it indicates that evolution of those items is not an inherent part of this method.
FDD practices
Domain Object Modeling
FDD begins with the construction of a relatively detailed object model for the system to be built. This model is not intended to provide all the design details for the features. Rather, its intention is to force all stakeholders’ assumptions out into the open and provide a road map for the project. Although the initial Object Model is built at the beginning of the project, each increment of development results in updates to it as details are filled in and corrections are made. Thus, the Object Model is a continually evolving picture of the product, as it is currently understood.
Developing by feature
The Object Model identifies all the expected classes in the system, but development is not done class by class. Rather FDD requires that development be done a feature at a time.
FDD defines a feature this way. “A feature is a small, client-valued function expressed in the form: Action - Result - Object
Thanks a lot for this short and very concise description of FDD. However, I consider FDD not a "real" agile methodology because there is too much up-front effort needed. This is likely to introduce quite some waste on designing features that never will get developed because of changed requirements.
Thanks a lot for this short and very concise description of FDD.
ReplyDeleteHowever, I consider FDD not a "real" agile methodology because there is too much up-front effort needed. This is likely to introduce quite some waste on designing features that never will get developed because of changed requirements.
Cheers,
Urs