Unit VIII

Software Maintenance

Software maintenance accounts for over 60% of total software cost. Understanding its types, characteristics, and process models is essential for long-term software sustainability.

🔩 Characteristics of Software Maintenance

Software maintenance is the process of modifying software after delivery to correct faults, improve performance, or adapt to a changed environment.

🗂️ Types of Software Maintenance

Maintenance Types Distribution (approximate industry data)
Perfective ~50% Adaptive ~25% Corrective ~21%

Corrective

Fixes bugs and faults discovered after deployment. Reactive — something broke, fix it.
  • Logic errors
  • Performance failures
  • Security vulnerabilities (patches)
  • Data corruption issues

Adaptive

Modifies software to work in a changed environment. Proactive — environment changes, adapt.
  • New OS version
  • Hardware upgrades
  • Changed business rules/regulations
  • New database version

Perfective

Improves performance or maintainability without changing external behavior. Proactive — enhance.
  • Code refactoring
  • Performance optimization
  • Adding new features
  • Improving user interface

🔃 Software Maintenance Process Model

The maintenance process involves two engineering cycles working together: Reverse Engineering (understanding the existing system) followed by Forward Engineering (making and implementing the changes).

Reverse Engineering → Forward Engineering Cycle
REVERSE ENGINEERING Existing Code Design Recovery Req. Recovery Understand — maintenance changes decided here — FORWARD ENGINEERING New Requirements Design & Coding Test & Integration regression testing Released SW Updated Version

Reverse Engineering

Forward Engineering