Chapter 10 Software Maintenance
Chapter 10 Software Maintenance
Software Maintenance
Software Maintenance
2
Software Maintenance
Categories of Maintenance
• Corrective maintenance
This refer to modifications initiated by defects in the software.
• Adaptive maintenance
It includes modifying the software to match changes in the ever changing
environment.
• Perfective maintenance
It means improving processing efficiency or performance, or restructuring
the software to improve changeability. This may include enhancement of
existing system functionality, improvement in computational efficiency etc.
3
Software Maintenance
There are long term effects of corrective, adaptive and perfective changes.
This leads to increase in the complexity of the software, which reflect
deteriorating structure. The work is required to be done to maintain it or to
reduce it, if possible. This work may be named as preventive
maintenance.
4
Software Maintenance
Corr
ectiv
e (2 1 Perfective
%)
Adaptive
Preventive
Corrective
Prev
ent iv
e (4
%) Perf e
ct ive
(50 %
)
Ada
ptive
(2 5
%)
5
Software Maintenance
) Information gap.
6
Software Maintenance
Maintenance is Manageable
A common misconception about maintenance is that it is not manageable.
Report of survey conducted by Lientz & Swanson gives some interesting
observations:
1 Emergency debugging 12.4%
6 Others 10.1%
8
Software Maintenance
9
Software Maintenance
The Maintenance Process
10
Software Maintenance
• Program Understanding
The first phase consists of analyzing the program in order to understand.
• Ripple Effect
The third phase consists of accounting for all of the ripple effect as a
consequence of program modifications.
11
Software Maintenance
• Maintainability
Each of these four phases and their associated software quality attributes
are critical to the maintenance process. All of these factors must be
combined to form maintainability.
12
Software Maintenance
Maintenance Models
• Quick-fix Model
This is basically an adhoc approach to maintaining software. It is a fire
fighting approach, waiting for the problem to occur and then trying to fix it
as quickly as possible.
Problem
found
Fix it
) Analysis
14
Software Maintenance
15
Software Maintenance
1. Identification of the parts of the old system that are candidates for
reuse.
2. Understanding these system parts.
3. Modification of the old system parts appropriate to the new
requirements.
4. Integration of the modified parts into the new system.
16
Software Maintenance
Components
Design library Design
17
Software Maintenance
• Boehm’s Model
18
Software Maintenance
Management decisions
Change
Evaluation
implementation
19
Software Maintenance
• Taute Maintenance Model
It is a typical maintenance model and has eight phases in cycle fashion. The
phases are shown in Fig. 7
Phases :
2. Estimate phase
3. Schedule phase
4. Programming phase
5. Test phase
6. Documentation phase
7. Release phase
8. Operation phase
21
Software Maintenance
Phase Ratio
Analysis 1
Design 10
Implementation 100
22
Software Maintenance
M = P + Ke (c-d)
where
23
Software Maintenance
Example – 9.1
The development effort for a software project is 500 person months. The
empirically determined constant (K) is 0.3. The complexity of the code is
quite high and is equal to 8. Calculate the total effort expended (M) if
(i) maintenance team has good level of understanding of the project (d=0.9)
24
Software Maintenance
Solution
Development effort (P) = 500 PM
K = 0.3
C=8
(i) maintenance team has good level of understanding of the project (d=0.9)
M = P + Ke (c-d)
(8-0.9)
= 500 + 0.3e
= 500 + 363.59 = 863.59 PM
(ii) maintenance team has poor understanding of the project (d=0.1)
M = P + Ke (c-d)
(8-0.1)
= 500 + 0.3e
= 500 + 809.18 = 1309.18 PM
25
Software Maintenance
• Boehm Model
Boehm used a quantity called Annual Change Traffic (ACT).
26
Software Maintenance
Example – 9.2
Annual Change Traffic (ACT) for a software system is 15% per year. The
development effort is 600 PMs. Compute estimate for Annual Maintenance
Effort (AME). If life time of the project is 10 years, what is the total effort of
the project ?
27
Software Maintenance
Solution
28
Software Maintenance
Example – 9.3
A software project has development effort of 500 PM. It is assumed that 10%
code will be modified per year. Some of the cost multipliers are given as:
1. Required software Reliability (RELY) : high
2. Date base size (DATA) : high Analyst
3. capability (ACAP) : high Application
4. experience (AEXP) : Very high
5. Programming language experience (LEXP) : high
29
Software Maintenance
Solution
RELY = 1.15
ACAP = 0.86
AEXP = 0.82
LEXP = 0.95
DATA = 1.08
30
Software Maintenance
AME = 41.6 PM
31
Software Maintenance
Regression Testing
Regression testing is the process of retesting the modified parts of the
software and ensuring that no new errors have been introduced into
previously test code.
“Regression testing tests both the modified code and other parts of the
program that may be affected by the program change. It serves many
purposes :
) increase confidence in the correctness of the modified program
) locate errors in the modified program
) preserve the quality and reliability of software
) ensure the software’s continued operation
32
Software Maintenance
1. We create test suites and test plans We can make use of existing test suite and
test plans
2. We test all software components We retest affected components that have
been modified by modifications.
3.
Budget gives time for testing Budget often does not give time for
regression testing.
4.
We perform testing just once on a We perform regression testing many times
software product over the life of the software product.
5. Performed in crisis situations, under greater
Performed under the pressure of
release date of the software time constraints.
33
Software Maintenance
34
Software Maintenance
Fragment A Fragment B
(modified form of
S1 y = (x - 1) * (x + 1) S1’ A)
y = (x -1) * (x + 1)
S2 if (y = 0) S2’ if (y = 0)
S3 return (error) S3’ return (error)
S4 else S4’ else
1 1
S5 return S5’ return
y−3
35
Software Maintenance
Test cases
t2 x = -1 S1, S2, S3
36
Software Maintenance
If we execute all test cases, we will detect this divide by zero fault. But we
have to minimize the test suite. From the fig. 9, it is clear that test cases t3
and t4 have the same execution history i.e. S1, S2, S5. If few test cases have
the same execution history; minimization methods select only one test case.
Hence, either t3 or t4 will be selected. If we select t4 then fine otherwise fault
not found.
Minimization methods can omit some test cases that might expose fault in
the modified software and so, they are not safe.
37
Software Maintenance
38
Software Maintenance
Reverse Engineering
Reverse engineering is the process followed in order to find difficult,
unknown and hidden information about a software system.
40
Software Maintenance
1. Program comprehension
2. Redocumentation and/ or document generation
3. Recovery of design approach and design details at any level of
abstraction
4. Identifying reusable components
5. Identifying components that need restructuring
6. Recovering business rules, and
7. Understanding high level system description
41
Software Maintenance
Reverse Engineering encompasses a wide array of tasks related to understanding
and modifying software system. This array of tasks can be broken into a number of
classes.
Problem/
applicatio
n domain
Mapping
Programming/
implement
domain
43
Software Maintenance
44
Software Maintenance
45
Software Maintenance
Redocumentation
Redocumentation is the recreation of a semantically equivalent
representation within the same relative abstraction level.
Design recovery
Design recovery entails identifying and extracting meaningful higher level
abstractions beyond those obtained directly from examination of the source
code. This may be achieved from a combination of code, existing design
documentation, personal experience, and knowledge of the problem and
application domains.
46
Software Maintenance
Software Re-Engineering
Software re-engineering is concerned with taking existing legacy systems
and re-implementing them to make them more maintainable.
47
Software Maintenance
Existing
System
softwar
specific
ation e
system
Understanding
Design and
implementa and
tion transformation
The following suggestions may be useful for the modification of the legacy
code:
Study code well before attempting changes
Concentrate on overall control flow and not coding
Heavily comment internal code
Create Cross References
Build Symbol tables
Use own variables, constants and declarations to localize the effect
Keep detailed maintenance document
Use modern design techniques
49
Software Maintenance
50
Software Maintenance
• Program Restructuring
51
Software Maintenance
52
Software Maintenance
53
Software Maintenance
Configuration Management
The process of software development and maintenance is controlled is
called configuration management. The configuration management is
different in development and maintenance phases of life cycle due to
different environments.
Project plan
Software requirements specification document
Software design description document
Source code listing
Test plans I procedures I test cases
User manuals
55
Software Maintenance
• Software Versions
Two types of versions namely revisions (replace) and variations (variety).
Version Control :
A version control tool is the first stage towards being able to manage
multiple versions. Once it is in place, a detailed record of every version of
the software must be kept. This comprises the
56
Software Maintenance
57
Software Maintenance
Documentation
Software documentation is the written record of the facts about a
software system recorded with the intent to convey purpose, content
and clarity.
59
Software Maintenance
• User Documentation
S.No. Document Function
1. Provides general description of system’s functions.
System Overview
2.
Installation Guide Describes how to set up the system, customize it to
local hardware needs and configure it to particular
hardware and other software systems.
3. Provides simple explanations of how to start using
Beginner’s Guide
the system.
4. Provides in depth description of each system facility
Reference Guide
and how it can be used.
5. Enhancement Booklet Contains a summary of new features.
6. Quick reference card Serves as a factual lookup.
7.
System administration Provides information on services such as net-
working, security and upgrading.
• System Documentation
61
Software Maintenance
• System Documentation
S.No. Document Function
1. Describes the objectives of the entire system.
System Rationale
2.
SRS Provides information on exact requirements of
system as agreed between user and developers.
3. Provides description of:
SpecificationI Design
(i) How system requirements are implemented.
(ii) How the system is decomposed into a set of
interacting program units.
(iii) The function of each program unit.
4.
Implementation Provides description of:
(i) How the detailed system design is expressed in
some formal programming language.
(ii) Program actions in the form of intra program
comments.
62
Software Maintenance
5.
System Test Plan Provides description of how program units are
tested individually and how the whole system is tested
after integration.
6.
Acceptance Test Plan Describes the tests that the system must pass
before users accept it.
7.
Data Dictionaries Contains description of all terms that relate to the
software system in question.
63
Reference