Dispelling much of the folklore surrounding software maintenance, Software Maintenance Success Recipes identifies actionable formulas for success based on in-depth analysis of more than 200 real-world maintenance projects. It details the set of factors that are usually present when effective software maintenance teams do their work and instructs on the methods required to achieve success.
Donald J. Reifer–an award winner for his contributions to the field of software engineering and whose experience includes managing the DoD Software Initiatives Office–provides step-by-step guidance on how to structure the job to complete the work related to the task. Covering all phases of maintenance up to software retirement, he identifies the resources required to ready support system operation during transition and turnover, details best practices for establishing a maintenance infrastructure, and spells out a wealth of best practices aimed at maintaining and sustaining the product once it is deployed.
This book tells you how to manage today’s ever-evolving maintenance environment so you can build the foundation for sound maintenance work. It explains how to create a robust management infrastructure, ensure proper resources are available, establish a user support structure, and conduct a meaningful measurement program. Filled with real-world examples and a detailed case study that is threaded across chapters, it provides you with the understanding and tools to plan for a major upgrade and determine the best time to retire your current software systems.
Review By: Robert Watkins 03/15/2012The most important thing to know about this book is that it's most useful to large software products that require at least a couple dozen engineers on staff using mostly a waterfall approach to maintain it. Donald Reifer does a good job of walking you through the work of transitioning this type of product to a new development team. He uses his knowledge gained from many, many projects to identify the success recipes discussed in the book.
Whether you are a team lead or senior executive responsible for such a transition, you will learn some valuable lessons from Reifer's experience. Even if your project isn't large or doesn't use waterfall processes, you'll still get something useful from the book.
Reifer goes to some length to describe his own view of what software maintenance entails based on his experience working on projects that fall into that category. One thing he points out is that many papers and books on software maintenance only focus on the individual tasks of code repair and not the wider view of transitioning such work to another team and ensuring they are well prepared to take on the responsibility for maintenance. Based on his thoroughly described view of what is involved in software maintenance projects, he provides a list of the major tasks involved and devotes a chapter to each.
One discussion in particular I liked was his approach to assessing priority for new work. This is done in a way that is not only consistent but also useful. Too many organizations have trouble assigning priority in any rational way. Reifer's approach is worth a look as a model to base your own prioritization scheme on.
But this book is not without its flaws. While the book is most suited to a waterfall approach, his rationale for not discussing agile methodologies is that agile has not proved its worth, which is a questionable proposal. He also dismisses cloud computing as being too immature and describes not being able to clearly assess who in the cloud is responsible for any particular failure as an example of the shortcomings of cloud computing.
But, there is more good than bad here for those who find themselves managing a large software maintenance project.