Feature driven development (FDD)

Feature-driven development (FDD) is a software development approach that focuses on delivering functional features to users in a short time frame. This approach is often used in agile software development, as it allows teams to quickly deliver value to users and to respond to changes in requirements. In FDD, the development process is organized around a series of short development cycles, known as "feature iterations." Each feature iteration focuses on developing and testing a single functional feature of the application. The goal of each iteration is to deliver a fully-functional, tested feature that can be used by users. To begin an FDD project, the development team first creates a list of all the features that the application should have. This list is known as the "feature list." The features on the list are then prioritized, with the most valuable or important features being developed first. Next, the team divides the feature list into a series of small, manageable chunks, known as "features." Each feature is developed and tested in a separate feature iteration. This allows the team to focus on delivering one feature at a time, and to prioritize the development of the most important or valuable features first. During a feature iteration, the team works closely with business stakeholders to define the requirements for the feature and to agree on acceptance criteria for the feature. The team then develops the feature, using a combination of design, coding, and testing activities. Once the feature is complete, it is reviewed by the business stakeholders to ensure that it meets their needs and requirements. Once all the features on the feature list have been developed and tested, the application is ready for release. Because FDD focuses on delivering functional features to users quickly, it can be beneficial in rapidly-changing or competitive environments. However, FDD can also be more time-consuming and resource-intensive than other approaches, as it requires teams to develop and test each feature separately.

Core Principles are:

Develop an overall model: The first step in the FDD process is to develop an overall model of the system. This involves creating a high-level view of the system, its components, and its relationships, and using this view to guide the design and implementation of the system. The overall model provides a common understanding and reference for the team and stakeholders, and helps to ensure that the system is coherent and consistent. Build a list of features: The next step in the FDD process is to build a list of features that the system should have. This involves working with stakeholders to identify and prioritize the features that are most valuable and feasible, and organizing the features into a list or backlog. The list of features provides a roadmap for the development of the system, and helps to ensure that the system delivers the most valuable and needed capabilities.

Plan by feature: Once the list of features has been created, the team can start planning how to implement each feature. This involves breaking down each feature into smaller tasks and subtasks, estimating the effort and duration of each task, and assigning the tasks to team members. The plan provides a detailed and actionable plan for the development of each feature, and helps to ensure that the team has a clear and achievable plan.

Design by feature: After the plan for each feature has been created, the team can start designing how to implement each feature. This involves creating detailed design specifications and artifacts, such as wireframes, mockups, and prototypes, and using these artifacts to communicate and validate the design with stakeholders. The design provides a blueprint for the implementation of each feature, and helps to ensure that the feature is implemented correctly and consistently.

Build by feature: Once the design for each feature has been completed, the team can start building the feature. This involves implementing the tasks and subtasks defined in the plan, using the design artifacts as a guide, and testing and verifying the implementation to ensure that it meets the requirements and expectations. The build provides the implementation of each feature, and helps to ensure that the feature is delivered on time and with high quality.

When To Choose FDD

FDD is typically used when a project has a large number of distinct features that can be delivered independently of one another. In FDD, each feature is developed and tested in a separate development cycle, known as a "feature iteration." This allows teams to focus on delivering one feature at a time, and to prioritize the development of the most important or valuable features first.

Some specific situations in which FDD may be a good choice include:

  • Projects with complex or evolving requirements

  • Projects that require collaboration and communication among the development team

  • Projects that involve frequent interactions with the customer

  • Projects that require the delivery of small, incremental releases of the product or service

FDD pros and cons

One of the main advantages of FDD is that it allows teams to deliver functional features to users quickly, which can be beneficial in rapidly-changing or competitive environments. This approach also encourages collaboration and communication among team members, as it requires that all stakeholders are involved in the development process from the start.

However, one potential disadvantage of FDD is that it can be difficult to maintain a consistent overall vision for the project when each feature is developed independently. This can lead to inconsistencies or gaps in the final product, which may require additional work to fix. Additionally, FDD can be more time-consuming and resource-intensive than other approaches, as it requires teams to develop and test each feature separately.

Pros of FDD:

  • Allows teams to deliver functional features to users quickly

  • Encourages collaboration and communication among team members

  • Helps to prioritize the development of the most valuable or important features

  • Makes it easier to respond to changes in requirements or priorities

Cons of FDD:

  • Can be difficult to maintain a consistent overall vision for the project

  • Can lead to inconsistencies or gaps in the final product

  • Can be more time-consuming and resource-intensive than other approaches

  • May not be suitable for all types of projects or teams.

People Also Viewed

Previous
Previous

Unified Process (UP)

Next
Next

Lean startup