Se Unit 6
Se Unit 6
Software Maintenance
Process of modifying existing software after it's been deployed to
fix defects, improve performance, or enhance functionality.
Why We Need Software Maintenance:
Software Engineering 2
CO
Extending Software Life: By addressing issues and adding new
features, maintenance can extend the lifespan of software, saving
the cost and effort of developing a new system.
Software Engineering 3
CO
Software Engineering 4
CO
Classification of Software Changes
To maintain and evolve software, different types of changes are required.
1. Corrective Change
Types of errors:
Software Engineering 5
CO
Common issues:
2. Adaptive Change
Common adaptations:
3.Perfective Change
Why itʼs done As users experiment with the software, they often
request new features or improvements beyond its original design.
Examples:
Software Engineering 6
CO
Efficiency improvements Making the software run
faster or use resources more efficiently.
Software Engineering 7
CO
4. Preventive Change
Common tasks:
Software Engineering 8
CO
Program Understanding
The first step consists of analyzing the program to understand.
Generating a Particular maintenance problem
The second phase consists of creating a particular maintenance
proposal to accomplish the implementation of the maintenance
goals.
Ripple Effect
The third step consists of accounting for all of the ripple effects as a
consequence of program modifications.
Modified Program Testing
The fourth step consists of testing the modified program to ensure that
the revised application has at least the same reliability level as prior.
Maintainability
Each of these four steps and their associated software quality
attributes is critical to the maintenance process. All of these methods
must be combined to form maintainability.
Software Engineering 9
CO
Maintenance Process Models
The need for maintenance-conscious models has been
recognised for some time but the current situation is that
maintenance models are neither so well developed nor so well
understood as models for software development.
Software Engineering 10
CO
Quick Fix Model: A Band-Aid Approach
Also known as the "firefighting" or "hack and
patch" model. It is a reactive approach to software
maintenance.
How it works:
Software Engineering 12
CO
Cost-Effective Short Term): Initial implementation is often
quick and inexpensive, especially for smaller issues.
Long-Term Problems:
Boehm's Model
In 1983 Boehm proposed a model for the maintenance process
based upon economic models and principles.
Software Engineering 14
CO
process.
Osborne's Model
Another approach is proposed by Osborne .
The difference between this model and the others is that it deals
directly with the reality of the maintenance environment.
Software Engineering 15
CO
Example-Osborne's model makes allowance for how things are
rather than how we would like them to be.
Software Engineering 16
CO
a software quality assurance program which establishes quality
assurance requirements;
Analysis.
Software Engineering 17
CO
The Reuse-Oriented Model
This model is based on the principle that maintenance could be
viewed as an activity involving the reuse of existing program
components.
system
With the full reuse model the starting point may be any phase of the
life-cycle
- the requirements, the design, the code or the test data - unlike other
models.
For example, in the quick-fix model, the starting point is always the
code.
Software Engineering 19
CO
This model indicates that the effort and cost can increase
exponentially if poor software
development approach is used and the person or group that used the
approach is no longer
available to perform maintenance.
Boehmʼs Model
Boehm used a quantity called Annual Change Traffic ACT which is
defined as:
Software Engineering 20
CO
“The fraction of a software productʼs source instructions which
undergo change during a
year either through addition, deletion or modificationˮ.
Software Engineering 21
CO
Reverse engineering -
The process of analyzing a subject system to:
Software Engineering 22
CO
Understand a software system in terms of its functionality,
implementation, and architecture.
Objectives:
Software Engineering 24
CO
Identify logic and data flow problems that could lead to
unexpected behavior.
Levels of RE
Software Engineering 25
CO
1. Redocumentation
Goals:
2. Design Recovery
Goals:
Software Engineering 26
CO
Recover meaningful higher-level design abstractions.
Approaches:
Examples:
3.Specification Recovery
Representation:
Software Engineering 28
CO
Supporting technique:
1. Forward Engineering
depth here.
2. Restructuring
Types of Restructuring:
Control-flow-driven restructuring:
Efficiency-driven restructuring:
Adaption-driven restructuring:
Software Engineering 29
CO
Besides source code, other system representations like
requirements specifications, data models, and design plans
can also be restructured.
3.Reengineering
engineering):
Encapsulation
Transformation
Normalization
Interpretation
Abstraction
Applications of SCORE/RM:
Software Engineering 30
CO
Supports retrospective specification of a system based on
available source code.
Corrective Change:
Adaptive/Perfective Change:
Preventive Change:
2. Software Reuse
Software Engineering 31
CO
Definition:
Component Reuse:
Practical Use:
CONFIGURATION MANAGEMENT
Change Control:
Documentation:
Software Engineering 34
CO
User Manuals: Describe system functionality without
implementation or operational details.
Software Engineering 35
CO
User Guidance: Serves as the primary system introduction for
users. Provides system capabilities description,
installation/customization instructions, and malfunction handling
information.
Software Engineering 36
CO
Managing maintenance personnel for increased productivity, job
satisfaction, and system quality (through personnel selection,
motivation, team structure, education, and training).
Software Engineering 38
CO
Domain Knowledge: Managers need a strong understanding of the
maintenance process and its cost implications at each stage to
guide it effectively. Knowledge of the cost of code analysis, for
example, is essential.
Software Engineering 39
CO
Traditional Neglect: Software maintenance education and
training have historically been neglected.
Organisational Modes
I.Combined Development and Maintenance: This approach
integrates development and maintenance responsibilities within
the same team or organizational unit. Several sub-
Software Engineering 40
CO
approaches are detailed:
A. Module Ownership:
Software Engineering 41
CO
Mechanism: Team members are assigned ownership of specific
software modules. They are responsible for all changes within
their assigned modules.
B.Change Ownership:
C. Work-Type WType):
D.Application-Type AType):
Software Engineering 43
CO