Software Maintenance · Software Engineering

Maintenance Process

Watch lectures

Maintenance Process

Definition

The Maintenance Process is the structured sequence of steps followed when handling a maintenance request — from initial identification of the need for change, through to deployment of the fix/enhancement and closure.

Standard Maintenance Process Steps (per IEEE 1219 / ISO 14764)

1. Problem/Change Identification

A maintenance need is identified — via a bug report, user request, or proactive monitoring

2. Analysis

  • Classify the request (Corrective/Adaptive/Perfective/Preventive)
  • Perform impact analysis — determine affected modules, estimate cost/effort/risk

3. Design

  • Design the modification — update relevant design documents (Structure Charts, Class Diagrams, DFDs) to reflect the change

4. Implementation

  • Make the actual code changes
  • Follow existing coding guidelines/standards

5. Testing (including Regression Testing)

  • Test the specific change (unit/integration testing)
  • Perform Regression Testing to ensure the change hasn't broken existing functionality

6. Delivery / Deployment

  • Release the updated software (patch, new version, hotfix)
  • Update relevant documentation

7. Closure / Review

  • Close the maintenance request/ticket
  • Document what was changed and why, for future reference
Identify → Analyze → Design → Implement → Test (+ Regression) → Deploy → Close

Key Difference from Original Development SDLC

Maintenance essentially runs a mini-SDLC for each change, but constrained by:

  • The existing system's architecture (can't freely redesign from scratch)
  • Need to avoid breaking existing functionality (hence the emphasis on Regression Testing)
  • Often tighter timelines (especially for critical bug fixes)

Documentation Updates

Every maintenance change should be reflected in updated:

  • SRS (if requirements changed)
  • Design documents
  • Code comments/documentation
  • Test case repository

Exam tip: Draw the maintenance process as a flow diagram (Identify → Analyze → Design → Implement → Test → Deploy → Close) and emphasize that Regression Testing is a critical, maintenance-specific addition to the standard testing step.

AI LearningWeb Platform

Coursify — Personal AI Course Generator

Struggling with a difficult subject or concept? Turn any engineering topic into a structured course with interactive lessons, quizzes, and research-backed explanations.

← All Software Engineering modules