Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Software maintenance


Published on

Software maintenance

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Software maintenance

  1. 1. Software Maintenance Unit II
  2. 2. 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.
  3. 3. Categories of Maintenance  There are three major categories of software maintenance: ◦ Corrective Maintenance ◦ Adaptive Maintenance ◦ Perfective Maintenance
  4. 4. 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.
  5. 5. 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
  6. 6. 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.
  7. 7. 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.
  8. 8. 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).
  9. 9. Categories of Maintenance  Perfective 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.
  10. 10. Categories of Maintenance  Perfective 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.
  11. 11. Categories of Maintenance  Preventive 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.
  12. 12. 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,
  13. 13. Determine Maintenance Objective Program Understanding Generate particular maintenance proposal Account for Ripple Effect Testing Pass Testing ? Correct program error Add new capabilities Delete obsolete features OptimizationPhase 1 Complexity Documentation Self descriptiveness Extensibility Stability Testability Yes No
  14. 14. 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.
  15. 15. 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.
  16. 16. Software Maintenance Process  Ripple 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.
  17. 17. 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.
  18. 18. Software Maintenance Process  Modified 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
  19. 19. Software Maintenance Process  Maintainability ◦ 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