Software Maintenance Management
In most software organizations, the budget for software maintenance is much larger than for software development. However, there is much less management attention focus on software maintenance than on software development. This book illustrates how process improvement models popular with software development can be applied to software maintainers. In particular, this book presents a new way of capturing the uniqueness of software maintenance activities in a model-based process improvement approach. The focus of this book is, therefore, on the uniqueness of software maintenance activities, on how to assess the software maintenance using the Software Maintenance Maturity Model (S3m model) and how to figure out improvement paths.
Review By: Daniel Campanelli
03/02/2009The main premise of the book is that software maintenance and software development are two different disciplines. Software development utilizes project planning tools and techniques that are typically long term in duration. Software maintenance utilizes event/request management that is typically short term in duration.
The authors argue that existing software engineering standards have rarely been effective in improving software maintenance processes as standards typically indicate a state of being. They typically do not provide guidelines on how to achieve them. They go on to argue that the CMMI and the SWEBOK are geared more towards software development than software maintenance.
As a solution, they propose a new maturity model they call S3m® that is similar in structure to the SEI Capability Maturity Model Integration (CMMI). It is comprised of four process domains supported by eighteen underlying key process areas (aka KPAs). The content of the model is based on the maintenance portions of the current software engineering literature such as ISO 12207, ISO 14464, ISO 15504, the CMMI, and the Software Engineering Book of Knowledge (aka SWEBOK).
The thing I like most about the book is that it is practical and non theoretic. As is the case with the CMMI and development organizations, the intent is for a maintenance organization to compare its actual activities against the key process activities under the relevant process domains to identify areas where they may be deficient. They would then refer to the roadmap presented for each of the deficient KPAs identified to determine the steps they need to take to achieve the desired level of performance, thereby increasing the maturity of their maintenance process.
In my opinion, the authors have addressed a very important deficiency in software engineering. Software maintenance typically comprises 70-80 percent of the work done by most IT organizations. Therefore, there is a serious need for a tool such as S3m®. The arguments presented by the authors are well justified and based on well documented, factual evidence.
The only problem I see at this point is that S3m® is a draft model proposed by the book’s authors. As S3m® gains wider acceptance, I hope it will be adopted by the Software Engineering Institute and given the same respect given to its cousin the CMMI.
In short, I think this book is a must read for any software professional who wants to be at the forefront of what I think is a software engineering breakthrough. I recommend it as a serious addition to any software practitioner’s library.