Lec 1
Lec 1
Software Evolution
D r. L a mia A bo Za id ﻟ ﻣﯾﺎ ء أﺑوزﯾد. د
COU RSE COD E : S C S358
L . [email protected]
This course will introduce you to the fundamental developments in evolution models and
common maintenance practices for software.
During the course you will learn the following topics:
Laws of software evolution and the means to control them
Evolution and maintenance models, including maintenance of commercial off the-shelf systems
Impact analysis and change propagation techniques
Program comprehension and refactoring
Reengineering techniques and processes for migration of legacy information systems
Reuse and domain engineering models
Grading System
Written Exam (60%)
Class Assignments (40%)
□Midterm (50%)
□Labs (30%)
□Individual Assignments (20%)
Course Material
Lecture Slides
Text book: Software evolution and maintenance : a
practitioner’s approach; Priyadarshi Tripathy, Kshirasagar
Naik. ISBN 978-0-470-60341-3
Selected papers from the literature
Software Maintenance
Software maintenance mistake at center of major FAA computer meltdown:
Official
https://abcnews.go.com/US/computer-failure-faa-impact-flights-
nationwide/story?id=96358202
What is Software Evolution?
Generally, maintenance does not involve making major changes to the architecture of the
system.
Maintenance means keeping an installed system running with no change to its design
What is Software Evolution?
“Software evolution” and “Software maintenance” are used interchangeably.
However key semantic differences exist between the two.
Lowell Jay Arthur distinguish the two terms as follows:
“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.”
What is Software Evolution?
Maintenance is considered to be set of planned activities whereas evolution concern
whatever happens to a system over time.
Mehdi Jazayer’s view on software evolution:
“Over time what evolves is not the software but our knowledge about a
particular type of software.”
Bennett and Xu made further distinctions between the two as follows:
All support activities carried out after delivery of software are put under the category
of maintenance.
All activities carried out to effect changes in requirements are put under the category
of evolution.
Software Evolution- Revisited
Lehman and his collaborators from IBM are generally credited with pioneering
the research field of software evolution.
Lehman formulated a set of observations that he called laws of evolution.
These laws are the results of studies of the evolution of large-scale proprietary
or closed source system (CSS).
The laws concern what Lehman called E-type systems:
“Monolithic systems produced by a team within an organization that solve a
real world problem and have human users.”
Software Evolution: Laws of Lehman
Continuing change (1st) – A system will become progressively less satisfying to its
user over time, unless it is continually adapted to meet new needs.
Increasing complexity (2nd) – A system will become progressively more complex,
unless work is done to explicitly reduce the complexity.
Continuing growth (6th) – The amount of functionality in a system will increase over
time, in order to please its users.
Declining quality (7th) – A system will be perceived as loosing quality over time,
unless its design is carefully maintained and adapted to new operational constraints.
?
Readings
Book Chapter 1
Section 1.1, 1.2