FDD (Feature‐Driven Development) - BogdanViblyy/Buketov GitHub Wiki
Feature-Driven Development (FDD) is a client-centric, iterative, and incremental agile methodology. As the name suggests, it organizes software development around building and delivering features.
FDD is particularly well-suited for larger, more complex projects that require a structured, scalable process.
FDD follows a five-step process, with the last two steps being iterative:
- Develop an Overall Model: The team collaboratively builds a high-level domain model. This creates a shared understanding of the problem space.
-
Build a Features List: The team identifies all the small, client-valued functions that the system needs. Features are typically named in the format
<action> <result> <by/for/of> <object>
, e.g., "Calculate the total of a sale." - Plan by Feature: The development plan is created by assigning feature sets to chief programmers and sequencing the work.
- Design by Feature: A chief programmer selects a small group of features and works with the class owners to create detailed design packages for each feature.
- Build by Feature: The developers write, test, and integrate the code for each feature. This step should take less than two weeks per feature.
- Features: Small, client-valued pieces of functionality. They are the primary unit of work and progress reporting.
- Domain Object Modeling: Creating a "shape" of the system before diving into code.
- Feature Teams: Dynamic, temporary teams are formed to work on a specific feature or group of features.
- Class Ownership: Each class in the codebase is "owned" by a specific developer who is responsible for its consistency and quality.