0% found this document useful (0 votes)
112 views33 pages

Software Maintenance: IT/ Project Management/ Business Analysis Consultant & Trainer

This document discusses software maintenance. It defines software maintenance as the total activities required to provide cost-effective support to software, including both pre-delivery and post-delivery activities. Some key points made include that maintenance is an important part of the software lifecycle, consumes a major share of costs, and includes activities like modification, testing and user support. The document also covers technical and management issues in maintenance like limited understanding of code, impact analysis, and staffing challenges.
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)
112 views33 pages

Software Maintenance: IT/ Project Management/ Business Analysis Consultant & Trainer

This document discusses software maintenance. It defines software maintenance as the total activities required to provide cost-effective support to software, including both pre-delivery and post-delivery activities. Some key points made include that maintenance is an important part of the software lifecycle, consumes a major share of costs, and includes activities like modification, testing and user support. The document also covers technical and management issues in maintenance like limited understanding of code, impact analysis, and staffing challenges.
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/ 33

1

Software Maintenance
Prepared By:
Eng.\ Tarig Ahmed Khalid, M.Sc., PMP, CEC, CBAP
I T/ Project Management/ Business Analysis Consultant & Trainer

2
Introduction
Software development efforts result in the delivery of a software
product which satisfies user requirements.
Once in operation, defects are uncovered, operating environments
change, and new user requirements arise.
The maintenance phase of the life cycle begins following a
warranty period, but maintenance activities occur much earlier.
Software maintenance is an integral part of a software life cycle.
Open Source paradigm has brought further attention to the issue of
maintaining software artifacts developed by others.
3
Software maintenance is defined as the totality of activities
required to provide cost-effective support to software.
Activities are performed during the pre-delivery stage, as well as
during the post-delivery stage.
Pre-delivery activities include planning for post-delivery
operations, for maintainability, and for logistics determination for
transition activities.
Post-delivery activities include software modification, training,
and operating or interfacing to a help desk.

4
1. Software Maintenance Fundamentals
2. Key Issues in Software Maintenance
3. Maintenance Process
4. Techniques for Maintenance

5
1. Software Maintenance Fundamentals
2. Key Issues in Software Maintenance
3. Maintenance Process
4. Techniques for Maintenance

6
1.1 Definitions and Terminology
Software maintenance is defined in the IEEE Standard for
Software Maintenance, IEEE 1219, as the modification of a
software product after delivery to correct faults, to improve
performance or other attributes, or to adapt the product to a
modified environment.

The IEEE/EIA 12207 standard for software life cycle processes
describes maintenance as the process of a software product
undergoing modification to code and associated documentation
due to a problem or the need for improvement.
7
1.2 Nature of Maintenance
Software maintenance sustains the software product throughout its
operational life cycle.
Maintenance Activities:
1. Modification requests are logged and tracked
2. The impact of proposed changes is determined
3. Code and other software artifacts are modified
4. Testing is conducted
5. A new version of the software product is released.
Also, training and daily support are provided to users.



8
1.3 Need for Maintenance
Maintenance is needed to ensure that the software continues to
satisfy user requirements.
Maintenance must be performed in order to:
1. Correct faults
2. Improve the design
3. Implement enhancements
4. Interface with other systems
5. Adapt programs so that different hardware, software, system
features, and telecommunications facilities can be used
6. Migrate legacy software
7. Retire software

9
1.4 Maintenance Costs
Maintenance consumes a major share of software life cycle
financial resources.
A common perception of software maintenance is that it merely
fixes faults.
Studies and surveys over the years have indicated that the
majority, over 80%, of the software maintenance effort is used
for non-corrective actions.
Understanding the factors that influence the maintainability of a
system can help to contain costs.


10
Factors affecting software maintenance costs:
1. Application type
2. Software novelty
3. Software maintenance staff availability
4. Software life span
5. Hardware characteristics
6. Quality of software design, construction, documentation and
testing


11
1.5 Categories of Maintenance
Standard for Software Engineering-Software Maintenance,
ISO/IEC 14764 states four categories of maintenance:
1. Corrective Maintenance: Reactive modification of a software
product performed after delivery to correct discovered
problems
2. Adaptive Maintenance: Modification of a software product
performed after delivery to keep a software product usable in
a changed or changing environment
3. Perfective Maintenance: Modification of a software product
after delivery to improve performance or maintainability
4. Preventive Maintenance: Modification of a software product
after delivery to detect and correct latent faults in the software
product before they become effective faults

12
ISO/IEC 14764 classifies adaptive and perfective maintenance as
enhancements.
It also groups together the corrective and preventive maintenance
categories into a correction category.
Preventive maintenance, the newest category, is most often
performed on software products where safety is critical.
Correction Enhancement
Proactive Preventive Perfective
Reactive Corrective Adaptive
13
1. Software Maintenance Fundamentals
2. Key Issues in Software Maintenance
3. Maintenance Process
4. Techniques for Maintenance

14
Introduction
The following presents some issues related to software
maintenance:
2.1 Technical issues
2.2 Management issues
2.3 Cost estimation
2.4 Measures

15
2.1 Technical Issues
2.1.1 Limited understanding:
It refers to how quickly a software engineer can understand
where to make a change or a correction in software which this
individual did not develop.
Research indicates that some 40% to 60% of the maintenance
effort is devoted to understanding the software to be modified.
The topic of software comprehension is of great interest to
software engineers.
Comprehension is more difficult in text-oriented representation
(source code):
it is often difficult to trace the evolution of software through
its releases/versions if changes are not documented
the developers are not available to explain it

