UNIT 6
Software Maintenance
Software maintenance is a part of the Software Development Life Cycle. Its primary goal is to modify and update software application after delivery to correct errors and to improve performance. Software is a model of the real world. When the real world changes, the software require alteration wherever possible.
Software Maintenance is an inclusive activity that includes error corrections, enhancement of capabilities, deletion of obsolete capabilities, and optimization.
a) Corrective Maintenance
Corrective maintenance aims to correct any remaining errors regardless of where they may cause specifications, design, coding, testing, and documentation, etc.
b) Adaptive Maintenance
It contains modifying the software to match changes in the ever-changing environment.
c) Preventive Maintenance
It is the process by which we prevent our system from being obsolete. It involves the concept of reengineering & reverse engineering in which an old system with old technology is re-engineered using new technology. This maintenance prevents the system from dying out.
d) Perfective Maintenance
It defines improving processing efficiency or performance or restricting the software to enhance changeability. This may contain enhancement of existing system functionality, improvement in computational efficiency, etc.
Software maintenance phases
a) Identification Phase:
In this phase, all the requests for modifications in the software are identified and analysed.
b) Analysis Phase:
The feasibility, cost and estimation of each validated modification request is performed. The method to integrate changes in existing system is determined.
c) Design Phase:
The new modifications will be put and designed as per requirement specification.
Testing and test cases will also be done in order to check the efficiency of software. Test cases are created for the validation and verification of the system.
d) Implementation Phase
The new modification are implemented with proper planning and integrated in new system.
e) System Testing Phase
To ensure no errors are there in the system testing is done with regression and integration mode.
f) Acceptance Testing Phase:
This testing is done to ensure the modified system has amended as per given requirement of modification, it is done by end user or user or third party.
g) Delivery Phase:
This phase the user starts using the system as acceptance testing has been completed. Users are given manuals and other stuff to understand the changes and final testing will be done now by user.
In 1983, Boehm proposed a model for the maintenance process which was based upon the economic models and principles. Economics model is nothing new thing, economic decisions are a major building block of many processes and Boehm’s thesis was that economics model and principles could not only improve productivity in the maintenance but it also helps to understand the process very well.
Boehm maintenance process model as a closed-loop cycle is shown below
Boehm had concluded that the maintenance manager’s task is one of the balancing and the pursuit of the objectives of maintenance against the constraint imposed by the environment in which maintenance work is carried out. The maintenance process should be driven by the maintenance manager’s decisions, which are typically based on the balancing of objectives against the constraint. Boehm proposed a formula for calculating the maintenance cost as it is a part of the COCOMO Model. All the collected data from the various projects, the formula was formed in terms of effort.
Taute Software Maintenance Model
B.J. Taute coined a software maintenance model in 1983. It is very easy to understand and implement. The model depicts software maintenance process as closed loop cycle. Mostly used by developers after execution of software for updating or modification in software.
Taute Model has eight phases in cyclic fashion.
The phases are as following:
Change Request Phase –
In this phase customer request in prescribed format to maintenance team to apply some change to software.
This change can be :
(i) Corrective software maintenance.
(ii) Adaptive software maintenance.
(iii) Perfective software maintenance.
(iv) Preventive software maintenance.
maintenance team assigns unique identification number to request and detects category of software maintenance,
Estimate Phase –
The maintenance team dedicates this phase for estimating time and effort required to apply requested change. And, to minimize ripple effect caused by change to system, Impact analysis on existing system is also done.
Schedule Phase –
In this phase, team identifies change requests for next scheduled release and may also prepare documents that are required for planning.
Programming Phase –
In this phase, the maintenance team modifies source code of software to implement requested change by customer and updates all relevant documents like design document, manuals, etc. accordingly. The final output of this stage is test version of source code.
Test Phase –
In this phase, maintenance team ensures that modification requested in software is correctly implemented. The source code is then tested with already available test cases. New test cases may also be designed to further test software. This type of testing is known as Regression testing.
Documentation Phase –
After the regression testing, team updates system and user documents before release of software. This helps to maintain co-relation between source code and documents.
Release Phase –
In this phase, the modified software product along with the updated documents are delivered to customer. Acceptance Testing is carried out by users of system.
Operation Phase –
After acceptance testing, software is put under normal operation. During usage, when another problem is identified or new functionality requirement is felt or enhancement of existing capability is desired, customer may again initiate ‘Change request’ process. And similarly, all phases will be repeated to implement this new change.
Quick-Fix Model
This is quick and easy but ad hoc approach used for maintenance. It quickly finds and fix the software without putting consideration on size of the software.
Iterative Enhancement Model
Iterative Enhancement Model is divided into three stages:
Re-use Oriented Model
Existing system or model parts are analysed and understood so that they can be considered for reuse. Thereafter they go through modification and enhancement, which is done on the basis of new requirements. The final step is integration of modified old system into the new system.
Regression testing is the process of retesting the modified parts of the software and ensuring that no new errors have been introduced into previously test code
“Regression testing tests both the modified code and other parts of the program that may be affected by the program change It serves many purposes:
Reverse engineering is the process followed in order to find difficult, unknown and hidden information about a software system
Software re-engineering is concerned with taking existing legacy systems and re-implementing them to make them more maintainable. The critical distinction between re-engineering and new software development is the starting point for the development as shown in Fig below
Cost factors:
Quality of the software to be re-engineered.
Tool support availability for engineering.
Extent of the data conversion which is required.
Availability of expert staff for Re-engineering.
Activities in re-engineering
1. Inventory Analysis:
2. Document reconstructing:
3. Reverse Engineering:
4. Code Reconstructing:
5. Data Restructuring:
6. Forward Engineering:
Configuration Management
The process of software development and maintenance is controlled is called configuration management The configuration management is different in development and maintenance phases of life cycle due to different environments
_ Configuration Management Activities
The activities are divided into four broad categories
The following documents are required for these activities