software maintenance
TRANSCRIPT
Software Maintenance
Unit II
What is Software Maintenance?Software Maintenance is a broad
activity that includes:◦Error Corrections,◦Enhancements of Capabilities,◦Deletion of Obsolete Capabilities, and◦Optimization
Any work done to change the software after it is in operation is considered as maintenance work.
The purpose is to preserve the value of the software over time.
Categories of MaintenanceThere are three major categories
of software maintenance:◦Corrective Maintenance◦Adaptive Maintenance◦Perfective Maintenance
Categories of Maintenance
Corrective Maintenance:◦Refers to modifications initiated by
defects in the software.◦A defect can result from
Design errors, Logical errors, and Coding errors.
Categories of Maintenance
Corrective Maintenance:◦Design Errors occur when the software
is Incorrect, Incomplete, The requirement specifications are
misunderstood.
◦Logical Errors result from Invalid tests and conclusions, Incorrect implementation of design
specifications, Faulty logic flow, Incomplete test data
Categories of Maintenance
Corrective Maintenance:◦Coding Errors are caused by
Incorrect implementation of detailed logic design,
Incorrect use of source code logic.
◦Defects are also caused by data processing errors and system performance errors.
◦Any effort made to correct these errors comes under corrective maintenance.
◦Sometimes emergency fixes, also called as “patching”, are done to restore the operations of a software.
Categories of Maintenance
Adaptive Maintenance:◦It includes modifying the software to
match changes in the environment.◦Environment refers to the totality of
all conditions and influences which act upon the software from outside.
◦For example, Business rules, Government policies, Work patterns, Software and hardware operating
platforms.
Categories of Maintenance
Adaptive Maintenance:◦This type of maintenance includes
any work that has been started due to moving the software to a different hardware or software platform (a new operating system or a new processor).
Categories of MaintenancePerfective Maintenance:
◦It means improving processing efficiency or performance of the software.
◦It also means restructuring the software to improve changeability.
◦When software becomes useful, the user may want to extend it beyond the scope for which it was initially developed.
Categories of MaintenancePerfective Maintenance:
◦Expansion in requirements then results in enhancements to the existing system functionality or efficiency.
◦Thus, Perfective maintenance refers to enhancements to make the product better, faster, and cleanly structured with more functions and reports.
Categories of MaintenancePreventive Maintenance:
◦Modification of a software product after its delivery to detect and correct latent faults in the software product before they become effective faults.
◦It is a predictable type of maintenance, where the software is checked periodically for adjustments, and repairs.
Software Maintenance Process
Once the maintenance objective is identified, ◦The maintenance personnel must
understand what they are to modify.◦Then they must modify the program
to satisfy maintenance objectives.◦After modification they must ensure
that the modification does not effect other portions of the program.
◦Finally they must test the program,
Determine Maintenance Objective
Program Understanding
Generate particular maintenance proposal
Account for Ripple Effect
Testing
Pass Testin
g?
Correct program errorAdd new capabilitiesDelete obsolete featuresOptimization Phase 1
ComplexityDocumentationSelf descriptiveness
Extensibility
Stability
Testability
Yes
No
Software Maintenance Process
Program Understanding◦Analyze the program to understand
it.◦Complexity of the program,
documentation, self descriptiveness of the program help in understanding it.
◦Complexity of the program is usually based on its data or control flow.
Software Maintenance Process
Generating Maintenance Proposal◦This is done to accomplish the
maintenance objective.◦It requires clear understanding of
both the maintenance objective and the program to be modified.
◦This process becomes easy if the program is extensible and supports extensions to its functions.
Software Maintenance ProcessRipple Effect
◦In software, the effect of a modification may not be local to the changed module only.
◦It may also effect other portions of the program.
◦This effect is called as Ripple Effect.◦One aspect of the effect is logical or
functional.◦Another aspect concerns the performance
of the program.◦Thus it becomes necessary to understand
the potential of the ripple effect.
Software Maintenance Process
Ripple Effect◦The primary attribute of the program
that gets effected by the ripple effect is the stability of the program.
◦Program Stability is defined as the resistance to amplification of changes in the program.
Software Maintenance ProcessModified Program Testing
◦This phase consists of testing the modified program to ensure that the modified program has the same reliability level as before.
◦It is important that cost effective testing techniques be applied during maintenance.
◦The testing process becomes cost effective due to the testability of the program.
◦Program Testability is defined as the effort required to test the program according to some well defined criteria.
Software Maintenance ProcessMaintainability
◦All of the factors of above four phases are combined to form maintainability of the program. How easy is it to maintain the program?
◦The answer to this question depends upon how difficult the program is to understand.
◦Program maintainability and program understandability are parallel concepts.
◦The more difficult a program is to understand, the more difficult it is to maintain.
◦And the more difficult it is to maintain, the higher is its maintainability risk.