Iterative software development processes—
disciplined and customer-driven

The development method you choose will depend largely on one key factor, the clarity of your requirements. Taking the time to consider this factor will save you a lot of time, money and trouble in the long run. Why is clarity of requirements so important when choosing a development method?

Let’s face it, developing commercial software applications is not like software for satellites and aircraft carriers. For these projects, the functional requirements are locked down early in the process. Development teams can use a predictive method like the Waterfall model with its strict division of project stages.

In contrast, customer requirements are typically not well understood at the beginning of commercial software projects. Why?

  • It’s a new product. Customers don’t know what they want until they see an initial version.
  • You can’t get the information. It’s not possible to gather accurate information from customers about what they want.
  • Customers and end-users can’t agree. They can’t reach consensus about which features are most important.
  • The world changes. Changing realities and evolving understanding lead customers to change their mind about what is most important to them.

The solution to these uncertainties is to use iterative software development methods.

Iterative development processes enable you to accommodate your customers. You don't have to know all the details of what they want before the project begins.

Iterative processes help clarify assumptions. They reduce risk because they can adjust to incomplete or changing requirements.

Which iterative development methods should you consider? They must not only respond flexibly to changing requirements, they must also provide a disciplined framework with predictable schedules.

Two methods that have proven to work when requirements are not well-understood are the Rational Unified Process® and Agile Software Development.

  Rational
Unified Process

Agile Development
Initial requirements Well understood Main problem understood, detailed requirements less so
Control factors Planning Feedback during the project
Iterations Many prototype iterations early in project, then final system is constructed Many iterations throughout the project. Each iteration produces a workable version.
Typical
project profile
Larger, well-defined projects New products where rapid feedback is needed

Rational Unified Process – larger projects,
well-understood requirements

The Rational Unified Process is an adaptable process framework with origins in the spiral model. The requirements are well understood at the beginning of the project, with a clear schedule, design, and feature goals.

The team begins with the requirements and use cases. It then develops a series of prototypes, scaled down versions that approximate the characteristics of the final product. Once the customer accepts the prototype, the team constructs and tests the final system. RUP® combines elements of the waterfall model and the prototyping model.

RUP is best suited for large and well-planned projects.

Benefits

Since the requirements are well understood in a RUP project, the development team can accurately design and plan activities without significant surprises. It avoids detours that lead to increased costs, longer schedules, and general frustration. In other words, the team can control the project schedule throughout construction and transition.

Agile software development – fast turns and evolving requirements

When the main problem is understood, but product definition, use cases, and requirements are not available at the beginning of the engagement, an iterative Agile process is more productive. With Agile methods, the development team can quickly adapt to changing realities as the project evolves.

The Agile method is often used by startups for new products where the developers need rapid feedback. It’s also used by IT organizations whose internal customers can’t agree on what they want.

The team prioritizes development activities into small segments and enters each iterative phase with clear requirements, aiming for the next date when it wants an operationally capable version. Since feedback is the essential control mechanism, development cycles are purposely short. Short cycles allow for frequent review from the project stakeholders, both management and customers.

Benefits

Projects implemented using agile processes are efficient and adaptable. They successfully deliver the most necessary features while leaving off low-priority, time-consuming extras. Teams quickly ramp up development and satisfy essential project requirements.

Agile projects focus the effort on the ship date. As you constantly, prioritize, you can optimize on the ship date and know that you are including the highest priority features.

Some people think that Agile can’t be disciplined, but it’s discipline that let’s you be Agile. It’s this discipline that requires senior developers for Agile projects. These are the developers that have the experience and maturity to respond to a dynamic set of requirements.

Waverley is always careful to assign developers with this level of experience to Agile projects.

Learn more about how Waverley uses iterative development methods or contact us for assistance deciding what method to use on your next project.