Unit 5
Unit 5
Unit 5
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 MAINTENANCE
• Software Maintenance is a very broad activity that includes
error corrections, enhancements of capabilities, deletion of
obsolete capabilities, and 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.
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
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.
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 –
– It is the CCB responsibility to provide the mechanism to maintain orderly change processes.
For a large software engineering project, uncontrolled change rapidly leads to chaos. For such
projects, change control combines human procedures & automated tools to provide a
mechanism for the control of change. Offer a mechanism for accepting changes that enhance
the product while rejecting those that degrade it.
– Offer revision control & backup safety for work products during their formative
development.
– Facilitate changes to work products during their initial formative development while avoiding
unnecessary overhead or formality.
– Permit for formal acceptance of work products after their initial formative development has
been finished.
– Permit all parties materially affected by proposed changes to accepted work products to
assess the resource, schedule or product impact of the changes.
Software Version Control
• During software maintenance at least two
versions of the software system are produced ,
one being the old version and the other one
or more new versions.
• As a s/w system comprises of s/w components,
there will also be two or more versions of each
component that has been changed. Thus, the
software maintenance team has to cope with
multiple versions of the software
• A version control tool is the first stage towards being able to manage multiple versions.
Once, it is in place, a detailed record of every version of the software must be kept.
This comprises the-
– Name of each source code component, including the variations and revisions
– The versions of the various compilers and linkers used
– The name of the software staff who constructed the component
– The date and the time at which it was constructed
• A version control system is a repository of files . Every change made to the source is
tracked, along with who made the change, why they made it and references to
problems fixed or enhancements introduced, by the change.
• User’s may wish to compare today’s version of some s/w with yesterday’s version or last
year’s version. Since version control system keep track of every version of the s/w, this
becomes a straightforward task. Version control activity is divided in four sub-activities:
1. Identifying new versions
2. Numbering scheme : It will have the following format
Version X.Y.Z…
3. Visibility
4. Tracking
1. Identifying new versions: A s/w configuration item (SCI) will get a new version no.
when there has been a change to its established baseline. Each previous version
will be stored in a corresponding directory like version 0, version1, version2 etc.
Version X.Y.Z…
• (X) denotes the entire SCI. Therefore, changes made to the entire configuration
item, or changes large enough to warrant a completely new release of the item,
will cause the first digit to increase.
• (Y) denotes the component of SCI. this digit will sequentially increase if a change is
made to a component or multiple components.
• (Z) denotes the section of the component of a SCI. This no. will only be visible if a
component of an SCI can be divided into individual sections. Changes made at this
level of detail will need a sequential change of third digit.
3. Visibility: the version no. can be seen either in frame or below the title.
4. Tracking : the best way to keep track of the different versions is with a version
evolution graph.
CASE Tools
• CASE stands for Computer Aided Software Engineering. It means, development and
maintenance of software projects with help of various automated software tools.
• Computer aided software engineering tool assist software engineering managers &
practitioners in every activity associated with the software process.
• Thus, a CASE tool means any tool used to automate some activity associated with software
development. Many CASE tools are available. Some of these CASE tools assist in phase
related tasks such as specification, structure analysis, design, coding, testing etc; and others
to non-phase activities such as project management and configuration management.
• CASE tools are software programs that are designed to assist human programmers with the
complexity of the processes & the artifacts of software engineering.
• As we know, software engineering is a systematic approach to the development, operations,
maintenance & retirement of software.
• The major limitations of using CASE tools are:
– Cost
– Learning Curve
– Tool mix
• Software engineering mainly includes the following processes, which may be aided by CASE:-
– Translation of user needs into software requirements.
– Transformation of software requirements into design specifications.
– Implementation of design into code.
– Testing of the code for the operational use.
Documentation. A CASE tool must have the following characteristics in order to be used
efficiently:
Characteristics:
• 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.
• 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