|
Today, most organizations develop software applications as a series of successive releases. Release management is the discipline that encompasses producing and delivering each release. This discipline applies to all software development activities including commercial software development, custom IT software development, and web application development. Since parallel software development entails making changes to different releases of the same software application at the same time, it poses a unique set of challenges for release management. While these challenges are formidable, software development teams can address them. To meet the challenges posed by parallel development, the focus of release management must expand beyond a single release to include all releases planned, under development, and in maintenance. What is a Software Release? Stated simply, a release is the set of features of a software application implemented during a software development lifecycle. A release is also the time-bounded activities that occur to implement these features. In other words, a release is both the product of one software development lifecycle and the activities that occur during that lifecycle to make and support the product. The software development lifecycle begins with the identification of the requirements for a software application, continues through the design, development, testing, and delivery of the software application, and concludes with the post-delivery maintenance of the software application. The software development lifecycle is complete when a new version of the software application ships, replacing the version in post-delivery maintenance. While described as a series of activities, the software development lifecycle does not have to follow a waterfall approach in which one activity starts when the previous activity completes. It is possible, and even desirable, to divide the software development lifecycle into a series of iterations. Each iteration can be a mini-lifecycle in which a new feature is designed, developed, tested, and delivered. Taken together, a group of iterations forms a release. What is a Release Management? Release management consists of the technical and management activities needed to take a release from a set of requirements to the delivery of a software application that implements these requirements. Release management activities often include the following:
While good communication is essential for propagating code changes between parallel releases, poor communication is often the result of the silo effect. The silo effect occurs when each release team works in isolation. Each release team focuses only on the tasks needed to complete their release. The upstream release team pays little or no attention to the changes to propagate to the downstream release. The downstream release team continues to develop code unaware of how to integrate changes from the upstream release. In the worst case, the consequence of the silo effect is broken functionality following a release. This occurs because the new release is missing critical changes from the previous release. In the best case, the consequence of the silo effect is a scramble to integrate changes once the development team realizes that critical changes were never integrated in the downstream release. Understand Build and Runtime Dependencies An issue closely related to change propagation is build and runtime dependencies. Release management in a parallel development environment requires understanding how a change upstream depends on other changes upstream. A change in one part of the code base may depend on one or more changes in other parts of the code base. This dependency may surface either at build time or at runtime. A build time dependency means code will not compile until the dependency is satisfied. A runtime dependency means that code will not produce the desired results when it executes because the dependency is not satisfied. To satisfy a build time or a runtime dependency, all dependent code changes must be propagated at the same time. A responsibility of release management is to identify and manage build and runtime dependencies so that they are satisfied whenever a code change is propagated from one release to the next. In the same way that changes are tracked, dependencies must be tracked so that code changes are not propagated haphazardly from one release to the next. Conclusion Parallel software development poses a unique set of challenges for release management because of the need to propagate code changes from one parallel release to the next. An essential role of release management for parallel releases is to track and manage change propagation from one release to the next. Since the effort required to propagate changes is not insignificant, time and resources need to be allocated in the release schedule for change propagation. Michael Sayko is a software configuration management consultant based in Austin, Texas. He is experienced with the practice of software configuration management from having served as a configuration manager on large, fast-paced software projects. You can reach Michael by email at mss@acm.org.
Set as favorite
Bookmark
Email this
Hits: 6900 Trackback(0)Comments (1)
|
| Last Updated on Sunday, 05 August 2007 15:09 |



