Lec 1 - Fundamentals of Maintenance
Lec 1 - Fundamentals of Maintenance
2
Fundamentals of software maintenance
Software Maintenance Models
Software Configuration Management
Reengineering
Refactoring
Legacy Systems
Software Impact Analysis
3
Software evolution and maintenance: a practitioner's approach, Tripathy,
Priyadarshi, and Kshirasagar Naik. John Wiley & Sons, 2015.
4
Final Examination 50
Midterm Exam 15
Practical Exam 10
Lab Assignments 10
Lab Hands-on 5
Online Quiz 10
Lecture Bonus +5
5
Agenda
6
Definition & Need for Software Maintenance
Definition according to IEEE/EIA 1219 standards:
Software maintenance is the process of modifying a software product
due to a problem or a need for improvement.
Software modifications are required to:
correct bugs or defects,
improve product design and/or,
adapt to a changed environment,
implement enhancements
migrate old software (legacy) to a new one,
integrate with other software products
7
Maintenance vs. Evolution
Software maintenance means preventing software from failing to deliver
the intended functionalities.
It does not involve major changes to the system’s architecture (keeping an
installed system running with no change to its design).
Software evolution means creating new but related designs from existing
ones.
It refers to all programming activities intended to generate a new software
version from an earlier operational version.
8
The Laws of Software Evolution
Lehman and his collaborators from IBM proposed a number of “laws”
that apply to many evolving software systems:
1. Continuing change
2. Increasing complexity
3. Self regulation
4. Conservation of organizational stability.
5. Conservation of familiarity
6. Continuing growth
7. Declining quality
8. Feedback system
9
The Laws of Software Evolution (cont.)
1. Continuing Change
A program that is used in a real-world environment must be continually
adapted to meet new needs, or else become less satisfactory to its users.
2. Increasing complexity
As a program is evolved its complexity increases with time unless
specific work is done to maintain or reduce it.
3. Self-regulation
The growth of the system should follow the normal distribution curve.
This means that the growth will be slower in the beginning and end of
the life cycle compared to in the middle
10
The Laws of Software Evolution (cont.)
4. Conservation of organizational stability
Over the lifetime of a program, the rate of development of that program
is approximately constant.
The average amount of work that goes into each release is about the
same.
5. Conservation of familiarity
The amount of new content in each successive release of a system tends
to stay constant or decrease over time.
6. Continuing growth
Functional content of a program must be continually increased to
maintain user satisfaction over its lifetime.
11
The Laws of Software Evolution (cont.)
7. Declining quality
Evolving programs will be perceived as of declining quality unless carefully
maintained and adapted to a changing operational environment.
8. Feedback system
The feedback can come from many sources including users (who may press
for new features), the application domain (if changes in tax law require
changes in the way a system calculates taxes), the technical environment in
which the system runs (if changes to the operating system require changes
to how some of the functionality is implemented), and the system itself
(when defects are identified and need to be fixed).
Developers must keenly consider such feedback loops, otherwise the system
will be seen over time as increasingly less appealing by its user base.
12
Exercises
1. (T/F) According to Lehman’s 7th law of SW evolution, evolving programs will be
perceived as of increasing quality.
2. ……. means preventing software from failing to deliver the intended functionalities.
3. ……. means creating new but related designs from existing ones.
4. Software modifications are required to……….., …………., …………
5. During software evolution, feedback can come from many sources including ……,
or………. or …………… or………….
Replace each statement with the appropriate lehman’s law
1. Over the lifetime of a program, the rate of development of that program is
approximately constant.
2. Functional content of a program must be continually increased to maintain user
satisfaction over its lifetime.
3. The amount of new content in each successive release of a system tends to stay
constant or decrease over time.
13
Categories of Software Maintenance activities
Maintenance activities are divided into four groups based on what the
developer intents to achieve with those activities:
➢ Corrective maintenance
➢ Adaptive maintenance
➢ Perfective maintenance
➢ Preventive maintenance
14
Categories of Software Maintenance activities
1. Corrective maintenance:
The purpose of corrective maintenance is to correct failures: processing
failures and performance failures.
Examples of corrective maintenance:
A program that aborts or produces a wrong output is an example of
processing failure.
Similarly, a program not being able to meet real-time requirements is an
example of performance failure.
The process of corrective maintenance includes isolation and correction of
defective elements in the software.
Basically, corrective maintenance is a reactive process, which means that
corrective maintenance is performed after detecting defects with the
system.
15
Categories of Software Maintenance activities
2. Adaptive maintenance:
The purpose of adaptive maintenance is to enable the system to
adapt to changes in its data environment or processing
environment.
Adaptive maintenance includes system changes, additions,
deletions, modifications, extensions, and enhancements to meet
the evolving needs of the environment in which the system must
operate.
Examples of Adaptive maintenance are:
changing the system to support new hardware configuration;
converting the system from offline to on-line operation; and
changing the system to be compatible with other applications.
16
Categories of Software Maintenance activities
3. Perfective maintenance:
The purpose of perfective maintenance is to make a variety of
improvements, namely, user experience, processing efficiency, and
maintainability.
Examples of perfective maintenance are:
the program outputs can be made more readable for better user experience;
the program can be modified to make it faster, thereby increasing the
processing efficiency;
the program can be restructured to improve its readability, thereby increasing
its maintainability.
Activities for perfective maintenance include restructuring of the code,
creating and updating documentations, and tuning the system to improve
performance.
It is also called “reengineering”. 17
Categories of Software Maintenance activities
4. Preventive maintenance:
The purpose of preventive maintenance is to prevent problems from
occurring by modifying software products.
Basically, one should look ahead, identify future risks and unknown
problems, and take actions so that those problems do not occur.
Preventive maintenance is very often performed on safety critical and high
available software systems.
The concept of “software rejuvenation” is a preventive maintenance measure
to prevent, or at least postpone, the occurrences of failures (crash) due to
continuously running the software system.
o It involves occasionally terminating an application or a system, cleaning up its
internal state, and restarting it.
o Rejuvenation may increase the downtime of the application; however, it
prevents the occurrence of more severe failures.
18
Exercises
1. ----------maintenance refers to modifying a system in response to environmental
changes.
2. ----------maintenance refers to introducing changes that would protect the system
from future problems.
3. Suppose you are running a web application and you found that it is not
compatible with a new version of Microsoft web browser (Chromium-powered
Edge browser) through a pre-release beta version for developers. If you address
this compatibility issue in your web application before the final stable release of
Microsoft Edge browser, then you are performing an -------software maintenance
task.
4. ……………. is a preventive maintenance measure to prevent, or at least
postpone, the occurrences of failures due to continuously running the software
system.
5. (T/F) corrective maintenance is a proactive process, which means that corrective
maintenance is performed before defects occur in the system.
6. Give one example for the corrective and perfective maintenance activities
19
Technical Challenges in Software Maintenance
21
22