Notes of Unit - V (SE, KCA-302) MCA III Sem-1
Notes of Unit - V (SE, KCA-302) MCA III Sem-1
Notes of Unit - V (SE, KCA-302) MCA III Sem-1
● Correct faults.
● Improve the design.
● Implement enhancements.
● Interface with other systems.
● Accommodate programs so that different hardware, software, system
features, and telecommunications facilities can be used.
● Migrate legacy software.
● Retire software.
● Requirement of user changes.
● Run the code fast
1. Corrective maintenance:
Corrective maintenance of a software product may be essential either
to rectify some bugs observed while the system is in use, or to enhance
the performance of the system.
2. Adaptive maintenance:
This includes modifications and updations 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 and
software.
3. Perfective maintenance:
A software product needs maintenance to support the new features that
the users want or to change different types of functionalities of the
system according to the customer demands.
4. Preventive maintenance:
This type of maintenance includes modifications and updations to
prevent future problems of the software. It goals to attend problems,
which are not significant at this moment but may cause serious issues
in future.
Reverse Engineering –
Software Reverse Engineering is the process of recovering the design and the
requirements specification of a product from an analysis of it’s code. Reverse
Engineering is becoming important, since several existing software products, lack
proper documentation, are highly unstructured, or their structure has degraded
through a series of maintenance efforts.
These are
● Non-Technical Factors
● Technical Factors
Non-Technical Factors
1. Application Domain
● If the application of the program is defined and well understood, the system
requirements may be definitive and maintenance due to changing needs
minimized.
● If the form is entirely new, it is likely that the initial conditions will be modified
frequently, as user gain experience with the system.
2. Staff Stability
3. Program Lifetime
● For example:
● Changes in a taxation system might need payroll, accounting, and stock control
programs to be modified.
● Taxation changes are nearly frequent, and maintenance costs for these
programs are associated with the frequency of these changes.
5. Hardware Stability
● The application must be changed to use new hardware that replaces obsolete
equipment.
Technical Factors
Technical Factors include the following:
Module Independence
It should be possible to change one program unit of a system without affecting any other
unit.
Programming Language
Programming Style
The method in which a program is written contributes to its understandability and hence,
the ease with which it can be modified.
● Maintenance costs due to bug's correction are governed by the type of fault to be
repaired.
● Coding errors are generally relatively cheap to correct, design errors are more
expensive as they may include the rewriting of one or more program units.
● Bugs in the software requirements are usually the most expensive to correct
because of the drastic design which is generally involved.
Documentation
● Program maintenance costs tends to be less for well-reported systems than for
the system supplied with inadequate or incomplete documentation.
Objectives of Re-engineering:
1. Inventory Analysis
2. Document Reconstruction
3. Reverse Engineering
4. Code Reconstruction
5. Data Reconstruction
6. Forward Engineering
Diagrammatic Representation:
Re-engineering Cost Factors:
Advantages of Re-engineering:
● Reduced Risk: As the software is already existing, the risk is less
as compared to new software development. Development
problems, staffing problems and specification problems are the
lots of problems which may arise in new software development.
● Reduced Cost: The cost of re-engineering is less than the costs of
developing new software.
● Revelation of Business Rules: As a system is re-engineered ,
business rules that are embedded in the system are rediscovered.
● Better use of Existing Staff: Existing staff expertise can be
maintained and extended to accommodate new skills during re-
engineering.
Disadvantages of Re-engineering:
The elements that comprise all information produced as a part of the software process
are collectively called a software configuration.
These are handled and controlled by SCM. This is where we require software
configuration management.
● Identify change
Importance of SCM
It is practical in controlling and managing the access to various SCIs e.g., by
preventing the two members of a team for checking out the same component for
modification at the same time.
It provides the tool to ensure that changes are being properly implemented.
It has the capability of describing and storing the various constituents of software.
Local Version Control Systems: It is one of the simplest forms and has a
database that kept all the changes to files under revision control. RCS is one
of the most common VCS tools. It keeps patch sets (differences between
files) in a special format on disk. By adding up all the patches it can then re-
create what any file looked like at any point in time.
Two things are required to make your changes visible to others which are:
● You commit
● They update
The benefit of CVCS (Centralized Version Control Systems) makes
collaboration amongst developers along with providing an insight to a
certain extent on what everyone else is doing on the project. It allows
administrators to fine-grained control over who can do what.
It has some downsides as well which led to the development of DVS. The
most obvious is the single point of failure that the centralized repository
represents if it goes down during that period collaboration and saving
versioned changes is not possible. What if the hard disk of the central
database becomes corrupted, and proper backups haven’t been kept? You
lose absolutely everything.
● You commit
● You push
● They pull
● They update
The most popular distributed version control systems are Git, and Mercurial.
They help us overcome the problem of single point of failure.
Purpose of Version Control:
CASE stands for Computer Aided Software Engineering. It means, development and
CASE Tools
CASE tools are set of software application programs, which are used to automate SDLC
activities. CASE tools are used by software project managers, analysts and engineers to
There are number of CASE tools available to simplify various stages of Software
Development Life Cycle such as Analysis tools, Design tools, Project management tools,
Use of CASE tools accelerates the development of project to produce desired result and
helps to uncover flaws before moving ahead with next stage in software development.
Components of CASE Tools
CASE tools can be broadly divided into the following parts based on their use at a
● Upper Case Tools - Upper CASE tools are used in planning, analysis
● Integrated Case Tools - Integrated CASE tools are helpful in all the
documentation.
CASE tools can be grouped together if they have similar functionality, process
Diagram tools
These tools are used to represent system components, data and control flow among
various software components and system structure in a graphical form. For example,
develop the software. Process modeling tools help the managers to choose a process
model or modify it as per the requirement of software product. For example, EPF
Composer
throughout the organization. For example, Creative Pro Office, Trac Project,
Basecamp.
Documentation Tools
Documentation in a software project starts prior to the software process, goes
throughout all phases of SDLC and after the completion of the project.
Documentation tools generate documents for technical users and end users.
Technical users are mostly in-house professionals of the development team who
refer to system manual, reference manual, training manual, installation manuals etc.
The end user documents describe the functioning and how-to of the system such as
user manual. For example, Doxygen, DrExplain, Adobe RoboHelp for documentation.
Analysis Tools
These tools help to gather requirements, automatically check for any inconsistency,
Accept 360, Accompa, CaseComplete for requirement analysis, Visible Analyst for
total analysis.
Design Tools
These tools help software designers to design the block structure of the software,
which may further be broken down in smaller modules using refinement techniques.
These tools provide detailing of each module and interconnections among modules.
CASE tools help in this by automatic tracking, version management and release
3. The project is broken into small PCs which are estimated individually.
To achieve true cost & schedule estimate, several option arise.
4. Delay estimation
1. During the planning stage, one needs to choose how many engineers are
required for the project and to develop a schedule.
2. In monitoring the project's progress, one needs to access whether the project is
progressing according to the procedure and takes corrective action, if
necessary.
Cost Estimation Models
A model may be static or dynamic. In a static model, a single variable is taken as a key
element for calculating cost and time. In a dynamic model, all variable are
interdependent, and there is no basic variable.
Static, Single Variable Models: When a model makes use of single variables to calculate
desired values such as cost, time, efforts, etc. is said to be a single variable model. The
most common equation is:
C=aLb
Where C = Costs
L= size
The Software Engineering Laboratory established a model called SEL model, for
estimating its software production. This model is an example of the static, single
variable model.
E=1.4L0.93
DOC=30.4L0.90
D=4.6L0.26
Static, Multivariable Models: These models are based on method (1), they depend on
several variables describing various aspects of the software development environment.
In some models, several variables are needed to describe the software development
process, and the selected equation combines these variables to give the estimate of
time & cost. These models are called multivariable models.
WALSTON and FELIX develop the models at IBM provide the following equation gives a
relationship between lines of source code and effort:
E=5.2L0.91
D=4.1L0.36
The productivity index uses 29 variables which are found to be highly correlated
productivity as follows:
Where Wi is the weight factor for the ith variable and Xi={-1,0,+1} the estimator gives
Xione of the values -1, 0 or +1 depending on the variable decreases, has no effect or
increases productivity.
Example: Compare the Walston-Felix Model with the SEL model on a software
development expected to involve 8 person-years of effort.
Solution:
The amount of manpower involved = 8PY=96 persons-months
Then
(d)Average manning is the average number of persons required per month in the project
1. The above formula is used for the cost estimation of for the basic
COCOMO model, and also is used in the subsequent models. The
constant values a,b,c and d for the Basic Model for the different
categories of system:
Software Projects a b c d
2. 1.0 2. 0.3
Organic
4 5 5 8
3. 1.1 2. 0.3
Semi Detached
0 2 5 5
3. 1.2 2. 0.3
Embedded
6 0 5 2
● CPP
● Python3
// C++ program to implement basic COCOMO
#include <bits/stdc++.h>
// Function
// For rounding off float to int
int fround(float x)
{
int a;
x = x + 0.5;
a = x;
return (a);
}
int model;
// Calculate Time
time = table[model][2] * pow(effort,
table[model][3]);
int main()
{
float table[3][4] = { 2.4, 1.05, 2.5, 0.38,
3.0, 1.12,
2.5, 0.35, 3.6, 1.20,
2.5, 0.32 };
char mode[][15]
= { "Organic", "Semi-Detached", "Embedded"
};
int size = 4;
K is the total effort expended (in PM) in product development, and L is the product
estimate in KLOC .
td correlates to the time of system and integration testing. Therefore, t d can be relatively
considered as the time required for developing the product.
Ck Is the state of technology constant and reflects requirements that impede the
development of the program.
Typical values of Ck = 2 for poor development environment
The exact value of Ck for a specific task can be computed from the historical data of the
organization developing it.
Putnam proposed that optimal staff development on a project should follow the
Rayleigh curve. Only a small number of engineers are required at the beginning of a plan
to carry out planning and specification tasks. As the project progresses and more
detailed work is necessary, the number of engineers reaches a peak. After
implementation and unit testing, the number of project staff falls.
Where, K is the total effort expended (in PM) in the product development
Ck Is the state of technology constant and reflects constraints that impede the progress
of the program
From the above expression, it can be easily observed that when the schedule of a project
is compressed, the required development effort as well as project development cost
increases in proportion to the fourth power of the degree of compression. It means that
a relatively small compression in delivery schedule can result in a substantial penalty of
human effort as well as development cost.
For example, if the estimated development time is 1 year, then to develop the product
in 6 months, the total effort required to develop the product (and hence the project cost)
increases 16 times.
Risk Management:
A risk is a probable problem- it might happen or it might not. There are main two
characteristics of risk
Uncertainty- the risk may or may not happen that means there are no 100%
risks.
loss – If the risk occurs in reality , undesirable result or losses will occur.
Risk management is a sequence of steps that help a software team to
understand , analyze and manage uncertainty. Risk management consists of
● Risk Identification
● Risk analysis
● Risk Planning
● Risk
Monitoring
A computer code project may be laid low with an outsized sort of risk.
so as to be ready to consistently establish the necessary risks which
could have an effect on a computer code project, it’s necessary to
reason risks into completely different categories. The project manager
will then examine the risks from every category square measure
relevant to the project.
There square measure 3 main classes of risks that may have an effect
on a computer code project:
1. Project Risks:
Project risks concern various sorts of monetary funds, schedules,
personnel, resource, and customer-related issues. A vital project risk is
schedule slippage. Since computer code is intangible, it’s terribly tough
to observe and manage a computer code project. it’s terribly tough to
manage one thing that can not be seen. For any producing project, like
producing cars, the project manager will see the merchandise taking
form.
For example, see that the engine is fitted, at the moment the area of the
door unit fitted, the automotive is obtaining painted, etc. so he will
simply assess the progress of the work and manage it. The physical
property of the merchandise being developed is a vital reason why
several computer codes come to suffer from the danger of schedule
slippage.
2. Technical Risks:
Technical risks concern potential style, implementation, interfacing,
testing, and maintenance issues. Technical risks conjointly embody
ambiguous specifications, incomplete specification, dynamic
specification, technical uncertainty, and technical degeneration. Most
technical risks occur thanks to the event team’s lean information
concerning the project.
Business Risks:
This type of risk embodies the risks of building a superb product that nobody needs, losing
monetary funds or personal commitments, etc.
There are some steps that need to be followed in order to reduce risk. These
steps are as follows:
1. Risk Identification:
For example,
TABLE (Required)
Probability of
Risk Impact of Risk Priorit
Problem occurrence of
No problem exposure y
problem
Issue of
R1 incorrect 2 2 4 10
password
Testing
reveals a
R2 1 9 9 7
lot of
defects
Design is
R3 2 7 14 5
not robust
3. Risk Avoidance and Mitigation:
4. Risk Monitoring:
In this technique, the risk is monitored continuously by reevaluating the risks, the
impact of risk, and the probability of occurrence of the risk.
Risk Identification
It is the procedure of determining which risk may affect the project most. This
process involves documentation of existing risks.
The input for identifying risk will be
● Risk management plan
● Project scope statement
● Cost management plan
● Schedule management plan
● Human resource management plan
● Scope baseline
● Activity cost estimates
● Activity duration estimates
● Stakeholder register
● Project documents
● Procurement documents
● Communication management plan
● Enterprise environmental factor
● Organizational process assets
● Perform qualitative risk analysis
● Perform quantitative risk analysis
● Plan risk responses
● Monitor and control risks
The output of the process will be a
● Risk register
Control Risks
Control risk is the procedure of tracking identified risks, identifying new risks,
monitoring residual risks and evaluating risk.
The inputs for this stage includes
● Software Project management plan
● Risk register
● Work performance data
● Work performance reports
The output of this stage would be
4. Work performance information
5. Change requests