Software Maintenance Cost Factors
The cost of software maintenance is influenced by several factors, which can be broadly classified into
two categories:
1. Non-Technical Factors
2. Technical Factors
Non-Technical Factors
Non-Technical Factors Affecting Software Maintenance Cost
1. Application Domain
When the application area is clearly defined and well understood, system requirements remain stable, and maintenance due to changing needs is minimized.
However, if the application is entirely new, frequent modifications are likely as users gain experience with the system.
2. Staff Stability
Maintenance is easier and less costly when the original developers continue to support the system, as they already understand the code and design.
In reality, however, the software industry sees frequent job changes, making it rare for a single developer to both build and maintain a system throughout its lifetime.
3. Program Lifetime
Programs eventually become obsolete, either because the software itself no longer meets business needs or because the hardware it runs on is replaced. At that point, rewriting the system is often more cost-effective than conversion.
4. Dependence on External Environment
Applications that rely on external factors must be updated whenever those factors change.
- Example: Payroll, accounting, and stock control systems need frequent modifications due to taxation changes.
- In contrast, mathematical applications typically remain unaffected, as the assumptions behind them are less dependent on human-driven changes.
Hardware Stability
If an application is tied to a specific hardware configuration that remains unchanged, maintenance costs from hardware shifts are avoided.
However, with rapid advances in hardware, this situation is rare. More often, software must be adapted to run on new systems that replace outdated equipment.
Technical Factors Affecting Software Maintenance Cost
1. Module Independence
A system should be designed so that individual modules can be modified without impacting others. Greater independence between modules reduces the complexity and cost of maintenance.
2. Programming Language
Programs developed in high-level languages are generally easier to read, understand, and modify compared to those written in low-level languages. This directly reduces maintenance effort.
3. Programming Style
The clarity and consistency of coding style significantly affect program understandability. Well-structured and cleanly written code makes modifications easier and faster.
4. Program Validation and Testing
Thorough design validation and extensive testing during development lower the number of defects, thereby reducing future maintenance costs.
- Coding errors are usually inexpensive to fix.
- Design errors can be more costly, as they may require rewriting multiple modules.
- Requirement errors are the most expensive, since they often demand significant redesign of the system.
5. Documentation
Clear, complete, and concise documentation simplifies program comprehension, enabling maintainers to make changes more efficiently. Systems with high-quality documentation incur lower maintenance costs compared to poorly documented ones.
6. Configuration Management Techniques
Managing and keeping all system documents consistent is a major aspect of maintenance. Effective configuration management helps track changes, maintain version control, and significantly reduce related costs.