feature-driven-development

Feature-Driven Development In A Nutshell

Feature-Driven Development is a pragmatic software process that is client and architecture-centric. Feature-Driven Development (FDD) is an agile software development model that organizes workflow according to which features need to be developed next.

Understanding Feature-Driven Development

Feature-Driven Development is client and architecture-centric where the term “client” equates to the project stakeholders of Agile Modeling (AM) and the customers of eXtreme Programming (XP). The model was created in 1997 by Jeff De Luca, who used FDD principles in a 15-month software development project for a Singaporean bank.

As the name suggests, features are an integral facet of FDD. However, features are not confined to the commonly associated attributes of products or services. Instead, features in the context of FDD are more closely related to the user stories of Scrum. 

Examples of such features include:

  • “Validate the user password.”
  • “Calculate the total value of a sale.”
  • “Complete the user login process.”

The five stages of Feature-Driven Development

While Scrum and XP advocate an iterative approach to software development, FDD requires project teams to follow a suite of engineering best practices. 

Following is a look at each of the five stages of activity that incorporate these practices.

1 – Develop an overall model

Initially, project team members must collaborate to propose a model for the domain area. It’s important to focus on the shape and scope of the model. It should capture the vision of the product but not contain any detailed or specific content. 

Teams may choose to focus on the target audience, context, mission, and content structure. They may also form preliminary thoughts around UX and UI.

2 – Build a feature list

With the insights gained from the first stage, the team must create a list of features by splitting the domain model into subject areas. In turn, subject areas containing feature groups are then split into a discrete list of features to be prioritized. 

As we have noted, features in the FDD methodology tend to be small pieces of client-valued functionality as opposed to specific product features. 

3 – Plan by feature

Next, prioritize the list of features and assign each to a two-week timebox of work called an iteration. 

Where possible, plan a whole feature group for a specific iteration and then assign the development and testing activities for that iteration according to the feature.

4 – Design by feature

In the fourth stage, it is finally time to begin designing collaboratively. Here, the chief programmer should select the features to be developed while also identifying the domain classes.

Detailed sequence diagrams for each feature should also be developed to refine the model.

5 – Building by feature

The final stage involves pulling everything together and sending a feature prototype to QA for testing. If successful, the completed version can be added to the main product and the project team can move to the next feature.

Advantages of Feature-Driven Development

Some of the more noteworthy advantages of FDD include:

  • Minimizing complexity. The FDD approach is ideal for large and complex projects because it breaks them down into smaller components that can be delivered relatively quickly. As a result, FDD is ideal for teams who consistently fall behind schedule.
  • Fewer meetings. Many project teams find the meeting-centric nature of some agile practices tiresome. Since FDD relies on documentation to communicate, teams can spend more time working on concrete, actionable steps.
  • Scalable. FDD projects grow as a company grows. By developing small feature sets in one to two-week iterations, development occurs at a consistent pace so that progress is maintained and new employees are brought up to speed efficiently.

Disadvantages of Feature-Driven Development

While feature-driven development is a great starting point to speed up the development process by simplifying complex projects and reducing their complexity, it can also have major drawbacks. A company might lose sight of its customers and instead only think in terms of features. Indeed, a good product should always start with the customer in mind. Therefore, a feature-driven development approach combined with other frameworks like user journeys and customer mapping experience might help make the whole development process much better.

perceptual-mapping
Perceptual mapping is the visual representation of consumer perceptions of brands, products, services, and organizations as a whole. Indeed, perceptual mapping asks consumers to place competing products relative to one another on a graph to assess how they perform with respect to each other in terms of perception.
value-stream-mapping
Value stream mapping uses flowcharts to analyze and then improve on the delivery of products and services. Value stream mapping (VSM) is based on the concept of value streams – which are a series of sequential steps that explain how a product or service is delivered to consumers.
empathy-mapping
Empathy mapping is a visual representation of knowledge regarding user behavior and attitudes. An empathy map can be built by defining the scope, purpose to gain user insights, and for each action, add a sticky note, summarize the findings. Expand the plan and revise.

