Unit 5
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.
• 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
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.
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.
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 entails identifying and extracting meaningful
higher level abstractions beyond those obtained directly from
examination of the source code. 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 large 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 model:
organic, semidetached 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.
Version X.Y.Z…
• A standard methodology
• Flexibility
• Strong Integration
• On-line help
• 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.
• Flexibility: Flexibility in use of editors and other tools. The CASE tool must offer
flexibility and the choice for the user of editors' development environments.
• Strong Integration: The CASE tools should be integrated to support all the
stages. This implies that if a change is made at any stage, for example, in the
model, it should get reflected in the code documentation and all related design
and other documents, thus providing a cohesive environment for software
development.
• Integration with testing software: The CASE tools must provide interfaces for
automatic testing tools that take care of regression and other kinds of testing
software under the changing requirements.
Upper CASE tools: They support the analysis and the design
phase. They include tools for analysis modeling, reports and forms
generation.
– Cost
– Learning Curve
– Tool mix
– 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.
– Prototyping Support
– Structured analysis & design
– Code Generation
– Test CASE generator
Prototyping Support: The prototyping is
useful to understand the requirements of
complex software products, to market new
ideas and so on. The prototyping 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
Structured Analysis & Design: Several diagramming techniques are
used for structured analysis and structured design. The following
supports might be available from CASE tools.
• A CASE tool should support one or more of the structured analysis and
design techniques.
• It should support effortlessly drawing analysis and design diagrams.
• It should support drawing for fairly complex diagrams, preferably
through a hierarchy of levels.
• The CASE tool should provide easy navigation through the different
levels and through the design and analysis.
• The tool must support completeness and consistency checking across
the design and analysis and through all levels of analysis hierarchy.
Whenever it is possible, the system should disallow any inconsistent
operation, but it may be very difficult to implement such a feature.
Whenever there arises heavy computational load while consistency
checking, it should be possible to temporarily disable consistency
checking.
Code Generation: As far as code generation is concerned, the
general expectation of a CASE tool is quite low. A reasonable
requirement is traceability from source file to design data.
More pragmatic supports expected from a CASE tool during
code generation phase are the following:
• Use of CASE tools leads to considerable improvements to quality. This is mainly due
to the facts that one can effortlessly iterate through the different phases of software
development and the chances of human error are considerably reduced.
• CASE tools help produce high quality and consistent documents. Since the important
data relating to a software product are maintained in a central repository,
redundancy in the stored data is reduced and therefore chances of inconsistent
documentation is reduced to a great extent.
• CASE tools have led to revolutionary cost saving in software maintenance efforts.
This arises not only due to the tremendous value of a CASE environment in
traceability and consistency checks, but also due to the systematic information
capture during the various phases of software development as a result of adhering to
a CASE environment.
Advantages and Disadvantages of CASE
Tools:
Software Risk Management
What is risk ?
• Product Risks
– Includes Project risks, Technical risks, Business
risks
Another general categorization of risks is -
• Risk analysis and management are a series of steps that help a software
team to understand and manage uncertainty. Many problems can plague a
software project. A risk is a potential problem – it might happen, it might
not.
• So, the key idea in risk management is not to wait for a risk to materialize
and become a problem. The objective of risk management is to ensure
that for each perceived risk , we know very well how to tackle it in
advance.
• A reactive strategy monitors the project for likely risks. Resources are
set aside to deal with them, should they become actual problems. More
commonly, the software team does nothing about risks, until something
goes wrong. Then, the team flies into action in an attempt to correct
the problem rapidly. This is often called a fire fighting mode.
• 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 Planning
– Risk avoidance
– Risk minimization
– Risk Contingency Plans
END OF UNIT-5