Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1
2
Lecture 1 - Outline
• Introduction
• Software Maintenance
• Software Evolution
• Models of Software Evolution
• Planning for Evolution
What is Maintenance?
Software Maintenance
What is Evolution?
Software Evolution
Release Notes
• Documents the changes for the new versions
Example:
• JDK 8u171 Update Release Notes
• Android Studio release notes
Feedback Increasing
system complexity
Conservation
Continuing of
growth organizational
stability
Conservation
of familiarity
Evolution vs Maintenance
• Lowell Jay Arthur distinguish the two terms as follows:
– “Software maintenance means to preserve from failure or
decline.”
– “Software evolution means a continuous change from lesser,
simpler, or worse state to a higher or better state.”
• Keith H. Bennett and Lie Xu use the term:
– “Maintenance for all post-delivery support and evolution to those
driven by changes in requirements.”
– Maintenance is considered to be set of planned activities
whereas evolution concern whatever happens to a system over
time.
Evolution vs Maintenance
Categories of Models
• Iterative Models
• Change Mini-cycle Models
• Staged Models
Iterative Models
Iterative Models
Staged Models
• Closed Source Software (CSS)
• Versioned Staged Model
• Free, Libre, Open Source Software (FLOSS)
Staged
Stage Model
Models for CSS
FLOSS Systems
FLOSS Systems
• In some software, after a transition from
Evolution to Servicing, a new period of evolution
was observed (dotted line from Servicing to
Evolution)
• In general, active developers of FLOSS systems
get frequently replaced by new developers.
There are possibilities to transition from
Phaseout to Evolution (dotted line)
Purpose of Planning
Evolution Strategies
• Continued maintenance
– if reengineering or replacement cannot reduce
maintenance or cannot be justified on the basis of
costs and benefits
• Reengineering
– when new development is too expensive, COTS is
unavailable, and current system is not maintainable
• Replacing
– COTS systems exist and the other two options are not
feasible
Learning Outcomes
After completing this lecture, you should be able to:
• Define and describe software maintenance.
• Define and describe software evolution.
• Explain the different models for software evolution.
• Describe the activities in planning for software evolution.