Module 5 - Software Testing and Maintenance
Module 5 - Software Testing and Maintenance
● Host Modifications: If any of the hardware and/or platform (such as operating system) of the target
host changes, software changes are needed to keep adaptability.
● Organization Changes: If there is any business level change at client end, such as reduction of
organization strength, acquiring another company, organization venturing into new business, need to
modify in the original software may arise.
Types of maintenance:
Various types of software maintenance are:
● Corrective Maintenance: Means the maintenance for correcting the software faults.
● Adaptive Maintenance: Means maintenance for adapting the change in environment (different
system or operating systems).
● Perfective Maintenance: Means modifying or enhancing the system to meet the new requirements.
● Preventive Maintenance: This includes modifications and updating to prevent future problems of the
software.
Change RequestCorrective Adaptive Perfective maintenance
maintenance (fault maintenance (system enhancement)
repair) (platform adoption)
Issues in software
maintenance
Software Configuration Items (SCIs): Information that is created as part of the software engineering process.
Baselines: A Baseline is a software configuration management concept that helps us to control change.
Signals a point of departure from one activity to the start of another activity. Helps control change without
impeding justifiable change.
Elements of SCM
There are four elements of SCM:
1. Software Configuration Identification
2. Software Configuration Control
3. Software Configuration Auditing
4. Software Configuration Status Reporting
The SCM Process
The SCM process defines a series of tasks:
● Identification of objects in the software configuration
● Version Control
● Change Control
Configuration Audit
Change Control
Version Control
Identification
SCIs
● Analysis: The impact of change request is analyzed in terms of schedule, cost and required efforts.
Overall impact of the prospective change on system is analyzed.
● Control: It is decided that the changes are worth incorporation or not. If it is not, change request is
refused formally.
● Execution: If the previous phase determines to execute the change request, this phase takes
appropriate actions to execute the changes, through a thorough revision if necessary.
● Close request: The change is verified for correct implementation and merging with the rest of the
system. This newly incorporated change in the software is documented properly and the request is
formally closed.
VERSION CONTROL:
Version Control is a system or tool that captures the changes to a source code element: file, folder, image or
binary. This is beneficial for many reasons, but the most fundamental reason is it allows you to track changes
on a per file basis.
Version Control Benefits:
● Secure Access to your Source Code
● File History
● Facilitate Team Communication
● Baseline Trace Ability
● Automated Merge Capabilities
● Ensures no one Over-Writes Someone Else's Code
● Allows for Better Control for Parallel Development
CHANGE CONTROL AND REPORTING:
Change control is a systematic approach to managing all changes made to a product or system. The purpose
is to ensure that no unnecessary changes are made, that all changes are documented, that services are not
unnecessarily disrupted and that resources are used efficiently. Change control is an essential step in
software life cycle. The change control can be carried out using following steps:
● A change request initiates a changes
RE-ENGINEERING:
Software re-engineering means re-structuring or re-writing part or all of the software engineering system. It is
needed for the application which requires frequent maintenance.
Software re-engineering is a process of software development which is done to improve the maintainability of
a software system.
Re-engineering a software system has two key advantages:
● Reduced risk: As the software already exists, the risk is less as compared to developing new software.
● Reduced cost: The cost of re-engineering is significantly less than the costs of developing new
software.
● Reverse Engineering: Under this activity the program is analyzed and understood thoroughly.
● Program structure improvement: Restructure automatically for understandability.
● Program modularization: The program structure is reorganized.
● Data re-engineering: Finally clean-up and restructure system data.
Origi Program Modula Original
nal documentation rized data
Program program
Reverse
engineering
Program Data
Source code modularization reengineering
translation
Program
structure Structu Re-
improvement red engineer
program ed data
Restructured code
Final specification
TOOL SUPPORT:
CASE Tool Support:
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 develop software system.
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, Database Management tools, Documentation tools
are to name a few.
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.
● Lower Case Tools - Lower CASE tools are used in implementation, testing and maintenance.
● Integrated Case Tools - Integrated CASE tools are helpful in all the stages of SDLC, from Requirement
gathering to Testing and documentation.
Planning
U
pp
er Int
Analysis
CA eg
SE ra
Design te
d
Lo CA
Implementation w SE
er
CA
Testing SE
Maintenance
Project
managemen
t tools
Programming tools
Prototyping
and simulation
tools
Consistency and
completeness tools
Software
C configuration
Documentation tools entral repository management tools
(Data Dictionary)
Analysis and
design tools
Requirement tracing
tools
Database
Transferring tools for management and report
exchanging data in generation tools
different formats
FEASIBILITY ANALYSIS:
When the client approaches the organization for getting the desired product developed, it comes up with a
rough idea about what all functions of the software must perform and which all features are expected from
the software.
Referencing to this information, the analysts do a detailed study about whether the desired system and its
functionality are feasible to develop or not.
This feasibility study is focused towards goal of the organization. This study analyses whether the software
product can be practically materialized in terms of implementation, contribution of project to organization,
cost constraints, and as per values and objectives of the organization. It explores technical aspects of the
project and product such as usability, maintainability, productivity, and integration ability.
The output of this phase should be a feasibility study report that should contain adequate comments and
recommendations for management about whether or not the project should be undertaken.
RESOURCE ALLOCATIONS:
Once the objectives of the project management are achieved, the project management is to estimate the
resources for the project. Various recourses of the project are:
• Human or people
• Reusable software components
• Hardware or software components
The resources are available in limited quantity and stay in the organization as a pool of assets. The shortage
of resources hampers development of the project and it can lag behind the schedule. Allocating extra
resources increases development cost in the end. It is therefore necessary to estimate and allocate adequate
resources for the project.
Resource management includes:
• Defining proper organization project by creating a project team and allocating responsibilities to each
team member.
• Determining resources required at a particular stage and their availability.
• Manage Resources by generating resource request when they are required and de-allocating them
when they are no more needed.
SOFTWARE EFFORTS:
Project Estimation
For an effective management, accurate estimation of various measures is a must. With the correct estimation,
managers can manage and control the project more efficiently and effectively.
Project estimation may involve the following:
• Software size estimation: Software size may be estimated either in terms of KLOC (Kilo Line of Code)
or by calculating number of function points in the software. Lines of code depend upon coding
practices. Function points vary according to the user or software requirement.
• Effort estimation: The manager estimates efforts in terms of personnel requirement and man-hour
required to produce the software. For effort estimation software size should be known. This can either
be derived by manager’s experience, historical data of organization, or software size can be converted
into efforts by using some standard formula.
• Time estimation: Once size and efforts are estimated, the time required to produce the software can
be estimated. An effort required is segregated into sub categories as per the requirement
specifications and interdependency of various components of software. Software tasks are divided
into smaller tasks, activities or events by Work Breakthrough Structure (WBS). The tasks are scheduled
on day-to-day basis or in calendar months. The sum of time required to complete all tasks in hours or
days is the total time invested to complete the project.
• Cost estimation: This might be considered as the most difficult of all because it depends on more
elements than any of the previous ones. For estimating project cost, it is required to consider –
o Size of the software
o Software quality
o Hardware
o Additional software or tools, licenses etc.
o Skilled personnel with task-specific skills
o Travel involved
o Communication
o Training and support
PROJECT SCHEDULING:
Project Scheduling in a project refers to roadmap of all activities to be done with specified order and within
time slot allotted to each activity. Project managers tend to define various tasks and project milestones and
then arrange them keeping various factors in mind. They look for tasks like in critical path in the schedule,
which are necessary to complete in specific manner (because of task interdependency) and strictly within the
time allocated. During the project scheduling the total work is separated into various small activities.
Iden Ide Esti Assign Create
tify ntify possible mate people to activity
activities dependencies resources conduct network and
activities bar charts
COST ESTIMATIONS:
Cost estimation can be defined as the approximate judgments of the costs for project. Cost estimation is
usually measured in terms of effort. The effort is the amount of time for one person to work for a certain
period of time. COCOMO is one the most widely used software estimation models in the world. The
Constructive Cost Model (COCOMO) is a procedural software cost estimation model .COCOMO is used to
estimate size, effort and duration based on the cost of the software.
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 complexities:
● Basic Model: this model would be applied early in a projects development. It will provide a rough
estimate early on that should be refined later on with one of the other models.
● Intermediate Model: this model would be used after you have more detailed requirements for a
project.
● Detailed Model: when design of the project is complete you can apply this model to further refine
your estimate.
Within each of these models there are also three different modes. The mode you choose will depend on your
work environment, and the size and constraints of the project itself. The modes are:
● Organic: this mode is used for “relativity small software teams developing software in a highly familiar,
in-house environment”.
● Embedded: operating within tight constraints where the product is strongly tied to a “complex of
hardware, software, regulations and operational procedures”.
● Semi-detached: an intermediate stage somewhere in between organic and embedded. Projects are
usually of moderate size of up to 300,000 lines of code.
Basic Model: The basic COCOMO model estimates the software development effort using only Lines Of Code
(LOC). Various equations in this model are:
Effort Applied (E) = ab(KLOC)bb [man-months]
Development Time (D) = cb(Effort Applied)db[months]
People required (P) = Effort Applied / Development Time [count]
Where, KLOC is the estimated number of delivered lines (expressed in thousands) of code for project. The
coefficients ab, bb, cb and db are given in the following table:
Software ab bb cb db
Projects
Organic 2.4 1.05 2.5 0.38
Semi- 3.0 1.12 2.5 0.35
detached
Embedde 3.6 1.20 2.5 0.32
d
Table 5.2: List of Constants Based on Mode for Basic COCOMO
Intermediate Model: This is an extension of basic COCOMO model. This estimation model makes use of set of
“cost driver attributes“to compute the cost of software.
The formula for effort calculation is:
E=ai(KLOC)(bi)(EAF)
Where E is the effort applied in person-months, KLOC is the estimated number of thousands of delivered
lines of code for the project, and EAF is the factor calculated above. The coefficient ai and the exponent bi
are given in the next table.
Software Projects ai bi
Organic 3.2 1.05
Semi-detached 3.0 1.12
Embedded 2.8 1.20
Table 5.3: List of Constants Based on Mode for Intermediate Model
The Development time D calculation uses E in the same way as in the Basic COCOMO.
Detailed Model: Detailed COCOMO incorporates all characteristics of the intermediate version with an
assessment of the cost driver's impact on each step (analysis, design, etc.) of the software engineering
process.
The detailed model uses different effort multipliers for each cost driver attribute. These Phase Sensitive effort
multipliers are each to determine the amount of effort required to complete each phase. In detailed
COCOMO, the whole software is divided into different modules and then we apply COCOMO in different
modules to estimate effort and then sum the effort.
The effort is calculated as a function of program size and a set of cost drivers are given according to each
phase of the software life cycle.
● Risk monitoring - The project manager monitors the factors and gives an indication whether the risk is
becoming more or less.
● Risk management and planning - It assumes that the mitigation effort failed and the risk is a reality.
RMMM Plan:
● It is a part of the software development plan or a separate document.
● The RMMM plan documents all work executed as a part of risk analysis and used by the project
manager as a part of the overall project plan.
● The risk mitigation and monitoring starts after the project is started and the documentation of RMMM
is completed.
Quality Assurance:
It is planned and systematic pattern of activities necessary to provide a high degree of confidence in the
quality of a product. It provides quality assessment of the quality control activities and determines the
validity of the data or procedures for determining quality.
PROJECT PLAN:
A project plan is a formal document designed to guide the control and execution of a project. A project plan
is the key to a successful project and is the most important document that needs to be created when starting
any business project.
A project plan is used for the following purposes:
● To document and communicate stakeholder products and project expectations
PROJECT METRICS:
Metrics is a quantitative measure of the degree to which a system, component, or process possesses a given
attribute.
Project metrics are quantitative measures that enable software engineers to gain insight into the efficiency of
the software process and the projects conducted using the process framework. Project metrics are used by a
project manager and a software team to adapt project work flow and technical activities.
● The organization builds a simple record of size measure for the software projects. It is built on past
experiences of organizations.
● It is a direct measure of software
● A simple set of size measure that can be developed is as given below:
o Size= KLOC
o Effort = Person/month
o Productivity=KLOC/ Person-month
o Quality= number of faults/KLOC
o Cost=$/KLOC
o Documentation= Pages of documentation/KLOC
● Functionality cannot be measured directly; it must be derived indirectly using other direct measures.
• A measure called the function point.
• Function points are derived using an empirical relationship based on countable (direct) measures of
software's information domain and assessments of software complexity.
How to calculate Function Point?
Domain Count Weighting factor Count
Characteristics Simple Average Complex
Number of user input x 3 4 6
Number of user output x 4 5 7
Number of user x 3 4 6
inquiries
Number of files x 7 10 15
Number of external x 5 7 10
interfaces
Count Total
Table 5.4: Function Point calculation table
Number of user inputs. Each user input that provides distinct application oriented data to the software is counted.
Inputs should be distinguished from inquiries, which are counted separately.
Number of user outputs. Each user output that provides application oriented information to the user is
counted. In this context output refers to reports, screens, error messages, etc. Individual data items within a
report are not counted separately.
Number of user inquiries. An inquiry is defined as an on-line input that results in the generation of some
immediate software response in the form of an on-line output. Each distinct inquiry is counted.
Number of files. Each logical master file (i.e., a logical grouping of data that may be one part of a large
database or a separate file) is counted.
Number of external interfaces. All machine readable interfaces (e.g., data files on storage media) that are
used to transmit information to another system are counted.
FP = count total [0.65 + 0.01 Σ(Fi)] where count total is the sum of all FP entries .
The Fi (i = 1 to 14) are "complexity adjustment values" based on responses to the following questions:
1. Does the system require reliable backup and recovery?
2. Are data communications required?
3. Are there distributed processing functions?
4. Is performance critical?
5. Will the system run in an existing, heavily utilized operational environment?
6. Does the system require on-line data entry?
7. Does the on-line data entry require the input transaction to be built over multiple
screens or operations?
8. Are the master files updated on-line?
9. Are the inputs, outputs, files, or inquiries complex?
10. Is the internal processing complex?
11. Is the code designed to be reusable?
12. Are conversion and installation included in the design?
13. Is the system designed for multiple installations in different organizations?
14. Is the application designed to facilitate change and ease of use by the user?
3. Number of Children
Number of immediate subclasses
● Measures breadth of hierarchy
● Prevents reuse
● Hugh RFC