Software Evolution
Software Evolution
By
1
Software Evolution
Concepts and Preliminaries
2
J.A COMSATS Uni
Software Evolution
• In 1965, Mark Halpern used the term evolution to define the dynamic growth of software.
• The term evolution in relation to application systems took gradually in the 1970s.
• 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.”
3
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.
Self-regulation (3rd) – The process of software evolution is self regulating with respect
to the distributions of the products and process artifacts that are produced.
Conservation of organizational stability (4th) – The average effective global activity rate
on an evolving system does not change over time, that is the average amount of work
that goes into each release is about the same.
4
Software Evolution: Laws of Lehman
Conservation of familiarity (5th) – The amount of new content in each successive release
of a system tends to stay constant or decrease over time.
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 losing quality over time, unless its
design is carefully maintained and adapted to new operational constraints.
5
J.A COMSATS Uni
Software Change
6
Software Change
• Software development does not stop when a system is delivered but
continues throughout the lifetime of the system.
• After a system has been deployed, it inevitably has to change if it is to
remain useful.
• Business changes and changes to user expectations generate new
requirements for the existing software.
• Parts of the software may have to be modified to correct errors that are
found in operation,
• to adapt it for changes to its hardware and software platform,
• to improve its performance or other non-functional characteristics.
7
Change identification and Evolution Processes
8
J.A COMSATS Uni
Importance of Evolution
• Software evolution is important because organizations have invested large
amounts of money in their software and are now completely dependent on these
systems.
• Their systems are critical business assets and they have to invest in system change
to maintain the value of these assets.
• Consequently, most large companies spend more on maintaining existing systems
than on new systems development.
• Therefore, new releases of the systems, incorporating changes, and updates, are
usually created at regular intervals.
9
Importance of Evolution
10
Spiral Model of
Development
and Evolution
12
Spiral Model of Development and Evolution
13
Alternative View
• Rajlich and Bennett (2000) proposed an alternative view of the software
evolution life cycle.
• During servicing, the only changes that are made are relatively small, essential changes.
14
J.A COMSATS Uni
Evolution and Servicing
• Evolution
ØThe stage in a software system’s life cycle where it is in operational use and is
evolving as new requirements are proposed and implemented in the system
• Servicing
ØAt this stage, the software remains useful but the only changes made are those
required to keep it operational, i.e. bug fixes and changes to reflect changes in
the software’s environment. No new functionality is added
• Phase-out
ØThe software may still be used but no further changes are made to it
15
Evolution Processes
16
Software Evolution Process Model
17
J.A COMSATS Uni
Evolution Process Activities… Cont..
• The cost and impact of these changes are assessed to see how much of the
system is affected by the change and how much it cost to implement the change.
• If the proposed changes are accepted, a new release of the system is planned.
• During release planning, all proposed changes (fault repair, adaptation, and new
functionality) are considered.
• A decision is then made on which changes to implement in the next version of the
system.
• The changes are implemented and validated, and a new version of the system is
released.
• The process then iterates with a new set of changes proposed for the next release.
18
J.A COMSATS Uni
Architectural Evolution
19
Evolution Change implementation
• Iteration of the development process where the revisions to the system are
designed, implemented and tested
• During the program understanding phase, you have to understand how the
program is structured, how it delivers functionality and how the proposed change
might affect the program
• System components are redesigned and implemented and the system is retested. If
appropriate, prototyping of the proposed changes may be carried out as part of the
change analysis process.
20
Software Configuration Management (Evolution)
implementation
21
J.A COMSATS Uni
Case Study
Evolution in
Opensource Software
22
Free and Open Source Software (FOSS)!
• Over the past 2–3 decades, there has been a massive shift in the way software is
being reengineered and maintained
• The major players responsible for this paradigm shift is open source.
• Generally, open source refers to a computer program in which the source code is
available to the general public for use or modification from its original design.
• Open-source code is meant to be a collaborative effort where programmers
improve upon the source code and share the changes within the community.
• This paradigm shift has led to an increase in technological advancement
• Linux, LibreOffice, MySQL, Firefox, GIMP, and Blender are some examples of free
and open-source software.
23
Linux Kernel Evolution: Case study 1
Source: https://ics.uci.edu/~wscacchi/Papers/New/Understanding-OSS-Evolution.pdf
24
J.A COMSATS Uni
Patterns of Software System Evolution
Source: https://ics.uci.edu/~wscacchi/Papers/New/Understanding-OSS-Evolution.pdf 25
Social Network of FOSS developers
A social network of
F/OSS developers that
interlinks five different
projects through two
linchpin developers,
dev[46] and dev[58]
[Source: Madey, Freeh,
and Tynan 2002].
26
Source: https://ics.uci.edu/~wscacchi/Papers/New/Understanding-OSS-Evolution.pdf
A case study of medical image software evolution:
Case study 2 :3D Slicer
• 3D Slicer was born as a master’s thesis project between the Surgical
Planning Laboratory at and the Massachusetts Institute of Technology (MIT)
Artificial Intelligence Laboratory, US, in 1998.
• 3D Slicer source code is released under the “3D Slicer Software License”, a
open-source license
ØSlicer1 and Slicer2 source codes were located in a Concurrent Versions System (CVS)
repository.
ØSlicer3 source codes were located in a Subversion (SVN) repository1.
ØSlicer4 source codes are located in a web2, while the developing version can be found
in its official GitHub repository3.
27
J.A COMSATS Uni
For this study, the report
examined the 21 major and
minor stable releases s
https://www.sciencedirect.com/science/article/pii/S2405844024024393 28
SPM (Statistical Parametric Mapping software)
https://www.sciencedirect.com/science/article/pii/S2405844024024393 29
Source Code Evolution
https://www.sciencedirect.com/science/article/pii/S2405844024024393 30
Thanks for your attention!
Any Question?
Email me on : [email protected] 31