0% found this document useful (0 votes)
25 views19 pages

Lec 06

Software maintenance encompasses all activities necessary for cost-effective support of software, including both predelivery and postdelivery tasks. It is essential for ensuring software continues to meet user requirements and involves various types of maintenance such as corrective, adaptive, perfective, and preventive. Key issues in software maintenance include technical challenges like limited understanding and impact analysis, as well as management concerns such as staffing, process, and outsourcing.

Uploaded by

Aisha
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)
25 views19 pages

Lec 06

Software maintenance encompasses all activities necessary for cost-effective support of software, including both predelivery and postdelivery tasks. It is essential for ensuring software continues to meet user requirements and involves various types of maintenance such as corrective, adaptive, perfective, and preventive. Key issues in software maintenance include technical challenges like limited understanding and impact analysis, as well as management concerns such as staffing, process, and outsourcing.

Uploaded by

Aisha
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/ 19

SOFTWARE RE-ENGINEERING 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.

You might also like