FDD - tugosera/tralalero-tralala GitHub Wiki


📘 Summary: Feature-Driven Development (FDD)

1. What is FDD?

Feature-Driven Development (FDD) is an agile software development methodology focused on delivering small, client-valued features in short, iterative cycles. It emphasizes modeling and design, making it suitable for large-scale and long-term projects.


2. Key Principles

  • Feature-centric: Development is organized around building tangible, user-visible features.

  • Short iterations: Each iteration lasts between 2 to 10 days.

  • Domain modeling: A detailed domain model is used as the foundation for development.

  • Team collaboration: Responsibilities are clearly divided among roles.

  • Trackable work: Every feature is planned, developed, and tracked individually.


3. Core Roles

Role Responsibility
Chief Architect Defines and maintains system architecture
Development Manager Oversees planning and coordination
Chief Programmer Leads feature design and development
Class Owner Owns and maintains specific classes/modules
Domain Expert Represents business needs and refines requirements

4. Development Process (Simplified)

  1. Develop an overall model

  2. Build a feature list

  3. Plan by feature

  4. Design by feature

  5. Build by feature


5. Advantages

  • 🔹 Clear visibility of progress

  • 🔹 Scalable for large teams and projects

  • 🔹 Encourages object-oriented practices

  • 🔹 Promotes structured and predictable workflows


6. Disadvantages

  • 🔸 Less flexible than Scrum for rapidly changing environments

  • 🔸 Requires a well-defined model upfront

  • 🔸 Less commonly adopted, with fewer tools and resources available


7. When to Use FDD

✅ Use when:

  • Working on large, complex systems

  • Architecture and scalability are critical

  • Teams are distributed and need role clarity

❌ Avoid when:

  • Working in early-stage startups or highly dynamic environments

  • A clear domain model is not yet defined


8. Common Tools

  • UML – for modeling

  • JIRA / Azure DevOps / YouTrack – for feature tracking

  • Git – for version control

  • CI/CD pipelines – for automated building and testing


⚠️ **GitHub.com Fallback** ⚠️