Studies suggest that the software maintenance process begins without proper knowledge of the software system. This occurs because the software maintenance team is unaware of the requirements and design documentation. Also, traditional models fail to capture the evolutionary nature of the software. To overcome these problems, software maintenance models have been proposed, which include quick fix model, iterative enhancement model, and reuse-oriented model.
The quick-fix model is an ad hoc approach used for maintaining the software system. The objective of this model is to identify the problem and then fix it as quickly as possible. The advantage is that it performs its work quickly and at a low cost. This model is an approach to modify the software code with little consideration for its impact on the overall structure of the software system.
Sometimes, users do not wait for long time. Rather, they require the modified software system to be delivered to them in the least possible time. As a result, the software maintenance team needs to use a quick-fix model to avoid the time consuming process of SMLC.
This model is beneficial when a single user is using the software system. As the user has proper knowledge of the software system, it becomes easier to maintain the software system without having need to manage the detailed documentation. This model is also advantageous in situations when the software system is to be maintained with certain deadlines and limited resources. However, this model is not suitable to fix errors for a longer period.
The iterative enhancement model, which was originally proposed as a process model, can be easily adapted for maintaining a software system. It considers that the changes made to the software system are iterative in nature. The iterative enhancement model comprises three stages, namely, analysis of software system, classification of requested modifications, and implementation of requested modifications.
In the analysis stage, the requirements are analyzed to begin the software maintenance process. After analysis, the requested modifications are classified according to the complexity, technical issues, and identification of modules that will be affected. At the end, the software is modified to implement the modification request. At each stage, the documentation is updated to accommodate changes of requirements analysis, design, coding, and testing phases.
Note: It is essential to have a complete documentation before the implementation of iterative enhancement model begins.
The Reuse-oriented Model
The reuse-oriented model assumes that the existing program components can be reused to perform maintenance.
It consists of the following steps.
- Identifying the components of the old system which can be reused
- Understanding these components
- Modifying the old system components so that they can be used in the new system
- Integrating the modified components into the new system.