Release Phases and Criteria

Mark Kampe
$Id: relphases.html 160 2007-11-29 02:59:07Z Mark $

1. Introduction

There are several terms to describe system releases, and many processes to determine whether or not a product is ready for release. Ultimately, the goals for a particular product and release are a business decision; The release criteria should follow from those goals, and the release descriptions will be twisted to show the product in the best light.

Such relativism would seem to preclude precise definitions of release phases and the criteria they should satisfy ... and indeed definitive precision is not possible. There are, however, some commonly used terms, and it is possible to discuss what they are commonly inferred to mean.

Similarly, while there may never be a set of universal release criteria, it is possible to discuss the types of criteria that are commonly used, and rational processes for developing specific criteria for a particular product and release.

2. Release Taxonomy

2.1 Release Maturity

There are a few terms that are regularly used to describe the maturity (functional completeness, correctness, and confidence) of a release. The most common names for formal releases are:

2.2 Release Incrementality

In addition to describing the expected completeness and stability of a release, there are also a set of terms for describing the degree of change that is introduced in a new release. Different organizations use different degrees of precision and formality in the application of these terms, but a reasonable set of expectations might be:

2.3 Other Release Related Terms

3. Release Criteria

About 30 years ago, Orson Welles, as a celebrity spokesman, made famous the Paul Mason motto:

This reassured premium (jug) wine purchasers that they were making the right decision, without every actually stating how Paul Mason was making the critical determination of whether or not a wine's time had come. I, personally, don't know enough about wine to be able to assess the verity of Paul Mason's claim. I do, however, know a little bit about software, and I am pretty certain that many of the products I have used were sold well before what I would have considered to be their time. The sad fact is that, while many products are carefully released, a distressing number of software products escape.

While it is (fundamentally) impossible to attempt to define universal criteria for software readiness, release criteria can be defined rationally, and on the basis of objectively ascertainable information.

3.1 Goals

When is software ready to ship?

Thus, any rational discussion of release criteria must begin with a clear statement of our goals for the release in question. Releases can have many different goals. Typical examples might be:

Obviously many others, and combinations, are possible. The above list, however, should be sufficient to illustrate how wide the range of release goals might be. Their is a comparable range of release readiness criteria that might be implied by each of these goals.

It is tempting to state general and noble goals (because they make us look noble and visionary), but it is important to be as honest and specific as possible. Release goals are the highest level of requirements. Most of the other requirements we gather are simply trying to understand the necessary conditions to achieve our goals. Like any other requirements ... if we state them incorrectly, they will lead us to specify and design the wrong product, and to make many other "wrong" decisions along the way.

Some of our goals may be sufficiently venal that we may not choose to widely publicize them ... but that doesn't mean we should ignore them. Clarity on our goals is a prerequisite for a good plan to achieve them. Ambiguous goals and decorative non-goals will give rise to bad plans.

3.2 Common Types of Criteria

Once we understand what our goals for the release are, we can start trying to articulate necessary conditions for success. These conditions typically involve some combination of functionality, quality, and delivery time. Many of these conditions will be shaded (with some things being absolutely required, some being highly desirable, and some being merely nice-if-possibles). We may find that we can finely sub-divide functionality, and assign different priority, quality, and time requirements to each of the sub-sets. Ultimately this should give us a set of requirements that can serve as the basis for release criteria.

Functionality and date requirements are easily specified and tested. If the functionality is reasonably well specified (which it needs to be before we can build it), it should be easy to ascertain whether or not the product provides the required functionality. When we can state what we want in measurable terms, life is good. Where we get into trouble is when we do not know how to state what we want in measurable terms ... which is often the case with quality criteria:

The challenge then is to find:

There are several metrics that are commonly used in quality criteria:

Some of these criteria are incomplete, and empower others to make some of the decisions:

Such flexibility is necessary because it is impossible to fully specify (in advance) all of the criteria that must be satisfied. It makes sense to set general expectations at a high level, but many of the details are best worked out on a case by case basis. There are also risks associated with such delegated decision responsibility. People who have an interest in shipping (as opposed to achieving release goals) may be motivated to under-prioritize bugs or approve inadequate test plans. There are certainly cases where release criteria are abused.

It is very difficult to design a set of criteria that provides adequate flexibility to deal with unknowns, while preventing abuse. Also, the sad fact is that much abuse is actually encouraged. People are quite perceiptive, and quickly figure out if an executive is paying lip-service to quality while focusing on date. Ultimately it comes down good people, and clear and honest communication.

3.3 General Considerations

Like most other project plans, release criteria are living documents, subject to continuous evolution. The fact that they are subject to change, however, does not mean that it does not matter what we start with. We should work hard to define clear and reasonable release objectives, and release criteria that will testify to their satisfaction. As they evolve they should become more specific and better justified. Arbitrary changes (inevitably in the direction of lowered expectations) must be critically scrutinized.

It is critical that release criteria be established early in the project, when people are focused on goals and plans. If we wait until we are near our proposed ship date to establish the release criteria, there will be strong pressure to set the bar at "wherever we currently are".

Setting criteria that will only be measured when the final ship decision is to be made is a formula for disaster. The criteria should be pushed (in graduated steps) back to earlier milestones, so that acceptability is measured throughout the entire development process, and we are able to continuously assess our progress towards our ultimate release criteria. This makes it possible to monitor progress and detect problems as early as possible, giving us more opportunity to recognize and respond to those problems, and a greater likelihood of success.

3.4 When Push Comes to Shove

There are very few absolutes in this life, and difficult decisions are seldom made in complete accordance with written guidelines. Often, when a ship decision is made, there are arguments for shipping and arguments against it ... and neither set of arguments is decisive. If they were, the decision would be clear.

Ultimately, the decision to ship or wait is a strategic risk management problem. Do the expected positives outweigh the expected negatives? This decision is usually left to the product owner. Not the engineers who built it, not the managers who oversaw its development, not the people who have evaluated it, but the person who is responsible for the business unit, service, or laboratory.

Everybody will want to influence the decision maker, but what they really need is not "decision advice". What the decision maker needs is: