1 / 32

Chapter 9

Software Evolution

Understanding Continuous Software Adaptation

Evolution Processes • Legacy Systems • Software Maintenance

Topics Covered

Life-cycle vs Evolution

Evolution

"Small changes over many generations"

Software Change is Inevitable

A key problem for all organizations is implementing and managing change to their existing software systems.

Importance of Evolution

A Spiral Model of Development and Evolution

Specification
Implementation
Validation
Operation
Release 1
Release 2
Release 3
etc.

Evolution and Servicing

Software
Development
Software
Evolution
Software
Servicing
Software
Retirement
Time

Evolution and Servicing Stages

Evolution: New features or requirements are added to the system that results in a new version release.

Servicing: Only changes required to keep it operational (bug fixes, environmental changes). No new functionality is added.

Phase-out: The software may still be used but no further changes are made to it.

Evolution Processes

Software evolution processes depend on:

Proposals for change are the driver for system evolution.

Change Identification and Evolution Process

Change identification process
Change proposals
Software evolution process
New system

The Software Evolution Process

Change Requests
Impact Analysis
Release Planning
Change Implementation
System Release

Release Planning Branches

Release Planning
Fault Repair

Critical fixes

Platform Adaptation

Environment changes

System Enhancement

New features

Change Implementation

Proposed Changes
Requirements Analysis
Requirements Updating
Software Development

Critical difference: The first stage may involve program understanding, especially if the original system developers are not responsible for the change implementation.

Urgent Change Requests

Urgent changes may bypass normal engineering process for:

The Emergency Repair Process

Change Requests
Analyze Source Code
Modify Source Code
Deliver Modified System

Bypasses normal validation and documentation processes

Agile Methods and Evolution

Handover Problems

Agile → Plan-based

Evolution team expects detailed documentation that agile processes don't produce

Plan-based → Agile

Evolution team must develop automated tests from scratch and deal with non-refactored code

Legacy Systems

Legacy systems are older systems that rely on languages and technology that are no longer used for new systems development.

Elements of a Legacy System

Application Software
Business policies and rules
Business processes
Support software
System hardware
Application data
Embeds knowledge of
Uses
Uses

Legacy System Layers

Business Processes
Application Software
Platform and Infrastructure Software
Hardware
Socio-technical System

Legacy System Replacement

Legacy system replacement is risky and expensive

Why Legacy Systems are Expensive to Change

Legacy System Management Strategies

The strategy chosen should depend on system quality and business value.

Legacy System Categories

Business Value
System Quality
Recommended Action
Low
Low
SCRAP
Low
High
REPLACE with COTS
High
Low
RE-ENGINEER
High
High
MAINTAIN

Business Value Assessment

Assessment should take different viewpoints into account:

Interview different stakeholders and collate results

System Quality Assessment

Business Process Assessment: How well does the business process support current business goals?

Environment Assessment: How effective is the system's environment and how expensive is it to maintain?

Application Assessment: What is the quality of the application software system?

Software Maintenance

Modifying a program after it has been put into use.

Types of Software Maintenance

Fault Repairs: Changing a system to fix bugs/vulnerabilities and correct deficiencies

Environmental Adaptation: Changing a system to operate in a different environment (computer, OS, etc.)

Functionality Addition/Modification: Modifying the system to satisfy new requirements

Maintenance Effort Distribution

Fault Repair (24%)
Environmental Adaptation (19%)
Functionality Addition/Modification (58%)

Maintenance Costs

Development
Initial Cost
Maintenance
2× to 100× Higher

Maintenance Prediction

Predicting Maintainability
What parts will be most expensive to maintain?
What will be the lifetime maintenance costs?
How many change requests can be expected?
What parts are most likely to be affected by changes?

Process Metrics for Maintainability

Warning: If any or all of these metrics are increasing, this may indicate a decline in maintainability

Software Reengineering

Restructuring or rewriting part or all of a legacy system without changing its functionality.

Reengineering Approaches

Automated Program Restructuring
Automated Restructuring with Manual Changes
Program and Data Restructuring
Lower Cost
Higher Cost

Refactoring

The process of making improvements to a program to slow down degradation through change.

'Bad Smells' in Program Code

Duplicate Code
Same code in multiple places
Long Methods
Methods that are too long
Switch Statements
Scattered case statements
Data Clumping
Same data groups repeated
Speculative Generality
Unnecessary future-proofing
Large Classes
Classes trying to do too much

Key Points

Key Points (continued)