FDD blends a number of industry-recognized best practices into a cohesive whole. The best practices used in FDD are:
Domain Object Modelinga thorough exploration and explanation of the domain of the problem to be solved, resulting in a framework within which to add features.
Developing by Featuredriving and tracking development through a functionally decomposed list of small, client-valued functions.
Individual Class Ownershiphaving a single person who is responsible for the consistency, performance, and conceptual integrity of each class.
Feature Teamsdoing design activities in small, dynamically formed teams so that multiple minds are always applied to each design decision, and multiple design options are always evaluated before one is chosen.
Inspectionsapplying the best-known defect-detection technique and leveraging the opportunities it provides to propagate good practice, conventions, and development culture.
Regular Buildsensuring that there is always a demonstrable system available and flushing out any integration issues that manage to get past the design and code inspections. Regular builds provide a known baseline to which to add more function and against which a quality assurance team can test.
Version Controlidentifying the latest versions of completed source code files and providing historical tracking of all information artifacts in the project.
Progress Reportingfrequent, appropriate, and accurate progress reporting at all levels, inside and outside the project, based on completed work.