December 13, 2004
Software Maintenance and Change Control
In today's world there is very unusual to have a program developed that will not have further development after release. The requirements of the time that we live are very dynamic and there is a need for constant adaptation. A basic requirement for any new software product is to be adaptable, easy to maintain and modify. Time factor and cost factor are ruling in the agitated competition and only those who are well organized and prepared are able to survive. The question for software maintenance and change control is taking key position in both perspectives: the perspective of the manufacturer of the software, and the perspective of the consumer. In the negotiation and management of these two major players is the complexity of the software maintenance and change control. In this paper we will focus on some important specifics of these processes. Thomas Pigoski in his "template for a software maintenance plan" defines software maintenance in the following way: "Software maintenance is the totality of activities required to provide cost-effective support to a software system. Activities are performed during the pre-delivery stage as well as the post-delivery stage. Pre-delivery activities include planning for post-delivery operations, supportability, and logistics determination. Post-delivery activities include software modification, training, and operating a help desk." Later on in the same material he describes some organizational requirements in the same context: "Maintenance is performed by the developer, a separate maintainer, or by a third-party organization. It is important that the organization responsible for maintenance be identified in writing with full responsibilities. The Maintenance Plan accomplishes this. The maintainer should develop the Maintenance Plan as well as the supporting procedures. Since software maintenance activities invoke the use of organizational resources, it is recommended that the highest level of management in the organization approves of this undertaking and approves the final version of the plan and the procedures. Other functions that should also review and approve this plan include Software Quality Assurance, Software Engineering, Software Testing, Project Management (when applicable), the organization's Software Configuration Management Function (when applicable), and the customer (when applicable)." In other words, we have demonstrated that software maintenance has very important role for the cost effectiveness of the working system, and involve the use of organizational resources. In this direction, another report by Robert Vienneau, published on the DACS web site entitled "The present value of software maintenance" look at the software maintenance as investment. "A variety of tools and techniques have been introduced over the last two decades for improving software development and maintenance. Examples include Structured Analysis, Structured Programming, Computer Aided Software Engineering (CASE), Object Oriented design, formal methods, structured inspections, and new testing methods. This paper provides managers of software organizations with techniques for choosing among these possibilities. It also provides an outline of valid arguments to sell upper management on the cost-effectiveness of investing in process improvement. The analysis techniques recommended here result in findings in a language understood by upper management. Software projects require expenditures and generate revenues over a lengthy span of time. A software project can be considered the result of an investment decision in which expenses are dispersed in the belief that greater benefits will be obtained in the future. Similarly, the choice of the specific techniques employed on a software project are the results of investment decisions that should reflect an attempt to optimize...