Software Maintenance Introduction

Software Engineering

Software Maintenance Introduction

Created 3 years ago

Duration 0:05:13
lesson view count 351
Select the file type you wish to download
Slide Content
  1. Software Maintenance Introduction

    Slide 1 - Software Maintenance Introduction

    • Emerson Murphy-Hill
    • Creative Commons Attribution 4.0 License.
    • Material Created by NCSU Software Engineering Faculty.
  2. Software Maintenance

    Slide 2 - Software Maintenance

    • Software maintenance activities are expensive
    • can consume as much as 90% of the total effort expended on a system in its lifetime
    • Software maintenance is the process of modifying a software system or component after delivery to
    • correct faults
    • adapt to a changed environment
    • improve performance or other attributes, or
    • prevent future problems
  3. Types of maintenance – 1/4

    Slide 3 - Types of maintenance – 1/4

    • Corrective: maintenance performed to correct faults in hardware or software  need to have strong debugging and interpersonal skills
    • Reproduce the failure.
    • Possibly the failure cannot be reproduced. Possibly nothing at all might be wrong. See
    • Documentation is often obsolete or nonexistent
    • Fix without breaking anything else. Faults injected when fixing other problems are called regression faults.
    • Test to make sure the fix works and no regression faults have been introduced.
    • Testing Debugging  Fixing  Testing
  4. Types of maintenance – 2/4

    Slide 4 - Types of maintenance – 2/4

    • Adaptive: software maintenance performed to make a computer program usable in a changed environment
    • Environment: totality of all conditions and influences that act from outside the system
    • Environment examples: business rules, government policy, work patterns, software platforms, compilers, hardware upgrades
    • Reaction to changes in the environment to preserve existing functionality and performance.
    • Example:,news-14690.html
    • CSC326: Software Engineering © NC State Software Engineering Faculty
    • L01 - 4
  5. Types of maintenance – 3/4

    Slide 5 - Types of maintenance – 3/4

    • Perfective: software maintenance performed to improve the performance or other attributes of a computer program.
    • Extend the software beyond its original functional or non-functional requirements.
    • Happy users want more.
    • (Note: improving maintainability is especially considered in the next type of maintenance: preventative)
  6. Types of Maintenance – 4/4

    Slide 6 - Types of Maintenance – 4/4

    • Preventative: maintenance performed for the purpose of preventing problems before they occur
    • Make more easily corrected, adapted, and enhanced
    • No increase in functionality yet costs significant amounts of money
    • Mini restructurings  refactoring
    • Process of changing a software system in such a way that it does not alter the external behavior of the code yet it improves its internal structure
  7. Comparison of Maintenance Types

    Slide 7 - Comparison of Maintenance Types

    • Type
    • Request often from customer?
    • Effect of change visible to customers?
    • Need testing? (if yes, for what?)
    • Corrective
    • X
    • X
    • X(reproduce failure, confirm fix, not break)
    • Adaptive
    • X?
    • X (confirm adaptation, not break)
    • Perfective
    • X
    • X
    • X (test new features, not break)
    • Preventative
    • X (not break)