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
-
Feature-Centric Approach
- The entire development process revolves around creating small, valuable features for the user.
-
Iterative Development
- The process is divided into small iterations, each completing one or more features.
-
Structured Process
- Development is organized into five key steps that ensure consistency and transparency.
Steps of FDD
-
Develop an Overall Model
- The team collaborates to create a shared model of the system.
-
Build a Feature List
- All system features are identified and categorized. Each feature should be small and completable within a few days.
-
Plan by Feature
- Features are prioritized, and developers are assigned to them.
-
Design by Feature
- A design is created for each feature and reviewed by the team.
-
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.