Feature Driven Development: Focus on What Your Clients Value

Learn the benefits of making the features your clients value the center of your development process.

Choosing a project management methodology that keeps development on track and on schedule can be a challenge for ISVs. One of the options available to you is Feature Driven Development (FDD), an incremental software development model that puts the primary focus on the feature set that the client values. It’s this focus that helps developers plan and manage each stage of project development.

FDD vs. Agile

Although FDD predates Agile software development, it aligns with the four agile principles:

  1. Individuals and interactions are more important than processes and tools
  2. Working software takes precedence over comprehensive documentation
  3. Customer collaboration trumps contract negotiation
  4. Response to change is favored over following a plan

Feature Driven Development founder Jeff DeLuca explains that a key difference between FDD and Agile, however, is that FDD “is not just programmer oriented.” Projects are tracked and reported in terms of the features that the client values. According to DeLuca, “The features list is itself an expression of the functional requirements and this structure represents and ever-increasing value to the client.”

5 FDD Processes

DeLuca, who originally devised the Feature Driven Development method for a 15-month, 50- person software development project for a Singapore bank in 1997, identified five basic activities necessary for FDD:

  1. Develop an overall model: Domain and development team members work together to determine at a high level what the software will do and how it will work. Beginning the project by developing an overall model lays the groundwork for collaboration and good communication among stakeholders during the project.
  2. Build a features list: Using the model in step 1, the team or the chief programmer builds a list of features that are required to deliver the results the client wants.
  3. Plan by feature: The chief programmer builds a plan for the entire project, including detailed plans for delivering each feature.
  4. Design by feature: The chief programmer selects features for development and assigns them to feature teams that consist of a project manager, chief architect, development manager, domain expert, class owner and chief programmer.
  5. Build by feature: Feature teams complete coding, testing, and documentation of each feature, then advance the feature to the main build. This allows developers to see progress and implementation — often every two weeks — and builds the right environment for quality control.
When FDD is the Software Development Method of Choice — and When It’s Not

An Apiumhub blog states that FDD is well-suited to large complex projects. Apiumhub also points out that Feature Driven Development facilitates new members joining the team and allows them to get to work in a short period of time. And, as with other Agile methods, the incremental development process ensures that the product is always up to date and ready to show the client. It’s also easier to spot and correct errors in source code, unlike in a waterfall project that advances linearly to completion and then goes through QA.

DeLuca’s website states, “To this day, FDD tracks better and more meaningfully for line of business corporate development than other Agile methods.”

A Globalluxsoft blog points out that FDD isn’t always the right choice for software development. For example, it’s not a workable model for small or one-man teams or for small projects with set-in-stone deadlines.

Deliver What the Client Values

As the name implies, an important benefit of Feature Driven Development is your team is focused on the features the client values, and, therefore, the product, even in incremental stages, truly addresses the client’s needs and goals. With this as the unifying principle, your team will be on the right path to developing applications that meet specs and result in satisfied customers.

Datacap Systems