FDD (English version) - bytkie/Agiilised-tarkvaraarenduse-meetodikad GitHub Wiki

Feature-Driven Development (FDD)

Feature-Driven Development (FDD) is a software development methodology that focuses on building and delivering features. It was first introduced by Jeff De Luca and Peter Coad in the late 1990s.

Core Principles of FDD

  1. Feature-Centric Approach

    • The entire development process revolves around creating small, valuable features for the user.
  2. Iterative Development

    • The process is divided into small iterations, each completing one or more features.
  3. Structured Process

    • Development is organized into five key steps that ensure consistency and transparency.

Steps of FDD

  1. Develop an Overall Model

    • The team collaborates to create a shared model of the system.
  2. Build a Feature List

    • All system features are identified and categorized. Each feature should be small and completable within a few days.
  3. Plan by Feature

    • Features are prioritized, and developers are assigned to them.
  4. Design by Feature

    • A design is created for each feature and reviewed by the team.
  5. Build by Feature

    • The feature is coded, tested, and integrated into the system.

Advantages of FDD

  • Client-Focused: Each feature represents a complete and valuable improvement for the end user.
  • Transparency: Clear planning and tracking of progress.
  • Scalability: Suitable for both small and large projects.
  • Risk Minimization: Rapid feature development allows for early detection and resolution of issues.

Disadvantages of FDD

  • Requires an experienced team, especially during the modeling stage.
  • Not suitable for projects with unstable or frequently changing requirements.
  • Less emphasis on flexibility compared to other Agile methodologies.

Use Cases

FDD is used in projects where:

  • Requirements are well-defined.
  • The project has a long-term perspective.
  • High predictability and control are needed.

Resources for Learning

  • Book: ”A Practical Guide to Feature-Driven Development” — A great resource for in-depth understanding.
  • Documentation: Online resources and articles focused on Agile methodologies.