- Forward


The Maintenance of Software Products
An Introduction


Prof. David Bernstein
James Madison University

Computer Science Department
bernstdh@jmu.edu

Print

Types of Maintenance (ISO/IEC 14764)
Back SMYC Forward
  • Corrective:
    • Modifications that correct defects found in the production environment
  • Adaptive:
    • Modifications that keep the product usable in a changed/changing production environment (e.g., migration to another platform)
  • Perfective:
    • Modifications that satisfy additional functional requirements (e.g., new features) or non-functional requirements (e.g., improve performance)
  • Preventive:
    • Modifications that correct faults discovered in the development environment before they give rise to failures/symptoms in the production environment
Frequency
Back SMYC Forward
  • Agile Processes:
    • Tend to deploy more frequently so maintenance activities tend to occur more frequently
  • Heavyweight Processes:
    • Tend to deploy Less frequently so maintenance is less frequent but no less significant
The Results of Several Surveys
Back SMYC Forward
  • Adaptive and Perfective:
    • 75% of the total effort and cost
  • Corrective and Preventive:
    • 25% of the total effort and cost
Why Maintenance is Expensive
Back SMYC Forward
  • Endemic Reasons:
    • Successful products are in the field for decades so huge costs are bound to accrue
  • Other Reasons:
    • As a product is modified its structure deteriorates
Maintenance Tradeoffs
Back SMYC Forward
  • Related to Availability:
    • Maintenance improves a product but may make it unavailable
  • Related to Quality:
    • There are often "elegant" solutions and "quick and dirty" solutions
Who Is Involved?
Back SMYC Forward
  • There Are Options:
    • The original development team
    • A maintenance team
  • More Tradeoffs:
    • The development team understand the product but may not understand the operational environment
    • Maintenance teams and development teams may have (or think they have) different statuses
Metrics for Corrective Maintenance
Back SMYC Forward
  • Backlog (\(B\)):
    • \(C\) denotes the number of problems closed during an interval of time (e.g., a month)
    • \(A\) denotes the number of problem "arrivals" during an interval of time (e.g., a month)
    • \(B = \frac{C}{A} \cdot 100\)
  • Response Time (Mean Time to Repair):
    • The mean (or median) amount of time between the arrival of a problem and its correction
Tools for Corrective Maintenance (i.e., Bug/Issue Tracking)
Back SMYC Forward
  • Purpose:
    • Provide a clear, centralized overview of corrective maintenance requests
    • Calculate performance metrics
  • Some Open Source Examples:
    • Apache Bloodhound
    • Bugzilla
    • Zentrack
There's Always More to Learn
Back -