Software Evolution

2 min read Last updated Tue Jun 09 2026 03:05:56 GMT+0000 (Coordinated Universal Time)

Software must change to remain useful. Most software budget in large organizations goes to evolving existing systems, not building new ones.

  • Business and technology changes drive evolution.
  • Development and maintenance phases are increasingly blurred.
  • Most systems evolve. Complete rewrites are rare.

Life-Cycle Stages

  • Evolution
    System in operational use. New requirements proposed and implemented.
  • Servicing
    Only bug fixes and environment adaptations. No new functionality.
  • Phase-out
    Software may still be used but no further changes are made.

Types of Maintenance

  • Fault repair
    Correcting deficiencies in how the system meets its requirements.
  • Adaptive maintenance
    Changing the system to operate in a different environment.
  • Perfective maintenance
    Modifying the system to satisfy new or changed requirements.

Reengineering

Restructures or rewrites part or all of a legacy system without changing its functionality.

  • Applied after maintenance costs have risen.
  • Uses automated tools.
  • Lower risk and cost than full redevelopment.

Refactoring

Improves code structure continuously throughout development and evolution. Slows structural degradation without adding functionality.

Common bad smells that prompt refactoring:

  • Duplicate code.
  • Long methods.
  • Switch statements.
  • Data clumping.
  • Speculative generality.

Legacy System Strategy

QualityBusiness ValueStrategy
LowLowScrap the system
LowHighRe-engineer or replace
HighLowReplace with COTS or scrap
HighHighContinue with normal maintenance
Was this helpful?