16
2.1.2 Testing
The cost of repeating full testing on a major piece of software
can be significant in terms of time and money.
Finding time to test is often difficult.
There is also the challenge of coordinating tests when different
members of the maintenance team are working on different
problems at the same time.
When software performs critical functions, it may be
impossible to bring it offline to test.


17
2.1.3 Impact analysis
It describes how to conduct, cost effectively, a complete
analysis of the impact of a change in existing software.
Maintainers must possess an intimate knowledge of the
softwares structure and content Impact Analysis
Impact Analysis: identifies all systems and software products
affected by a software change request and develops an estimate
of the resources needed to accomplish the change.
The change request/ modification request (MR)/ problem report
(PR), must first be analyzed and translated into software terms.


18
The objectives of impact analysis are:
Determination of the scope of a change in order to plan and
implement work
Development of accurate estimates of resources needed to
perform the work
Analysis of the cost/benefits of the requested change
Communication to others of the complexity of a given change

Software designed with maintainability in mind greatly facilitates
impact analysis.

19
2.1.4 Maintainability
The IEEE [IEEE610.12-90] defines maintainability as the ease
with which software can be maintained, enhanced, adapted, or
corrected to satisfy specified requirements.
ISO defines maintainability as one of the quality characteristics
(ISO9126-01).
It has been observed that the presence of systematic and mature
processes, techniques, and tools helps to enhance the
maintainability of a system.


20
2.2 Management Issues
2.2.1 Alignment with organizational objectives
Organizational objectives describe how to demonstrate the
return on investment of software maintenance activities.
Initial software development is usually project-based, with a
defined time scale and budget.
The main emphasis is to deliver on time and within budget to
meet user needs.
In contrast, software maintenance often has the objective of
extending the life of software for as long as possible.
In addition, it may be driven by the need to meet user demand
for software updates and enhancements.
In both cases, the return on investment is much less clear, so
that the view at senior management level is often of a major
activity consuming significant resources with no clear
quantifiable benefit for the organization.

21
2.2.2 Staffing
It refers to how to attract and keep software maintenance staff.
Maintenance is often not viewed as glamorous work.
Software maintenance personnel are frequently viewed as
second-class citizens and morale therefore suffers.
2.2.3 Process
Software process is a set of activities, methods, practices, and
transformations which people use to develop and maintain
software and the associated products.
At the process level, software maintenance activities share
much in common with software development.
Maintenance also requires several activities which are not
found in software development which present challenges to
management.


22
2.2.4 Organizational aspects of maintenance
Organizational aspects describe how to identify which
organization and/or function will be responsible for the
maintenance of software.
The team that develops the software is not necessarily assigned
to maintain the software once it is operational.
The software engineering organizations may stay with the
original developer or go to a separate team (or maintainer).
The decision should be made on a case-by-case basis.

23
1. Software Maintenance Fundamentals
2. Key Issues in Software Maintenance
3. Maintenance Process
4. Techniques for Maintenance

24
Introduction
The Maintenance Process provides references and standards used
to implement the software maintenance process.
The Maintenance Activities topic differentiates maintenance from
development and shows its relationship to other software
engineering activities.
25
3.1 Maintenance Processes
Maintenance processes provide needed activities and detailed
inputs/outputs to those activities.
The maintenance process model described in the (IEEE1219) starts
with the software maintenance effort during the post-delivery stage
and discusses items such as planning for maintenance.
The maintenance activities developed by ISO/IEC are as shown:

26
3.2 Maintenance Activities
Many maintenance activities are similar to those of software
development.
Maintainers perform analysis, design, coding, testing, and
documentation.
They must track requirements in their activities just as is done in
development, and update documentation as baselines change.
Some activities involve processes unique to software maintenance.
27
Unique activities
1. Transition: a controlled and coordinated sequence of activities
during which software is transferred progressively from the
developer to the maintainer
2. Impact Analysis
3. Software Support: help and advice to users concerning a
request for information (for example, business rules,
validation, data meaning and ad-hoc requests/reports)


28
1. Software Maintenance Fundamentals
2. Key Issues in Software Maintenance
3. Maintenance Process
4. Techniques for Maintenance

29
This subarea introduces some of the generally accepted techniques
used in software maintenance.
4.1 Program Comprehension
4.2 Reengineering
4.3 Reverse engineering


30
4.1 Program Comprehension
Programmers spend considerable time in reading and
understanding programs in order to implement changes.
Code browsers are key tools for program comprehension.
Clear and concise documentation can aid in program
comprehension.

31
4.2 Reengineering
Reengineering is defined as the examination and alteration of
software to reconstitute it in a new form, and includes the
subsequent implementation of the new form.
32
Reverse engineering is the process of analyzing software to
identify the softwares components and their interrelationships
and to create representations of the software in another form
or at higher levels of abstraction.
Reverse engineering is passive; it does not change the
software, or result in new software.
Reverse engineering efforts produce call graphs and control
flow graphs from source code.
Data reverse engineering has gained in importance over the
last few years where logical schemas are recovered from
physical databases.
4.3 Reverse Engineering
33

You might also like