Parikh’s book is a new version of a 1982 edition of the same title. He has eliminated 10 chapters from the original book and added 11 new ones. Four of the original chapters are now part of other publications by Parikh.
The book is a collection of about 41 essays written over the past 16 years on software engineering, software life cycle economics, and the problems of system maintenance. The average publication year for the cited essays is 1981; the oldest essay was originally published in 1973 and the newest in 1988. These essays are woven together by introductions and footnotes from the author, and the book is divided into seven sections:
:.BC I:.BC V(I) Maintenance: The Problem and Perspective
:.BCV(II) Practical Tips for Maintainers
:.BCI(III) Management Considerations and Techniques
:.BCI(IV) Structured Methodologies of Maintenance
:.BCI:.BCI(V) The Future Directions
:.BCI(VI) Software Maintenance Digests and Reviews
(VII) Bibliographies and References
I did not enjoy this publication. The collection is anecdotal and entertaining but seldom enlightening. It provides no in-depth review of successful maintenance efforts and no lessons learned from success or failure. The book teaches that lack of planning is costly, that maintenance is a hopeless task, and that there are no mechanisms to make maintenance effective.
In the 1980s, companies like Lotus, Microsoft, and Borland have created large products with huge user populations. Some of these companies, such as Borland and Lotus, shine in their ability to produce working software and then update it. Others, such as Microsoft and Ashton-Tate, while struggling do produce increasingly better versions of the same programs. All of them maintain their software effectively and sell increased functionality to their customers.
No discussion of this (collective) largest of all software production efforts in history is available in Parikh’s book. Moreover, programs such as IBM’s operating systems and DEC’s VMS and All In One, etc., which have been around and maintained for decades, are ignored. Lastly, Ada, the programming language which has developed over the past 10 years into a system, ethic, philosophy, and methodology to address the problem of change and maintenance, is also ignored.
Maintenance is an important part of the software life cycle that usually consumes considerably more resources than those expended in the original. Parikh, while describing some of the typical problems of software maintenance, never comes to grips with how to organize for and perform effective software maintenance.