0% found this document useful (0 votes)
56 views22 pages

Lec 1 - Fundamentals of Maintenance

This course covers software maintenance. Students will learn to identify maintenance processes, describe maintenance models, design maintenance activities, and use tools like code restructuring. Topics include maintenance fundamentals, models, configuration management, reengineering, and legacy systems. Students will be assessed through exams, assignments, hands-on labs, and an online quiz. The course aims to help students understand the need for software maintenance and evolution. It will cover maintenance categories like corrective, adaptive, perfective, and preventive maintenance.

Uploaded by

Salah Ashraf
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
56 views22 pages

Lec 1 - Fundamentals of Maintenance

This course covers software maintenance. Students will learn to identify maintenance processes, describe maintenance models, design maintenance activities, and use tools like code restructuring. Topics include maintenance fundamentals, models, configuration management, reengineering, and legacy systems. Students will be assessed through exams, assignments, hands-on labs, and an online quiz. The course aims to help students understand the need for software maintenance and evolution. It will cover maintenance categories like corrective, adaptive, perfective, and preventive maintenance.

Uploaded by

Salah Ashraf
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 22

During and upon the completion of this course, you will:

 Identify overall process of Software Maintenance.


 Describe different models of maintenance.
 Design maintenance activities on existing software.
 Use Code restructuring and software reengineering techniques and tools.
 Use software tracking, change management and versioning tools.
 Evaluate software performance.

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.

 Refactoring: improving the design of existing code. Fowler, Martin.


Addison-Wesley Professional, 2018.

 Software maintenance: concepts and practice. Grubb, Penny, and


Armstrong A. Takang. World Scientific, 2003.

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

 Definition and Need for Software Maintenance


 Software Evolution
 Software Maintenance Categories
 Technical Challenges in Software Maintenance

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

 A number of key issues must be dealt with to ensure the effective


maintenance of software:
Technical Issue Related Maintenance Technique
Trying to find a fault in software Program comprehension (the ability of a
containing a large number of lines of code programmer to understand what a
that another software engineer developed computer program's source code does)
The cost of repeating full testing on a Regression testing (the selective retesting
major piece of software is significant in of software or a component to verify that
terms of time and money the modifications have not caused
unintended effects)
identifying all systems and software Impact Analysis (identifies the affected
products affected by a software change components, estimates the needed
request resources, and determine the risk of
making the change)
20
Exercises
Replace each statement with the maintenance technique that addresses it:
 Trying to find a fault in software containing a large number of lines of code
that another software engineer developed
 The cost of repeating full testing on a major piece of software is significant in
terms of time and money
 identifying all systems and software products affected by a software change
request

21
22

You might also like