Maintenance is the enigma of system development. It holds the software industry captive, tying up programming resources. Analysts and programmers spend far more time maintaining programs than they do writing them. Maintenance accounts for 50-80 percent of the total system development. Since the software is handmade product designed in an ad hoc fashion with few standards. It comes out late, is poorly documented and therefore is difficult to maintain. There are other problems as well:
- Maintenance is not as rewarding as exiting a development systems. It is perceived as required neither skill nor experience.
- Users are not fully cognizant of the maintenance problem or its high cost.
- Few tools and techniques are available for maintenance.
- A good test ply is lacking.
- Standards, procedures and guidelines are poorly defined aid enforced.
- Maintenance is vowed as a necessary evil, often delegated to junior programmers. There is practically no maintenance manager job classification in the MIS field.
- Programs are often maintained without care for structure and documentation.
- There are minimal standards for maintenance.
- Programmers expect that they will not be in their current commitment by the time their programs go into the maintenance cycle.
Maintenance or Enhancement.
Maintenance means restoring something to its original condition. Unlike hardware, however, software does not wear out, it is corrected: Enhancement means adding, Modifying, or redeveloping the code to support changes in the specifications. It is necessary to keep up with changing user needs and the operational, environment. Maintenance can be classified as corrective, adaptive or perfective.
Corrective maintenance means repairing processing or performance failures or making changes because of previously uncorrected problems or false assumptions.
Adaptive maintenance means changing the program functions.
Perfective maintenance means enhancing the performance or modifying the programs to respond to the user additional or changing needs.
Reducing Maintenance Costs.
Several MIS organizations have done this through a maintenance reduction plan that consists of three phases:
Maintenance Management Audit: It is through interviews and questionnaires evaluates the quality of the maintenance effort. Some of the questions asked are:
- Are maintenance requests logged in a maintenance request log?
- What per cent of total hours worked are spent on error corrections, additions/ changes/ deletions, and improvements?
- Does your organization currently have a well defined maintenance reduction program?
Software System Audit. This system entails:
- An overall view of the system documentation and an assessment of the quality of data files and databases and system maintainability, reliability and efficiency.
- Function information gathered on all the programs in the system to determine how well they do the job. Each program is assigned a preliminary ranking value.
- A detailed program audit, considers the ranking value, mean time between failure (MTBF) and the size of the maintenance backlog. MTBF determines the systems availability to users.
- Program rewrites, which include logic simplification, documentation updates, and error correction.
- System level update, which completes system level documentation, brings up to date data flow diagrams or system flowcharts and cross-references programs.
- Re-audit of low ranking programs to make sure that the errors have been corrected.
The outcome of such a maintenance reduction plan is more-reliable software, a reduced maintenance back log, improved response times in correcting errors, improved user satisfaction, and higher morale among the maintenance staff.