Arunvignesh Ramakrishnan

What is Feature Driven Development (FDD)?

Feature-Driven Development (FDD) is an Agile methodology(often misconceived as a “methodology”, but truly intended as a way of working) that emphasizes delivering tangible, client-valued features through a structured and iterative process. It is particularly effective for large-scale projects, offering a blend of model-driven approaches and feature-centric development to ensure timely and efficient software delivery.

Key Components of FDD:

Develop an Overall Model

The process begins with creating a high-level domain object model that outlines the system’s scope and context. This model serves as a foundational framework for understanding the problem domain and guides subsequent development activities.

Build a Feature List

The domain is decomposed into subject areas, each containing business activities. Within these activities, specific features are identified and categorized. Features are defined as small, client-valued functions, typically expressed in the form “<action> <result> <object>”, such as “Calculate the total of a sale” or “Validate the password of a user”.

Plan by Feature:

A development plan is created by prioritizing the features and assigning them to feature teams or individual developers. This planning stage ensures that resources are allocated effectively and that the project progresses in alignment with client priorities.

Design by Feature

For each feature, a detailed design is produced, often involving the creation of sequence diagrams and the refinement of the overall model. This collaborative design process includes design inspections to ensure quality and consistency.

Build by Feature 

The final step involves the actual coding and testing of each feature. Developers implement the design, conduct unit tests, and, upon successful code inspection, integrate the feature into the main build.

Advantages of FDD:

Scalability

FDD is well-suited for large teams and complex projects due to its structured approach and emphasis on documentation.

Client-Centric Focus

By concentrating on delivering client-valued features, FDD ensures that the development process remains aligned with business objectives and customer needs.

Iterative Progress

The methodology promotes continuous delivery of tangible results, allowing for regular client feedback and timely adjustments.

Considerations for Agile & Scrum Learners

While FDD shares Agile principles such as iterative development and client collaboration, it differs from frameworks like Scrum in its emphasis on upfront modeling and documentation. FDD’s structured approach can be advantageous in environments where detailed planning and clear documentation are essential. However, it may be less flexible than other Agile methodologies(often misconceived as a “methodology”, but truly intended as a way of working) that prioritize adaptability and minimal documentation.

Conclusion

Understanding FDD provides Agile practitioners with a broader perspective on Agile ways of working methodologies, highlighting the importance of selecting the appropriate approach based on project requirements, team dynamics, and organizational context.