Software maintenance and change control plans are critical to the overall success of a software project. A properly executed plan will not only provide more reliable coding changes, and change implementations; it will also have beneficial financial impacts on the company. Large portions of software expenditures are related to program maintenance. Poorly tested or documented changes and coding changes implemented on an emergency basis as twice as costly as those that are well planned and tested. A plan that controls changes, tests, and implements the changes in a thorough manner will make more efficient use of all the companies' resources. To be effective a plan must be in place through ...view middle of the document...
Software Maintenance can be defined as four separate activities. These activities include Corrective Maintenance, Adaptive Maintenance, Perfective Maintenance, and Preventive Maintenance. Corrective Maintenance can be described as a process that includes diagnosis and correction of errors. Adaptive Maintenance is an activity that modifies software to properly interface with a changing environment, whether it is hardware or software related. Perfective Maintenance is responsible for adding new capabilities, modifying existing functions and making general enhancements. This accounts for the majority of all effort expended on software maintenance. Preventive Maintenance changes software to improve for future maintainability or reliability or to provide a better basis for future enhancements. This activity is rarely used. Usually a new version is released before any preventive maintenance can take place. All of these activities must exist in a maintenance plan. A typical company's maintenance activities are distributed by the following percentages: perfective is 50%, adaptive is 25%, corrective is 21% and all others are 4%.There are three characteristics associated with software maintenance: activities, costs, and problems. The activities required to accomplish the maintenance phase and the impact of a software engineering approach (or lack thereof) on the efficacy of such activities include unstructured and structured maintenance. Unstructured maintenance is when the only available element is the source code. This involves painstaking evaluation of the code, complicated by poor internal documentation. Things such as program structure, global data structures, system interfaces, and performance and/or design constraints are difficult to ascertain and frequently misinterpreted. Ramifications of changes to the code are difficult to assess and regression tests are impossible to conduct because no record of testing exists. Structured maintenance is much easier to manage. It begins with an evaluation of the design documentation. The impact of required modifications or corrections is assessed and an approach is planned. The design is modified and reviewed, new source code is developed and regression tests are conducted. There are several costs associated with the maintenance phase. Typical software organizations spend anywhere from 40 to 70 percent of all funds conducting maintenance. The result is maintenance-bound organizations. Another result could be loss or postponement of development opportunities. Customers become dissatisfied when requests cannot be addressed. A reduction in overall software quality can result from changes that introduce latent errors in the maintained software.The following is a flowchart of the procedures that the organization will utilize in order to monitor the change control within the organization. This flowchart will be used as a strict benchmark in order to tightly control the software changes within the company.1.Goals o...