Release Strategy

Description   Related Tools    
Toggle All | Print Page Print Page
Background
System development decisions often have deep strategic, business, and cost implications. If not planned correctly ramifications of incorrect decisions may be felt long after the decisions have been made. On the periphery of system development one very important aspect addressing this issue may often be under emphasized or overlooked all together. This is the implementation, execution, and management of an effective software release strategy. This becomes exponentially important when building a custom application because of the many challenges facing development teams:

To illustrate how complex a development environment can be, and how important an effective release strategy is, consider the following example. A development team is building a custom application and might be required to release a major new feature or function multiple times a year to meet the demand of its clients. This environment is further complicated by the management of defects, issues, risks, change requests, etc. resulting in the distribution of multiple minor patch or emergency releases. The team uses an iterative approach to development and performs a test build at least once a day. Additionally, the application may have dependencies and interdependencies on other applications. Managing software in this type of environment is often done using a source control management software application (Microsoft's Visual Source Safe [Visual Studio], IBM's Rational Clear Case, Borland's StarTeam, CVS, etc).
 


Overview
Deciding to release an application is often a tradeoff between early release and deferred release. Each alternative has its own sets of pros and cons that must be weighed against each other to determine maximum value for stakeholders. For example, rushing delivery benefits stakeholders with earlier release. However, this may require reducing functionality and may decrease overall quality. As a result, future costs may rise in order to fix bugs and distribute patches. Deferring a release allows time for enhanced functionality and improved quality. However, this approach may incur additional development cost and may result in missed opportunities.

Release Strategy
It is sometimes difficult to accurately determine the most appropriate product release date, feature functionality, associated development costs, quality concerns, etc are all challenges needing to be considered. Proper development and implementation of a release strategy may alleviate some of these and other challenges related to scope management, quality management, communications, risk management, etc. A formal release strategy makes distributing software easier and more consistent for the performing organization and also outlines how and when product will be made available to the client. A release strategy may include information on topics such as:

Release Management
Release management approaches may vary from organization to organization. However, regardless of which approach is used a best practice approach to release management is comprised of activities that effectively manage the planning, organization, development, testing, and implementation of new features and functions, defects, change requests, etc. into the application being developed. Some of the stages that a software release may go through as it works through the release process may include:

Release Numbering
Software release numbering may appear trivial but is critical to the overall success of any effective release strategy. The illustration below from IBM's documentation on enterprise software release management provides an example of a standard for numbering and naming releases that is flexible enough to handle most software delivery situations and can be modified if needed to apply to almost any project.

Release Numbering

Release decisions are ultimately affected by how much testing is needed to verify that both functional and non-functional requirements have been correctly built into the system and quality, as defined by project stakeholders, has been met. How much testing is needed depends on the level of difficulty to verify requirements and quality (testing/verification). The optimal level is difficult, if not impossible, to find. In practice, cost and time will constrain this activity to a level that the performing organization can tolerate.

A release checklist is one approach that can help identify when a product is ready for release that can be used to help the project team identify when the product is ready for release to the client. This type of checklist also enables the project team to validate client requirements and expectations and can be used as a communication vehicle to validate this for the client as well. The process for creating a release checklist may include items such as:

Some of the individuals involved in a typical release process may include:

The ultimate decision on determining if a product release is ready for distribution should be made based on an objective analysis of factors such as:


Best Practices

Practice Activities