Software
Evolution
Introduction
Joseph K Balikuddembe
[Link]@[Link]
Objectives
• Understanding that change is inevitable if software
systems are to remain useful and that software
development and software evolution may be integrated in
a spiral model;
• Learning about different types of software maintenance
and the factors that affect maintenance costs;
• Be aware of the processes involved in software evolution,
including the process of software re-engineering;
• Understanding how legacy systems can be assessed to
decide whether they should be scrapped, maintained, re-
engineered or replaced.
11/30/2024 01:59 PM Joseph K Balikuddembe [Software Evolution]
What is Software
Evolution
• Software evolution is the process of continually
developing and updating software to meet the
requirements of the market over time.
• The system has to undergo it for progress, advanced
user requirements, and the needs of business and
urgent changes without destroying the integrity of the
organization of the system.
• The process depends on several factors, such as the
type of software, development processes, and how
experienced the involved people are.
11/30/2024 01:59 PM Joseph K Balikuddembe [Software Evolution]
formal
may statemen controls
relat the P-type
t of
e to productio real
problem n of chan
ge
real PROGRAM worl
d abstract
worl view of
d provid
solution es
world
maybe
of S-type compare chan requirement
interest ge
to
sspecificatio
n
E-type
real
chan world solution PROGRAM
ge PROGRA
M
abstract
requirement view of
s world
specificatio
n model
11/30/2024 01:59 PM
Activities in evolution
• The software evolution process includes fundamental
activities of change analysis, release planning, system
implementation, and releasing a system to customers.
• The cost and impact of these changes are accessed to
see how much the system is affected by the change and
how much it might cost to implement the change.
• If the proposed changes are accepted, a new release of
the software system is planned.
11/30/2024 01:59 PM Joseph K Balikuddembe [Software Evolution]
Activities in evolution -
Cont
• During release planning, all the proposed changes
(fault repair, adaptation, and new functionality) are
considered.
• A design is then made on which changes to implement
in the next version of the system.
• The process of change implementation is an iteration of
the development process where the revisions to the
system are designed, implemented, and tested.
11/30/2024 01:59 PM Joseph K Balikuddembe [Software Evolution]
Requirements
Growth
Davis’s model:
User needs evolve convention
continuously al
Functionalit
Imagine a graph showing User developme
growth of needs over time needs nt
May not be linear or
Inappropriaten
continuous (hence no
ess
scale shown)
y
Traditional development (shaded area)
Shortfa
always lags behind needs
ll
growth
Adaptabili
first release implements Latene ty (slope of
only part of the original ss
requirements Longevi line)
functional enhancement ty
adds new functionality
eventually, further d
Tim
ts se re as
e
enhancement becomes too e n e h a
ce ive h e
m as p
pl
a l p
ire le nt e de nt
costly, and a replacement qu
e e r t e
e tr em d en m
is planned r fir s
nc a n m nce
y e
the replacement also tif ha ze lac ha
en en e p en
id fre re
only implements part
of01:59
11/30/2024 its requirements,
PM
and so on...
Necessity of software
evolution
• Change in requirement with time:
• With time, the organization’s needs and modus Operandi of working
could substantially be changed .
• So in this frequently changing time the tools(software) that they are
using need to change to maximize the performance.
• Environment change:
• As the working environment changes the things(tools) that enable us
to work in that environment also changes proportionally
• Same happens in the software world as the working environment
changes then, the organizations require reintroduction of old
software with updated features and functionality to adapt the new
environment.
11/30/2024 01:59 PM Joseph K Balikuddembe [Software Evolution]
Necessity of software
evolution
• Errors and bugs:
• As the age of the deployed software within an organization
increases their preciseness or impeccability decrease
• The efficiency to bear the increasing complexity workload
also continually degrades.
• Therefore, it becomes necessary to avoid use of obsolete and
aged software.
• All such obsolete Pieces of software need to undergo the evolution
process in order to become robust as per the workload complexity of
the current environment.
11/30/2024 01:59 PM Joseph K Balikuddembe [Software Evolution]
Necessity of software
evolution
• Security risks:
• Using outdated software within an organization may lead
you to at the verge of various software-based
cyberattacks and could expose your confidential data
illegally associated with the software that is in use.
• So, it becomes necessary to avoid such security breaches
through regular assessment of the security
patches/modules are used within the software.
• If the software isn’t robust enough to bear the current
occurring Cyber attacks so it must be changed (updated).
11/30/2024 01:59 PM Joseph K Balikuddembe [Software Evolution]
Necessity of software
evolution
• For having new functionality and features:
• In order to increase the performance and fast data
processing and other functionalities,
• an organization need to continuously evolute the
software throughout its life cycle so that
stakeholders & clients of the product could work
efficiently
11/30/2024 01:59 PM Joseph K Balikuddembe [Software Evolution]
Change Cycle
• Software development, therefore, does not stop when
a system is delivered but continues throughout the
lifetime of the system.
• Organizations are now completely dependent on their
software systems and have invested millions of dollars
in these systems.
• Their systems are critical business assets and they must
invest in system change to maintain the value of these
assets.
11/30/2024 01:59 PM Joseph K Balikuddembe [Software Evolution]
Change Cycle
• The majority of the software budget in large companies is
therefore devoted to maintaining existing systems.
• Post-deployment changes are not simply concerned with
repairing faults in the software.
• The majority of changes are a consequence of new
requirements that are generated in response to changing
business and user needs.
• Consequently, you can think of software engineering as a
spiral process with requirements, design, implementation
and testing going on throughout the lifetime of the
system.
11/30/2024 01:59 PM Joseph K Balikuddembe [Software Evolution]
The spiral model
11/30/2024 01:59 PM Joseph K Balikuddembe [Software Evolution]
Spiral model – cont.
• You start by creating Release 1 of the system. Once delivered,
changes are proposed and the development of Release 2
starts almost immediately.
• In fact, the need for evolution may become obvious even
before the system is deployed so that later releases of the
software may be under development before the initial version
has been released.
• This is an idealized model of software evolution that can be
applied in situations where a single organisation is
responsible for both the initial software development and the
evolution of the software.
• Most generic software products are developed using this
approach.
11/30/2024 01:59 PM Joseph K Balikuddembe [Software Evolution]
Spiral model – cont
• However, custom software may be developed externally
but the evolution may be the responsibility of the
customer’s software development staff.
• Alternatively, the software user might issue a separate
contract to an external company for system support and
evolution.
11/30/2024 01:59 PM Joseph K Balikuddembe [Software Evolution]
Spiral model – cont
• In this case, there are often discontinuities in the spiral
process.
• Requirements and design documents may not be passed
from one company to another.
• Companies may merge or reorganise and inherit software
from other companies, and then find that this has to be
changed.
• When the transition from development to evolution is not
seamless, the process of changing the software after
delivery is often called software maintenance.
• Maintenance involves extra process activities, such as
program understanding, in addition to the normal
activities of software development.
11/30/2024 01:59 PM Joseph K Balikuddembe [Software Evolution]
Program evolution dynamics
• Program evolution dynamics is the study of system
change
• The majority of work in this area has been carried out
by Lehman and Belady, initially in the 1970s and 1980s
(Lehman and Belady, 1985).
• The work continued in the 1990s as Lehman and others
investigated the significance of feedback in evolution
processes (Lehman, 1996; Lehman, et al., 1998;
Lehman, et al., 2001).
11/30/2024 01:59 PM Joseph K Balikuddembe [Software Evolution]
Program evolution dynamics
• From these studies, they proposed a set of laws
(Lehman’s laws) concerning system change.
• They claim these laws (hypotheses, really) are invariant
and widely applicable.
• Lehman and Belady examined the growth and
evolution of a number of large software systems.
11/30/2024 01:59 PM Joseph K Balikuddembe [Software Evolution]
Lehman`s Laws
Law Description
Continuing A program that is used in a real-world environment must
change necessarily change, or else become progressively less
useful in that environment.
Increasin As an evolving program changes, its structure tends to
g become more complex. Extra resources must be devoted to
complexi preserving and simplifying the structure.
ty
Large Program evolution is a self-regulating process. System
program attributes such as size, time between releases, and the
evolution number of reported errors is approximately invariant for
each system release.
Organization Over a program’s lifetime, its rate of development is
al stability approximately constant and independent of the resources
devoted to system development.
11/30/2024 01:59 PM Joseph K Balikuddembe [Software Evolution]
Lehman`s Laws
Law Description
Conservation of Over the lifetime of a system, the incremental change
familiarity in each release is approximately constant.
Continuing growth The functionality offered by systems has to
continually increase to maintain user
satisfaction.
Declining quality The quality of systems will decline unless they are
modified to reflect changes in their operational
environment.
Feedback system Evolution processes incorporate multiagent,
multiloop feedback systems and you have to treat
them as feedback systems to achieve significant
product improvement.
11/30/2024 01:59 PM Joseph K Balikuddembe [Software Evolution]
Evolution and servicing
11/30/2024 01:59 PM Joseph K Balikuddembe [Software Evolution]
Evolution 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.
11/30/2024 01:59 PM Joseph K Balikuddembe [Software Evolution]
Case Studies - GSE
• Google's Search Engine (GSE) is one of the most
popular and influential software products in the world,
as it handles billions of queries per day and provides
relevant and personalized results to users.
• The GSE evolved from a simple prototype in 1996 to a
sophisticated and scalable system in 2021, through
hundreds of updates and experiments.
11/30/2024 02:00 PM Joseph K Balikuddembe [Software Evolution]
Case Studies - GSE
• The GSE maintenance and evolution process was driven
by two main goals: relevance and innovation.
• To achieve these goals, Google adopted a data-driven and
user-centric approach, based on machine learning,
experimentation, feedback, and iteration.
• The GSE also had to deal with diverse and dynamic data
sources, user preferences, market trends, and
competitors.
• Google's GSE is an example of how software maintenance
and evolution can deliver value and differentiation to a
software product in a competitive and evolving market.
11/30/2024 02:00 PM Joseph K Balikuddembe [Software Evolution]
Netflix's Streaming Service
• Netflix's Streaming Service (NSS) is one of the most
popular and successful software platforms in the
entertainment industry, as it provides millions of
subscribers with access to thousands of movies and
shows on demand.
• The NSS evolved from a DVD rental service in 1997 to a
streaming service in 2007, through several transitions
and transformations.
• The NSS maintenance and evolution process was driven
by three main goals: quality, availability, and growth.
11/30/2024 02:00 PM Joseph K Balikuddembe [Software Evolution]
Netflix's Streaming Service
• To achieve these goals, Netflix adopted a cloud-based
and microservices-oriented approach, based on
resilience, scalability, and agility.
• The NSS also had to handle increasing and fluctuating
demand, content diversity, device compatibility, and
regulatory compliance.
• Netflix's NSS is an example of how software
maintenance and evolution can enable the transition
and transformation of a software platform in a
disruptive and demanding industry.
11/30/2024 02:00 PM Joseph K Balikuddembe [Software Evolution]
Key points
• Software development and evolution can be thought of
as an integrated, iterative process that can be
represented using a spiral model.
• For custom systems, the costs of software maintenance
• usually exceed the software development costs.
• The process of software evolution is driven by requests
for changes and includes change impact analysis,
release planning and change implementation.
• Lehman’s laws, such as the notion that change is
continuous, describe a number of insights derived from
long-term studies of system evolution.
11/30/2024 02:00 PM Joseph K Balikuddembe [Software Evolution]
Readings
• Robyn R. Lutz and Ines Carmen Mikulsk:
Operational anomalies as a cause of safety-critical
requirements evolution. The Journal of Systems
and Software 65 (2003) 155–161
• P.I. Okwu and I.N. Onyeje: Software Evolution: Past,
Present and Future. American Journal of
Engineering Research (AJER).
• Software-Engineering-9th-Edition-by-Ian-
Sommerville.
[Link]
BOOKS%20FOR%20IT/Software-Engineeri
[Link]
11/30/2024 02:00 PM Joseph K Balikuddembe [Software Evolution]