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.

The 5 Processes of FDD

FDD follows a five-step process, with the last two steps being iterative:

  1. Develop an Overall Model: The team collaboratively builds a high-level domain model. This creates a shared understanding of the problem space.
  2. 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."
  3. Plan by Feature: The development plan is created by assigning feature sets to chief programmers and sequencing the work.
  4. 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.
  5. Build by Feature: The developers write, test, and integrate the code for each feature. This step should take less than two weeks per feature.

Key Concepts

  • 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.
⚠️ **GitHub.com Fallback** ⚠️