Introduction
Software engineering is based on the software development of systematic applications. The outcome of Software Engineering is to produce an efficient and reliable software product.
To maintain the software according to customer needs, software maintenance is done. To improve the software overall, fix the bugs, boost the performance, and more.
Software maintenance is a common part of SDLC. Software developers don't have the luxury of launching a product and letting it run as it is. They constantly need to be on the lookout to correct and improve their software to remain competitive and relevant.
Why software maintenance is necessary
- Implement enhancements.
- Improve the design.
- Correct faults.
- Interface with other systems.
Software Maintenance Cost Factors
The cost of software maintenance covers a huge part of the budget of most organizations. The cost of the software maintenance can be controlled by delaying the development opportunities.
There are two types of factors affecting software maintenance.
- Technical
- Non-Technical
Technical Factors
-
Programming Language
Programs written in high-level programming languages such as Fortran, Pascal, etc., are generally easier to understand than those written in low-level programming languages such as Machine language Assembly language.
-
Module Independence
Changing one unit/module should be possible without affecting the other. Transparency should be maintained.
-
Programming Style
The way the program is written should be easy to understand, and easy modification is possible.
-
Documentation
If the programs have a well-supported system, their cost rate is much less than those with inadequate documentation.
Understanding the application can be associatively straightforward if a program is supported by concise documentation.
-
Program Validation and Testing
If the program has fewer bugs, the maintenance costs resulting from bugs correction are lower.
Bugs in the software are usually the most expensive to correct because of the drastic design which is generally involved.
-
Configuration Management Techniques
Keeping all the systems documents should be consistent to handle the maintenance cost.
If the configuration is effective, then the maintenance costs can be lowered.
Non-technical factors
-
Application Domain
If the program's application is well defined, then the system requirements will be definitive; this leads to minimized maintenance costs.
-
Staff Stability
If the implementation of a system also maintains that system, maintenance costs will reduce.
It is painless for the original writer of a program to understand and modify an application rather than some other person who should understand the program by the study of the reports and code.
-
Program Lifetime
When the program becomes absolute, or the original hardware is replaced, the conversion costs exceed rewriting costs.
-
Dependence on External Environment
If the application program is dependent on the external environment, it will be modified as per the climatic conditions.
Programs used in mathematical applications do not depend on humans changing the program's assumptions.
-
Hardware Stability
No maintenance cost will be incurred if the application is made on a configuration that doesn't change during the program's lifetime or to a specific hardware configuration.
Hardware developments are so increasing that this situation is rare.
Refer to know about : What is debugging