The Unified Process Transition and Production Phases
This is the last in a four-book series comprising a critical review of the Unified Process that includes a survey of the alternate software processes and the synthesis of a more robust process. The Transition and Production phases are the final phases of the Unified Process that provide for the deployment, operation and support of the system among the user groups. This volume includes a master's collection of best practices that includes practical advice for successfully launching the software, applying personal processes, developing and enhancing organizational software processes, achieving reuse, conducting project assessments, saving a troubled project, testing the system, avoiding a maintenance nightmare and operating and supporting the software.

Review By: Bob Birss
04/27/2002This book collects thirty-seven articles originally published in Software Development magazine on the Transition Phase and Production Phase workflows of the “Enterprise Unified Process” software development framework. The articles are glued together by extensive commentary on them and discussion of best practices for each phase by Ambler and Constantine.
This book is the final volume of a four-volume series on the “Unified Process” (UP) software development framework; it completes the explication of the “Enterprise Unified Process” (EUP) first defined in Scott Ambler’s November 1999 article in Software Development magazine, “Effective Software Development.” The EUP extends the scope of the UP beyond just the development process to the entire software process; the goals of the series are to provide proven alternative approaches to UP techniques and to fill in some of the gaps in the UP.
The volume is an anthology of thirty-seven articles originally published in Software Development on the Transition Phase (getting the software ready to be put into production) and Production Phase workflows. (The earlier volumes in the series deal with the Inception, Elaboration, and Construction Phases.) It concludes with ten articles that look beyond the Unified Process to alternative techniques, especially the “agile techniques” such as Extreme Programming (XP) and Agile Modeling (AM). The articles are introduced and glued together by extensive commentary on them and discussion of best practices for each phase by Ambler and Constantine. Authors represented include James Bach, Karl Wiegers, Warren Keuffel, Bertrand Meyer, Martin Fowler, Jim Highsmith, and Mary Poppendieck as well as Ambler and Constantine. Finally, there are six pages of references and recommended readings as well as numerous URLs.
This book (and indeed the other volumes in the series) is definitely worth having and studying, whether one is trying to enhance the entire software development process or just looking for best practices in, say, project retrospectives. In fact, perhaps the most provocative piece is Norm Kerth’s July 1998 article, “Making Lemonade from Lemons,” on how to benefit from project failures by embracing the failure and turning it into something even more valuable than project success. He recommends confronting the feelings of project failure head-on. He argues that dealing with feelings may sometimes yield unexpected payoffs for managers and developers—to take advantage of the opportunity for improvement that failure provides requires facing not only technical and management issues but also people issues.
The section on testing is particularly good. It includes articles on hiring and training testers, managing a test team, test case selection, testing techniques, acceptance testing, and using defect information to improve both the software and the development process. It discusses these best practices for the test workflow:
-Put your testers first and treat them with the respect they deserve because they are valuable members of the team
- Recognize that testing during the Transition and Production phases is difficult and different from testing performed in the earlier phases
- Adopt common testing best practices and integrate them throughout the entire system lifecycle
- Recognize that it isn’t over until it’s over—bugs may get past testers and be found in production, and they need to be dealt with swiftly and effectively