Software Maintenance
Software Maintenance
Introduction – Definition of SM
• IEEE 91 definition :
The process of modifying the software system or
component after delivery to correct faults, improve
performance or other attributes, or adapt to a change in the
environment.
• ISO Definition :
Software maintenance is a set of activities performed when
software undergoes modifications to code and associate
documentation due to a problem or the need for
improvement or adaptation
The Importance of SM – Why Maintain
the Software?
• The better a system is, the more it will be used and the more
the users will request enhancements in functionality.
• There may also be requirements for better performance and
customization to local working patterns.
(..cont) The Importance of SM
• To facilitate future maintenance work
• Shortcuts at the software development stage are very costly in
the long run.
• It is often financially and commercially justifiable to initiate
change solely to make future maintenance easier.
• This would involve such things as code and database
restructuring, and updating of documentation.
Types of Software Maintenance
• Corrective Maintenance
• Adaptive Maintenance
• Preventive Maintenance
• Perfective Maintenance
Corrective Maintenance
• Reactive modification of a software product performed
after delivery to correct discovered problems.
• The identification and removal of faults in the software
after delivery of the software product to the client.
Adaptive Maintenance
• Modification of a software product performed after delivery to
keep a software product usable in a changed or changing
environment.
• changes needed as a consequence of operated system,
hardware, or DBMS changes
• Changes to be done in the system to react to changes in the
environment in which the system operates.
• Adaptive maintenance is generally not requested by the
client, rather it is imposed by the external environment
Preventive Maintenance
Adaptive
25%
Perfective
50%
Preventive 4%
Corrective
21%
Causes of Software Maintenance Problems
• Lack of Traceability
• Lack of code comments
• Lack of Domain Knowledge
• Staff Problem
– Limited Understanding: 47% of software maintenance effect is devoted to
understanding the software to be modified.
– User’s Limited Understanding: provide incomplete and misleading data when
reporting a problem
– 11.9% of the problems during maintenance result from low morale and
productivity.
– During maintenance, 8% of the problems result from a programmer’s being
pulled in too many directions at one, and thus being unable to concentrate on
one problem long enough to solve it.
• Technical Problems
• The need to compromise
Maintenance Process
Correct Program Error
Determine Maintenance
Objective Add New Capability
Generate maintenance
Proposal
Testing
No
Pass
Testing
Yes
Maintenance Process Cont..
1. Program Understanding –
This is the first phase. Analyze the program in order to
understand it.
Attributes such as complexity of the program, the
documentation, and the self- descriptiveness of the
program contribute to the ease of understanding the
program.
The complexity is a measure of the effort required to
understand the program and is usually based on the
control or data flow of the program.
Maintenance Process Cont..
2. Generating Maintenance Proposal
This is the 2nd phase consists of generating a particular
maintenance proposal to accomplish the implementation
of the maintenance objective. The ease of generating
maintenance proposal for a program is primarily affected
by the attribute extensibility. The extensibility of the
program is a measure of the extent to which the program
can support extensions of critical functions.
Maintenance Process Cont..
3. Ripple Effect
The 3rd phase consists of accounting for all of the ripple effect
as a consequence of program modification. In software, the
effect of a modification may not be local to the modification, but
may also affect other portions of the program. There is a ripple
effect from the location of the modification to the other parts of
the program that are affected by the modification.
One aspect if this effect is
Logical or functional
Second is performance requirements
Maintenance Process Cont..