Feature Driven Development (FDD)
Feature Driven Development (FDD) is an iterative and incremental software development process that focuses on delivering features or functionalities in a systematic and organized manner. FDD is based on the principles of Agile and is particularly suitable for large and complex projects.
Key points about Feature Driven Development (FDD) include:
- Feature-Centric Approach: FDD centers around identifying, designing, and implementing features as the primary building blocks of the software. Each feature represents a tangible piece of functionality that delivers value to the end-users.
- Five Key Processes: FDD defines five key processes to manage the development lifecycle:
- Develop an Overall Model: Establish a high-level domain object model that serves as a blueprint for the system.
- Build Feature List: Create a comprehensive list of features based on the requirements and user needs.
- Plan by Feature: Plan the development and release of each feature based on priority and dependencies.
- Design by Feature: Conduct detailed design and implementation for each feature, assigning specific development tasks to the team members.
- Build by Feature: Develop and deliver features incrementally, focusing on feature completion rather than timeboxed iterations.
- Iterative and Incremental: FDD follows an iterative and incremental development approach. The software is built in small, manageable increments, allowing for frequent feedback and continuous improvement.
- Inspections and Reviews: FDD emphasizes regular inspections and code reviews to maintain code quality and ensure adherence to design and coding standards.
- Domain Expert Involvement: FDD encourages close collaboration with domain experts and stakeholders throughout the development process to validate requirements and ensure alignment with business goals.
- Empowered Teams: FDD advocates for self-organizing teams, with team members taking ownership of specific features and delivering them independently.
- Visible Progress: FDD provides clear visibility of feature development progress, making it easier to track the status of each feature and the overall project.
- Adaptability: FDD embraces change, allowing new features to be added or existing ones to be modified based on evolving requirements and customer feedback.
FDD is particularly well-suited for large-scale development projects with complex domain models and multiple teams. By breaking the development process down into manageable features, FDD enables teams to work on specific functionalities in parallel, resulting in a more efficient and structured development process. The focus on tangible features provides stakeholders with a clear understanding of the delivered value and facilitates better project management and decision-making.