Lec 06
Lec 06
SOFTWARE MAINTENANCE
SOFTWARE MAINTENANCE
DEFINITION
• Software maintenance is defined as the totality of activities required to provide cost-
effective support to software.
• Activities are performed during the predelivery stage as well as during the postdelivery
stage.
• Predelivery activities include planning for postdelivery operations, maintainability, and
logistics determination for transition activities.
• Postdelivery activities include software modification, training, and operating or interfacing
to a help desk.
SOFTWARE MAINTENANCE
• Maintenance is needed to ensure that the software continues to satisfy user
requirements.
• Software products change due to corrective and noncorrective software actions.
Maintenance must be performed in order to
o correct faults;
o improve the design;
o implement enhancements;
o interface with other software;
o adapt programs so that different hardware, software, system features, an
telecommunications facilities can be used;
o migrate legacy software; and retire software.
CATEGORIES OF MAINTENANCE
1. Corrective Maintenance:
• Reactive modification (or repairs) of a software product performed after delivery to
correct discovered problems.
o Included in this category is emergency maintenance, which is an unscheduled
modification performed to temporarily keep a software product operational
pending corrective maintenance.
2. Adaptive maintenance:
• Modification of a software product performed after delivery to keep a software product
usable in a changed or changing environment.
o For example, the operating system might be upgraded and some changes to the
software may be necessary.
CATEGORIES OF MAINTENANCE
3. Perfective Maintenance:
• modification of a software product after delivery to provide enhancements for users,
improvement of program documentation, and recoding to improve software performance,
maintainability, or other software attributes.
4. Preventive Maintenance:
• modification of a software product after delivery to detect and correct latent faults in the
software product before they become operational faults.
ISSUES IN SOFTWARE MAINTENANCE
KEY ISSUES IN SOFTWARE MAINTENANCE
• Some of the technical and management issues related to software maintenance have
been grouped under the following topic headings:
I. Technical Issues
II. Management Issues
III. Cost Estimation
IV. Measurement
TECHNICAL
1. Limited Understanding
• Limited understanding refers to how quickly a software engineer can understand where to
make a change or correction in software that he or she did not develop.
• Research indicates that about half of the total maintenance effort is devoted to
understanding the software to be modified.
TECHNICAL
2. TESTING
• The cost of repeating full testing on a major piece of software is significant in terms of
time and money.
• Regression testing (the selective retesting of software or a component to verify that the
modifications have not caused unintended effects) is an important testing concept in
maintenance.
• Additionally, finding time to test is often difficult.
• Coordinating tests when different members of the maintenance team are working on
different problems at the same time remains a challenge.
• When software performs critical functions, it may be difficult to bring it offline to test.
TECHNICAL
3. IMPACT ANALYSIS
• Impact analysis 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 software’s structure and content.
• They use that knowledge to perform impact analysis, which identifies all systems and
software products affected by a software change request and develops an estimate of
the resources needed to accomplish the change.
• Additionally, the risk of making the change is determined.
TECHNICAL
3. IMPACT ANALYSIS
• Steps of impact analysis:
o analyze Modification Request(s)/Problem Report(s);
o develop options for implementing the modification;
o document the MR/PR, the results, and the execution options;
o obtain approval for the selected modification option.
• Software designed with maintainability in mind greatly facilitates impact analysis.
MANAGEMENT ISSUES
1. Staffing
• Staffing refers to how to attract and keep software maintenance staff.
• Maintenance is not often viewed as glamorous work.
• As a result, software maintenance personnel are frequently viewed as “second-class
citizens,” and morale therefore suffers.
MANAGEMENT ISSUES
2. Process
• Just like Software Development life Cycle, maintenance also requires several activities that
are not found in software development.
• These activities present challenges to management.
MANAGEMENT ISSUES
3. 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.
• Having a permanent maintenance team has many benefits:
o allows for specialization;
o creates communication channels;
o promotes an egoless, collegiate atmosphere;
o reduces dependency on individuals;
o allows for periodic audit checks.
MANAGEMENT ISSUES
4. Outsourcing
• Outsourcing and offshoring software maintenance has become a major industry.
• More often, the outsourcing option is selected for less mission-critical software, as
organizations are unwilling to lose control of the software used in their core business.
• One of the major challenges for outsourcers is to determine the scope of the maintenance
services required, the terms of a service- level agreement, and the contractual details.
• Outsourcing requires a significant initial investment and the setup of a maintenance
process that will require automation.
MAINTENANCE COST ESTIMATION
• Maintenance cost estimates are affected by many technical and nontechnical factors.
• The two most popular approaches to estimating resources for software maintenance are
the use of Parametric models and the use of experience.
• A combination of these two can also be used.
1. Parametric Models
o In Parametric Models historical data from past maintenance are needed in order to
use and calibrate the mathematical models.
o Cost driver attributes affect the estimates.
MAINTENANCE COST ESTIMATION
2. Experience
o Experience, in the form of expert judgment, is often used to estimate maintenance
effort.
Clearly, the best approach to maintenance estimation is to combine historical data and
experience. The cost to conduct a modification (in terms of number of people and amount of
time) is then derived.
SOFTWARE MAINTENANCE MEASUREMENT
• The maintainer must determine which measures are appropriate for a specific
organization based on that organization’s own context.
• The software quality model suggests measures that are specific for software maintenance.
Measures for sub characteristics of maintainability include the following.
• Analyzability: measures of the maintainer’s effort or resources expended in trying
either to diagnose deficiencies or causes of failure or to identify parts to be
modified.
• Changeability: measures of the maintainer’s effort associated with implementing a
specified modification.
• Stability: measures of the unexpected behavior of software, including that
encountered during testing.
• Testability: measures of the maintainers and users’ effort in trying to test the
modified software.