Software Engineering · Lesson 8 of 8 · Updated ·
Maintenance, Configuration Management, Quality, CMM and Reliability
Release day is the beginning, not the end. Most of a product's life — and most of its cost — is spent after release.
1. Types of maintenance
| Type | Why | Example |
|---|---|---|
| Corrective | fix bugs found after release | wrong GST total on invoices |
| Adaptive | adapt to a changed environment | new Android version, new tax law, moving to cloud |
| Perfective | improve or add features users ask for | add dark mode, make search faster |
| Preventive | prevent future problems | refactor messy code, update old libraries |
Perfective maintenance usually takes the largest share.
2. Re-engineering and reverse engineering
- Reverse engineering — study existing code to recover its design and specifications (often for old code with no documents).
- Re-engineering — reverse engineer, then restructure and rebuild with better design or technology, keeping the same functionality (e.g. a COBOL system rewritten in Java).
- Forward engineering — the normal direction: requirements → design → code.
Legacy system = old software still critical to the business, hard and risky to change.
3. Software Configuration Management (SCM)
Keeps control of every changing item (code, documents, test cases):
- Configuration items and baselines — an approved version that changes only through formal control.
- Version control — Git: who changed what, when, and why. (See our Git tutorial.)
- Change control — a change request → impact analysis → approval by a change control board → implement → test → release.
- Configuration audit and status reporting.
4. Quality: QA vs QC
| Quality Assurance (QA) | Quality Control (QC) |
|---|---|
| process-oriented — prevent defects | product-oriented — find defects |
| standards, reviews of process, audits | testing, inspections of the product |
| "Are we following a good process?" | "Does this build have bugs?" |
Formal technical reviews (FTR), walkthroughs and inspections are QA activities that catch defects in documents and code before testing.
ISO 9001 — an international standard for quality management systems in any organisation (not software-specific). Certified companies follow documented, audited processes.
Six Sigma — a data-driven method aiming for fewer than 3.4 defects per million opportunities.
5. CMM / CMMI — process maturity
| Level | Name | Characteristics |
|---|---|---|
| 1 | Initial | chaotic, success depends on individual heroes |
| 2 | Repeatable | basic project management: cost, schedule, tracking |
| 3 | Defined | a documented, standard process across the organisation |
| 4 | Managed | process and quality measured with data |
| 5 | Optimizing | continuous process improvement |
Developed by the SEI (Carnegie Mellon). Many Indian IT companies are CMMI level 5. (In CMMI, level 2 is called "Managed" and level 4 "Quantitatively Managed".)
6. Reliability metrics
- MTTF (mean time to failure) — average time the system runs before failing.
- MTTR (mean time to repair) — average time to fix and restore it.
- MTBF = MTTF + MTTR.
- Availability = MTTF ÷ (MTTF + MTTR) × 100%.
Example: MTTF = 495 hours, MTTR = 5 hours → MTBF = 500 hours, availability = 495 ÷ 500 = 99%.
Others: ROCOF (rate of occurrence of failures) and POFOD (probability of failure on demand).
Common mistakes
- Calling a new-law update "corrective" — it's adaptive (nothing was broken).
- Saying QA = testing. Testing is QC; QA improves the process.
- MTBF = MTTF + MTTR (not minus).
Quick recap
- Maintenance: corrective, adaptive, perfective, preventive.
- Reverse engineering recovers design; re-engineering rebuilds it better.
- SCM: baselines, version control, change control.
- QA prevents (process), QC detects (product). CMM: initial → repeatable → defined → managed → optimizing.
- Availability = MTTF ÷ (MTTF + MTTR).