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.
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