Post

Ch 14: Software Evolution & Legacy Systems

Software maintenance categories, legacy systems, and system improvement strategies.

Ch 14: Software Evolution & Legacy Systems

Chapter 14 — Software Evolution & Legacy Systems

(Sommerville Ch. 9 Evolution)

Categories of Software Maintenance

CategoryDescriptionEffort
CorrectiveFix defects discovered after delivery~20%
AdaptiveModify system for new environment (new OS, hardware)~20%
PerfectiveAdd new features or improve performance~50%
PreventiveRestructure to improve maintainability~10%

Perfective maintenance consumes maximum effort because users continuously request new features and enhancements throughout the system’s life. Requirements never stop evolving.

Why Maintain Software?

  • Business processes depend on it — stopping maintenance stops the business
  • External environment changes (new OS, legislation, hardware)
  • Users find defects and request improvements
  • Competitors release new features — must keep pace

What is Legacy Software?

Legacy software is old software that continues to be used because it meets business needs, even though it may use outdated technology, be poorly documented, and be expensive to maintain.

Why legacy systems are hard to replace:

  • Replacing them is risky — the old system works and is understood; new system may fail
  • Extremely expensive — requires rewriting millions of lines
  • Business processes are embedded in the system — hard to document all behavior
  • Staff who built it may have left — institutional knowledge is lost
  • Continuous operation required — can’t stop while replacing

How to improve legacy systems:

  1. Scrap and rebuild — only when system is too degraded to save
  2. Re-engineer — restructure code without changing functionality (refactoring at scale)
  3. Migrate — move to a new platform/architecture preserving logic
  4. Wrap — add a new interface layer (API) around the old system
This post is licensed under CC BY 4.0 by the author.