FDD is a model-driven short-iteration process that consists of five basic activities. For accurate state reporting and keeping track of the software development project,
milestones that mark the progress made on each feature are defined. This section gives a high-level overview of the activities. In the figure on the right, the
meta-process model for these activities is displayed. During the first two sequential activities, an
overall model shape is established. The final three activities are
iterated for each feature.
Develop overall model The FDD project starts with a high-level
walkthrough of the scope of the system and its context. Next, detailed domain models are created for each modelling area by small groups and presented for
peer review. One or more of the proposed models are selected to become the model for each domain area. Domain area models are progressively merged into an overall model.
Build feature list Knowledge gathered during the initial modeling is used to identify a list of features by functionally decomposing the domain into subject areas. Subject areas each contain business activities, and the steps within each business activity form the basis for a categorized feature list. Features in this respect are small pieces of client-valued functions expressed in the form " ", for example: 'Calculate the total of a sale' or 'Validate the password of a user'. Features should not take more than two weeks to complete, else they should be broken down into smaller pieces.
Plan by feature After the feature list is completed, the next step is to produce the development plan and assign ownership of features (or feature sets) as
classes to
programmers.
Design by feature A design package is produced for each feature. A chief programmer selects a small group of features that are to be developed within two weeks. Together with the corresponding class owners, the chief programmer works out detailed
sequence diagrams for each feature and refines the overall model. Next, the class and method prologues are written, and finally a
design inspection is held.
Build by feature After a successful design inspection for each activity to produce a feature is planned, the class owners develop code for their classes. After
unit testing and successful
code inspection, the completed feature is promoted to the main build. == Milestones ==