Key Concepts
Software never dies — it evolves. Understanding legacy systems and evolution processes is a critical real-world skill.
Software Evolution Process
Change requests → Impact analysis → Release planning → Change implementation → System release.
Legacy Systems
Old systems still in use. Often critical to business. COBOL banking, airline reservation systems, government systems.
3 Types of Maintenance
Corrective (fix bugs), Adaptive (new environment), Perfective (new features/improvements).
Refactoring
Improving code structure without changing external behavior. Fights technical debt.
Concept Deep Dives
Click each concept to expand — real examples, diagrams, pros & cons.
Software Evolution Process
When to Use
Every change to a production system should go through this process.
Real-World Example
A bug report in production → impact analysis → hotfix release → regression test → deploy. This IS the evolution process.
✓ Advantages
- Controlled change reduces risk
- Impact analysis prevents surprises
- Audit trail
⚠ Watch Out
- Overhead for small changes
- Slows down emergency fixes if too rigid
Legacy Systems
When to Use
When the system still provides business value despite being technically outdated.
Real-World Example
US banks still run COBOL for core transactions. FAA air traffic control. NYSE core systems. Replacing them is too risky.
✓ Advantages
- Battle-tested reliability
- Deep business logic encoded over decades
- Known behavior
⚠ Watch Out
- Hard to find developers
- Expensive to maintain
- Integration with modern systems is painful
3 Types of Maintenance
When to Use
Understanding what type of change you're making helps estimate effort and risk.
Real-World Example
Corrective: fix login bug. Adaptive: update for iOS 18. Perfective: add dark mode or improve search algorithm.
✓ Advantages
- Classifying maintenance helps prioritize
- Perfective = most value
- Corrective = urgent
⚠ Watch Out
- Boundaries blur in practice
- Perfective maintenance can destabilize systems
Refactoring
When to Use
Continuously — 'Boy Scout Rule': leave code cleaner than you found it.
Real-World Example
Extracting a 200-line function into 5 well-named functions. Replacing a magic number with a named constant.
✓ Advantages
- Reduces tech debt
- Improves maintainability
- Makes future changes cheaper
⚠ Watch Out
- Risk of introducing bugs
- Time investment upfront
- Hard to justify to non-technical managers
Quick Reference
- 1Software evolution: software must change or it becomes less useful over time.
- 2Evolution process: change requests → impact analysis → release planning → implementation → release.
- 3Legacy systems: old systems that remain critical to business. Often expensive to replace.
- 4Legacy system assessment: evaluate business value vs. system quality to decide strategy.
- 53 types of maintenance: corrective (~21%), adaptive (~25%), perfective (~50%).
- 6Refactoring: restructuring code without changing behavior. Essential for long-term health.
- 7Technical debt: accumulated shortcuts that make future changes harder.
Quiz — Test Yourself
Think through your answer first, then reveal.