Unit-5 Software Maintenance and project management
5.1 Software Maintenance
Software Maintenance is a very broad activity that includes error corrections,
enhancements of capabilities, deletion of obsolete capabilities, and optimization. Software
maintenance is needed to correct errors, enhance features, port the software to new
platforms, etc.70 percent of the cost of software is devoted to maintenance.
Need for Software Maintenance:
• Software Maintenance is a very broad activity that includes error corrections,
enhancements of capabilities, deletion of obsolete capabilities, and optimization.
• software maintenance is needed to correct errors, enhance features, port the
software to new platforms, etc.
• 70 percent of the cost of software is devoted to maintenance
Software Maintenance Process
Various types of maintenance
Corrective: Corrective maintenance of a software product is necessary to rectify the bugs
observed while the system is in use.
Adaptive: A software product might need maintenance when the customers need the
product to run on new platforms, on new operating systems, or when they need the product
to interface with new hardware or software.
Perfective: A software product needs maintenance to support the new features that users
want it to support, to change different functionalities of the system according to customer
demands, or to enhance the performance of the system.
Distribution of maintenance effort
Estimation of maintenance cost
• Maintenance Effort is very significant and consume about 40-70 % of the cost of
entire life cycle
• It is advisable to invent more effort in early phase of software life cycle to reduce
the maintenance cost
• The defect repair ratio increase heavily from analysis phase to implementation
phase
• Good software engineering techniques such as precise specification, loose coupling
and configuration management all reduce maintenance cost.
5.4 Software RE-Engineering
Software re-engineering is concerned with taking existing legacy systems and re-
implementing them to make them more maintainable. The critical distinction between re-
engineering and new software development is the starting point for the development as
shown in Fig:-
5.5 Software Reverse engineering
Software reverse engineering is the process of recovering the design and the requirements
specification of a product from an analysis of its [Link] purpose of reverse engineering
is to facilitate maintenance work by improving the understandability of a system and to
produce the necessary documents for a legacy system.
• Redocumentation: - Redocumentation is the recreation of a semantically
equivalent representation within the same relative abstraction level.
• 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.
5.4 Software Configuration management (CM)
Configuration management (CM) is the process of controlling and documenting change to
a developing system. As the size of an effort increase, so does the necessity of
implementing effective CM. Software configuration management (SCM) is a set of
activities that are designed to control change by identifying the work products that are
likely to change, establishing relationships among [Link] process of software
development and maintenance is controlled is called configuration management. The
configuration management is different in development and maintenance phases of life
cycle due to different environments.
Configuration Management Activities: - The activities are divided into four broad
categories.
1. The identification of the components and changes
2. The control of the way by which the changes are made
3. Auditing the changes
4. Status accounting recording and documenting all the activities that have take
place
5.4.1 Functions of SCM
• Identification -identifies those items whose configuration needs to be controlled,
usually consisting of hardware, software, and documentation.
• Change Control - establishes procedures for proposing or requesting changes,
evaluating those changes for desirability, obtaining authorization for changes,
publishing and tracking changes, and implementing changes. This function also
identifies the people and organizations who have authority to make changes at
various levels.
• Status Accounting -is the documentation function of CM. Its primary purpose is to
maintain formal records of established configurations and make regular reports of
configuration status. These records should accurately describe the product, and are
used to verify the configuration of the system for testing, delivery, and other
activities.
• Auditing -Effective CM requires regular evaluation of the configuration. This is
done through the auditing function, where the physical and functional
configurations are compared to the documented configuration. The purpose of
auditing is to maintain the integrity of the baseline and release configurations for all
controlled products
5.4.2 SCM Terminology
1. Version Control
• 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
2. Change control process
Change control process comes into effect when the software and associated
documentation are delivered to configuration management change request form as
shown in fig which should record the recommendations regarding the change.
3. Software documentation
It is the written record of the facts about a software system recorded with the intent
to convey purpose, content and clarity.
Two type of documentation:-
User documentation
5.4.3 SCM Activities
• Configuration item identification
– modeling of the system as a set of evolving components
• Promotion management
– is the creation of versions for other developers
• Release management
– is the creation of versions for the clients and users
• Branch management
– is the management of concurrent development
• Variant management
– is the management of versions intended to coexist
• Change management
– is the handling, approval and tracking of change requests
5.9 CASE (Computer aided software engineering)
• CASE tool is a generic term used to denote any form of automated support for
software engineering
• CASE tool can mean any tool used to automate some activity associated with
software development
• Some CASE tools are used in phase- related task such as structured analysis, design,
coding testing etc
• Other are related to non phase activities such as project management and
configuration management etc
• Primary objectives of deploying case tools are:-
– To increase productivity
– To produce better quality software at low cost
Benefits of CASE
• Cost saving through all development phases. CASE put the effort reduction
between 30% to 40%
• Use of CASE tool leads to considerable improvement to quality
• CASE tools help to produces high quality and consistent documents
• Use of CASE environment has an impact on style of working of a company, and
makes it conscious of structured and orderly approach
CASE Environment
activity
facility
Generation
tory
facility facilities
facility
facility
5.6 Constructive cost model (COCOMO)
COCOMO is one of the most widely used software estimation models in the world
It was developed by Barry Boehm in 1981
COCOMO predicts the effort and schedule for a software product development
based on inputs relating to the size of the software and a number of cost drivers
that affect productivity
COCOMO has three different models that reflect the complexity:
1. Basic Model
2. Intermediate Model
3. Detailed Model
The Development Modes: Project Characteristics
Basic Model
Basic model aim at estimating, in a quick and rough fashion, most of the small to medium
sized software [Link] models of software development are considered in this
model: organic, semi -detected and embedded. KLOC (thousands of lines of code) is a
traditional measure of how large a computer program is or how long or how many people
it will take to write it.
Basic cocomo coefficient
Organic Mode
developed in a familiar, stable environment,
similar to the previously developed projects
relatively small and requires little innovation
Semidetached Mode
intermediate between Organic and Embedded
Embedded Mode
tight, inflexible constraints and interface requirements
The product requires great innovation
5.7 Putnam Resource Model
Putnam studied the problem of staffing of software projects and found that the software
development has characteristics very similar to other R & D projects studied by Norden
and that the Rayleigh-Norden curve can be used to relate the number of delivered lines of
code to the effort and the time required to develop the project. It analyzing a large number
of army projects, Putnam derived the following expression:
5.8 Software Risk
Software Risk is future uncertain events with a probability of occurrence and a potential
for loss .Risk identification and management are the main concerns in every software
project. Effective analysis of software risks will help to effective planning and assignments
of work.
Categories of risks
Schedule Risk
Operational risk
Technical risk
Risk management is the identification, assessment, and prioritization of risks followed by
coordinated and economical application of resources to minimize, monitor, and control the
probability and/or impact of unfortunate events.
Risk Management Process, describes the steps you need to take to identify, monitor and
control risk. Within the Risk Process, a risk is defined as any future event that may prevent
you to meet your team goals. A Risk Process allows you to identify each risk, quantify the
impact and take action now to prevent it from occurring and reduce the impact should it
eventuate.
This Risk Process helps you:
• Identify critical and non-critical risks
• Document each risk in depth by completing Risk Forms
• Log all risks and notify management of their severity
• Take action to reduce the likelihood of risks occurring
• Reduce the impact on your business, should risk eventuate
• Risk identification, Determining what risks or hazards exist or are anticipated,
their characteristics, remoteness in time, duration period, and possible outcomes.
Risk analysis is the process of defining and analyzing the dangers to individuals,
businesses and government agencies posed by potential natural and human-caused
adverse events. In IT, a risk analysis report can be used to align technology-related
objectives with a company's business objectives. A risk analysis report can be
either quantitative or qualitative.
• Risk Planning Risk Planning is developing and documenting organized,
comprehensive, and interactive strategies and methods for identifying risks. It is
also used for performing risk assessments to establish risk handling priorities,
developing risk handling plans, monitoring the status of risk handling actions,
determining and obtaining the resources to implement the risk management
strategies. Risk planning is used in the development and implementation of
required training and communicating risk information up and down the project
stakeholder organization.
• Risk monitoring and control is the process of identifying and analyzing new risk,
keeping track of these new risks and forming contingency plans incase they arise. It
ensures that the resources that the company puts aside for a project is operating
properly. Risk monitoring and control is important to a project because it helps
ensure that the project stays on track.