Software Maintenance Cost Factors
There are two types of cost factors involved in software maintenance.
- Non-Technical Factors
- Technical Factors
1. Application Domain
- If the application of the program is defined and well understood, the system requirements may be definitive and maintenance due to changing needs minimized.
- If the form is entirely new, it is likely that the initial conditions will be modified frequently, as user gain experience with the system.
2. Staff Stability
- It is simple for the original writer of a program to understand and change an application rather than some other person who must understand the program by the study of the reports and code listing.
- If the implementation of a system also maintains that systems, maintenance costs will reduce.
- In practice, the feature of the programming profession is such that persons change jobs regularly. It is unusual for one user to develop and maintain an application throughout its useful life.
3. Program Lifetime
- Programs become obsolete when the program becomes obsolete, or their original hardware is replaced, and conversion costs exceed rewriting costs.
4. Dependence on External Environment
- If an application is dependent on its external environment, it must be modified as the climate changes.
- For example:
- Changes in a taxation system might need payroll, accounting, and stock control programs to be modified.
- Taxation changes are nearly frequent, and maintenance costs for these programs are associated with the frequency of these changes.
- A program used in mathematical applications does not typically depend on humans changing the assumptions on which the program is based.
5. Hardware Stability
- If an application is designed to operate on a specific hardware configuration and that configuration does not changes during the program's lifetime, no maintenance costs due to hardware changes will be incurred.
- Hardware developments are so increased that this situation is rare.
- The application must be changed to use new hardware that replaces obsolete equipment.
Technical Factors include the following:
It should be possible to change one program unit of a system without affecting any other unit.
Programs written in a high-level programming language are generally easier to understand than programs written in a low-level language.
The method in which a program is written contributes to its understandability and hence, the ease with which it can be modified.
Program Validation and Testing
- Generally, more the time and effort are spent on design validation and program testing, the fewer bugs in the program and, consequently, maintenance costs resulting from bugs correction are lower.
- Maintenance costs due to bug's correction are governed by the type of fault to be repaired.
- Coding errors are generally relatively cheap to correct, design errors are more expensive as they may include the rewriting of one or more program units.
- Bugs in the software requirements are usually the most expensive to correct because of the drastic design which is generally involved.
- If a program is supported by clear, complete yet concise documentation, the functions of understanding the application can be associatively straight-forward.
- Program maintenance costs tends to be less for well-reported systems than for the system supplied with inadequate or incomplete documentation.
Configuration Management Techniques
- One of the essential costs of maintenance is keeping track of all system documents and ensuring that these are kept consistent.
- Effective configuration management can help control these costs.