› Module 8: Software Maintenance & Configuration Management › 8.2 Types of Software Maintenance
M O D U L E

Module 8: Software Maintenance & Configuration Management

Maintenance lifecycle, the 4 maintenance categories, reverse engineering, and SCM change control

8.1 Software Maintenance: Lifecycle Reality

Software Maintenance is the systematic modification of a software product following operational delivery to correct faults, boost performance, adapt to changed environments, or add new capabilities.

Empirical software engineering data reveals that maintenance consumes between 60% and 80% of the total lifecycle budget of an enterprise software application.

8.2 Types of Software Maintenance

Software maintenance is categorized into four distinct types:

Figure 8.1: Four Canonical Types of Software Maintenance Corrective Fixes residual bugs & operational crashes (~20% of effort) Adaptive Adapts to new OS, hardware, or regulations (~25% of effort) Perfective Adds new features & enhances performance (~50% of effort) Preventive Refactors code to prevent future bugs (~5% of effort)

Figure 8.1: Perfective maintenance (new client requests & performance tuning) accounts for the largest proportion of maintenance effort.

8.3 Software Re-engineering & Reverse Engineering

Legacy software modernization utilizes two complementary paradigms:

  • Reverse Engineering: Analyzing compiled binaries or legacy source code to recover high-level architectural designs, specifications, and data flow models.
  • Re-engineering: Re-architecting, restructuring, and re-implementing an existing system to reconstitute it in a modern, maintainable form without altering external functional behavior.
  • Forward Engineering: The traditional pipeline of moving downward from high-level abstractions to code implementation.

8.4 Software Configuration Management (SCM)

SCM is the engineering discipline that tracks and controls changes to software artifacts (source code, schemas, configs, documentation) across the product lifecycle.

  • Configuration Identification: Defining naming schemes and baseline versions for every controlled artifact.
  • Version Control: Branching, merging, and recording chronological commit histories (e.g. Git, SVN).
  • Change Control: Formal workflow where proposed changes are submitted via Change Requests (CRs) and approved by a Change Control Board (CCB).
  • Configuration Auditing: Verifying that baseline versions match release specifications.
MODULE COMPREHENSIVE QUIZ

Module 8 Final Quiz

Test your understanding across all 4 topics of this module with interview-grade questions, tricky edge cases, and code output predictions.

Take Module 8 Final Quiz →
Yukti Mascot