Key takeaways

  • Feature-Driven Development is an agile framework that organizes software development around product features.
  • Feature-Driven Development is built on a foundation of five engineering best practices. These practices help project teams maintain a focus on discrete features with respect to the project lifecycle.
  • Feature-Driven Development is ideal for large and complex projects where there is a tendency to fall behind schedule. It is also scalable in the sense that FDD projects can easily accommodate extra staff as the company grows.

Related Agile Business Concepts

AIOps

aiops
AIOps is the application of artificial intelligence to IT operations. It has become particularly useful for modern IT management in hybridized, distributed, and dynamic environments. AIOps has become a key operational component of modern digital-based organizations, built around software and algorithms.

Agile Methodology

agile-methodology
Agile started as a lightweight development method compared to heavyweight software development, which is the core paradigm of the previous decades of software development. By 2001 the Manifesto for Agile Software Development was born as a set of principles that defined the new paradigm for software development as a continuous iteration. This would also influence the way of doing business.

Agile Project Management

agile-project-management
Agile project management (APM) is a strategy that breaks large projects into smaller, more manageable tasks. In the APM methodology, each project is completed in small sections – often referred to as iterations. Each iteration is completed according to its project life cycle, beginning with the initial design and progressing to testing and then quality assurance.

Agile Modeling

agile-modeling
Agile Modeling (AM) is a methodology for modeling and documenting software-based systems. Agile Modeling is critical to the rapid and continuous delivery of software. It is a collection of values, principles, and practices that guide effective, lightweight software modeling.

Agile Business Analysis

agile-business-analysis
Agile Business Analysis (AgileBA) is certification in the form of guidance and training for business analysts seeking to work in agile environments. To support this shift, AgileBA also helps the business analyst relate Agile projects to a wider organizational mission or strategy. To ensure that analysts have the necessary skills and expertise, AgileBA certification was developed.

Business Model Innovation

business-model-innovation
Business model innovation is about increasing the success of an organization with existing products and technologies by crafting a compelling value proposition able to propel a new business model to scale up customers and create a lasting competitive advantage. And it all starts by mastering the key customers.

Continuous Innovation

continuous-innovation
That is a process that requires a continuous feedback loop to develop a valuable product and build a viable business model. Continuous innovation is a mindset where products and services are designed and delivered to tune them around the customers’ problem and not the technical solution of its founders.

Design Sprint

design-sprint
A design sprint is a proven five-day process where critical business questions are answered through speedy design and prototyping, focusing on the end-user. A design sprint starts with a weekly challenge that should finish with a prototype, test at the end, and therefore a lesson learned to be iterated.

Design Thinking

design-thinking
Tim Brown, Executive Chair of IDEO, defined design thinking as “a human-centered approach to innovation that draws from the designer’s toolkit to integrate the needs of people, the possibilities of technology, and the requirements for business success.” Therefore, desirability, feasibility, and viability are balanced to solve critical problems.

DevOps

devops-engineering
DevOps refers to a series of practices performed to perform automated software development processes. It is a conjugation of the term “development” and “operations” to emphasize how functions integrate across IT teams. DevOps strategies promote seamless building, testing, and deployment of products. It aims to bridge a gap between development and operations teams to streamline the development altogether.

Dual Track Agile

dual-track-agile
Product discovery is a critical part of agile methodologies, as its aim is to ensure that products customers love are built. Product discovery involves learning through a raft of methods, including design thinking, lean start-up, and A/B testing to name a few. Dual Track Agile is an agile methodology containing two separate tracks: the “discovery” track and the “delivery” track.

Feature-Driven Development

feature-driven-development
Feature-Driven Development is a pragmatic software process that is client and architecture-centric. Feature-Driven Development (FDD) is an agile software development model that organizes workflow according to which features need to be developed next.

eXtreme Programming

extreme-programming
eXtreme Programming was developed in the late 1990s by Ken Beck, Ron Jeffries, and Ward Cunningham. During this time, the trio was working on the Chrysler Comprehensive Compensation System (C3) to help manage the company payroll system. eXtreme Programming (XP) is a software development methodology. It is designed to improve software quality and the ability of software to adapt to changing customer needs.

