Software Engineering Unit-5
Software Engineering Unit-5
(KCS 601)
Lecture Notes
SOFTWARE MAINTENANCE
i) Law of Continuing Change – This law states that any software system that represents some
real world reality undergoes continuous change or becomes progressively less useful in that
environment.
ii) Law of Increasing Complexity – This law states that as software evolves, its complexity
also increases. Hence, measures must be taken to simplify the structure.
iii) Law of Program Evolution – This law states that software evolution is self-regulating with
statistically determinable trends And Metrics.
iv) Law of Conservation of Organization Stability – This law states that during the active
lifetime of software system regardless of the resources used the work output is almost
constant.
v) Law of Conservation of Familiarity – This law states that during the active life time of the
program, change made in successive releases is almost constant. This is because each change
made in the system results into new faults in the system.
SOFTWARE MAINTENANCE –
“Software Maintenance is modification of a software process after delivery to correct faults, to
improve performance or other attributes, or to adopt the product to a modified environment”
3) To correct Errors.
2) Adaptive Maintenance
3) Perfective Maintenance
4) Preventive Maintenance
CORRECTIVE MAINTENANCE –
It is also called Bug Fixing & deals with fixing the reporting errors.
a) Coding Errors
b) Design Errors
c) Requirement Errors
In this Requirement related errors are most expansive to correct because of the extensive
redesign involved.
ADAPTIVE MAINTENANCE –
It changes the system to reach to changes in the environment in which the system
operates e.g. porting to a new compiler, OS hardware.
PREVENTIVE MAINTENANCE –
It involves the activities to update the software in anticipation of any future problems.
PERFECTIVE MAINTENANCE-
This type of maintenance concerns improving the delivered software as a result of change in
user requirements or efficiency improvements.
Maintenance programmers or support engineers must have above average debugging skills.
Once an error has been located, the maintenance programs must correct the error without
introducing more errors, called regression errors.
Once an error has been corrected, the fix must be tested to make sure it does not introduce
any other side.
Maintenance costs vary widely from application to application but on average, they sum to
be between two and four times development costs for large embedded software systems.
a) Non-Technical Factors
b) Technical Factors
a) Application Domain
b) Staff Stability
c) Program Lifetime
e) Hardware Stability
a) Application Domain -
If the application of the program is clearly defined & well understood the system
requirements may be definitive & maintenance due to changing requirements
minimized.
If the application is completely new, it is likely that the initial requirements will be
modified frequently, as users gain experience with the system.
b) Staff Stability -
It is easier for the original writer of a program to maintain and change a program rather
than some other individual who will understand the program by studying of its
documentation & code listing.
If the programmer of a system also maintains that system maintenance costs will be
reduced.
c) Program Lifetime -
e) Hardware Stability -
a) Module Independence
b) Programming Language
c) Programming Style
e) Documentation
a) Module Independence-
It should be possible to modify one program unit of a system without affecting any
other unit.
b) Programming Language –
Programs written in High Level Language are usually easier to understand than
program written in Low Level Language.
c) Programming Style –
The way in which a program is written contributes to its understandability and hence
the ease with which it can be modified.
Maintenance costs due to error correction are governed by the type of error to be
repaired.
e) Documentation –
If a program is supported by clear, complete documentation, the task of
understanding the program can be relatively straight forward.
Program maintenance costs tend to be less for well documented systems than for
systems supplied with poor or incomplete documentation.
One of the most significant costs of maintenance is keeping track all systems
documents & ensuring that these are kept consistent.
Effective configuration Management can help control this cost.
The process of modifying the internal mechanisms of a system or program or the data
structures of a system or program without changing its functionality/
We can define re-engineering as process of replacing legacy systems with the system
which is easy to maintain and developed with latest technology.
Legacy Systems –
In initial years, there was no systematic approach to develop software. Now a days also many
organizations are using these software. It is not simply possible to reject the software because
they contain crucial information about organization. Such types of systems are called Legacy
Systems.
i) Lower Costs – Reengineering an existing system costs less than new system development.
ii) Lower Risks – Software re- engineering is based on incremental improvement of
systems,rather than radial system replacement.
iii) Better Use of Existing Staff – Existing staff expertise can be maintained, extended and
accommodate new skills during software Re Engineering.
Incremental nature of reengineering means that existing staff skill can evolve as the
systemevolves.
iv) Incremental Development – Software Re engineering can be carried out in stages, as
budget & resources are available.
Operational organization always has a working system & end users are able to gradually
adapt to the reengineered as it is delivered in increments.
SOFTWARE RE- ENGINEERING PROCESS –
REVERSE ENGINEERING -
Reverse engineering can help detect candidates for reusable software components
from present systems.
Coping with Complexity –
These methods & tools will provide a way to extract relevant information so decision
makers can control the process and the process and the product in systems evolution.
Reverse engineering tools can generate additional views from many perspectives (like
DFD, CFD, Structure charts & ER diagrams) to add the review & verification process.
Both haphazard initial design & successive modifications can lead to unintended
consequences and side effect that impede system’s performance in several ways.
Reverse Engineering requires methods and techniques for creating alternate views
that transcend to higher abstraction levels.
2) Examining the Information – The information collected is studied to get familiar with the
system.
3) Extracting the Structure – This step concerns with identification of program structure in
the from of structure chart where each node corresponds to some routine.
4) Recording the functionality – during this step processing details of each module of the
structure charts are recorded using structured language, PDL, Decision tables etc.
5) Recording Data Flow – DFDs are derived to show flow of data among the processes.
6) Recording Control Flow – high level Control Structure of the software is recorded.
7) Review Extracted Design – Design Document extracted is reviewed several times to ensure
consistency & correctness. It is also ensured that the design represents the program.
It is the art of identifying, organizing & controlling modifications to the software being built
by a programming team. The goal is to maximize productivity by minimizing mistakes.
Or
SCM is the process of defining & implementing a standard configuration that results into the
primary benefits such as easier set up and maintenance, less down time, better integration
with enterprise management and more efficient and reliable backups.
Purpose
Scope
Definitions and Acronyms
References
MANAGEMENT –
Organisations
Configuration Management Responsibilities
Interface Control
Implementation of software Configuration Management Plan
Applicable Policies , Directives & Procedures.
Configuration Identification
Configuration Control
Configuration Status Accounting
Audits and Reviews.
SUPPLIER CONTROL
It ensures that changes to the system are controlled and that their effect on the
system can be predicted.
To make a change, a change control form (CCF), or a software Problem report (SPR)
is filled out.
The form contains data on estimation costs, the date when the change was requested,
approved, implemented & validated.
The information on the form is defined in the SCM plan & it makes up much of the
information in the SCM database .Then this form is submitted by CCB for its validity
the impact of the change and the cost. The change is then approved, or disapproved
by the CCB.
If it is approved it is applied to the software and regression testing is done to be sure
that the change has not affected other parts of the system.
Software Configuration Item (SCI) will receive a new version number when there has
been a change to its established baseline.
“Baseline is a specification or product that has been formally reviewed & agreed upon, that
thereafter serves as the basis for further development, and that can be changed only through
formal Change Control Procedures”
Each previous version will be stored in a corresponding directory such as version 0, version 2,
……
NUMBERING SCHEME -
X – It represents 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 – It represents a component of the SCI. The digit will sequentially increase if a change is
made to a component or small changes to multiple components.
Z – It represents a section of the component of a SCI. This number will only be visible if a
component of an SCI can be broken down into individual sections.
VISIBILITY -
Version number will be visible either in a frame or below the title. The decision for
this depends upon the group decision to code all documents for a frames capable browse or
allow for non-frames capable browser.
TRACKING-
The best way to keep track of the different versions is with a Version Evolution Graph
CAPAPBILITIES OF A GOOD SCM TOOL –
These three product classes correspond to application utility and system programs
respectively.
Embedded – The software is strongly coupled to complex hard ware , as where there are
stringent regulations governing the operational procedures.
Basic COCOMO
Intermediate COCOMO
Complete COCOMO
BASIC COCOCMO MODEL –
This model provides an approximate estimation of software Costs. It aims at estimating, in a
quick and Rough fashion, most of the small to medium sized software Projects.
E = ab (KLOC)b^b
D = Cb(E) db
Project Ab Bb Cb Db
Organic 3.2 1.05 2.5 0.38
Semidetached 3.0 1.12 2.5 0.35
Embedded 2.8 1.20 2.5 0.32
INTERMEDIATE MODEL –
Basic Model allowed for a quick & rough estimate, but it resulted in a lack of accuracy.
Bohem introduced an additional set of 15 predictors called Cost drivers to take account of
software development environment.
Cost Drivers are used to adjust the nominal cost of a project to the actual project
environment, hence increasing the accuracy of the estimates.
I) Product Attributes –
c) Product Complexity(CPLX)
a) Analyst Capability(ACAP)
The cost drivers are rated as very low, low nominal, high, very high, extra high.
The multiplying factor of cost drivers are multiplied to get EAF (Effort Adjustment Factor).
Equations are:
E = ab(KLOC) bb * EAF
D = Cb (E ) db
The value of Coefficient ai, bi,ci and di are
Object Ai Bi Ci Di
Organic 3.2 1.05 2.5 0.38
Semidetached 3.0 1.12 2.5 0.35
Embedded 2.8 1.20 2.5 0.32
ii) Three level product hierarchy i.e. three product level modules. Subsystem & system levels
are defined. The eating of cost drivers are done at appropriate level, i.e. level at which it is
more susceptible to variation.
QUESTION – Developing a system needs about 100,000 lines of code. Compute effort &
development cost for each of the three development modes.
E = ab (KLOC)bb
D = cb(E ) db
Estimated size = 100 KLOC
For organic
For semidetached
For Embedded –
A software risk is a problem that could cause some loss or threaten the success of a
software project, but which hasn’t happened yet.
Risk analysis & management are a set of steps that help the software team to
understand & manage uncertainty.
It is a problem which should be assesses and properly estimates its impact. The people
from the manager to the customer are involved in risk analysis & management.
First the risk is identified & it is analyzed from which point it can occur & what damage
it can cause. After thus the risk are ranked on the basis of probability.
And a plan is developed to manage those risks which have high impact on the software.
In reactive strategies, the software team does nothing until the risk arises & create
problem for them.
Resources are set aside and when actual problem arises the team came into action to correct
the problem arises the team came into action to correct the problem rapidly and is often
called “Fine Fighting Mode” i.e. action taken when problem arises. When the risk cannot be a
managed on time, the task is taken over by ‘crisis management’ and the project is now in real
jeopardy.
In proactive strategies, the task begin when the project start & technical work is initiated.
The risk are identified, probability assessed & ranked and a plan is established for managing
risk. Main emphasis should be to avoid risk, but a contingency plan is laid to control it when it
cannot be avoided.
PROJECT RISKS-
Effort the overall working of the project and it threaten the estimated cost & project schedule.
It can be budgetary, schedule, personal etc.
TECHNICAL RISKS -
It is a threat to quality and time. The product quality can be degraded if technical
problem arises during the cause of evolution. It can be potential design, implementation,
interface, verification & maintenance problem.
BUSINESS RISKS –
It can jeopardize the project or product and threaten the software in the business world.
Business & technical environment where the project is developed e.g. Poor development
environment, lack of documents etc.
PREDICTABLE RISKS –
It can be evaluated or traced from past project or experiences which undergo the
development, staff turnover, poor communication with customer etc.
UNPREDICTABLE RISKS – These are like uncertain problem which can or cannot arise during
the course of development and extremely difficult to identify them in advance.
It is the process of identifying software risks & planning to avoid these risks or to
minimize their effects if they cannot be avoided.
There is a planned and documented risk management process for the project or
program.
The process is based on a prospective assessment. The project management team looks
ahead to find & manage possible problems.
The initial assessment is particularly redone to validate the initial findings & to uncover
new problem areas.
The program has a defined set of evaluation criteria that covers all facts of the program.
The ongoing results of the risk management process are formally documented.
Risk identification –
It is a systematic attempt to specify threats to the project plan.
It can be facilitated with the help of a checklist of common risk areas for software projects ,
by examining of common risk areas for software projects by examining the contents of an
organizational database of previously identified risks & mitigation strategies.
a) Identify Risks
c) Document
d) Communicate
Risk analysis -
When the risks have been identified, all items are analyzed using different criteria.
The purpose of the Risk Analysis is to assess the loss probability & magnitude of each risk
item.
The input is the risk statement & context developed in the identification phase.
The output of this phase is a risk list containing relative ranking of the risks and a
further analysis of the description, probability, consequence & context.
Group similar Risks – detect duplicates & find new risk items by grouping the identified
risks into categories.
Determine Risk Drivers – These are parameters that affect the identified risk.
Estimate Risk Exposure – it is a measure of the probability & the consequence of a risk
item.
Evaluate against criteria – each risk item is evaluated using the predefined criteria,
which are important for the specific project.
Risk Prioritization -
It helps the project focus on its most secure risks by assessing the risk exposure.
Exposure is the product of the probability of incurring a loss due to the risk and the potential
magnitude of that loss.
Higher the exposure, the more aggressively the risk should be tackled. It may be easier to
simply estimate both probability & impact as high, medium or low. Those items having at
least one dimension rated as high are the ones to worry about first.
RISK CONTROL-
It is the process of managing risks to achieve devised outcomes.
Risk control process involves the following activities –
Risk Planning
Risk Mitigation
Risk Resolution
Risk Monitoring
Risk Planning – It is to identify strategies to deal with risk.
Risk Mitigation – it is a plan that would reduce or eliminate the highest risks.
It includes a description of the actions that can be taken to mitigate the red rated risk &
assigns a primary handler for the action.
Risk Resolution – it is the execution of the plans for dealing with each risk
Risk Monitoring – It is the continually researching of risks as the project proceeds &
conditions change.
RISK REPORTING -
It is reporting the status of the risks that were identified during risk identification &
assessment stages.
All types of risks along with their status are reported properly as part of risk
reporting activity
The entire information about risks is documented together with the full history of
risks such as name of the risks, a risk statements, context etc.
CASE TOOLS
CASE TOOLS (COMPUTER AIDED SOFTWARE ENGINEERING) TOOLS –
These are software programs that are designed to assist human programmers with
the complexity of the processes & the artifacts of software Engineering. CASE tools support
almost all the phases of the SDLC such as analysis design etc.
Most of the CASE tools include one or more of the following types of tools.
Analysis Tools
Repository to store all diagrams , models, report definitions etc,
Diagramming tools
Screen & report Generations
Code Generator
Documentation Generators
Reverse Engineering tools
Re engineering tools
Improved productivity.
Better documentation.
Reduced Lifetime Maintenance.
Improved Accuracy.
Opportunity to Non-Programmers.
Intangible Benefits.
These tools mainly focus on the analysis & design phases of software development.
They include tools for analysis modelling, reports & forms generation.
These tools help in providing linkages between the lower & upper CASE Tools.
Thus, creating a cohesive environment for software development where programming by lo
Thus, creating a cohesive environment for software development where programming by
lower CASE tools may automatically be generated for the design that has been developed in
as UPPER CASE tool/
The software development process is expensive and as the projects become more complex
in nature the project, implementation become more demanding & expensive
1) Feasibility Study
2) project Planning
3) Project Execution
4) Project Termination
1) Feasibility Study – this phase of the project management process does necessary
investigation to ensure that the project is worth considering & stailing.
2) Project Planning – Planning involves making a detailed plan to achieve the objectives
i) Select project
ii) Identify project scope and objectives.
x) Execute plan
PROJECT EXECUTION -
Once the proper project planning is done, project can be executed by selecting appropriate
process models.
PROJECT TERMINATION -
Successful projects are the ones which meet their objectives well within budget and schedule
Some of the reasons which result into unsuccessful termination or close-down budget and
schedule.
v) Current state of the art technology no longer suitable for the project