Unit 5
Unit 5
SOFTWARE MAINTENANCE
INTRODUCTION
• Software maintenance is the last stage of s/w
life cycle .
• After the product has been released, the
maintenance phase keeps the s/w up to date
with environment changes & changing user
requirements.
INTRODUCTION
• It consumes about 40-70% of the cost of
the entire life cycle.
• Maintenance can only happen efficiently if the
earlier phases are done properly.
SOFTWARE AS AN EVOLUTIONARY
ENTITY
• Software Maintenance includes error
correction, enhancements of
capabilities,
deletion of obsolete capabilities &
optimization.
• As changes cannot be avoided, we should
develop mechanism for evaluating, controlling
& making modifications.
SOFTWARE AS AN EVOLUTIONARY
ENTITY
• Hence any work done to change the s/w after
its operation is considered to be a
maintenance work.
• The term “evolution” has been used with
reference to s/w since 1960’s to signify the
growth dynamics of s/w.
WHAT IS SOFTWARE MAINTENANCE
• Software Maintenance is a very broad activity
that includes error
enhancements of corrections, capabilities,
obsolete capabilities, and deletion of
optimization.
1. Corrective maintenance :
This refer to modifications initiated by defects in
the software.
2. Adaptive maintenance:
It includes modifying the software to match changes in
the ever changing environment.
CATEGORIES OF SOFTWARE
MAINTENANCE
• There are four types of software maintenance:
3. Perfective maintenance:
It means improving processing efficiency or
performance, or restructuring the software
to improve changeability. This may include
enhancement of existing system
functionality, improvement in computational
efficiency etc.
CATEGORIES OF SOFTWARE
MAINTENANCE
4. Preventive maintenance:
It is the process by which we prevent our
system from being obsolete. It involves the
concept of reengineering & reverse
engineering in which an old system with an
old technology is re-engineered using new
technology. This maintenance prevents the
system from dying out.
SOFTWARE MAINTENANCE
• Ripple Effect
The third phase consists of accounting for all of the ripple
effect as a consequence of program modifications.
• Modified Program Testing
The fourth phase consists of testing the modified
program to ensure that the modified program has at
least the same reliability level as before.
• Maintainability
Each of these four phases and their associated
software quality attributes are critical to the
maintenance process. All of these factors must be
combined to form maintainability.
How easy is to maintain a program depends on how
easy is to understand it.
COST OF MAINTENANCE
• To estimate maintenance cost, two models
have been proposed. They are:
1. Belady and Lehman model
2. Boehm model
Belady and Lehman Model
This model indicates that the effort and cost can increase
exponentially if poor Software development approach is used &
the person or group that used the approach is no longer available
to perform maintenance. The basic equation is given by:
Where,
M : Total effort expended
P : Productive effort that involves analysis, design, coding, testing and
evaluation.
K : An empirically determined constant.
c : Complexity measure due to lack of good design and documentation.
d : Degree to which maintenance team is familiar with the software.
Example
Solution
Boehm Model
Example
Solution
Introduction to Re-engineering
• Re-engineering means to re-implement
systems to make more maintainable.
• In this, the functionality & architecture of the
system remains the same but it includes
redocumenting, organizing, modifying &
updating the system.
• When re-engineering principles are applied to
business process then it is called Business
Process Reengineering (BPR).
Steps in Re-engineering
• The steps involved in re-engineering are-
– Goal setting
– Critical analysis of existing scenario such as
process, task, design, methods etc.
– Identifying the problems & solving them by new
innovative thinking.
1. Program comprehension
2. Redocumentation and/ or document generation
3. Recovery of design approach and design
details at any level of abstraction
4. Identifying reusable components
5. Identifying components that need restructuring
6. Understanding high level system description
The reverse engineering process is shown in fig. The
process starts with an analysis phase. During this
phase, the system is analyzed using automated tools to
discover its structure. They add information to this,
which they have collected by understanding the
system. This information is maintained as a directed
graph that is linked to the program source code.
• Design recovery
Design recovery identifying and extracting
meaningful
entails higher level beyond those
obtained directly from examination of the source code.
abstractions
This may be achieved from a combination of code, existing
design documentation, personal experience, and
knowledge of the problem and application domains.
Advantages of Reverse Engineering
• It concentrates on recovering the
lost information from the programs
• It provides the abstract information from the
detailed source code implementation.
• It improves system documentation that
is either incomplete or out of date.
• It detects the adverse effects of modification
in the s/w system.
Difference between Reverse, Forward
& Reengineering
• Reverse Engineering
It performs transformation from a lower
abstraction level to a higher one.
• Forward Engineering
It performs transformation from a higher abstraction
level to a lower one.
• Reengineering
It transforms an existing s/w system into a new but
more maintainable system.
The Constructive Cost Model
(COCOMO)
It is a hierarchy of software costs estimation models, which include basic, intermediate &
detailed sub models.
BASIC MODEL
Three modes of
development are
considered in this
organic, semidetached
model:
and embedded.
Comparison of three COCOMO models
Basic model
• Basic COCOMO model takes the form –
• Identification
• Change Control
• Status Accounting
• Auditing
• Identification -identifies those items whose configuration needs to be
controlled, usually consisting of hardware, software, and documentation.
• A standard methodology
• Flexibility
• Strong Integration
Characteristics of a CASE Tool
A CASE tool must have the following
characteristics in order to be used efficiently:
• On-line help
Characteristics of a CASE Tool
• A standard methodology: A CASE tool must
support a standard software development
methodology and standard modeling
techniques. In the present scenario most of
the CASE tools are moving towards UML.
– Cost
– Learning Curve
– Tool mix
Limitations of CASE tools
– Cost: Using CASE tools is a very costly affair. In
fact, most firms engaged in software development
on a small scale do not invest in CASE tools
because they think that the benefits of CASE are
justifiable only in the development of large
systems.
Limitations of CASE tools
– Learning Curve: In most cases,
productivity programmer fall in
implementation, because user
may the need
initial phase
time of
to learn
the technology. In fact, a CASE consulting industry
has evolved to support uses of CASE tools. The
consultants offer training & on-site services that
can be crucial to accelerate the learning curve and
to the development & use of the tools.
Limitations of CASE tools
– Tool mix: It is important to make an appropriate
selection of tool mix to get cost advantage CASE
integration & data integration across all platforms
is also very important. The ability to share the
results of work done on one CASE tool with
another CASE tool is perhaps the most important
type of CASE integration.
CASE Support in Software Life Cycle
• There are various types of support that CASE
provides during the different phases of a
software life cycle.
– Prototyping Support
– Structured analysis & design
– Code Generation
– Test CASE generator
CASE Support in Software Life Cycle
Prototyping Support: The
useful to prototyping
understand
complex is theto market new
software products,
requirements
ideas and so on. The prototyping of
CASE tools
requirements are as follows:
Define user interaction
Define the system control flow
Store & retrieve data required by the system
Incorporate some processing logic
CASE Support in Software Life Cycle
Structured Analysis & Design: Several
diagramming techniques are used for structured
analysis and structured design. The following
supports might be available from CASE tools.
Code Generation:
– The tool should generate records, structures, class
definition automatically from the contents of the
data dictionary in one or more popular languages.
– It should generate database tables for relational
database management systems.
– The tool should generate code for user interface
from prototype definition for X window and MS
window based applications.
CASE Support in Software Life Cycle
• Product Risks
– Includes Project risks, Technical risks, Business
risks
Another general categorization of
risks is -
• Known Risks are those that can be uncovered
after careful evaluation of the project plan,
the business and technical environment in
which the project is being developed, and
other reliable information sources
Another general categorization of
risks is -
• Risk Identification
With the identification phase, several
activities occur. The main activities are:
– Identify risks
– Define risk attributes
– Documentation
– Communicate
RISK MANAGEMENT ACTIVITIES
• Risk Analysis
The main activities in this phase are –
– Group similar risks
– Determine risk drivers
– Determine source of risks
– Estimate risk exposure
– Evaluate against criteria
RISK MANAGEMENT ACTIVITIES
• Risk Planning
– Risk avoidance
– Risk minimization
– Risk Contingency Plans
END OF UNIT-5
****All the Best****