Lean vs. Agile

lean-methodology-vs-agile
The Agile methodology has been primarily thought of for software development (and other business disciplines have also adopted it). Lean thinking is a process improvement technique where teams prioritize the value streams to improve it continuously. Both methodologies look at the customer as the key driver to improvement and waste reduction. Both methodologies look at improvement as something continuous.

Lean Startup

startup-company
A startup company is a high-tech business that tries to build a scalable business model in tech-driven industries. A startup company usually follows a lean methodology, where continuous innovation, driven by built-in viral loops is the rule. Thus, driving growth and building network effects as a consequence of this strategy.

Kanban

kanban
Kanban is a lean manufacturing framework first developed by Toyota in the late 1940s. The Kanban framework is a means of visualizing work as it moves through identifying potential bottlenecks. It does that through a process called just-in-time (JIT) manufacturing to optimize engineering processes, speed up manufacturing products, and improve the go-to-market strategy.

Rapid Application Development

rapid-application-development
RAD was first introduced by author and consultant James Martin in 1991. Martin recognized and then took advantage of the endless malleability of software in designing development models. Rapid Application Development (RAD) is a methodology focusing on delivering rapidly through continuous feedback and frequent iterations.

Scaled Agile

scaled-agile-lean-development
Scaled Agile Lean Development (ScALeD) helps businesses discover a balanced approach to agile transition and scaling questions. The ScALed approach helps businesses successfully respond to change. Inspired by a combination of lean and agile values, ScALed is practitioner-based and can be completed through various agile frameworks and practices.

Spotify Model

spotify-model
The Spotify Model is an autonomous approach to scaling agile, focusing on culture communication, accountability, and quality. The Spotify model was first recognized in 2012 after Henrik Kniberg, and Anders Ivarsson released a white paper detailing how streaming company Spotify approached agility. Therefore, the Spotify model represents an evolution of agile.

Test-Driven Development

test-driven-development
As the name suggests, TDD is a test-driven technique for delivering high-quality software rapidly and sustainably. It is an iterative approach based on the idea that a failing test should be written before any code for a feature or function is written. Test-Driven Development (TDD) is an approach to software development that relies on very short development cycles.

Timeboxing

timeboxing
Timeboxing is a simple yet powerful time-management technique for improving productivity. Timeboxing describes the process of proactively scheduling a block of time to spend on a task in the future. It was first described by author James Martin in a book about agile software development.

Scrum

what-is-scrum
Scrum is a methodology co-created by Ken Schwaber and Jeff Sutherland for effective team collaboration on complex products. Scrum was primarily thought for software development projects to deliver new software capability every 2-4 weeks. It is a sub-group of agile also used in project management to improve startups’ productivity.

Scrum Anti-Patterns

scrum-anti-patterns
Scrum anti-patterns describe any attractive, easy-to-implement solution that ultimately makes a problem worse. Therefore, these are the practice not to follow to prevent issues from emerging. Some classic examples of scrum anti-patterns comprise absent product owners, pre-assigned tickets (making individuals work in isolation), and discounting retrospectives (where review meetings are not useful to really make improvements).

Scrum At Scale

scrum-at-scale
Scrum at Scale (Scrum@Scale) is a framework that Scrum teams use to address complex problems and deliver high-value products. Scrum at Scale was created through a joint venture between the Scrum Alliance and Scrum Inc. The joint venture was overseen by Jeff Sutherland, a co-creator of Scrum and one of the principal authors of the Agile Manifesto.

Read Also: Continuous InnovationAgile MethodologyLean StartupBusiness Model InnovationProject Management.

Read Next: Agile Methodology, Lean Methodology, Agile Project Management, Scrum, Kanban, Six Sigma.

Read Next: Business AnalysisCompetitor Analysis, Continuous InnovationAgile MethodologyLean StartupBusiness Model InnovationProject Management.

Main Free Guides:

Scroll to Top
FourWeekMBA