Professional Documents
Culture Documents
Subject Code:
MI 0033
BKID B1965
Additional Registrar
SMU DDE
Dean
SMU DDE
Prof. K. V. Varambally
Director
Manipal Institute of Management, Manipal
Revised Edition II: Spring 2010
Printed: September 2014
This book is a distance education module comprising a collection of learning
materials for our students. All rights reserved. No part of this work may be
reproduced in any form by any means without permission in writing from Sikkim
Manipal University, Gangtok, Sikkim. Printed and Published on behalf of Sikkim
Manipal University, Gangtok, Sikkim by Manipal Global Education Services
Manipal 576 104.
Printed at Manipal Technologies Limited, Manipal.
Authors Profile:
Dr Jai Raj Nair holds a Bachelor's degree in Architecture from Bengal Engineering
College (University of Calcutta), PGDBM from IIM, Calcutta and Ph.D from
Symbiosis International University, Pune. He worked for 9 years in the business
domain of Engineering and Software Consultancy in reputed organizations like
Development Consultants Ltd. (Delhi and Calcutta), and Kirloskar Computer
Services Ltd. (Bengaluru) prior to joining the academic world. At reputed B-Schools,
he has taught IT-related subjects, pertinent for management, for over 12 years.
Dr Nair is a voracious reader and an avid writer. He has presented papers at
several national, regional and international conferences. Some of his papers were
selected for international conferences conducted in Thailand, Italy, Greece and
India. He has also published research papers and articles in management journals
of repute. His research interests include e-retailing, supply chain management and
retro-logistics, business process reengineering, technology-enabled retailing, to
name a few.
Reviewers Profile
Ramya S Gowda holds MS in Computer Science and Engineering and is pursuing
her post-graduation in management. She was working as Scientist C in Master
Control Facility, Department of Space Communication, ISRO, Hassan. She has
been associated with academics from 2006. She is presently working as a faculty
member in Sikkim Manipal University. She has published papers in various fields
like Pattern Recognition, E-Learning and Distance Education, Data mining,
Business intelligence, ecommerce, enterprise resource planning in national and
international Journals and conference such as International Conference on Digital
Factory (ICDF), National Conference on IT Enabled Practices and Emerging
management paradigms, International Conference on Computer Technology and
Development (ICCTD), emerging trends in computer science and information
technology (ETCSIT), international journal on computer science and information
technology (IJCSIT), International Journal Of Computational Engineering Research
(ijceronline.com), and Journal of Information Technology and Engineering.
In House Content Review Team
Dr. Sudhakar G. P.
HOD
Dept. of Management Studies
SMU DDE
Contents
Unit 1
Software as a Product and Software Engineering
Unit 2
Software as a Process and Traditional Process Models
21
Unit 3
Agile Development Methodology
44
Unit 4
Software Requirements Analysis and the SRS
56
Unit 5
Software Project Management: Part 1
(Project Planning and Project Estimation)
73
Unit 6
Software Project Management: Part 2
(Project Scheduling, Tracking and Risk Management)
94
Unit 7
Software Reliability
118
Unit 8
System Engineering
143
Unit 9
Analysis Concepts and Principles
165
Unit 10
Software Design Concepts and Principles
189
Unit 11
Software Testing Techniques and
Technical Metrics
214
Unit 12
Software Testing Strategies
236
Unit 13
Software Verification
261
Unit 14
Capability Maturity Model for Software
279
Unit 15
CMM-Based Process Improvement
300
Unit 16
Software Quality Assurance
319
MI 0033
Software Engineering
Course Description
Software Engineering refers to a set of theories, techniques and methods,
and tools which makes humans able to design, create and control large
software products in a reliable and cost effective manner. The term software
engineering was coined at NATO sponsored conferences held in Europe in
the 1960s to discuss the growing engineer crisis and the need to focus on
software development.
Today, every sector of the economy depends on computers to a great
extent as any sector uses computer-based information system. Business
have realised the importance of software in improving performance and to
gain competitive advantage. Like any other economic endeavour,
development of software requires a systematic approach that includes
comprehensive methods, better tools for efficient execution of these
methods and procedures for quality assurance, coordination and control. It
also involves people and their management. All the requirement aspects
relating to any development have combined together to evolve as a
discipline called software engineering. It is concerned with building quality
eng-ware within time and resource constraints.
The Self learning material (SLM) covers the process and product of
software engineering, including the process framework, different process
patterns, and different process models. Different project estimation
techniques and models, different phases of software risk management are
also discussed in this course. The concept of software reliability, system
engineering, various design concepts and principles, software testing
strategies are also covered in this course. The SLM throws light on software
verification, CMM and its improvement and software quality assurance.
Course Objectives
Software engineering is a discipline that connects the information system
and organisation together. With help of this discipline we can create and
manage various software in an industry. Since the aim of this SLM is to
introduce students to various concepts of software and its process, each
unit of this SLM will help the students to be equipped with required
knowledge.
After studying this course, the student should be able to:
explain the dual nature of software as a product and as a process
analyse why software researchers and practitioners are constantly
endeavoring to improve software process on a continuous basis
elucidate some of the important models of agile development
elaborate how requirements are elicited from customers and importance
of SRS
elucidate software project planning and scheduling
explain project tracking, control and risk management.
explain software reliability and software reliability metrics
describe the system architecture and its specifications
demonstrate software prototyping and software specification during
software analysis
illustrate architectural design and procedural design
list out the automated testing tools
elaborate the art of testing and debugging
describe about symbolic execution
elucidate the five maturity levels of Capability Maturity Model (CMM) for
software.
discuss the CMM based process improvement.
describe briefly about software quality assurance
This courseware comprises 16 units. A brief description of the units is given
below:
Unit 1: Software as a Product and Software Engineering
This unit provides you with an overview of software and software
engineering. This unit also covers the process and product of software
engineering, including the process framework, different process patterns,
and different process models.
Unit 2: Software as a Process and Traditional Process Models
This unit discusses software as a process and explains some of the
important software process models. This unit also analyses why software
researchers and practitioners are constantly endeavouring to improve
software process on a continuous basis.
Software Engineering
Unit 1
1.1 Introduction
If one were to pose a simple question to a layman on the street what is
software? chances are that a majority of the people would say software
is nothing but a collection of codes written in a programming language. This
typical response is a classic example of a half-truth. The full-truth is that
software is the resultant output that software professionals create and then
maintain till the end of the software lifespan. It encompasses not only the
programs per se but also content that is presented and generated as the
program executes. The documentation of the program in either physical
form or digital form is also considered as an integral part of the software.
It is a widely accepted notion that survival and prosperity of software
professionals, now and in the future, will depend on how well they can
deliver quality software at predicted cost and within committed time.
Possession of programming skills maybe only one of the conditions to attain
Sikkim Manipal University
B1965
Page No. 1
Software Engineering
Unit 1
that goal, but more importantly, the software development has to be carried
out in a highly disciplined manner.
Software Engineering is that scientific discipline that enables systematic
development of software and management of the developmental activities.
Over the past few decades, researchers and practitioners of this discipline
have developed frameworks, development strategies and methodologies for
achieving the above goal, about which you will learn in this course.
Objectives:
After studying this unit, you should be able to:
B1965
Page No. 2
Software Engineering
Unit 1
1.3 Software
Software is an umbrella term that refers to the different types of programs
that execute on computers and related devices such as cell phones,
washing machines, car engines, etc. At a very broad level, software is
classified into two types application software (e.g. Microsoft Office) and
system software (e.g. Windows Operating System). Middleware is an
expression that refers to software that acts as a go-between between two
dissimilar kinds of application software (e.g. making request from an
application in a Windows-based computer to a Linux-based computer,
where the operating systems are dissimilar).
We can purchase software or also obtain software in different formats such
as shareware, liteware, freeware and open source. Shareware software is
usually full-fledged software with all the features made available during a
free trial period. After this period gets over, the user has to purchase the
licence for continued use of the software. Liteware software is a category of
shareware where the concept is the same but all the features are not made
available during the trial period. Freeware software is always free, but may
have restrictions on the copyright. In open source software, the developer
furnishes the source code as well and the users who enhance the code
have to agree to continue sharing the enhanced code as well. Open source
Sikkim Manipal University
B1965
Page No. 3
Software Engineering
Unit 1
software has become a rage now and probably, Android is the most popular
open source software that is currently in vogue.
Traditionally, software used to be packaged on floppy disks, CD-ROMs and
DVDs. Today, most of the vendors prefer allowing the customer to
download the purchased software from their servers, in an attempt to
minimise piracy risks. Hence, in todays context, much of the purchased
software, shareware and freeware are downloaded over the Internet.
We present below a few general kinds of application software:
B1965
Page No. 4
Software Engineering
Unit 1
Self-Assessment Questions
4. Software that has a free trial period but with limited features is called as
__________ software.
5. UNIX is an example for ___________________________.
6. Give an example for web applications.
B1965
Page No. 5
Software Engineering
Unit 1
B1965
Page No. 6
Software Engineering
Unit 1
B1965
Page No. 7
Software Engineering
Unit 1
B1965
Page No. 8
Software Engineering
Unit 1
Self-Assessment Questions
9. What are the two parts of a computer?
10. Hardware is manufactured whereas software is _______________.
11. The software product must be of high production cost in order to have
an optimum performance level. (True/ false)
B1965
Page No. 9
Software Engineering
Unit 1
B1965
Page No. 10
Software Engineering
Unit 1
B1965
Page No. 11
Software Engineering
Unit 1
B1965
Page No. 12
Software Engineering
Unit 1
Software product
B1965
Page No. 13
Software Engineering
Unit 1
B1965
Page No. 14
Software Engineering
Unit 1
B1965
Page No. 15
Software Engineering
Unit 1
Higher productivity
Higher quality
Faster time-to-market
Benefits
In todays corporate houses, attrition (constant reduction in the personnel) is
very high, so product line engineering helps to overcome problems related
to resource shortage. Organisations have started to implement product line
Sikkim Manipal University
B1965
Page No. 16
Software Engineering
Unit 1
engineering to realise its fruits. It was observed that, by using product line
engineering, organisations have benefited and some of these benefits are
listed below:
Self-Assessment Questions
20. Product line engineering is also known as ________ ______________.
21. Product line engineering focuses on ______________ of software.
22. List down any one benefit of product line engineering.
1.9 Summary
Let us recapitulate the important concepts discussed in this unit:
http://www.sei.cmu.edu/productlines/
B1965
Page No. 17
Software Engineering
Unit 1
1.10 Glossary
Assembly-line production: An assembly line is a manufacturing process in
which parts are added to a product in a sequential manner using optimally
planned logistics to create a finished product much faster than with
handcrafting-type methods.
Natural User Interface (NUI): A Natural User Interface (NUI) is a system
for humancomputer interaction that the user operates through intuitive
actions related to natural, everyday human behaviour.
Programming language: An artificial language used to write instructions
that can be translated into machine language and then executed by a
computer.
Software crisis: Software crisis was a term used in the early days of
computing science to describe the impact of rapid increases in computer
power and the complexity of the problems that could be tackled. In essence,
it refers to the difficulty of writing correct, understandable and verifiable
computer programs.
Software piracy: Software piracy refers to the un-authorised duplication
and the use of computer software.
1.12 Answers
Self-Assessment Questions
1. Software
2. Software Engineering
Sikkim Manipal University
B1965
Page No. 18
Software Engineering
Unit 1
3. Dummy Projects
4. Liteware
5. System
6. Phython
7. In 1968 during the proceedings of the North Atlantic Treaty
Organization (NATO) Software Engineering Conference held at
Garmisch, Germany
8. True
9. Hardware and Software
10. Engineered
11. False
12. Process
13. Natural user interface
14. Fourth Era (1985Till Date)
15. Hardware
16. Trial and error
17. ISO/IEC 9126
18. Maintainability
19. Portability
20. Product family engineering
21. Reusability
22. Higher quality
Terminal Questions
1. (Refer to Section 1.4 for further information.)
2. (Refer to Section 1.4.1 for further information.)
3. (Refer to Section 1.7.2 for further information.)
4. (Refer to Section 1.4.2 for further information.)
5. (Refer to Section 1.8 for further information.)
6. (Refer to Section 1.2 for further information.)
B1965
Page No. 19
Software Engineering
Unit 1
B1965
Page No. 20
Software Engineering
Unit 2
Unit 2
Structure:
2.1 Introduction
Objectives
2.2 Software Project Life Cycles
Process framework
Process patterns
2.3 Process Models
Linear sequential/waterfall model
V-shaped model
Prototype model
Spiral model
Incremental delivery model
Rational unified process (RUP)
Summary of the major process models
2.4 Using Process Models in Software Projects
2.5 Summary
2.6 Glossary
2.7 Terminal Questions
2.8 Answers
2.9 Case Study
2.1 Introduction
We discussed software as a product in Unit 1. In this unit, we will describe
software as a process and also explain some of the important software
development life cycle models that have been in existence over the last few
decades. These models have been collectively referred to as Traditional
Software Process Models.
A process can be defined as a set of things to be done when some work
product (called software artefacts) is to be produced. We can define a
software process as the manner in which software is developed. It is a stepby-step procedure of developing a complete software product. Each
organisation follows its own set of processes to develop software
development process, which are usually based on one or more of the
aforementioned traditional software process models. The process of
Sikkim Manipal University
B1965
Page No. 21
Software Engineering
Unit 2
B1965
Page No. 22
Software Engineering
Unit 2
B1965
Page No. 23
Software Engineering
Unit 2
We will now briefly discuss about some process framework activities shown
in Figure 2.1.
We can bridge the gap between the customer and the company through
better communication, because the company interacts with the customer for
gathering the project requirements. After obtaining the customer
requirements, the project is planned. Then, the requirements are analysed
and the software is designed in the process of modelling. Afterwards, the
development of code and testing takes place in construction. Then, the
developed software is delivered to the customer and a feedback is obtained
for the product.
The umbrella activities shown in Figure 2.1 take place across the entire
software development work right from the requirements stage to the final
implementation at the customers premises. We can define umbrella
activities as the activities that focus on tracking and controlling the project,
and are undertaken through the entire process of software development. In
the process of software development, risks may take place. Such risks and
their impact on the quality are analysed, and corrective action is taken, in
the process of risk management. And, the process of ensuring that a
software system and its relevant documentation are wholly of sufficient
quality, for their purpose, is named as Software Quality Assurance (SQA).
We can define software configuration management as the process of
Sikkim Manipal University
B1965
Page No. 24
Software Engineering
Unit 2
B1965
Page No. 25
Software Engineering
Unit 2
Complete process.
Let us have a look at the template of a process pattern given in Table 2.1.
Table 2.1: Process Pattern Template
Pattern name
Intent
Type
Initial context
Problem
Solution
Resulting context
Known uses
Table 2.1 gives us a brief idea about a process pattern template that defines
the following parts:
Pattern name
Nomenclature/naming must be done in a meaningful way and should be
simple so that an individual can guess its functionality from its name.
Intent
The intention/purpose/need of the pattern must be described.
Type
It specifies the type of pattern.
Initial context
For a process pattern to begin, it must have true initial conditions.
You must describe the following issues before the commencement of any
process pattern:
B1965
Page No. 26
Software Engineering
Unit 2
Problem
After mentioning a problem, we need to describe the pattern to solve the
problem.
Solution
A problem, for which a pattern has been described, is always accompanied
by a solution.
For example, when there is insufficient information about the customer
requirements, we need to get back to the customer for the relevant missing
information and also must ensure that reviews are conducted, every time
there is a change in requirements. This helps the development team to plan
their activities before the actual start of development.
Resulting context
It gives detailed information about the results of a successful process
pattern. You must ensure that the following information is checked when a
process pattern ends.
Self-Assessment Questions
4. CMM stands for ___________________________.
5. The gap between the customer and the software company can be
bridged through better ________________.
6. Development of software code and testing takes place in a phase
called as __________________.
7. Reusability management involves providing information pertaining to
the _________________ of the software product.
8. The term pattern relates to the process of solving a problem using a
__________.
B1965
Page No. 27
Software Engineering
Unit 2
Prototype model.
V-shaped model.
Spiral model.
Iterative model.
B1965
Page No. 28
Software Engineering
Unit 2
B1965
Page No. 29
Software Engineering
Unit 2
B1965
Page No. 30
Software Engineering
Unit 2
The different phases of the V model are illustrated in the Figure 2.3.
B1965
Page No. 31
Software Engineering
Unit 2
B1965
Page No. 32
Software Engineering
Unit 2
life cycle, including analysis and design phases. At the end of the first
iteration, the first version of the software is delivered and then the process
repeats all over again till the second version is delivered. The new version
can have added functionalities or enhancements over the earlier versions.
This process can be repeated infinitely and hence, the term spiral model is
apt for it as a spiral can also be continued infinite times. Remember that it
starts at the centre and traverses in a clockwise direction. Each traversal
denotes a deliverable. The iterations/repetitive traversals denote the tasks
accomplished. For example, the first traversal may result in identifying the
objectives and constraints and the second stage may result in identifying
and resolving the risks, and so on. Finally, the last iteration will lead to the
end product.
As you can notice in Figure 2.4, there are four task regions in the spiral
model:
1. Determine objectives.
2. Identify and resolve risks.
3. Develop and test.
4. Plan the next iteration.
We can differentiate the spiral model from the other software models on the
basis of its risk evaluation task. The spiral model does not have fixed phase
for requirements, design and testing that are normally found in the other
software models (such as V-Shaped Model). It follows a step-by-step
approach, so the developers and customers interact after every step and
thus risks are detected very early in this life cycle and helps in
accomplishing the tasks.
This model is very handy where the stakeholders are unsure about the final
software solution to be developed. Both the customer and the developer can
take a relook at the functionality of the software developed till date in each
consecutive spiral loop.
2.3.5 Incremental delivery model
In this approach, the software developer develops the required software not
in a single burst but rather in a series of small increments. This methodology
has certain distinct advantages, namely:
B1965
Page No. 33
Software Engineering
Unit 2
The customer and the developer can jointly decide on which features and
functionalities need to be given more priority so that the customers
business is least affected. This would lead to creation of a sequential
preference table based on which the features and functionalities would be
delivered in successive increments.
It enables the customer and the developer to reduce the scope to a smaller
and more manageable increment which is easier to comprehend.
It enables the developer to manage with lesser resources (like manpower
and monetary resources) as compared to the other approaches.
You may have realised by now that the incremental delivery approach to
software development is all about chopping up the overall software delivery
into a number of small units, which are to be delivered on a priority basis in
each increment.
The fundamental difference between the iterative and incremental
approaches is that incremental assumes the addition of newer modules over
time whereas the iterative approach successively enhances existing
functionality.
2.3.6 Rational Unified Process (RUP)
Rational Inc. was an object orientation company promoted by the three
Amigos of Object-Orientation Grady Booch, James Rumbaugh and Ivar
Jacobson. This company propounded the Rational Unified Process (RUP)
along with a set of tools such as Rational Rose to assist the software
development life cycle (SDLC). RUP breaks down a software project into
four phases Inception, Elaboration, Construction and Transition Phase.
Each of these phases is elaborated below.
6. Inception phase
This phase corresponds to the planning phase in the SDLC, which
constitutes around 10% of the total effort (usually stated in man-months).
This phase aims at laying down the broad scope of the product being
developed, develop a vision for the product, estimate the effort, estimate the
resources and assess the risks.
This phase comes to an end once the planning of work for the elaboration
phase finishes.
Sikkim Manipal University
B1965
Page No. 34
Software Engineering
Unit 2
7. Elaboration phase
This phase mainly elaborates the use cases. A use case is defined as a
sequence of actions that an end-user and the computer must perform to
fulfil a specified business task. This forms the basis for creating the
Software Requirement Specifications (SRS). You will learn more about use
cases and SRS in Unit 4: Software Requirements Analysis and the SRS.
The software architecture is finalised in this phase which is based on the
developers understanding of the customer requirements.
This phase also includes carrying out detailed estimates and risk analysis
for the project.
All the tasks in this second phase constitute about 20% of the total effort of
the project.
8. Construction phase
The actual construction of the software occurs in this third phase. Coding
and testing are the two most important activities in this phase that could
take up about 60% of the total effort.
The system development is by and large incremental and iterative in nature.
9. Transition phase
This is the phase where the software is implemented at the customers
premises.
This phase constitutes about 10% of the total effort and includes tasks like
completing the entire software, completing all the testing including the user
acceptance test, completing and handing over all documentation for the
user (either in hard copy or soft copy format) and making preparations for
training of the end-users.
The major advantages of the RUP are as follows:
RUP advocates splitting the project into smaller components. Hence, the
developers can focus early on the high-risk components, which lead to
early solution to problems whenever a risk becomes a reality.
B1965
Page No. 35
Software Engineering
Unit 2
RUP enables the software to progress over time, as opposed to the big
bang approach where the risk of total system failure is high.
Strengths
Simple
Easy to execute
Intuitive and logical
Easy contractually
Weaknesses
All or nothing
too risky
Requirements
frozen early
May choose
outdated
hardware/tech
Applicable types of
projects
Well-understood
problems,
Short duration
projects,
Automation of
existing manual
systems
Disallows
changes
No feedback
from users
Encourages
requirements
bloating
Prototyping
model
Reduces risk
Better and more
stable final system
cost and
schedule
Encourages
requirements
bloating
Disallows later
change
Spiral model
Regular deliveries,
Overhead of
leading to business
benefit
planning each
iteration
Can accommodate
changes naturally
Allows user
feedback
Avoids requirements
Sikkim Manipal University
increase
System
architecture and
design may
suffer
B1965
Heavy reporting
based systems can
benefit from UserInterface prototyping
For businesses
where time is
important; risk of
long projects cannot
be taken;
Requirements not
known and evolve
with time
Page No. 36
Software Engineering
bloating
Naturally prioritises
Unit 2
Rework may
increase
requirements
Allows reasonable
exit points
Reduces risks
Rational
unified
process
(RUP)
All benefits of
iterative
Provides a flexible
framework for a
range of projects
wide range of
projects as it allows
flexibility
Self-Assessment Questions
9. The four phases of the RUP are inception, elaboration, communication,
and ___________________.
10. For a library management software, where the requirements are well
understood and are unlikely to change, the _____________ model is
well applicable
11. The V-Shaped Model is a rectification of flaws in the Spiral Model.
(True or False)
12. The founders of Rational Inc., the founders of the RUP, were
collectively referred to as the three __________.
Activity 2:
Compare and contrast the waterfall model and the spiral model. Can
you find any similarity between the two models? Can you say that the
introduction of Windows Operating System at different points in time
(like Windows 95, Windows 98, Windows XP, Windows Vista and
Windows 7) is an example of the spiral model? Justify your answer.
(Hint: Refer to Section 2.3.)
B1965
Page No. 37
Software Engineering
Unit 2
B1965
Page No. 38
Software Engineering
Unit 2
Self-Assessment Questions
13. An accounting software package, where the requirements are well
understood and are unlikely to change can be developed using the
_______________ model.
14. It is important to choose a development model that that would enable
us to deliver __________ software.
15. The RUP Model allows ____________ iterations.
Activity 3:
Assume that you are working for a software company. Your company has
been assigned the task of carrying out THREE software projects, namely:
1)
2)
3)
For each of the above three projects you have to decide on the software
process model to be applied. Which model will you apply in each case?
Justify your answers.
(Hint: Refer to Section 2.3.)
2.5 Summary
Let us recapitulate the important concepts discussed in this unit:
B1965
Page No. 39
Software Engineering
Unit 2
The waterfall model is the oldest and the simplest of all the process
models where all the steps are performed in sequence. It is suitable only
for those kinds of problems where the requirements are very well
understood right at the beginning of the project. The V-shaped model
was added later to correct certain shortcomings in the waterfall model.
2.6 Glossary
Artefact: An object processed by a computer and is owned by the software
system. Examples of artefacts are documents (e.g. training manuals), lines
of code in the program, etc.
CMM (Capability maturity model): The Capability Maturity Model (CMM) is
a methodology used to develop and refine an organisation's software
development process.
SDLC (Software development life cycle): A framework that for the
activities performed at each phase of a software development project.
B1965
Page No. 40
Software Engineering
Unit 2
2.8 Answers
Self-Assessment Questions
1. False
2. Step-by-step
3. Telecom billing solutions
4. Capability Maturity Model
5. Communication
6. Construction
7. Reuse
8. Template
9. Transition
10. Waterfall
11. False
12. Amigos
13. Waterfall
14. High-quality
15. Phase-wise
Terminal Questions
1. (Refer to Section 2.3.1 for further information.)
2. (Refer to Section 2.3.3 for further information.)
3. (Refer to Section 2.2 for further information.)
4. (Refer to Section 2.3.2 for further information.)
5. (Refer to Section 2.3.7 for further information.)
B1965
Page No. 41
Software Engineering
Unit 2
B1965
Page No. 42
Software Engineering
Unit 2
Discussion Question:
1. Discuss how the company followed a systematic approach in attaining
CMMI Level 3.
References/E-References:
References:
E-References:
B1965
Page No. 43
Software Engineering
Unit 3
Unit 3
Structure:
3.1 Introduction to the Agility Concept
Objectives
3.2 Agile Development: The Manifesto
The agile process
Cost of change vis--vis traditional models
Extreme programming (XP) and agile processes
XP: In Summary
3.3 Other Agile Processes
3.4 Summary
3.5 Glossary
3.6 Terminal Questions
3.7 Answers
3.8 Case Study
B1965
Page No. 44
Software Engineering
Unit 3
We can subject any software process to the philosophy of agility. The only
precondition for achieving is that we need to plan the process in such a
manner that would facilitate the software development team to alter the
work flow and keep them simple and lean enough, adopt a planning
paradigm that encourages the flexible nature of an agile development
approach and adopt a strategy of delivering software to the customer in an
incremental fashion, wherein each delivery will have new enhancements/
functionalities or modifications to the previous delivery. This way we can
ensure that the software gets live at the customer end more quickly than
what would have been possible in the traditional process methodologies.
Objectives:
After studying this unit, you should be able to:
Explain agility as the latest methodology for software development
differentiate between traditional software process models and agile
models
explain why the software fraternity adopted the agility philosophy
elucidate some of the important models of agile development
B1965
Page No. 45
Software Engineering
Unit 3
B1965
Page No. 46
Software Engineering
Unit 3
B1965
Page No. 47
Software Engineering
Unit 3
B1965
Page No. 48
Software Engineering
Unit 3
subsequent iterations. The nitty-gritty details of the user stories are collected
and analysed during the iteration for developing the incremental delivery of
the software.
The developmental method adopted in the iterations follows certain
distinctive methods. First, development is taken up by pairs of programmers
(i.e. two programmers would be jointly developing code), instead of
individual programmers which is a very unique way of handling the software
project. Second, it encourages a reverse methodology wherein automated
unit tests are designed first even before writing the actual code. The actual
program that is written later should clear the first-written unit tests. This
methodology is called as test-driven development. As more and more
functionality gets added to the unit, the unit tests are also scaled up to
accommodate the new functionalities. After this step, the code is modified
so as to be able to clear the newly created unit tests. Third, because of the
inevitable changes, it is probable that the design developed earlier may
become inappropriate for further stages in the development. XP takes care
of this problem by encouraging a step called as refactoring. Refactoring is
employed to modify the design, after which the refactored program is
considered for the next level of development. While refactoring, only the
existing functionalities are considered and no new functionality is added.
The reason for this is that the design of the program under refactoring will
be greatly enhanced.
The discussion so far has provided us with a birds eye view of extreme
programming. Other rules for XP have also been framed that consider
matters like software developers and customers rights during the execution
of the project, interpersonal interactions among members of the team,
protocols for conducting meetings, etc.
The agile methods, including extreme programming, are appropriate only for
projects where the probability of frequent requirements change is very high,
leading to substantial requirements risks. Since such methods rely heavily
on continuous interactions among the team members, it is useful when
teams are preferably collocated and has relatively lesser number of
developers. Another point to be considered is that as agile methods
encourage continuous participation of the customer in the project for
deciding on important milestones, it is imperative that the customer should
Sikkim Manipal University
B1965
Page No. 49
Software Engineering
Unit 3
Weakness
Types of
projects
Agile and
responsive
Short delivery
cycles
Continuous
feedback can
lead to better
acceptance
Where
requirements
are changing
a lot, customer
is deeply
engaged in
development,
and where the
size of the
project is not
too large
Self-Assessment Questions
1. In the spiral model, as we move from one phase to the other the cost of
change increases in a non-linear fashion. (True/False)
2. Agile process helps to manage certainty in a software project.
(True/False)
3. Which of the following models allow changes in later stages of the
software project - spiral, incremental, waterfall, agile?
4. XP commences with creation of _______ stories.
5. Which of the following process models would be most appropriate in a
situation where there the requirements risk is low spiral model/XP?
6. Agile methodology tends to give little or no importance to project
documentation. (True/ False)
7. The practice of using two programmers for jointly developing the code
is called as __________________.
8. During refactoring new functionalities are added. (True/False)
B1965
Page No. 50
Software Engineering
Unit 3
Activity 1:
Imagine yourself as a project manager in a software company.
Describe how you would explain the concept of agile development to
your team. You will also need to explain to them how and why such an
approach is different from the other traditional approaches.
(Hint: Try to explain the differences by taking up a real-life situation.)
B1965
Page No. 51
Software Engineering
Unit 3
Scrum
This is another popular agile methodology followed in the industry, originally
proposed by Schwaber and Beedle. The name scrum has been borrowed
from an activity in the game of rugby. Some of the distinctive features of the
scrum method are as follows:
The entire work is compartmentalised into packets.
Testing and documentation are simultaneous activities during the entire
phase of software development.
The development is taken up in sprints and the work to be done is
extracted from an accumulation of requirements to be fulfilled.
Very short duration meetings are conducted and sometimes in standing
position without the use of even chairs and tables.
Using the allotted time-box, simulations of the software are released to the
customer.
Crystal
This methodology was originally propounded by Cockburn and Highsmith.
Two of the distinctive features of this methodology are that there is a
provision of manoeuvrability based on problem characteristics and that it
emphasizes face-to-face communication.
Feature-Driven Development (FDD)
The FDD methodology was originally propounded by Peter Coad and
others. Two of the distinctive features of FDD are that the stress is on
defining features (a function that is valued by a customer and can be
Sikkim Manipal University
B1965
Page No. 52
Software Engineering
Unit 3
3.4 Summary
Let us recapitulate the important concepts discussed in this unit:
This unit introduced us to the latest methodology of software
development called agile methods. We understood why it became
necessary for software developers to adopt such an approach which
apparently goes against the philosophy of the traditional models that
stressed on documentations and other activities which often became
bureaucratic and slowed down the work. Agile methods tend to simplify
the process and also improve communication between the software
developers and the customers, deliver quick outputs and improve the
overall effectiveness of the development methodology.
While studying this unit, we also learnt about the important agile
methods such as XP, Scrum, DSDM, ASD, FDD and Crystal.
3.5 Glossary
Pair programming: Pair programming is a concept in extreme
programming where two software developers work together at a single
workstation. The developer who writes the code is called as the driver
whereas the other developer is called as the navigator. The navigator
checks each line of code as it is created by the driver. The two developers
swap their roles quite frequently.
B1965
Page No. 53
Software Engineering
Unit 3
3.7 Answers
Self-Assessment Questions
1. True
2. False
3. Agile
4. User
5. Spiral Model
6. True
7. Pair Programming
8. False
9. Scrum
10. Dynamic Systems Development Method
11. b. Adaptive Software Development
Terminal Questions
1. (Refer to Section 3.1 for further information.)
2. (Refer to Section 3.2 for further information.)
3. (Refer to Section 3.2 for further information.)
4. (Refer to Section 3.3 for further information.)
Sikkim Manipal University
B1965
Page No. 54
Software Engineering
Unit 3
B1965
Page No. 55
Software Engineering
Unit 4
Unit 4
Structure:
4.1 Introduction
Objectives
4.2 Requirements Engineering
4.3 Software Requirements Specification (SRS)
Need and importance of the SRS
Roadmap to developing an SRS
Required characteristics of a good SRS
General layout and structure of a standard SRS
4.4 Use Case-Based Software Requirements
Fundamental concepts in use case methodology
An example of a detailed use case
Developing use cases
4.5 Summary
4.6 Glossary
4.7 Terminal Questions
4.8 Answers
4.9 Case Study
4.1 Introduction
A lot has been written about creating correct software systems that work
exactly as per the customer requirements. However, this is possible only if
the developer knows exactly what the customer needs and what the
software must do. Hence, a very important first step in building correct
software is to clearly define what the software must do. Identifying correct
and detailed user requirements is becoming even more important as the
world is moving towards more complex software systems with each passing
day.
In the software engineering context, requirements are used to create the
specification (in software parlance this is called as a software requirements
specification (SRS) that serves as the basis of contract between the
developer and the customer). Obviously, only when these requirements are
clearly specified in advance can we validate the developed software against
these requirements. In other words, keeping the SRS as a guidebook, it
becomes possible for every stakeholder to satisfy themselves whether or
Sikkim Manipal University
B1965
Page No. 56
Software Engineering
Unit 4
not the delivered software has satisfied all the requirements. The goal,
which is still proving to be extremely difficult to satisfy in totality, is to
develop such precise specifications for software requirements so that the
customer can precisely state what he requires and then validate the
delivered software.
Objectives:
After studying this unit, you should be able to:
describe the importance of requirements engineering in the software
development process
elaborate how requirements are elicited from customers
explain the importance of the SRS
elucidate use case methodology as the latest technique for specifying
functionalities
B1965
Page No. 57
Software Engineering
Unit 4
B1965
Page No. 58
Software Engineering
Unit 4
B1965
Page No. 59
Software Engineering
Unit 4
preconceived ideas about a system and analysts must approach any study
with an open mind. There are four main ways of doing this, namely:
By asking questions By interviewing people in the system, through
surveys and questionnaires or by electronic means using e-mail or a
discussion board;
By observational studies By participating within the user
environment and ensuring that the analyst is also part of the typical work
life till the requirements engineering phase is over;
By prototyping In this case, we can prototype either the requirements
or the user interface; and
By formal sessions This includes structured workshops, group
discussions and facilitated teams.
Self Assessment Questions
1. Which of the following process models does not require detailed
requirements to be specified at the beginning of the project waterfall
model or agile model?
2. Requirements engineering consists of three generic tasks
requirements analysis, requirements ____________ and requirements
validation.
3. The requirements engineering phase ends with the creation of a
document called SRS. What does SRS stand for?
4. SRS bridges the ____________________ team with the technical
team.
B1965
Page No. 60
Software Engineering
Unit 4
user. Thus, we see that there is a clear disconnect between who requires
what and who develops it for them. This happens mainly because of a major
communication error usually the client does not understand software and
the software developers do not understand the business domain!
The fundamental need for the SRS is to bridge the communication gap so
that the client and the developer together have a joint and a shared vision of
the software proposed to be built.
The importance of the SRS can be gauged from the points given below
(extracted from IEEE 830 Standard):
SRS establishes the basis of agreement between the user and the
software developer.
o User needs have to be satisfied, but most probably the user may not
understand software.
o Developers will develop the system, but most probably may not be
an expert on the problem domain.
o Thus, SRS becomes the medium to bridge the communication gap
and specify user needs in a way in which both parties can
understand.
B1965
Page No. 61
Software Engineering
Unit 4
Business
Domain
Requirements
Vision
Document
Non-functional
Requirements
Functional
Requirements
SRS
Fig. 4.1: General Process Followed for Developing SRS
B1965
Page No. 62
Software Engineering
Unit 4
Unambiguous The SRS will be treated as unambiguous if, and only if,
every requirement stated therein can be interpreted in only one possible
manner. This is a major practical difficulty faced by software
practitioners as most of the words and sentences written in English are
susceptible to multiple interpretations that can cause major discord
between the customer and the development team.
B1965
Page No. 63
Software Engineering
Unit 4
Verifiability The SRS exhibits verifiability if, and only if, every stated
requirement is verifiable. As an example, it is useless to put in
requirements like: It should provide the user a fast response and The
system should never crash. Instead, it would make sense to provide a
quantitative requirement like: Every key tap should provide a user
response within 10 milliseconds.
B1965
Page No. 64
Software Engineering
Unit 4
limitations, and issues of reliability, fault tolerance, backup and the most
important one security.
B1965
Page No. 65
Software Engineering
3.5
3.6
3.7
3.8
3.9
3.10
Unit 4
Attributes
Other Requirements
Behavioural Description
Validation and Criteria
Bibliography
Appendix
The above format has been standardised by IEEE. However, as per industry
practice, most software companies use their unique improvised version of
the IEEE format for the SRS.
Self- Assessment Questions
5. Whose viewpoint does a vision document contain the customer or
the software developer?
6. The SRS contains both functional and ________________ functional
requirements.
7. Sometimes in an SRS we notice that there are contradictory
requirements specified. Such an SRS will fail the test of ___________.
B1965
Page No. 66
Software Engineering
Unit 4
would be part of another use case called Make Payment on Credit Card. In
this case also the new actor would be modelled as a stick figure.
Withdraw
Money
Update
Mobile No.
Check
Overdraft Limit
Make
Payment
on Credit
Card
Block
Issued
Cheque
Customer
Credit Appraisal
System
Bank
Manager
A lot of information can be gathered from studying use case diagrams. This
is a very simple diagram and yet it shows the required functionality as
envisaged by the client. This is a very simple and yet powerful portrayal of
what a software system is supposed to deliver in terms of functionalities.
4.4.1 Fundamental concepts in use case methodology
As explained in the previous section, an actor is a person or a system that
interacts with the proposed system to achieve a goal. An example of a
goal is for a user of an ATM the goal could be to withdraw cash. We have
a terminology called primary actor the main actor who initiates the use
case. There is also a precondition that has to be fulfilled before the use
case can be realised.
A scenario is a group of actions executed to realise a goal under certain
conditions. A scenario can be subdivided into main success scenario and
alternative scenario. When things go normally and the goal is attained, we
call it as the main success scenario. When things go wrong and we fail to
attain the goals, we call it an alternate scenario.
Sikkim Manipal University
B1965
Page No. 67
Software Engineering
Unit 4
A use case is a collection of several such scenarios. The use cases specify
functionality by elucidating interactions between actors and system. The
focus is always on the external behaviour and we leave out the
implementation details completely. A very important point to be kept in mind
is that the use cases do not complete the SRS they only concentrate on
the functionality part.
4.4.2 An example of a detailed use case
Use case title - Online purchase
Primary actor - Online customer
Goal - Buy from the online store
Precondition - The online customer has logged into the website with his
login ID and password
Main Scenario
o The online customer selects items and drops them into the
shopping cart
o He proceeds to the checkout for payment
o He fills out his billing and shipping details
o System presents the pricing information along with shipping costs, if
any
o He types his credit card details along with the OTP (one-time
password, if applicable)
o The payment gateway authorises his credit card
o System confirms the purchase
o System sends a confirmatory e-mail along with e-invoice and informs
about the shipping time
Alternative scenarios
o 6a: Credit card approval unsuccessful
Allow the online customer to re-type credit card details up to a
maximum of three attempts
o 3a: For a regular online customer
The system displays the billing and shipping information. Seeks
permission from online customer to continue with it or change it
Proceeds to step 4
B1965
Page No. 68
Software Engineering
Unit 4
4.5 Summary
Let us recapitulate the important concepts discussed in this unit:
B1965
Page No. 69
Software Engineering
Unit 4
SRS forms the basis of agreement between the customer and the
developer where the functionalities to be provided by the software are
clearly laid out.
The IEEE has specified the desirable characteristics of a good SRS and
has also given a framework for creating the SRS document.
4.6 Glossary
Business analyst: A person analysing a business at the business
functionality level.
Stick figure: A representation of an actor in a use case diagram.
B1965
Page No. 70
Software Engineering
Unit 4
4.8 Answers
Self -Assessment Questions
1. Agile
2. Specification
3. Software requirements specification
4. Business analysis
5. Customer
6. Non-functional
7. Consistency
8. Functions
9. People
10. Alternative scenarios
Terminal Questions
1. (Refer to Section 4.2 for further information.)
2. (Refer to Section 4.2 for further information.)
3. (Refer to Section 4.3 for further information.)
4. (Refer to Section 4.3 for further information.)
5. (Refer to Section 4.3 for further information.)
6. (Refer to Section 4.4 for further information.)
B1965
Page No. 71
Software Engineering
Unit 4
B1965
Page No. 72
Software Engineering
Unit 5
Unit 5
Structure:
5.1 Introduction
Objectives
5.2 Project Management Process
Initiation phase
Planning and estimation phase
Scheduling and tracking phase
Tracking
Risk analysis phase
5.3 Software Project Planning
Project scope
Resources
Tools
5.4 Software Project Estimation
Estimation models
Empirical estimation model
The Constructive Cost Model (COCOMO)
COCOMO in a nutshell
Delphi model
Estimation techniques
5.5 Summary
5.6 Glossary
5.7 Terminal Questions
5.8 Answers
5.9 Terminal Questions
5.10 Case Study
5.1 Introduction
In Units 1, 2 and 3, you have studied some important concepts in the
software engineering process that include software as a product and a
process, important traditional software development process models and
the latest paradigm of development called the agile methodology. We have
also discussed about the requirements engineering and the most important
software document called software requirements specification (SRS) that
Sikkim Manipal University
B1965
Page No. 73
Software Engineering
Unit 5
lists out the functionalities to be provided by the software and also the other
non-functional requirements in Unit 4.
In this unit, we will study about the first part of software project management
including the project management process that has four phases (initiation
phase, software planning and estimation phase, scheduling and tracking
phase and risk analysis phase). We will also discuss about software project
planning and a very important aspect of project management called
software project estimation. We will study the Constructive Cost Model
(COCOMO) that helps us to estimate software projects in advance. This
helps in developing an initial budget and cost plan for the software project.
Objectives:
After studying this unit, you should be able to:
explain the different project management processes
describe about software project planning
elaborate on project estimation techniques and models
B1965
Page No. 74
Software Engineering
Unit 5
The project management process or life cycle has four stages as shown in
Figure 5.1.
We will now describe the four phases portrayed in Figure 5.1, in the
following subsections. We will also discuss the details of software project
planning, software project estimation, software project scheduling, software
project tracking and control and software risk management in the
subsequent sections.
5.2.1 Initiation phase
The Initiation Phase is the first phase of software project management and
this is where all the information related to the requirements of a software
project is garnered. We have studied about this phase in Unit 4 under
requirements engineering. This is perhaps the most important phase, as
the scope of the project gets frozen based on the garnered information.
Before any project commences, it is imperative that we establish the
objectives and scope of the project. We must also identify the technical and
management constraints/difficulties to define accurate information related to
cost, break down of project tasks and project schedule and appointing
project teams. The objective of the project is to deliver the software under
consideration to the customer in such a manner where all the agreed-upon
requirements are fulfilled and there is no cost and/or time overrun. The
scope of the project is to identify the functionalities of the software. Without
understanding and freezing the scope of a project, it is not possible for us to
Sikkim Manipal University
B1965
Page No. 75
Software Engineering
Unit 5
B1965
Page No. 76
Software Engineering
Unit 5
B1965
Page No. 77
Software Engineering
Unit 5
B1965
Page No. 78
Software Engineering
Unit 5
Although risk analysis is the most crucial part of a project, many projects are
undertaken without any consideration of risk. Tom Gilb says, If you do not
actively attack (project and technical) risks, they will actively attack you.3
We can define risk analysis as a series of risk management steps that
enable us to attack risk. The different risk management steps are as follows:
Risk identification
Risk assessment
Risk prioritisation
Risk management strategies
Risk revolution
Risk monitoring
Self-Assessment Questions
1. The four stages of project management life cycle are initiation, planning
and estimation, scheduling and tracking and ______________.
2. Rayleigh Model and COCOMO are project estimation techniques.
(True/False)
3. What does SLIM in Putnams SLIM model stand for?
Activity 1:
Imagine you are a project manager in a software company, explain how
you will plan a project and implement each steps mentioned in the above
section.
(Hint: Project management process. Refer section No. 5.2)
B1965
Page No. 79
Software Engineering
Unit 5
http://ezinearticles.com/?What-is-Project-Planning-and-Scope?&id=3895197
B1965
Page No. 80
Software Engineering
Unit 5
5.3.2 Resources
We have already discussed about the first task of software project planning,
namely, scope of a software project. Now, we will discuss the second task
of software project planning, which comprises estimating the resources
required for a project. There are three different types of resources required
for a software project.
Human resources Estimation of human resources includes the selection
of the right skilled candidates, so that the project can be completed
successfully. We recruit professionals at various organisational positions
such as software project manager, software engineer and tester along with
the specified domains. The number of people required for a software project
is determined by the total effort required for the project expressed in personmonths or person-years.
Hardware resources We need to estimate the hardware components
required for the project. This includes estimation of all computer-related
peripherals used during the development of the software, the target
machine on which the software is executed, other hardware elements used
for software development, and so on.
Software resources Estimation of software resources means the
estimation of all the software required for the development of software under
consideration. This also includes licensing costs for various other software
that are required for the implementation, such as IBM Rational Rose, IBM
Rational Clearcase, Microsoft VSS, Microsoft Projects, and so on.
5.3.3 Tools
After the discussion on estimation of resources required for a project, let us
now familiarise ourselves with different types of tools used in software
project planning.
Table 5.1 gives a fair idea about the different tools.
Table 5.1: Tools for Software Project Planning
Tool
Description
Business Systems
Planning Tool
B1965
Page No. 81
Software Engineering
Unit 5
Helps the software developers to create information
systems that can route information to those who need it.
Enables quick transfer of data and delayed decision
making.
Project
Management Tool
Support Tools
Analysis and
Design Tools
Programming Tools
Maintenance Tools
Framework Tools
B1965
Page No. 82
Software Engineering
Unit 5
Self-Assessment Questions
4. ___________ team must ensure that the project mission is clear and
concise.
5. In real-world software projects, do the initial estimates change over
time?
6. The three different types of resources required for a software project
are hardware resources, software resources and _________
resources.
7. Which software project-planning tool helps software developers to
create information systems that can route information to those who
need it?
Activity 2:
Imagine yourself as a project manager and explain how you would plan
your project.
(Hint: Software project planning. Refer section No. 5.3.)
B1965
Page No. 83
Software Engineering
Unit 5
activity. Let us now discuss about the different estimation models involved in
a software project.
5.4.2 Empirical estimation model
The empirical estimation model uses empirically derived formulae in order to
predict the data required for software project planning. These empirical data
are derived from a sample taken from earlier projects. Hence, this model is
not very appropriate for all software development environments and must be
used only after analysing and deciding wisely.
5.4.3 The Constructive Cost Model (COCOMO)
We can consider the constructive cost model or COCOMO as a software
cost estimation model. This model, proposed by Barry Boehm, uses
historical data as well as the current project characteristics. In order to
estimate cost, effort and schedule in a project, we use COCOMO model.
There are three different types of COCOMO models as given in Figure 5.2.
Single Variable Model
COCOMO
MODEL
TYPES
B1965
Page No. 84
Software Engineering
Unit 5
B1965
Page No. 85
Software Engineering
Unit 5
Multiplier (a)
Exponent (b)
Basic
Intermediate
Organic
2.4
3.2
1.05
Semi-detached
3.0
3.0
1.12
Embedded
3.6
2.8
1.2
B1965
Page No. 86
Software Engineering
Unit 5
Very
low
Low
Nominal
High
Very
high
Extra
high
Product related
RELY
0.75
0.88
1.00
1.15
1.40
DATA
0.94
1.00
1.08
1.16
CPLX
0.70
0.85
1.00
1.15
1.3
1.65
B1965
Page No. 87
Software Engineering
Unit 5
Computer related
TIME
1.00
1.11
1.30
1.66
STOR
1.00
1.06
1.21
1.56
VIRT
0.87
1.00
1.15
1.30
TURN
0.87
1.00
1.07
1.15
Personnel related
ACAP
1.46
1.19
1.00
0.86
0.71
AEXP
1.29
1.13
1.00
0.91
0.82
PCAP
1.42
1.17
1.00
0.86
0.70
VEXP
1.21
1.10
1.00
0.90
LEXP
1.14
1.07
1.00
0.95
MODP
1.24
1.10
1.00
0.91
0.82
TOOL
1.24
1.10
1.00
0.91
0.83
SCED
1.23
1.08
1.00
1.04
1.10
Project related
The product of the 15 values chosen will be the Effort Adjustment Multiplier
of the nominal effort and time calculated for the basic version above.
We will work out a numerical problem at the end of the next unit (Unit 6)
after you learn about function points. This will enable you to get a better
understanding of the COCOMO estimation method in tandem with function
point analysis.
5.4.5 Delphi model
The Delphi model is based on the expert opinion. This model follows a
systematic and interactive forecasting method and depends on a panel of
experts. A structured group of experts provide a more accurate solution
when compared to an unstructured group. The interaction is similar to faceto-face interviews/meetings. Hence, it is widely used for business
forecasting.
B1965
Page No. 88
Software Engineering
Unit 5
Line of code
Function point
It
is
a
decomposition
technique used on the basis
of the size of line of code in
a software project.
The
line
of
code
decomposition
technique
uses all the intricate details
in a program.
A direct estimation is done in
the line of code method.
It is a decomposition technique
that uses the baseline metrics
collected from the previous
projects.
It uses only the macroscopic
details in a program.
It is determined indirectly by
estimating the number of inputs,
outputs, data files and external
interfaces.
By using data collected from the project, the project planner estimates
optimistic, pessimistic and most likely LOC or FP value for each function.
Self-Assessment Questions
8. COCOMO stands for ____________________.
9. The three COCOMO modes are organic, semi-detached and
____________.
10. COCOMO was created by Bill Gates. (True/False)
B1965
Page No. 89
Software Engineering
Unit 5
Activity 3:
Suppose you are working in a software company. Prepare a list of
estimation techniques and estimations models used in software project
estimation, in your company.
(Hint: Estimation technique and estimation models. Refer Section No.
5.4)
5.5 Summary
Let us recapitulate the important concepts discussed in this unit:
The project management process is the first phase in software
engineering. This phase includes several tasks such as measuring,
scheduling, tracking and analysing the risks involved in a project
management process.
The phases of software project planning indicate us about how we can
handle a project whenever we are assigned a new project/project task.
They enable us to correlate the various techniques and models and
implement them in a software project.
Software project estimation is an essential part of software project
management. This is very challenging because the estimate has to be
made at a very early stage of the project where the requirements are still
not totally clear. Errors in the estimation process can lead to two
situations: under-quoting for a project (that will lead to financial losses
for the developer) or over-quoting for the project (that may lead to losing
out on the project if it is in the tendering stage).
COCOMO is an effective model that helps us in estimating the effort
(measured in person-months) and also the time duration (in calendsmonths) required to complete a project from start to finish.
5.6 Glossary
Baseline: A line serving as a basis, as for measurement, calculation or
location.
CMMI (Capability Maturity Model Integrated): It is the certification given
by the Software Engineering Institute by the United States.
COCOMO (Constructive Cost Model): It is an algorithmic software cost
estimation model developed by Barry Boehm. The model uses a basic
Sikkim Manipal University
B1965
Page No. 90
Software Engineering
Unit 5
regression formula, with parameters that are derived from historical project
data and current project characteristics.
Delphi: It is a systematic, interactive forecasting method that relies on a
panel of experts. The experts answer questionnaires in two or more rounds
5.8 Answers
Self-Assessment Questions
1. Risk analysis
2. True
3. Software Lifecycle Model
4. Executive
5. Yes
6. Human
7. Business Systems Planning Tool
8. Constructive Cost Model
9. Embedded
10. False
B1965
Page No. 91
Software Engineering
Unit 5
B1965
Page No. 92
Software Engineering
Unit 5
E-References:
www.softstarsystems.com/overview.htm (Retrieved on 17th May 2012)
B1965
Page No. 93
Software Engineering
Unit 6
Unit 6
Structure:
6.1
Introduction
Objectives
6.2
Software Project Scheduling
Gantt chart
6.3
Software Project Tracking and Control
6.4
Software Risk Management
Risk analysis
Risk identification
Risk assessment
Risk analysis reports
Risk monitoring
6.5
Project Metrics
Size-oriented metrics
Function-oriented metrics
6.6
Summary
6.7
Glossary
6.8
Terminal Questions
6.9
Answers
6.10 Case Study
6.1 Introduction
By now, we have explained to you the important concepts in the software
engineering process. So far, we have discussed about software as a
product and a process, important traditional software development process
models and the latest paradigm of development called the agile
methodology. We have also discussed about requirements engineering and
the most important software document called the software requirements
specification (SRS) that lists out the functionalities to be provided by the
software and also the other non-functional requirements.
B1965
Page No. 94
Software Engineering
Unit 6
B1965
Page No. 95
Software Engineering
Unit 6
When there are several people involved in a project, the tasks and
activities pertaining to the project are done in a parallel manner.
After all the units/modules of the software project are completed, they
are integrated and released to the customer after a validation testing.
We will now learn about a tool used to analyse and schedule complex
software projects called the Gantt Chart.
6.2.1 Gantt chart
The Gantt charts are tools used for analysing and scheduling complex
projects. We can use these charts to perform the following:
Provide scheduling details for the tasks that are to be carried out.
Work out the critical path for a project where a deadline is specified.
Sequential activities
Activities that are dependent on other activities and need to be completed in
a sequence, where every stage is more or less completed before the
starting of the next activity, are called sequential activities. They are also
known as linear activities.
Parallel activities
Some of the activities are not dependent on other activities and tasks for
their completion and they can be accomplished any time before or after
reaching a particular stage, these are called nondependent activities or the
parallel activities. We can use the Gantt chart to monitor and check whether
Sikkim Manipal University
B1965
Page No. 96
Software Engineering
Unit 6
Self-Assessment Questions
1. One tool that is used for analysing and scheduling complex projects is
___________.
2. The two types activities used in Gantt charts are sequential and
____________ activities.
3. While scheduling a project, we use ___________ to show progress
charts.
Activity 1:
Imagine that you have been assigned the task of scheduling a software
project. Explain how you will visualise the sequential and parallel activities
and check project schedule.
(Hint: software project scheduling. Refer section No. 6.2)
1
2
http://www.mindtools.com/pages/article/newPPM_03.htm
http://www.mindtools.com/pages/article/newPPM_03.htm
B1965
Page No. 97
Software Engineering
Unit 6
By comparing the actual start date to the planned start date for each
project.
Control is the method used by a project manager to know the status of the
activities in a project. A simple way of tracking is to check the number of
hours spent by each resource on a task associated with the cost.
We can use various tools and techniques to track the projects. The project
management software tool is one of the most commonly used tools. This
tool helps us in managing, executing, tracking and closing the projects.
Automating the project management tasks helps us to have an access to
real-time analysis and also enables us to manage the resources efficiently.
B1965
Page No. 98
Software Engineering
Unit 6
Therefore, we can say that project control enables us to know the status of
a project. Let us see some benefits of project control:
Self-Assessment Questions
4. Project tracking is the way in which projects are __________.
5. Project tracking can be undertaken with software like Microsoft
Projects, which is a _______________________ software.
6. Project control enables us to know the ________ of a project.
Activity 2:
Imagine you have been assigned the task of tracking and controlling a
project. Explain the steps you would take to track and control the project.
(Hint: Tracking and control. Refer Section No. 6.3)
Personnel shortfalls
B1965
Page No. 99
Software Engineering
Unit 6
Risk Analysis
Risk Identification
Risk Assessment
Risk Monitoring
Risk identification
Risk projection
Risk assessment
Risk management
B1965
Software Engineering
Unit 6
We will study about these activities in the later sections. First we will discuss
in detail about the steps involved in risk analysis.
1. Identify threats While analysing risk, we face many threats from
individuals or organisations, illness or death, from disruption to supplies
and operations from loss of business partner, from failures of
accountability, internal system and controls, risks of cost overruns,
from business failure, from advances in technology to technical
failures, from weather, natural disaster, accident and disease, and so
on.
2. Estimate risk After identification of threats, we must realise and
assess its impact. To evaluate risk, we must multiply the probability of
the event occurring with the amount that would cost to set right thing.
3. Manage risk After the value of risk is worked out, you must start to
manage them. In order to manage risk, you must always ensure that
cost-effective approaches are followed and also ensure that the
amount spent must always be less than the cost of the event. Risks
can be managed by using existing assets, contingency planning and by
investing in new resources.
4. Reviews A review is done after completing the risk analysis and may
involve appropriate planning and system testing.
Risk analysis helps us to assess the various risks involved in a software
project and the countermeasures to be taken in order to minimise the
disruptions that can impact a scheduled plan in a project.
6.4.2 Risk identification
Let us now learn about identification of the risks in a software project.
Risk identification is a method of either determining the risks that exist or
those that are anticipated along with the details of time and their possible
outcomes. At times, it becomes impossible to eliminate or minimise risks.
So, before taking up a software project, we must identify all the potential
risks to the extent possible.
We can classify risk categories in many ways, some of them being:
1. Project risks It includes project schedules, staffing for the project/
personnel, project budget, requirements, resources and their impact on
a software project.
Sikkim Manipal University
B1965
Software Engineering
Unit 6
Building a product that no longer fits into the overall product strategy
for the company.
Building a product that the sales force does not understand how to
sell.
B1965
Software Engineering
Unit 6
2. From his/her experience, he/she figures out the probability for each of
the above risks, that a particular risk will become a reality (range is
from 1% to 100%).
3. He/she also lists down the impact of a risk becoming a reality on a
scale of 1 to 5 where 1 is negligible and 5 is catastrophic.
4. Next, he/she sorts the tableon probability descending (high to low)
and impact ascending (low to high).
5. He/she defines a cut-off (say 40%) below which he/she will not
consider any of the risks laid down.
6. All the risks that come above the cut-off probability will be considered.
The mitigation for each of these shortlisted risks will be specified in a
document called Risk Mitigation, Monitoring, and Management
(RMMM) Plan where we need to record each shortlisted risk
6.4.3 Risk assessment
After discussing the aspects of risk identification, we will now discuss risk
assessment.
Risk assessment is the first step towards risk management. Risk
assessment is examining the factors that can bring about risk in a software
project and also taking enough precautions to prevent the risks on the
project and the employees in a software company. Hence, risk is considered
as an uncertain event that can cause adverse effects on an organisation
that is working towards its set goals.
By analysing the risks, we arrive at risk assessment which is also called as
the Threat and Risk assessment. Threat can be defined as a harmful act
like illegal network penetration or a virus. Risk is the expected potential
damage it can cause to a software project.
In order to assess risk, we must first define the risk referent level. The three
risk referent levels of a software project are as follows:
Cost
Performance
Schedule
B1965
Software Engineering
Unit 6
These levels give us information about cost overrun, schedule slippage and
performance degradation (including insufficient requirements) and this in
turn leads a software project to be terminated. While performing risk
assessment, we must follow these steps:
In order to assess risks, we must analyse the type of risk and determine
whether it is a quantitative risk or a qualitative risk. We will conclude our
discussion on risk assessment by briefly touching upon the subject of risk
analysis reports.
6.4.4 Risk analysis reports
A risk analysis report gives us a clear picture about how technology-related
objectives and business objectives are arranged. There are two types of risk
analysis reports.
Quantitative risk analysis
Quantitative risk analysis gives details about the statistical values pertaining
to the adverse effects and the likely losses for a particular software project.
In this type of risk assessment, two components are used to calculate risk:
the magnitude of the potential loss and the probability of occurrence of loss.
Qualitative risk analysis
Qualitative risk analysis does not involve numerical data. Instead, it defines
the various threats and the extent of damage that could occur, along with
the countermeasure plans.
The risk analysis report gives you the details about the vulnerability and the
cost of recovery caused due to a risk factor. Therefore, several defensive
measures are taken by organisations to counter risks whenever they
become realities.
B1965
Software Engineering
Unit 6
To ensure that the risk avoidance steps are defined and are also being
properly applied.
Most of the problems that occur in a project can be traced back to the
risks that were predicted at the commencement of that software project.
The four ways in which risks can be reduced in a software project are given
below.
Risk avoidance Risk avoidance is basically shunning tasks that are risky.
Sometimes, it might reduce the possibility of gains, as you are avoiding risky
tasks.
Risk reduction In order to reduce risks, measures that can act against a
risk are introduced in the project.
Risk retention In risk retention, we must accept the consequences of a
risk involved in a software project. This type of risk proves to be costeffective to the company.
Risk transfer In risk transfer, a part of a task involved in a project might
be outsourced or given to a subcontractor.
B1965
Software Engineering
Unit 6
Self-Assessment Questions
7. The act of outsourcing a part of the task is one form of risk reduction.
This is an example of _____________.
8. The ____________ levels give us information about cost overrun,
schedule slippage and performance degradation.
9. The two types of risk analysis reports are quantitative and
__________.
Activity 3:
Imagine yourself as a member in the risk analysis committee and explain
how you would handle risks in your project.
(Hint: Software risk management. Refer section No. 6.4)
To assess the benefits (in terms of productivity and quality) derived from
new software engineering methods and tools.
B1965
Software Engineering
Unit 6
B1965
Software Engineering
Unit 6
details about analysis, design, testing and coding. The project aaa-01 has a
365-page documentation and 29 errors that occurred after the product was
released to the customer during the first year of operation.6
Table 6.1: Size-Oriented Metrics
Project
Effort
KLOC
pgs.doc
Errors
People
aaa-01
24
168
12.1
365
29
ccc-04
62
440
27.2
1,224
86
fff-03
43
314
20.2
1,050
64
iii-02
11
112
9.7
268
13
B1965
Software Engineering
Unit 6
Figure 6.3 depicts how the five information domain characteristics (number
of user inputs, number of user outputs, number of user inquiries, number of
files and number of external interfaces) are determined and the way in
which the counts are provided in the appropriate table location. Let us see
how these five information domain values are calculated.
Number of user inputs: For calculating the number of user inputs, each
user input that has a unique application-oriented data to the software is
counted. The inputs and the inquiries are separately counted.
B1965
Software Engineering
Unit 6
B1965
Software Engineering
o
o
o
o
o
o
o
o
o
o
Unit 6
Transaction Rate
Online Data Entry
End User Efficiency
Online Update
Complex Processing
Reusability
Installation Ease
Operational Ease
Multiple Sites
Facilitate Change
For each of the above parameters, the software professional has to assign a
value ranging from 0 to 6 (where 0 implies the least and 6 implies the
maximum).
Step 3: Calculate the value adjustment factor (VAF) using the formula: VAF
= 0.65 + (0.01 * DOI).
Step 4: Calculate the adjusted function points (AFP) using the formula: AFP
= UFP * VAF
It is also possible to calculate the corresponding KLOC from AFP and then
applying the COCOMO model to estimate the effort and time required for
the project. For this, we can refer to the standard FP to LOC conversion
table.
Let us now work out a problem that includes function points and the
COCOMO.
Problem:
Assume that for a software project, the following function point counts have
been established.
Table 6.2: FP Counts and Corresponding Weights for a Fictitious Software
Project
Item
Inputs
Outputs
Inquiries
Logical master files
External interface files
Sikkim Manipal University
Simple
25
45
12
56
4
B1965
Average
12
14
10
48
2
Complex
7
19
8
21
0
Page No. 111
Software Engineering
Unit 6
Simple
Average
Complex
Inputs
Outputs
Inquiries
10
15
10
Data Communications
Distributed Functions
Performance
Transaction Rate
Online Update
Complex Processing
10
Reusability
11
Installation Ease
12
Operational Ease
13
Multiple Sites
14
Facilitate Change
B1965
Software Engineering
Unit 6
Solution:
Step 1: Calculate the UFP as follows:
UFP = (25*3 + 12*4 + 7*6) + (45*4 + 14*5 + 19*7) + (12*3 + 10*4 + 8*6) +
(56*7 + 48*10 + 21*15) + (4*5 + 2*7 + 0*10) = 1,893
Step 2: Calculate the DOI as follows:
DOI = 5 + 5 + 2 + 2 + 0 + 5 + 5 + 3 + 5 + 5 + 0 + 5 + 5 + 5 = 52
Step 3: Calculate the VAF as follows:
VAF = 0.65 + (0.01*DOI) = 0.65 + (0.01*52) = 1.17
Step 4: Calculate the AFP as follows:
AFP = UFP*VAF = 1,893*1.17 = 2,215
That is, this software project has an estimated 2,215 function points.
Now, let us assume that the project is going to be developed in C++
language. For C++, the conversion rate is 59 LOC per function point.
Hence, we conclude that this project will have an estimated 59*2,215 =
130,685 LOC or 131 KLOC.
We further assume that the project follows the basic version and organic
mode of COCOMO (refer Unit 5, section 5.4: Software Project Estimation).
Let us now calculate the effort and calendar time required to finish the
project.
We will use the formula Enom = a * (KLOC)b
That is, Enom = 2.4 * (131)1.05 = 2.4 * 167.16 = 401 person-months.
For development time we can from the formula Td = 2.5 * (Enom)0.38
That is, Td = 2.5 * (401)0.38 = 2.5*9.75 = 24.4 calendar-months.
Thus, the project requires 401 person-months of effort, to be completed in
24.4 calendar months.
Self-Assessment Questions
10. We can classify the process measurement into two ways, namely direct
measures and _________ measures.
11. KLOC stands for _______________.
Sikkim Manipal University
B1965
Software Engineering
Unit 6
12. The raw count of function points are further fine-tuned using DOI and
VAF. The final result after the calculations is called as AFP that stands
for ______________.
Activity 4:
Imagine you have been assigned the task of measuring the software
product; explain how you would use the size-oriented and the functionoriented metrics in your task.
(Hint: Project metrics.)
6.6 Summary
Let us recapitulate the important concepts discussed in this unit:
The need for monitoring and controlling a project is very important, since
it updates the team and the management about the progress status of
the project. If there is any kind of deviation noted, then the project
manager can take necessary corrective steps.
B1965
Software Engineering
Unit 6
6.7 Glossary
Financial analysis: It involves looking at financial statements to determine
if a company is healthy.
Stakeholder analysis: It is a tool that is used to assist in decision-making
situations where various stakeholders have competing interests, resources
are limited and stakeholder needs must be appropriately balanced. This tool
can be used for many types of decisions at all levels within an organisation.
6.9 Answers
Self-Assessment Questions
1. Gantt Chart
2. Parallel
3. Milestones
4. Managed
5. Project management
6. Status
7. Risk transfer
8. Risk referent
9. Qualitative
10. Indirect
11. Kilo lines of code
12. Adjusted function points
Sikkim Manipal University
B1965
Software Engineering
Unit 6
Terminal Questions
1. (Refer to Section 6.2, Scheduling and Tracking phase for further
information.)
2. (Refer to Section 6.5, for further information.)
3. (Refer to Section 6.6, Software Quality Metrics for further information.)
4. (Refer to Section 6.6, Software Quality Metrics for further information.)
5. (Refer to Section 6.2 for further information.)
6. (Refer to Section 6.3 for further information.)
7. (Refer to Section 6.4 for further information.)
B1965
Software Engineering
Unit 6
Results:
Resource planning improved and thereby increased employee satisfaction.
Mangers could have a better control over their projects using Gantt charts,
which helped them in successful task completion.
An automated project management system was set, using the Vertabase
pro and the Gantt charts.
Future projects could be planned based on the past project details.
A clear documentation about the tasks completed along with the details of
date and time was available.
The central repository system helped them to know about daily tasks, send
automated e-mail notifications which were previously paper-based.
There was increased accountability to commitments and deadlines.
Discussion Question:
1. Discuss the problems faced by the sigma services and how they
overcame it.
(Hint: Project scheduling and tracking.)
References/E-References:
References:
B1965
Software Engineering
Unit 7
Unit 7
Software Reliability
Structure:
7.1 Introduction
Objectives
7.2 Software Reliability Metrics
Software metrics
Software reliability models
7.3 Programming for Reliability
Fault avoidance
Fault tolerance
7.4 Software Quality Metrics
7.5 Software Reuse
Classification of software reuse
Advantages of software reuse
7.6 Summary
7.7 Glossary
7.8 Terminal Questions
7.9 Answers
7.10 Case Study
7.1 Introduction
By now, you have become familiar with different processes involved in
software project development, such as project planning, scheduling,
tracking and risk management.
In this unit, we will study about software reliability metrics, wherein we will
discuss about software metrics and software reliability models. We will study
about fault avoidance and fault tolerance, which will help us in
understanding how reliability is used in programming during the
developmental phase of a software product. In this unit, we will also discuss
the software quality metrics, which will help us in understanding the
integration of metrics within software engineering process. We will also have
a detailed discussion about how software can be reused by using the
artefacts that are already available from the previous projects. This is
indeed very cost effective and enhances the quality of the software system.
This unit will enable us to understand the use of appropriate software
metrics while developing a software product.
Sikkim Manipal University
B1965
Software Engineering
Unit 7
Objectives:
After studying this unit, you should be able to:
elaborate software reliability metrics
explain programming for reliability with respect to fault avoidance and
fault tolerance
describe about software quality metrics
elucidate software reuse
B1965
Software Engineering
Unit 7
Let us have a look at the two types of software reliability techniques used,
which are shown in Figure 7.1.
B1965
Software Engineering
Unit 7
B1965
Software Engineering
Unit 7
Function point metrics We can use the function point for the
measurement of the functionality of a recommended software
development system based on functions such as count of inputs,
outputs, master files, inquires and interfaces. Once we identify these
functions, we can estimate the size of a software system. The
functionality metrics measure the functional complexity of a software
program, and they are independent of other programming languages.
Generally, we use the functional metrics in business systems, and not
much in the scientific applications.
B1965
Software Engineering
Unit 7
Fault and failure metrics Fault and failure metrics are used for
measuring the number of faults found in the software system during the
testing phase (before delivering to the customer) and the failures
(reported by the customers) after the delivery of the software product.
B1965
Software Engineering
Unit 7
We know that a particular model can work well on certain software, while it
may not work at all on another. Typically, a software model contains
mathematical functions, assumptions and factors. The mathematical
functions contain exponential and logarithmic functions of higher order.
These modelling techniques are based on accumulating the failure data and
analysing them statistically by observance. Let us understand these
techniques by differentiating the two modelling techniques, as given in
Table 7.1.
Table 7.1: Prediction Modelling and Estimation Modelling
Prediction model
Estimation model
B1965
Software Engineering
Unit 7
Self-Assessment Questions
1. The two types of software reliability techniques are trending reliability
technique and _______________ technique.
2. Error seeding is a trending reliability technique. (True/False)
3. The two software modelling techniques are estimation and _________.
Activity 1:
Assume that you have joined as a project manager in a software
company. Explain how you would use software reliability metrics in your
project.
(Hint: Software reliability metrics.Refer Section No. 7.2 )
B1965
Software Engineering
Unit 7
B1965
Software Engineering
Unit 7
B1965
Software Engineering
Unit 7
B1965
Software Engineering
Unit 7
Activity 2:
Imagine you are a software developer, and have been assigned the task
of writing codes as well as finding errors in the code, explain the steps
you would follow to check for code efficiency.
(Hint: Refer Section 7.3, Programming for Reliability.)
B1965
Software Engineering
Unit 7
B1965
Software Engineering
Unit 7
The standard that is used for evaluating software quality is ISO 9126. It
addresses different quality models and the metrics for software
development process.
Defect Removal Efficiency (DRE) It is the measure of counteracting
defects. When the DRE is found to be low during the design and
analysis phase, it simply means that a lot of time needs to be spent in
the technical reviews.
DRE = E / (E + D)
where E = Number of errors found before delivery of the software.
D = Number of errors found after delivery of the software.
When the DRE value is 1, it implies that there were no defects found in the
system and if the DRE is lower than 1, it implies that the system has some
defects.
Test coverage = Number of units (KLOC/FP) tested/total size of the system.
B1965
Software Engineering
Unit 7
B1965
Software Engineering
Unit 7
B1965
Software Engineering
Unit 7
Activity 3:
Prepare a list of software quality metrics we can use for measuring the
quality of software.
(Hint: Refer Section 7.4, Software Quality Metrics.)
B1965
Software Engineering
Unit 7
Let us now discuss about the types of software reuse on the basis of the
reuse of the software.
Opportunistic reuse In opportunistic reuse, the members of the
software development team identify the assets that can be reused for
another software project. We can consider this type of reuse as a costeffective method. Scrapheap software development is a type of
opportunistic reuse, where the functionalities from the discarded project
and systems are reused. There are two types of opportunistic software
reuse.
o Internal reuse The software development team will reuse its own
software project components.
o External reuse The software development team buys a third-party
component for its development purposes. This is called the COST
(Commercial off-the-shelf), where a particular technology or a
software component is either leased out or sold.
After studying about the types of software reuse on the basis of reuse of the
software, we will now study about the two types of software reuse based on
the way the software assets are reused. Let us now have a better
Sikkim Manipal University
B1965
Software Engineering
Unit 7
understanding between the horizontal reuse and the vertical reuse from
Table 7.2.
Table 7.2: Horizontal and Vertical Reuse
Horizontal reuse
Vertical reuse
B1965
Software Engineering
Unit 7
B1965
Software Engineering
Unit 7
7.6 Summary
Let us now recapitulate the important concepts discussed in this unit:
7.7 Glossary
Code auditors: Developers.
Sikkim Manipal University
B1965
Software Engineering
Unit 7
7.9 Answers
Self-Assessment Questions
1. Predictive reliability
2. True
3. Prediction
4. Automated
5. Formal or precise specification
6. Fault treatment
7. Integrity
8. False
Sikkim Manipal University
B1965
Software Engineering
9.
10.
11.
12.
Unit 7
Terminal Questions
1. (Refer to Section 7.2 for further information.)
2. (Refer to Section 7.3 for further information.)
3. (Refer to Section 7.5 for further information.)
4. (Refer to Section 7.5 for further information.)
5. (Refer to Section 7.3 for further information.)
B1965
Software Engineering
Unit 7
Challenges:
Introduction of reuse framework and method into the company.
Gain support from the top management for the reuse program, as
introduction of a reuse program can affect all parts of the software
production process.
Suggestions were made to set up the reuse program along with the
associated cost and risk involved in setting up the reuse program.
Study the staff view point and the development process of the company.
Solution:
A structured process was followed for better future prospectus.
1. Planning and reviews Meetings were held on a regular basis, in
order to plan before the commencement of the project. As the project
advanced, meetings were more focused on technical issues to review
what is being done so far, and also plan ahead for the next steps
involved in the software project.
2. Design An object-oriented method of design was used to support
software reuse, as it has the provision for reusable design techniques
and components in software development and maintenance phase.
3. Resource Management The developers stored the reusable code in
the central reusable repository, which could be accessed by all the
employees in the company.
4. Documentation Documentation process was efficiently done and well
maintained to avoid discrepancies.
5. An incremental approach was carried out to introduce software reuse,
so that working practices could be slowly changed and at the same time
fulfil the requirements of their customers.
Advantages:
Developers could plan for their project and start writing their code in
advance, and also go back to the code, if any kind of restructuring in the
code is required, which will help their code to be more object-oriented
and reusable.
B1965
Software Engineering
Unit 7
The Fotofile was used to design and print the identification badges.
This will be of great benefit in maintenance, and will also allow the
developers, when going back to the code that they have written, to see
how the software is currently designed. This should help them to identify
useful abstractions which will be reusable
In the finished product, there was a total of just over 20,000 lines of
code. Of this code, 43% was inherited from the standard libraries
available through the Microsoft Foundation Classes. Of the remaining
57% of the code, 24% was automatically generated by the Visual C++
wizards. Of the remaining code which was written manually, 31% was
abstracted into reusable classes that were used more than once within
the application. This gives a total reuse factor of 70% for the whole
project.1
Discussion Questions:
1. Explain the challenges faced by Empirical software solutions and how
did they overcome it.
2. Explain details regarding software code reuse.
(Hint: Refer Section 7.5, Software Reuse)
References:
Pullum, Laura L. Software Fault Tolerance Techniques and
Implementation. Artech House Publishers, September 30, 2001
E-References:
http://artofsoftwarereuse.com/2009/04/02/horizontal-and-verticalsoftware-assets/ (Retrieved on 15th May 2012)
http://portal.acm.org/citation.cfm?id=1478113 (Retrieved on 15th May
2012)
http://students.cs.byu.edu/~pbiggs/smallcomp.html
B1965
Software Engineering
Unit 8
Unit 8
System Engineering
Structure:
8.1 Introduction
Objectives
8.2 Computer System
8.3 Computer Systems Engineering
Hardware engineering
Software engineering
Human engineering
8.4 System Analysis
8.5 System Architecture
8.6 System Specification
8.7 Summary
8.8 Glossary
8.9 Terminal Questions
8.10 Answers
8.11 Case Study
8.1 Introduction
In the previous unit, we studied the software reliability and why it is so
important for software organisations to ensure that the software they deliver
to the customer are reliable, as software failures can lead to colossal losses,
not only in financial terms but also in terms of loss of human lives.
In this unit, we will study about system engineering. We will start our
discussion with a computer system. Then, we will discuss about computer
systems engineering (also called as computer engineering), which is an
amalgamation of many fields of engineering, wherein we will discuss about
hardware engineering, software engineering and human engineering.
Thereafter, we will study about system analysis. We will also familiarise
ourselves with system architecture and system architecture specification.
Then, we will have a brief discussion on system specification and system
specification review.
This unit will enable us to understand the different concepts covered in
system engineering.
B1965
Software Engineering
Unit 8
Objectives:
After studying this unit, you should be able to:
explain computer systems engineering and its types
elaborate system analysis
describe the system architecture and its specifications
explain system specification review.
B1965
Software Engineering
Unit 8
Hard Disk Drive (HDD) The hard disk of the computer is the
permanent memory where all the data related to the computer system
are stored; for example, data files such as PowerPoint presentations,
spreadsheets and databases. If your hard disk is large, then you can
store large volumes of data in it. Although the size of the hard drive does
not have an impact on the speed of the program, the speed of your hard
drive can have an impact on the retrieval of the files.
Optical Disk Drive (ODD) These include optical drives such as CD,
CD-RW, DVD, DVD-RW and Blu-ray Disks. Out of these, the more
common ones are the Compact Disk (CD) drives and the Digital Video
Disk (DVD) drives. These drives make use of a laser in order to read the
data that are etched on the disk. The optical drives also come with the
CD-R, denoting recordable disk, where you can burn the information
only once on to the disk and no other editing can be done. The CD-RW
denotes a rewritable disk where data can be rewritten as many times as
possible, giving you the provision of deleting the old files and adding
new ones. You can also come across the CD-ROM, which denotes the
read only memory, where data cannot be modified. Blu-ray Disks are the
latest addition to the group.
Floppy Disk Drive (FDD) Floppy disk drives have very small storage
capacity (1.44 MB) and are basically used for transferring data from one
computer to another. Nowadays, floppy disk drives have become
obsolete in most of the computers. The cost of the floppy disk drive is
very meagre when compared to the cost of the compact disk drive. In
order to hold hundreds of megabytes of memory, the zip drives were
used in the past, but today they have been replaced by the CD-RW
disks due to less cost. The size of a standard floppy disk is 3.5.
Video card A video card enables you to have better graphical display
of the items on your display screen. The video card is inserted into the
B1965
Software Engineering
Unit 8
Sound card Sound cards are also known as the audio cards, which
are the expansion boards, used to enhance the sound quality of the
system. Sometimes, computers come with sound chips, and hence
there is a requirement to add an additional sound card to improve the
sound quality.
Self-Assessment Questions
1. The central processing unit acts as the ________ of the computer.
2. The compact disk and digital video disks are also known as the
_________ drives.
3. Spreadsheet is an example of an optical disk drive. (True/False)
Activity 1:
Imagine you are a trainer in a small software company. Explain how
you would train the new recruits from the college, about the basics of
computer and relate the practical use of computers.
(Hint: Refer to Section 8.2, Computer System.)
B1965
Software Engineering
Unit 8
B1965
Software Engineering
Unit 8
B1965
Software Engineering
Unit 8
http://en.wikipedia.org/wiki/Software_engineering
B1965
Software Engineering
Unit 8
Syntactic and lexical design In the syntactic and lexical design step,
the specific forms of actions and commands are identified, and then the
software and hardware are implemented, as per the action or command
designed.
Self-Assessment Questions
4. Computer system engineering is also known as ____________.
5. The prerequisite for the study of computer engineering is to have a
sound knowledge of ______________ and science.
B1965
Software Engineering
Unit 8
6. The term software engineering was coined in the year 1968 at the
NATO Software Engineering Conference. (True/False)
Activity 2:
Imagine you have been assigned the task of checking the various
integrated software engineering and humancomputer interfaces in your
software company. Explain how you will accomplish the task.
(Hint: Refer to Section 8.3, Computer Systems Engineering.)
B1965
Software Engineering
Unit 8
Self-Assessment Questions
7. Industry professionals list out time and _________ as the most
important factors in the system analysis stage.
8. Economic analysis deals with __________ analysis so that correct
assessment is made for the software project.
B1965
Software Engineering
Unit 8
http://www.answers.com/topic/computer-systems-architecture
B1965
Software Engineering
Unit 8
http://www.wisegeek.com/what-is-system-architecture.htm
B1965
Software Engineering
Unit 8
B1965
Software Engineering
Unit 8
B1965
Software Engineering
Unit 8
http://www.ece.cmu.edu/~koopman/des_s99/requirements_specs/
B1965
Software Engineering
Unit 8
B1965
Software Engineering
Unit 8
B1965
Software Engineering
Unit 8
8.7 Summary
Let us recapitulate the important concepts discussed in this unit:
Computer systems engineering has evolved from different engineering
fields such as electronic, electrical, and so on. Its types include
hardware engineering, software engineering and human engineering.
B1965
Software Engineering
Unit 8
8.8 Glossary
Analogue sensors: Analogue sensors measure information that is
continuous. The Get operation returns the present state of the sensor, while
the Update operation indicates the change state of the sensor.
Bus: A bus is a transmission channel through which signals are sent and
received at the point where a physical device is attached.
CASE (Computer-Aided Software Engineering): CASE tools help the
project managers in all the activities involved in the software process. The
CASE tools automate the project management activities. This tool helps us
analyse, design, code and test.
Firmware: Firmware is used to denote the small programs that are found in
electronic devices and are used to control the various activities of the
electronic device.
NATO: The North Atlantic Treaty Organisation is an intergovernmental
military alliance. This is a collective defence force, where the member states
have a mutual understanding for defence, in response to an attack, by an
enemy.
Processor (CPU): The processor is also known as the central processing
unit and all numeric data are processed.
RAM (Random Access Memory): Random access memory is a volatile
memory. It loses the stored information, when there is no power. It is
different from the non-volatile memory such as a hard disk.
Sikkim Manipal University
B1965
Software Engineering
Unit 8
8.10 Answers
Self-Assessment Questions
1. Brain
2. Optical disk
3. False
4. Computer Engineering
5. Mathematics
6. False
7. Effort
8. Costbenefit
9. Technical
10. System architecture
11. Connectivity
12. High-level
13. True
14. Management viewpoint
15. Customer
Terminal Questions
1. (Refer to Section 8.2 for further information.)
2. (Refer to Section 8.3 for further information.)
3. (Refer to Section 8.4 for further information.)
4. (Refer to Sections 8.5 and 8.6 for further information.)
5. (Refer to Section 8.6 for further information.)
B1965
Software Engineering
Unit 8
B1965
Software Engineering
Unit 8
A comparative study was made between the previous situations and the
present situation.
Results:
The latest techniques helped Nishant Health Care System with a common
work support.
The cases in the nursing home could be easily accessed by the research
scientists as well as the doctors simultaneously.
Discussion Question:
1. Explain how Nishant Health Care Systems, accomplished having an
integrated system of software engineering and human interface.
References/E-References:
References:
Pressman, Roger S. Software Engineering: A Practitioners Approach.
McGraw-hill Higher Education, 2010
B1965
Software Engineering
Unit 9
Unit 9
Structure:
9.1
Introduction
Objectives
9.2
Requirement Analysis
Analysis tasks
9.3
Communication
Problem areas
Communication techniques
9.4
Analysis Principles
Understanding information domain
Creating models
Partitioning the problem
Processing information
9.5
Software Prototyping
Prototyping methods and tools
9.6
Software Requirements Specification
9.7
Summary
9.8
Glossary
9.9
Terminal Questions
9.10 Answers
9.11 Case Study
9.1 Introduction
In the previous unit, we discussed about system engineering wherein we
described the three types of computer systems engineering, namely,
hardware engineering, software engineering and human engineering. We
also discussed about system analysis and analysed the specifications of
system architecture.
In this unit, we will revisit requirement analysis in software engineering,
study various analysis principles and the scope of communication in
software engineering. We will also analyse the problem areas and
techniques of communication. We will discuss the importance of software
prototyping and various prototyping methods. The need for Software
Requirements Specification (SRS) will be reiterated, and we will also study
how the specification is reviewed.
Sikkim Manipal University
B1965
Software Engineering
Unit 9
The unit will enable us to analyse the requirements of both the developer
and the user using various principles. We create prototypes or provide the
specification documentation to check the requirements.
Objectives:
After studying this unit, you should be able to:
Software
design
Software
System
requirement
engineering
analysis
B1965
Software Engineering
Unit 9
B1965
Software Engineering
Unit 9
B1965
Software Engineering
Unit 9
Review This is the last task performed under the analysis phase.
Here, we review and validate the requirements detailed in the SRS. The
main purpose of this task is to ensure the presence of all the
requirements in the SRS document. We must perform a critical review of
the requirements specification. Usually, a group of people including
representatives of the client performs this task.
Self-Assessment Questions
1. Requirement analysis is one of the tasks performed under the
__________ phase of software engineering.
2. The software requirement analysis links the gap between software
design and system engineering. (True/False)
3. ______________ for analysis is vital in recognising the problem and
confirming it.
9.3 Communication
In the previous section, we had an overview of one element of successful
software development, Requirement Analysis and its tasks. In this section,
we will discuss about another important element of successful software
development, namely Communication.
Communication helps us to gather and form relevant information, share
knowledge and create functioning products. Communication provides better
vision of the processes and products than a program or code.
9.3.1 Problem areas
As we are discussing about communication, let us have an overview of the
problematic areas associated with it.
You might have seen that an individual works in one or more projects that
are carried out in an organisational framework. Communication is very
Sikkim Manipal University
B1965
Software Engineering
Unit 9
important for teams that are distributed and also for co-located interorganisational associations between various projects.
Software engineering and humancomputer interaction are the two
disciplines that lack communication, despite the fact that these two
disciplines work simultaneously on different software projects on a daily
basis. In both these disciplines, different terminologies are used for the
same tasks. In many cases, loss of efficiency takes place because of the
highly overlapping functions performed by engineers in these two
disciplines, often performed at twice the cost where the functions that can
be performed by only one person are performed by two or more persons.
Today, we all have acknowledged that the problems in communication are
the main reasons behind the delay and failure of software projects. As
extensive communication for conveying information both within the
development team and with the different stakeholders is expensive and time
consuming, therefore one-way communication is opted for in the form of
specification documents (such as SRS). Some people argue that this is an
ineffective form of communication as documentation does not clarify doubts
and misunderstandings.
Another communication problem that we notice is the presence of
organisational barriers that restrict communication among the development
teams. For example, in conventional software engineering, the processes
and functions to be carried out by various groups of developers/
programmers are classified into several phases. This can restrict the
effective and on-time communication among the groups working in different
phases.
If we try to solve these problems, we can successfully complete our
software projects on time and deliver the products to our clients without
brooking unnecessary delay if we make an attempt to solve the above
problems.
9.3.2 Communication techniques
We will now study the types of communications, namely informal and formal
communication and the associated techniques.
We can define formal communication as the communication through the
written specification documents, reports, status meetings, protocols, source
Sikkim Manipal University
B1965
Software Engineering
Unit 9
code, and so on. The techniques involved in this form of communication are
as follows:
Status meetings where the personnel presents the status of the project
results.
Formal documentation that is shared with all the team members and
associated people.
B1965
Software Engineering
Unit 9
Activity 1:
Imagine that you are the manager leading a group of software
developers.
Prepare a list of all the communication requirements that the team
member should possess.
What the basic problems you find in the communication of software
engineers?
(Hint: Refer to Section 9.3.1, Problem areas)
B1965
Software Engineering
Unit 9
Process data
Generate output
Structure of information
B1965
Software Engineering
Unit 9
Transform 1
Intermediary data
and control
Store Data/Control
Transform 2
Outputs
B1965
Software Engineering
Unit 9
Functional models
In functional models, information is transformed by software; to do so, the
software should perform three functions, namely: input, processing and
output. We should focus on functions specific to issues/problems when we
create a functional model of an application. The functional model starts with
naming the software. Along the process that is a series of repetitions more
details of the function are given. The details are given until a thorough
description of the entire system functionality is presented.
Behavioural models
The basis of the behavioural model is the response of software to the
events from the outside world (users). A computer program takes various
states (such as wait, compute, print), which can be externally observed, and
the state changes only when an event occurs. For example, software
continues to be in wait state until:
The model becomes the vital point for review and thus provides solution
to determine the completeness, consistency and correctness of the
specifications.
The model becomes the base for design; the required representation of
the software that can be mapped into an implementation aspect is given
to the designer.
B1965
Software Engineering
Unit 9
System
configuration
Sensor
event poll
SafeHome
software
Check type
of event
SensorActivate/
Deactivate
Sensors to
monitor
Activation
of alarm
function
Interaction
with
user
Activate
alarm
(sound)
Call dial
phone
number
B1965
Software Engineering
Unit 9
SafeHome software
System
Configuration
Sensors to
monitor
Interaction with
user
Horizontal Partitioning
B1965
Software Engineering
Unit 9
User services that are difficult to use or confusing can be detected and
corrected.
The prototype offers basis for writing the specification for a production
quality system.
B1965
Software Engineering
Unit 9
B1965
Software Engineering
Unit 9
Self-Assessment Questions
11. ____________ is a graphical user interface design tool for Microsoft
Windows that can be used for rapid creation of demonstration
prototypes excluding any coding or scripting.
12. The advantage of ___________ is the ability to produce a completely
working prototype that acts as a real object even if some real and
definite functionality is being simulated with false data.
13. 4GT stands for ___________.
B1965
Software Engineering
Unit 9
B1965
Software Engineering
Unit 9
B1965
Software Engineering
Unit 9
1. Before review
o
2. During review
o
Limit debate and rebuttal issues are noted down for later
discussion.
3. After review
o
Do given goals and objectives for software remain consistent with the
system goals and objectives?
B1965
Software Engineering
Unit 9
Table 9.1: Checklist for SRS
Serial
no.
Yes/
No
1.
2.
3.
4.
5.
Remarks/Co
mments
B1965
Software Engineering
Unit 9
9.7 Summary
Let us now recapitulate the important concepts discussed in this unit:
B1965
Software Engineering
Unit 9
9.8 Glossary
CASE tool: It is a software tool, like a design editor or a program debugger,
which is used to support an activity in the software development process.
Human factors: Human factors are also called ergonomics. It is the study
of how humans act physically and psychologically in relation to particular
environments, products or services.
User interface design: The process of designing the method in which the
system users can access the system functionality and the information
generated by the system is displayed.
Validation: The method of checking that the system meets the
requirements and expectations of the client is validation.
Verification: The method of checking that the system meets its
specification is verification.
9.10 Answers
Self-Assessment Questions
1. Analysis
2. True
3. Communication
4. Communication
5. Problems
6. Informal
7. False
8. Response
Sikkim Manipal University
B1965
Software Engineering
Unit 9
9. Essential
10. Functional
11. Design studio
12. Development tools
13. Fourth generation technique
14. Examination
15. SRS
16. True
17. False
Terminal Questions
1. (Refer to Section 9.2 for further information.)
2. (Refer to Section 9.3.1 for further information.)
3. (Refer to Section 9.4 for further information.)
4. (Refer to Section 9.5 for further information.)
5. (Refer to Section 9.5.1 for further information.)
6. (Refer to Section 9.6 for further information.)
B1965
Software Engineering
Unit 9
http://www.itswtech.org/Lec/Rand%28SoftwareEng%29/Software%20
Engineerin%20%20%204.pdf (Retrieved on 15th May 2012)
B1965
Software Engineering
Unit 10
Unit 10
Structure:
10.1 Introduction
Objectives
10.2 Software Design
Design concepts
10.3 Design Process
Stellar software design process
10.4 Design Fundamentals
Principles of design
10.5 Modular Design
Advantages and Disadvantages
10.6 Data Design
10.7 Architectural Design
Advantages of architectural design
10.8 Procedural Design
10.9 Design Documentation
Guidelines for improving design documentation
10.10 Summary
10.11 Glossary
10.12 Terminal Questions
10.13 Answers
10.14 Case Study
10.1 Introduction
In the previous unit, we studied analysis concepts and principles, wherein
we described the scope of requirement analysis and various analysis tasks,
importance of communication and different analysis principles. We also
discussed the importance of software prototyping and various prototyping
methods and tools, revisited software requirements specification and learnt
about specification review.
In this unit, we will discuss about software design and its aspects, the
design process and fundamentals and different design methods such as
modular design, data design, architectural design and procedural design.
B1965
Software Engineering
Unit 10
We will also analyse design documentation and learn some guidelines that
we need to follow while preparing the design documentation.
This unit will enable us to analyse the importance of software design, which
is the base for all the software engineering, and the steps to follow in order
to develop an appropriate design. This unit will familiarise you with the
concept of various design methods and their advantages such as how the
architectural design helps to develop structural model, subsystem
decomposition model, and so on. This unit also presents how the design
documentation should be developed which is a means to communicate and
record.
Objectives:
After studying this unit, you should be able to:
describe software design
explain the design process and its fundamentals
demonstrate modular design and data design
illustrate architectural design and procedural design
briefly explain design documentation
B1965
Software Engineering
Unit 10
and specified. The design is followed by generating code and testing of the
design.
Let us see the flow of software design model in Figure 10.1.
B1965
Software Engineering
Unit 10
Self-Assessment Questions
1. Which principle is used to separate one class from the actual
implementation of its dependencies?
Sikkim Manipal University
B1965
Software Engineering
Unit 10
Illustrate the architectural structure that has been developed using clear
and understandable design patterns. These design patterns are
composed of components that display good design characteristics, and
can be implemented in an evolutionary method. This will make
implementation and testing easy.
B1965
Software Engineering
Unit 10
B1965
Software Engineering
Unit 10
equal to users more than getting feedbacks from the users. This helps
to sort out many issues.
6. To be ready to solve defects of character This is the sixth step of
the design process. This step specifies how a system should be
developed. We will need to develop the system in such a way that it
can accept changes without affecting the rest of the system.
7. Take help This is the seventh step of the design process. This step
talks about how designers should take help. It is always preferable to
ask for help from related people or other sources. There is no rule that
one has to only listen to the feedback given after reviewing. The
developers can take an extra step by their own.
8. Prepare a list of all the users who have been affected and then
their lives can be made better This is the eighth step of the design
process. This step specifies how to handle the issues. We can take this
step to scale from functional to reliable, then from usable to convenient
and finally agreeable to meaningful. The developer should be able to
assess where he has failed. This step is extremely difficult.
9. Make direct damages This is the ninth step of the design process.
This step talks about how a designer should act when sufficient
feedback is not obtained. It is difficult to get feedback from users. If
unable to deliver an improvement, it is better to prepare for the worst.
Always make failures consciously and undertake testing.
10. Continue the inventory This is the tenth step of the design process.
This step talks about the prior tasks of design. Usability testing is not a
one-time event but it is a cycle. Always observe, analyse and then
design.
11. Realise that without users, it does not matter This is the 11th step
of the design process. This step specifies how the attitude of
developers should be. Usability testing is not only important for users
but also equally important for the developers, as it is continuously
improved by developers.
12. Pay it forward This is the 12th step of the design process. A number
of resources are present in the software community for offer various
courses that can be learned.
Sikkim Manipal University
B1965
Software Engineering
Unit 10
Self-Assessment Questions
4. The software design process does not encourage good design through
the application of fundamental design principles, systematic
methodology and thorough review. (True/False)
5. ________ is the first step in stellar software design process.
6. The blueprint illustrates a basic _________ view of the software.
B1965
Software Engineering
Unit 10
B1965
Software Engineering
Unit 10
software system is also important. If the architectural vision is weak then the
system fails though it is well designed. If the architect has a clear vision of
the software and implements compliance then the project becomes
successful.
Fourth Principle: What is produced will be consumed/used by
others.
According to this principle, a product developed is used, maintained and
documented by the users/clients, to understand the system. A product
should be developed such that the user should understand the
specifications,
design and
implementation.
Always
keep the
implementations in mind while designing. The code should be written with
concern for the individuals who maintain and extend the system. The code
developed is tested and debugged by the testers. If the work of testers is
made easier then further value is added to the system.
Fifth Principle: Be open to the future.
As per this principle, the system has more value if it has extensive lifetime.
In the present generation computing environments, the specifications of
hardware and software change rapidly and become outdated very fast. The
lifetime of software is measured in months. However, software that is truly
and industrially strong should last longer. To achieve that kind of system,
the system should be able to adapt to all changes. Systems that adapt
successfully are those that have been designed from the beginning to get
adapted easily. The systems should be created such that they solve all the
problems not just a particular problem. This results in a system that can be
reused entirely.
Sixth Principle: Plan in advance for reuse.
According to this principle, time and effort can be saved by reusing the
developed software. The reuse of programs and designs has been made
possible due to the use of object-oriented technologies. Various methods to
realise reuse at every phase of the system development process are
available. Communicating about the scope of reuse to others in the
organisation is vital. This principle also states that planning ahead for reuse
decreases the cost and increases the value of both the reusable elements
and the systems into which they are incorporated.
B1965
Software Engineering
Unit 10
Meyer [MEY88]
B1965
Software Engineering
Unit 10
B1965
Software Engineering
Unit 10
B1965
Software Engineering
Unit 10
Self-Assessment Questions
13. Data design recognises the program elements that function on
_______ data structures.
14. One of the data specification principles is to create a ___________ to
describe data and program design.
15. ________ should support conceptual data types is another data
specification principle.
B1965
Software Engineering
Unit 10
B1965
Software Engineering
Unit 10
Activity 2:
Client-server is a popular distributed architecture. Server modules offer
services to client modules, and clients and servers exist on different
machines. An example would be a railway reservation system where
the booking clerk can view details that are essentially stored in the
server.
You are required to identify at least three other areas where client-server
can be observed.
(Hint: Client-server architecture.section No. 10.8 )
B1965
Software Engineering
Unit 10
Self-Assessment Questions
19. In bottom-up coding approach, the main module is programmed and
implemented, and goes to lower level in the hierarchy. (True/False)
20. All the process is recorded in the _______________ to help the
developers and users understand the process.
21. The _______ principle makes it easy to maintain if there is a change in
the structure or process.
B1965
Software Engineering
Unit 10
B1965
Software Engineering
Unit 10
B1965
Software Engineering
Unit 10
B1965
Software Engineering
Unit 10
meeting with the editor is necessary. It becomes easier to deal with issues
when they occur during the early drafts. The main aim of editing is to get the
best design developed and reach the audience.
Self-Assessment Questions
22. ______________ is the final outcome of the design process.
23. After the documentation, the draft need not be reviewed and edited.
(True/False)
24. The needs of the audience should be addressed by writing _______
design documentation.
10.10 Summary
Let us recapitulate the important concepts discussed in this unit:
10.11 Glossary
Adobe FrameMaker: It is an application for desktop publishing and help
authoring. This is published by Adobe Systems.
Sikkim Manipal University
B1965
Software Engineering
Unit 10
10.13 Answers
Self-Assessment Questions
1. Dependency inversion principle
2. True
3. Orthogonal code
4. False
5. Admit that there is a problem
6. Overall
7. True
8. Fifth
9. Vision
10. Modular
Sikkim Manipal University
B1965
Software Engineering
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Unit 10
True
Modular design
Logical
Data glossary
Language
Data design
Major structural elements
True
False
Documentation
Use of information hiding
Design Documentation
False
Effective
Terminal Questions
1. (Refer to Section 10.2 for further information.)
2. (Refer to Section 10.3 for further information.)
3. (Refer to Section 10.4 for further information.)
4. (Refer to Section 10.5 for further information.)
5. (Refer to Section 10.6 for further information.)
6. (Refer to Section 10.7 for further information.)
7. (Refer to Section 10.8 for further information.)
8. (Refer to Section 10.9 for further information.)
B1965
Software Engineering
Unit 10
returned within 36 hours. The company has more than 8,000 members. The
business operations are as follows.
1. A person pays Rs.4,500 for 1 year and receives membership card after
filling in the form.
2. When a member wants a DVD, the member visits the branch and
requests for their choice. If it is available, it is given. If it is not present
then the member has to fill the reservation slip. The branch manager
handles all these situations.
3. If the DVD is collected and returned within 36 hours, an extra charge of
Rs.15 per hour is collected, before the next DVD is issued to the
member.
The method of returning the DVD is the member has to drop the DVD in a
drop box with the return coupon filled, which includes the membership
number, time of return and date. The staff regularly checks the drop box and
places back the DVD in its shelf. All titles are bar coded with complete data
about the DVD and main attributes such as language, rating and others.
The companys policy is to scrap the DVD if it is issued more than 60 times,
and new purchase of the DVD is automatically made. The basic systems of
registration, accounting, billing and recovery are functioning well. The
systems are independent. The systems are not integrated and decisions are
made based on summary of month end issued by individual system head.
Every branch has five desktops and a data server to meet transaction
processing and accounting. The management wants to take up the following
actions to improve the revenue.
1. Service to member is quicker and effective.
2. Titles are present when asked by the member.
3. The member should be able to select the title, check its availability and
make a request for home delivery.
4. Reservation system to book the title.
5. Improved accounting and analysis system should be set up for recovery
of membership fees, overdue, extra charges and others.
6. The company wants all the branches to be networked to facilitate
quicker movement of DVDs and for members to get their choice of titles
in less duration.
B1965
Software Engineering
Unit 10
Discussion Questions:
1. Analyse the problems of the company.
2. Develop a software system solution to overcome the issues.
References/E-References:
http://www.computerworld.com/s/article/9049262/12_steps_to_stellar_s
oftware_design (Retrieved on 15th May 2012)
http://www.cc.gatech.edu/classes/AY2000/cs3802_fall/Lecture6/index.ht
m (Retrieved on 15th May 2012)
http://www.c2.com/cgi/wiki?SevenPrinciplesOfSoftwareDevelopment
(Retrieved on 15th May 2012)
B1965
Software Engineering
Unit 11
Unit 11
Structure:
11.1 Introduction
Objectives
11.2 Software Testing Fundamentals
Testing objectives
Test information flow
Test case design
11.3 White Box Testing
11.4 Control Structure Testing
11.5 Black Box Testing
11.6 Testing Real-Time Systems
11.7 Automated Testing Tools
11.8 Summary
11.9 Glossary
11.10 Terminal Questions
11.11 Answers
11.12 Case Study
11.1 Introduction
In the previous unit, we discussed about software design and its aspects,
the design process and fundamental and different design methods such as
modular design, data design, architectural design and procedural design.
We also analysed the design documentation and learnt some guidelines to
follow while preparing the design documentation.
In this unit, we will discuss about software testing fundamentals and its
objectives. We will analyse the process of test information flow and case
design. We will also discuss various testing methods such as white box
testing, black box testing and control structure testing. We will also discuss
briefly about various methods of testing real-time systems and various kinds
of automated testing tools.
This unit will enable us to use an appropriate method for software testing,
and the manner in which that particular method will help us in conducting
successful testing.
Sikkim Manipal University
B1965
Software Engineering
Unit 11
Objectives:
After studying this unit, you should be able to:
describe software testing fundamentals
elaborate white box testing
explain black box testing
briefly discuss about control structure testing
describe the testing of real-time system
list out the automated testing tools
B1965
Software Engineering
Unit 11
B1965
Software Engineering
Unit 11
Expected results
Software configuration
Test
results
Testing
Evaluation
Errors
Debug
Corrections
Test configuration
Error rate
data
Reliability
Model
Predicted reliability
Condition to be
tested
Likely output
B1965
Software Engineering
Unit 11
B1965
Software Engineering
Unit 11
any time after the code is developed; it is a good practice to carry out the
test during the unit testing phase. White box testing is carried out to:
Validate code whether the code implementation follows intended design.
Validate applied security functionality.
Discover usable vulnerabilities.
Let us understand the requirements of white box testing now.
The basic requirement is to comprehend and analyse available design
documentation, source code and other related development artefacts.
The tester should think like an attacker for creation of tests and ensure
that he breaks apart the code in order to identify uncovered errors.
The testers should know the various tools and techniques present for
white box testing, so that they can perform testing effectively.
We will now briefly discuss the white box testing process shown in Figure
11.2.
Inputs
Activities
Outputs
As per Figure 11.2, white box testing process includes three components.
Inputs The inputs to the white box testing include:
o
B1965
Software Engineering
Unit 11
Test strategy This is the first step developed on the basis of risk
analysis in planning white box testing. The test strategy is developed
to clarify major activities involved, key decisions made and
challenges faced in the testing effort.
Test plan The aim of the test plan is to organise the subsequent
testing process. The test plan includes test areas covered, test
technique implementation, test case and data selection, test cycles,
test results validation and others.
B1965
Software Engineering
Unit 11
B1965
Software Engineering
Unit 11
McCabe
B1965
Software Engineering
Unit 11
Source/Supply
a
Sink/Destination
bd
bc
bc + ad
bc + ad
ac
{ac, bd} is not a basis set, as there is no way to construct the path ad. The
set {ac, ad, bd} is basis set. Basis sets are not unique, and hence a flow
graph can have more than one basis set.
We can consider the decisions as independent in the basis path method. If
the decision is taken at the source node, it is irrespective of the impact
taken on a node further down the graph.
B1965
Software Engineering
Unit 11
Self-Assessment Questions
5. Structured testing is applicable to large program. (True/False)
6. Test strategy is a management activity. (True/False)
7. The first step in basis path testing is to compute _____.
B1965
Software Engineering
Unit 11
Self-Assessment Questions
8. Control structure testing helps to improve the quality of white box
testing. (True/False)
9. Branch testing handles the implicit paths that result from _______.
10. Loop testing should be directed to modules with nested if and loop
statements. (True/False)
B1965
Software Engineering
Unit 11
Self-Assessment Questions
11. Glass-box testing is another name for _________ testing.
12. _____________ is a software testing technique that partitions the input
data of the software unit into parts of data from which the test cases
can be drawn.
13. Regression testing is a _____________ testing method.
B1965
Software Engineering
Unit 11
B1965
Software Engineering
Unit 11
errors are likely to occur. Also, the tasks that interact through a message
queue or data store are tested to discover errors in the sizing of these
data storage fields.
System testing This is the fourth step of real-time software testing.
The complete range of system tests are conducted on the integrated
hardware and software. This is done in an attempt to find out errors in
softwarehardware interface. Interrupts are mainly processed by realtime systems. Thus, testing the handling of these Boolean events is
important. The tester develops a list of all probable interrupts using state
transition diagram and control specification, and also the consequential
processing that arises as a result of interrupts.
A new framework for testing real-time systems has been proposed. The
steps of this framework are as follows:
A method for generating test sequences is proposed.
The constraints that guarantee the execution of test sequences are
determined.
Next, a procedure and test architecture to execute test sequences is
proposed.
Self-Assessment Questions
14. The errors are discovered in logic and _______in task testing.
15. The behaviour of the system model and the executable software is
compared in inter-task testing. (True/False)
16. All probable interrupts are developed using _________ and control
specifications.
Activity 2:
Suppose you are assigned the task of testing real-time system in your
organisation. Write the steps you will follow for the same.
(Hint: Strategies of real-time testing. Refer section No. 11.6)
B1965
Software Engineering
Unit 11
It is very important to use the appropriate testing tool at the right time in a
software project. The testing tool increases the efficiency of testing by
automating processes as it helps to increase communication, promote best
practices and reuse tests and test data. We can describe automated testing
as the process of running test cases where manual involvement is not
required to run each test case. Different tools are available for automated
testing process including commercial products, in-house tools, open source
tools and others. Open source tools are not updated regularly and do not
support present technology, and are less expensive. Commercial products
are based on present technology and trends. In-house tools are developed
for particular operations by the software organisation.
Let us have a quick overview of some available automated testing tools.
Automated Test Designer (ATD)
The tool is a Windows client and/or server tool intended to create test
cases, t data and automated test scripts.
B1965
Software Engineering
Unit 11
B1965
Software Engineering
Unit 11
Self-Assessment Questions
17. It is very important to use the appropriate testing tool at the right time in
a software project. (True/False)
18. Commercial products for automated testing are based on
___________.
19. Which tool computerises the unit testing of embedded software written
in C?
Activity 3:
Prepare a list of commonly used automated testing tools.
Hint: Refer section No. 11.8
11.8 Summary
Let us recapitulate the important concepts discussed in this unit:
There are three important kinds of testing white box testing, black box
testing and control structure testing.
Real-time systems, which are growing more and more complex, need
their own strategies for testing like task testing, behavioural testing,
inter-task tasking and system tasking.
helps
in
ensuring
B1965
softwares
security
and
Software Engineering
Unit 11
11.9 Glossary
Acceptance testing: It is the testing performed on a system before the
system is delivered to a live environment.
Beta testing: It is the testing of a re-release of software product carried out
by customers.
Branch testing: It is a kind of testing where all branches in the code are
tested at least once.
Combinatorial software testing method: It addresses generation of test
cases for issues that involve multiple parameters and combinations.
Cyclomatic complexity: Software metric that is used to indicate the
complexity of the program. It calculates the number of linearly independent
paths through a source code.
Debugging: It is the process of identifying and fixing bugs in a software
code or hardware device.
Functional testing: It is a type of user interface testing where functionality
of application is tested.
Integration testing: It is a development process where the program units
are combined and tested as groups.
Interrupt processing: An event that changes the sequence in which the
processor executes instructions is called an interrupt. To handle interrupt,
methodical procedures are implemented. This activity is called interrupt
processing.
Regression testing: Retesting of an earlier tested program following
alterations that faults are not introduced or exposed as a result of
modifications made.
Stubs: Stubs are the name given to replacements for unavailable
components that the components being tested will call as part of the test.
System testing: In system testing, various tests are carried on system to
find out functionality or to find out problems.
B1965
Software Engineering
Unit 11
11.11 Answers
Self-Assessment Questions
1. Error free
2. Arrangement
3. Testable
4. Program
5. False
6. True
7. Program graph
8. True
9. Compound conditionals
10. False
11. Black box
12. Equivalence partitioning
13. Black box
14. Function
15. False
16. State transition diagrams
17. True
18. Present technology and trends
19. Hitex Development Tools GmbHTessy
Terminal Questions
1. (Refer to Section 11.2 for further information.)
2. (Refer to Section 11.3 for further information.)
3. (Refer to Section 11.4 for further information.)
4. (Refer to Section 11.5 for further information.)
5. (Refer to Section 11.6 for further information.)
B1965
Software Engineering
Unit 11
B1965
Software Engineering
Unit 11
With the use of above two described exploits, white box testers showed that
an attacker could obtain payments from unknowing customer to the
organisation account and then redirect the transaction from the organisation
account to a non-organisation account. The two bugs together form a
severe crack of security with major business impact.
The above discussed scenario shows that risk analysis produces businessrelated results and addresses specific exposed areas of the software.
Discussion Questions:
1. Explain the scope of white box testing.
2. How are the bugs identified?
References/E-references:
http://www.answers.com/topic/black-box-testing
http://www.computer.org/portal/web/csdl/doi/10.1109/RTCSA.
2000.896424
B1965
Software Engineering
Unit 12
Unit 12
Structure:
12.1 Introduction
Objectives
12.2 A Strategic Approach to Software Testing
Verification and validation
Organising software testing
A software testing strategy
Criteria for completion of testing
12.3 Strategic Issues
12.4 Unit Testing
Unit test considerations
Unit test procedures
12.5 Integration Testing
Top-down integration
Bottom-up integration
Regression testing
Smoke testing
Comments on integration testing
Integration test documentation
12.6 Validation Testing
Validation test criteria
Configuration review
Alpha and beta testing
12.7 System Testing
Recovery testing
Security testing
Stress testing
Performance testing
12.8 The Art of Debugging
The debugging process
The psychological consideration
Debugging approaches
12.9 Summary
12.10 Glossary
12.11 Terminal Questions
12.12 Answers
12.13 Case Study
Sikkim Manipal University
B1965
Software Engineering
Unit 12
12.1 Introduction
In the previous unit, we discussed about software testing fundamentals and
objectives. We also analysed the process of test information flow and case
design. We discussed various testing methods such as white box testing,
black box testing and control structure testing. We also studied various
methods of testing real-time systems and various kinds of automated testing
tools.
In this unit, we will study about strategic approach to software testing and
strategic issues. We will also discuss about different kinds of testing such as
unit testing, integration testing, validation testing and system testing. We will
also study the art of debugging along with its process and approaches.
This unit will enable us to get an overall view of software testing strategies
and approaches. It will also enable us to carry out testing successfully by
using various testing methods. It will also enable us to carry out debugging
correctly.
Objectives:
After studying this unit, you should be able to:
define strategic approach to software design
describe strategic issues
explain unit testing and integration testing
describe validation testing and system testing
elaborate the art of debugging
B1965
Software Engineering
Unit 12
The project manager, software engineers and testing experts develop the
strategy. Testing is very important in the life cycle of the software. Testing
needs more project effort than any other software engineering activity. If it is
carried out unsystematically, it leads to wastage of time and effort, and the
errors will escape from the tester without being detected. Later on, they can
surface as defects after delivery to the customer, which can not only result
in huge financial losses that will have to be rectified, but also cause quite a
bit of embarrassment for the software company.
Let us now have a brief discussion about some aspects of software testing
12.2.1 Verification and validation
Let us first discuss about verification and validation.
Validation and verification are important stages in testing. Validation is
basically checking whether the developers are developing the right product
or not. The software should function in the manner the user wants.
Verification is checking whether or not the developers are developing the
product right. The software should match its provided specifications.
Validation and verification should be implemented at every stage in the
software process.
The objectives of validation and verification are to:
Discover defects in the system.
Evaluate the system to check whether it is usable in operational
situations or not.
12.2.2 Organising software testing
We will now describe how to organise software testing, with the help of the
following steps:
1. The software engineer analyses models, and then develops a computer
program and its documentation. Testing is destructive according to the
Sikkim Manipal University
B1965
Software Engineering
Unit 12
B1965
Software Engineering
Unit 12
B1965
Software Engineering
Unit 12
B1965
Software Engineering
Unit 12
B1965
Software Engineering
Unit 12
B1965
Software Engineering
Unit 12
Activity 1:
Consider a source code and document all the possible test cases for unit
testing in your organisation.
(Hint: Certain errors are identified by test cases. Refer Section No. 12.4)
B1965
Software Engineering
Unit 12
In Figure 12.1, you can notice that the sequence of integration of depth-first
approach is (Module 1, Module 2, Module 4), Module 6, Module 8,
Module 5, Module 7 and Module 3; the sequence of integration of breadthfirst approach is (Module 1, Module 2, Module 3), (Module 4, Module 5),
Module 6, Module 7 and Module 8.
12.5.2 Bottom-up integration
After top-down integration testing, we will now study about bottom-up
integration testing.
The bottom-up integration test commences at the atomic module level. The
lowest levels in the program structure are atomic modules. In this approach,
stubs are not needed as modules are integrated from bottom-up, and
processing needed for modules which are subordinate to a given level is
always present. Let us have a look at the steps followed in bottom-up
integration:
1. Combine low-level modules forming clusters which execute particular
software sub-function. Clusters are also called builds.
2. Write control program to co-ordinate test case input and output.
3. Test the build.
Sikkim Manipal University
B1965
Software Engineering
Unit 12
B1965
Software Engineering
Unit 12
B1965
Software Engineering
Unit 12
B1965
Software Engineering
Unit 12
B1965
Software Engineering
Unit 12
Activity 2:
Consider a source code of your choice, modify the implementation and
carry out regression testing. Generate the document after testing.
(Hint: Regression testing steps, Documentation criteria. Refer section
No. 12.5)
B1965
Software Engineering
Unit 12
B1965
Software Engineering
Unit 12
B1965
Software Engineering
Unit 12
B1965
Software Engineering
Unit 12
B1965
Software Engineering
Unit 12
The debugging process includes many steps to fix the detected error and
check that the error does not appear again. The goal is to detect, classify,
fix and verify the error. The following are the five steps in the debugging
process in software.
1. The first step is to identify the problem. We check the presence of bug,
and describe the problem caused by the bug and verify what the code is
supposed to do.
2. The second step is to collect information. We gather all the comments
and feedback from the users and note down the personal observations.
We collect the test cases and also the environmental information.
3. The third step is to assess the problem and classify it. The theory behind
the causes of the problem should be developed. The code should be
reviewed. The problem is classified into categories such as syntax
errors, memory problem and others.
4. The fourth step is to fix the root cause of the problem or bug after
classifying the problem.
5. The fifth and final step is to test the software again to verify the fix.
12.8.2 The psychological consideration
In the previous section, we discussed about the debugging process; let us
now discuss about the psychological consideration while debugging.
Debugging ability is an inborn human characteristic. Some are good at
debugging and some are not. Shneiderman states on the human aspects of
debugging1debugging is one of the frustrating parts of programming. It
has elements of problem solving or brain teasers, coupled with annoying
recognition that you have made a mistake. Heightened anxiety and the
unwillingness to accept the possibility of errors increases the task difficulty.
Fortunately, there is a great sigh of relief and a lessening of tension when
the bug is ultimately corrected.
Though it is difficult to learn debugging, many approaches to the problem
are provided.
SHN80
B1965
Software Engineering
Unit 12
B1965
Software Engineering
Unit 12
Self-Assessment Questions
16. The process of tracing and fixing errors in a computer software or
hardware is called __________.
17. The first step in debugging process is identifying the ______.
18. ________ method includes loading print statements into the program,
and printing the intermediate values.
12.9 Summary
Let us recapitulate the important concepts discussed in this unit:
Testing is an activity that is planned and carried out methodically. Prior
to the actual testing work, an outline for testing is defined. All the
guidelines in the outline are called the testing strategies.
Testing is a very important part of the software life cycle development.
Errors, if untraced due to inadequate testing, can surface as defects
later at the customer end, and this can lead to both financial losses and
embarrassments.
Verification and validation are two important concepts in testing.
Validation is checking whether the developers are developing the right
product or not. Verification is checking whether the developers are
developing the product right or not.
Testing, within the framework of software engineering, is done in a
series of four steps that are implemented successivelyunit testing,
integration testing, validation testing and system testing.
Debugging is a method of tracing and fixing errors in a computer
program or hardware device. The art of debugging is an important
criterion of software testing and is accomplished in five stepsidentify
the problem, collect information, assess the problem and classify it
appropriately, fix the root cause of the problem or bug and test the
software again to verify the fix.
Psychological consideration is very important during the debugging
process.
12.10 Glossary
Break point: It is a point in computer code at which execution can be held
for some time to allow manual or automated monitoring of a program.
Sikkim Manipal University
B1965
Software Engineering
Unit 12
12.12 Answers
Self-Assessment Questions
1. Each unit
2. Validation
3. False
4. Design information
5. Cost effective
6. Boundaries
7. Integration
8. Regression testing
9. Project agenda
10. Black box tests
11. False
12. Beta testing
13. Recovery testing
14. Security
15. Performance test
16. Debugging
Sikkim Manipal University
B1965
Software Engineering
Unit 12
17. Problem
18. Brute force
Terminal Questions
1. (Refer to Section 12.2 for further information.)
2. (Refer to Section 12.3 for further information.)
3. (Refer to Section 12.4 for further information.)
4. (Refer to Section 12.5 for further information.)
5. (Refer to Section 12.6 for further information.)
6. (Refer to Section 12.7 for further information.)
7. (Refer to Section 12.8 for further information.)
B1965
Software Engineering
Unit 12
Discussion Questions:
1. What were the steps taken to solve the issues of the organisation?
2. List out the benefits which the organisation gained.
References/E-References:
E-References:
http://www.mobilein.com/WhitePaperonUnitTesting.pdf
http://www.exforsys.com/tutorials/testing/integration-testingwhywhathow.htmlhttp://www.aptest.com/testtypes.html
B1965
Software Engineering
Unit 13
Unit 13
Software Verification
Structure:
13.1 Introduction
Objectives
13.2
13.3
13.4
13.5
13.6
13.7
13.8
13.9
13.10
13.11
Code Reading
Static Analysis
Symbolic Execution
Proving Correctness
Code Inspection or Reviews
Summary
Glossary
Terminal Questions
Answers
Case Study
13.1 Introduction
We studied about strategic approach to software testing and strategic
issues in the previous unit. We also discussed about different kinds of
testing such as unit testing, integration testing, validation testing and system
testing. Furthermore, we also studied the art of debugging, its process and
approaches.
In this unit, we will study about the different techniques of software
verification such as code reading and the concept of static analysis. We will
also discuss about symbolic execution. We will also analyse the concept of
proving correctness. Finally, we will study about code inspection.
This unit will enable you to carry out software verification successfully by
analysing the verification techniques such as code reading, static analysis,
symbolic execution, proving correctness, code inspection and provide
guidelines to conduct software verification.
Objectives:
After studying this unit, you should be able to:
describe code reading
explain static analysis
describe about symbolic execution
Sikkim Manipal University
B1965
Software Engineering
Unit 13
B1965
Software Engineering
Unit 13
abstraction. The code reading process continues till the end of the module is
reached. The abstract behaviour of the module will be known to the reader
by the time the reader reaches the end of the module. Then, we compare
the specifications to determine the disagreement.
Code reading is very efficient because it has the ability to detect errors that
cannot be detected by testing. As reading is an approach of stepwise
abstraction, the code should also be programmed in a method favourable to
this process. This results in producing well-structured programs. Code
reading is performed to improve the software code, without completely
changing the program or with lesser disruption in the present functionality of
the program. This also focuses on inspecting the code and eliminating
errors.
Let us have a look at the general conventions we should follow while
reading the software code. The steps are as follows:
1. The first convention is to find out what is important. Importance should
be given to find out graphical techniques italics or bold, and positions
start and end of the software code while reading the code. The
necessary comments should be highlighted in the introduction or at the
end of the code. The level of details should be according to the
requirement of software code.
2. The second convention is to read what is important. The reading should
be done with the intention to check syntax and structure like loops,
brackets and functions instead of non-essentials like name of the
developer who has developed the code.
Self-Assessment Questions
1. The abstraction of module is the first step in the _____ process.
2. Code reading is performed to improve the software code to completely
change the program or with disruption in the present functionality of the
program. (True/False)
3. Code reading is considered efficient because it has the ability to detect
______ that cannot be detected by testing.
B1965
Software Engineering
Unit 13
Activity 1:
Consider that you are a reviewer and you have to conduct a code reading
process for a program of your choice. Find out the conventions you will
follow for the same.
(Hint: Conventions.)
B1965
Software Engineering
Unit 13
Let us now briefly discuss about some static analysis tools. We use three
types of static analysis tools, and they are as follows:
All the static testing tools have the ability to document and they list out all
the tests conducted. They conduct comparisons of test output to see
differences between expected and actual results.
Self-Assessment Questions
4. _________ is defined as analysis of programs by sequentially
analysing the program text without executing the program.
5. Static analysis is used to verify contraventions of _______ which are
not detected by standard compilers.
6. ________ tools isolate particular user requirements and suggest test
cases that will exercise the requirements.
B1965
Software Engineering
Unit 13
Activity 2:
Prepare a list of software analysis tools. Give examples of the companies
using those tools.
(Hint: Refer to Section 13.3, Static Analysis.)
B1965
Software Engineering
Unit 13
B1965
Software Engineering
Unit 13
B1965
Software Engineering
Unit 13
B1965
Software Engineering
Unit 13
The question of scaling up to large systems remains open and the levels
of exertion are high.
For software and system technology, the ability to develop software systems
that can be applied to a large scale and strive for correctness is of high
importance. It is not possible to assert correctness for complex,
heterogeneously constructed systems without the help of mathematical
methods. The quality assurance and evidence of correctness will become
increasingly important in the future years, when the demands for evidence
of a dependable software product will become part of the established
compulsory prerequisites. The correctness has to be proved for all steps
during development. The two benefits of attempting the proof are as follows:
If failed, the proof may be a very effective tool for error detection,
particularly if carried out at the high design level.
B1965
Software Engineering
Unit 13
code is responsible for its reliability, thus making the formal proof an
economically feasible task. It basically aims towards analysing objects that
are supposed to be correct or close to being correct. Sometimes individuals
think that proving correctness of program should be reserved for parts of the
program that are most likely to be incorrect and testing may be instrumental
in the identification of those parts.
Self-Assessment Questions
10. We can define _____________ as the process of demonstrating the
correctness of the program, by proving the codes consistency with its
specification.
11. Proving correctness of the program is the only reliable technique to
show the programs correctness. (True/False)
12. Proving correctness technique uses ___________ and mathematical
models to prove the correctness of a program without executing the
program.
B1965
Software Engineering
Unit 13
B1965
Software Engineering
Unit 13
B1965
Software Engineering
Unit 13
corrections are effective and that no other errors have been introduced
into the software.
In the inspection checklist, we categorise all the errors into major and minor
errors. If an error results in problems and the user comes to know of it later,
then the error is said to be major. Spelling errors and non-conformity with
standards are minor errors. The list of errors categorised helps us to deliver
the software to the user without missing anything and it helps us to review
all errors present in the code whenever we have less time to review and we
need to prioritize.
At the end of the code inspection meeting, decisions are taken on whether
the code should be accepted in the present form or sent back for rework.
The author makes all corrections, if the code requires rework and later the
code is compiled. The code is presented back to the moderator after the
reworked code appears to be error free. The reworked code is again
checked by the moderator. The inspection formally ends when the
moderator agrees to the sanctity of code without any conflicts.
Let us have a look at some points which we can include in the code review
checklist:
Self-Assessment Questions
13. The goal of _________ is to detect errors caused due to mistake and
incorrect programming.
14. During code inspection, the ________ translates or interprets the
operation of the code.
15. The first step of code inspection is _________.
B1965
Software Engineering
Unit 13
Activity 3:
Form a team in your organisation, categorise them as inspectors,
moderators, authors and recorders. Conduct a meeting to discuss about
issues related to software product available at your organisation. Prepare
a checklist for the same.
(Hint: Steps of code inspection, Checklist.)
13.7 Summary
Let us recapitulate the important concepts discussed in this unit:
B1965
Software Engineering
Unit 13
13.8 Glossary
Abstraction of module: It is the specification of problem that has been
extracted from the module which is essential and relevant information.
Peer reviews: It is a face-to-face discussion held between the programmer
and the reviewer.
Walk-throughs: This is an informal code analysis method. In this method,
all syntax errors are eliminated after a module is coded and compiled.
13.10 Answers
Self-Assessment Questions
1. Code reading
2. False
3. Errors
4. Static analysis
5. Local programming standards
6. Requirements-based testing
7. Symbolic execution
8. Program counter
9. Hand-execution
10. Proving correctness of a program
11. True
12. Theoretical
13. Code inspection
14. Reader
15. Planning
B1965
Software Engineering
Unit 13
Terminal Questions
1. (Refer to Section 13.2 for further information.)
2. (Refer to Section 13.3 for further information.)
3. (Refer to Section 13.4 for further information.)
4. (Refer to Section 13.5 for further information.)
5. (Refer to Section 13.6 for further information.)
B1965
Software Engineering
Unit 13
E-References:
http://openseminar.org/se/modules/184/index/screen.do (Retrieved on
18th May 2012)
B1965
Software Engineering
Unit 14
Unit 14
Structure:
14.1 Introduction
Objectives
14.2 Five Maturity Levels
Components of CMM
14.3 Key Process Areas (KPAs)
Common features
14.4 ISO 9000 Series of Standards for Quality Management Systems
14.5 Mapping ISO 9001 to the CMM
14.6 Summary
14.7 Glossary
14.8 Terminal Questions
14.9 Answers
14.10 Case Study
14.1 Introduction
In the previous unit, we studied about software verification, wherein we
studied about code reading, static analysis, symbolic execution, proving
correctness of the software and the inspection or review of code for our
software under development.
In this unit, we will study about Capability Maturity Model (CMM), which is
related to the area of software development. This model can be applied as a
generally applicable model to assist in gaining knowledge about the
process capability maturity of organisations in areas such as software
engineering, system engineering, project management, software
maintenance, risk management, system acquisition, information technology
(IT) and personnel management.
We will also study about the levels of CMM. This unit will also familiarise us
with the key process areas of CMM, wherein we will discuss about the
common features of CMM. We will have a brief discussion on the ISO 9000
series of standards for quality management. We will also analyse how to
map ISO 9001 to CMM.
This unit will enable us to use CMM for our software.
Sikkim Manipal University
B1965
Software Engineering
Unit 14
Objectives:
After studying this unit, you should be able to:
elaborate the levels of CMM for software
enlist the key process areas of CMM
briefly describe the common features of CMM
B1965
Software Engineering
Unit 14
Level 1: Initial It is the starting point for using a new process. At this level,
the company has no standard process for software development. It is
undocumented and in a state of active change, which tends to be driven in
an unplanned, uncontrolled and reactive manner by users or events. Growth
processes are rarely defined, and sound practices are often neglected to
meet unreasonable schedules. In this level, organisations lack the capability
to meet commitments consistently. No company would like to be assessed
at this level and hence, companies wait for a few years for their processes
to stabilise before they attempt to get the CMM certification.
Level 2: Repeatable As per this second level of CMM, the organisation
creates policies based on software engineering techniques and successful
prior projects. In this, we establish the basic project management
processes, which help in tracking cost, schedule and functionality. Note that
there may not be any similarity between the processes or repetition for all
projects in the organisation. Here, the groups can deal with similar projects
based on their experiences. Thus, we can say that Level 2 attempts to
develop the capabilities of project managers for the following:
o Planning attainable assurance
o Creating control of requirement baselines
This is also not a preferred level of certification for software companies.
Level 3: Defined The basis for Level 3 is the organisations set of
standard processes, which are identified and improved over time. These
standard processes are used to ascertain reliability across the organisation.
You must note that the projects create their distinct processes by the
collection of standard processes according to guidelines of the organisation.
The management of the organisation creates the objectives of the process,
and on the basis of the organisations set of standard processes, ensures
that these objectives are properly addressed.
Only relatively newer companies will announce to the world that they have
been certified at Level 3. Older, established companies would not prefer to
be in this level of certification.
Level 4: Quantitatively managed According to this level, the tasks of
monitoring and controlling an organisation's processes are performed by the
organisation itself through data collection and analysis. Accurate measures
in management can efficiently control the software development attempt. At
Sikkim Manipal University
B1965
Software Engineering
Unit 14
this level, a goal related to the quantitative quality is set by the organisation,
not only for software process but also for software maintenance. Subprocesses that considerably add to the overall process performance are
selected. We manage these selected sub-processes with the help of
statistical techniques and some other quantitative techniques.
Although software companies aspire to reach Level 5, certification at Level 4
is also a matter of pride.
Level 5: Optimising This level of CMM states that process management
comprises planned process optimisation or process improvement. This level
focuses on repeatedly improving the process performance through both
incremental and inventive technological improvements. Also, we identify the
quantitative process improvement goals for the organisation, revise them
frequently for reflecting the different business goals and use them as criteria
in managing process improvement. We measure and assess the effects of
organised process improvements against the quantitative process
improvement goals. The processes that are defined and the organisations
set of measured processes as well are targets of the improvement activities
that are assessable. Process improvements address common causes of
process difference and take the organisations processes to the next level.
They are identified, evaluated and deployed. Optimisation of the processes
that are quick, compliant and innovative is dependent on the involvement of
an authorised workforce, which is aligned with the business values and
goals of the organisation. The ability of the organisation to quickly respond
to changes and prospects is enhanced by finding ways to hone and share
learning.
As mentioned earlier, software companies endeavour to reach Level 5 as it
represents the highest certificate of process quality. The biggest benefit a
company draws from this Level 5 certification is that it can compete at par in
the global marketplace with all other established giants. It is interesting to
note that a majority of CMM Level 5 companies have their operations in
India.
14.2.1 Components of CMM
We can use a maturity model as a standard for assessment and as an aid to
analyse the maturity software process. For example, for relative assessment
of different organisations, where there is some commonality, the model can
Sikkim Manipal University
B1965
Software Engineering
Unit 14
be utilised as a base for comparison. Like other models, CMM also has
some components, which include the following.
Maturity levels We can define maturity levels as well-defined levels,
which help in achieving a mature software process.1 The five maturity levels
provide the top-level structure of the CMM. In this structure, the uppermost
(5th) level is a theoretical ideal state where the processes are methodically
managed by an arrangement of process optimisation and non-stop process
improvement.
Process capability It refers to a variety of expected results that can be
attained by implementing software process. It provides a means to foresee
the possible results to be expected from the next software project that the
organisation undertakes.
Key Process Areas (KPAs) This is an important component of CMM. We
can define KPA as a cluster of related activities that, when performed
collectively, aids to attain a set of goals considered to establish process
capability at the maturity level.
Goals This component of CMM recapitulates the key practices of a KPA
and determines whether an organisation or project has effectively
implemented it or not. The goal signifies the scope and purpose of all the
KPAs.
Common features Common features of CMM are aspects which signify
whether the implementation of a KPA is capable, and can be done
repetitively while being sustainable. We can divide it into the following five
features:
o Commitment to perform
o Ability to perform
o Activities performed
Maturity software process: CMM delineates the characteristics of a mature, capable software process.
The progression from an immature, unrepeatable software process to a mature, well-managed software
process is also described in terms of maturity levels in the model.
B1965
Software Engineering
o
o
Unit 14
Self-Assessment Questions
1. CMM is a unique model of __________ and change.
2. Software development successes are repeatable. It is significant to
create a steady environment that aids the repetition of successful
practices. (True/False)
3. At maturity Level 4, developments are concerned with addressing
special causes of ______ and providing statistical predictability of the
results.
4. Common features of CMM are aspects that indicate whether the
implementation of a key process area is effective, repeatable and
lasting. (True/False)
5. At maturity Level 5, processes are concerned with addressing frequent
causes of ________ and altering the process.
Activity 1:
Assume that you are given a project on quality management
implementing CMM in it. Prepare a list of the levels of CMM.
(Hint: The five maturity levels. Refer section no. 14.2)
B1965
Software Engineering
Unit 14
the next level. You need to think in terms of the management for the defined
results.
Let us take a look at the levels of CMM and their relative KPAs. This is
shown in Figure 14.2.
As you can see in Figure 14.2, every level except Level 1 has some KPAs,
which signifies the areas requiring improvement for their respective software
processes.
Since KPAs at Level 1 are not discrete, getting to Level 2 is often an
obstacle in moving through CMM. To get to Level 2, an organisation needs
to have procedures that begin to experience repeatable success and
similarly, you begin to eliminate your failures.
B1965
Software Engineering
Unit 14
Self-Assessment Questions
6. Performance ability describes the requirement that must exist in the
project or organisation, to execute the software process proficiently.
(True/False)
7. Segmented consumer markets are easier for companies and marketers
to target with advertising and marketing strategies. (True/False)
8. Since KPAs at Level 1 are not discrete, getting to ______ is often an
obstacle in moving through CMM.
B1965
Software Engineering
Unit 14
Activity 2:
Imagine that you have opened a new outlet of fast-food restaurant. List
the steps you would take to implement the key practices that explain the
infrastructure and performances of your restaurant.
(Hint: Key Process Areas)
manage2020.com/down/qs9000.doc
B1965
Software Engineering
Unit 14
Standards are essential for ensuring the effective operation and control of
processes, because they define the criteria required to judge the
acceptability of the process capability and product quality. The standard
propels the organisation for putting a quality management system into
action in accordance with the requisites of ISO 9001. Thus, implementation
applies to the use and operation of the management system following its
construction and integration. Also, it is relevant to the routine operation of a
system that is already created, documented and is in perpetual operation.
The following are the quality concepts addressed by these standards:
An organisation should bring about and maintain the quality of the
product or service created, so as to meet the stated or implied needs of
the purchaser.
An organisation should show commitment to its own management that
the expected quality is being achieved and sustained.
An organisation should ensure to the purchaser that the planned quality
is being, or will be, achieved in the product or service given.
The ISO 9000 standard requires the organisation to make sure that the
mandatory information for assisting the operation and monitoring of the
identified processes should be available if required.
The standard requires very few (seven) procedures. These specific,
documented procedures are required for the following:
B1965
Software Engineering
Unit 14
ISO 9001 provides the organisation with guidelines for it to decide what it
needs for the effective operation and control of its processes.
The comparison is based on an analysis of ISO 9001, ISO 9000-3, TickI and the TickIT training
materials [Lloyds 94].
B1965
Software Engineering
Unit 14
In CMM It deals with quality system activities. The methods that would
be implemented are spread throughout the KPAs in various performed
activities. The explicit events and principles that a software project
would use are specified in the software development plan described in
Software Project Planning. Software Product Engineering involves
defined tasks, and integrated and reliable performance, which syncs
directly with the ISO 9000-3 guidance for interpreting this clause.
ISO 9001 involves the suppliers quality system; it does not include the
connection between organisational support and project implementation.
ISO 9000-3 provides guidelines for applying ISO 9001 to the development, supply, and maintenance of
software.
B1965
Software Engineering
Unit 14
CMM includes all these things. ISO 9000-3, on the other hand, has two
sections on quality planning.
Clause 3: Contract Review
o
B1965
Software Engineering
Unit 14
B1965
Software Engineering
Unit 14
In CMM The specific procedures and standards used in the softwareproduction process are specified in the software development plan. The
definition and integration of software-production processes are
described at Level 2 and the tools to support these processes are
described at Level 3, and Level 4 addresses the quantitative aspect of
control, exemplified by statistical process control. However, an
organisation typically would not have to demonstrate this level of control
to satisfy this clause.
B1965
Software Engineering
Unit 14
B1965
Software Engineering
Unit 14
B1965
Software Engineering
Unit 14
Self-Assessment Questions
9. In_________, a designated manager ensures that the quality program
is implemented and maintained.
10. Process measurement is described as part of the measurement and
analysis common feature. (True/False)
11. Inspection and Testing requires that the materials be __________ or
verified before use and that in-process inspection and testing be
performed CMM.
Activity 3:
Suppose that you are working as a Quality Manager in an organisation
and you are given the responsibility of creating the strategic planning
team to monitor the performance of CMM and ISO 9001 in the
organisation. Create a PowerPoint presentation based on mapping ISO
to CMM.
14.6 Summary
Let us recapitulate the important concepts discussed in this unit:
There are five maturity levels of CMM, namely, initial level, repeatable
level, defined level, managed level and optimising level. We also
B1965
Software Engineering
Unit 14
ISO 9001 has 20 clauses which can be compared against the practices
in CMM.
14.7 Glossary
Audit: It is an official examination and verification of an organisations
performance.
Benchmarking: It refers to a standard by which something can be
measured or judged.
Business process: It is a collection of related, structured activities or tasks
that produce a specific service or product.
Maturity model: It is a method used to expand and improve an
organisations software development process.
14.9 Answers
Self-Assessment Questions
1. Organisational development
2. True
3. Process variation
4. True
5. Process differences
6. True
7. True
8. Level 2
9. Management responsibility
10. True
11. Inspected
Sikkim Manipal University
B1965
Software Engineering
Unit 14
Terminal Questions
1. (Refer to Section 14.2 for further information.)
2. (Refer to Section 14.2 for further information.)
3. (Refer to Section 14.3 for further information.)
4. (Refer to Section 14.4 for further information.)
Solution:
This research assignment cut across functions to involve professionals from
the quality, delivery and support groups at ABC Software Division. The
research findings were documented to serve as project deliverables,
produced in both English and Japanese.
o Organisations processes for implementation of CMM Levels 3, 4 and 5,
as also the best practices adopted. This included the following: definition
of all key process area (KPAs); relationship between various CMM
levels; goals, benefits and methodology for defining/refining KPAs.
o Road map for transition from ISO 9001 framework to CMM Level 5.
o Organisation structure for CMM implementation, audit process, SQA
facilitation/review process and metrics.
B1965
Software Engineering
Unit 14
Benefits:
A practitioners approach to process improvement presented with a
research focus complemented well with quality journey of ABC Software
Division.
Clarity in the process integration exercise in respect of integration of various
quality frameworks and adoption of process automation.
Significant cost-benefits accrued from the offshore execution of the research
project.
Discussion Questions:
1. What were the challenges faced by ABC Software Division?
2. What were the steps taken by the company to overcome it?
References/E-References
Burwick, Diane M. How to Implement the CMM, .Bps Pub; 2 edition
(March 20, 2001)
Paulk, Mark C., Weber, Charles V., Curtis, Bill, & Chrissis, Mary Beth.
The Capability Maturity Model: Guidelines for Improving the Software
Process, Pearson Education india, (2007)
B1965
Software Engineering
Unit 15
Unit 15
Structure:
15.1 Introduction
Objectives
15.2 Management Role
Management sponsorship
Commitments and management by fact
15.3 Process Focus
15.4 Useful Processes
15.5 Training
15.6 Risk Management
15.7 CustomerSupplier Relationship
15.8 Peer Reviews
Types of peer reviews
Peer-review process
15.9 Summary
15.10 Glossary
15.11 Terminal Questions
15.12 Answers
15.13 Case Study
15.1 Introduction
In the previous unit, we discussed about the Capability Maturity Model
(CMM) for Software, which provides software organisations with assistance
on how to achieve control of their processes for developing and maintaining
software and how to advance towards a culture of software engineering and
management excellence.
In this unit, we will discuss about the CMM-based process improvement. We
will discuss about management sponsorship, which plays an important role
in such processes. We will also have a brief discussion about commitments
and management by fact. We will analyse the focus of CMM-based process,
which will also help us in analysing the objectives of CMM-based process.
We will also study about CMM-based useful processes in this unit including
the role of training in CMM-based processes. We will also study about the
role risk management plays in CMM-based processes. We will have a
Sikkim Manipal University
B1965
Software Engineering
Unit 15
B1965
Software Engineering
Unit 15
B1965
Software Engineering
Unit 15
Action planning.
B1965
Software Engineering
Unit 15
B1965
Software Engineering
Unit 15
Once the size and resource estimates have been made, it is necessary
to spread these resources over the planned schedule. The most
frustrating software processes are often caused by poor configuration
management.
B1965
Software Engineering
Unit 15
Establish objectives.
Self-Assessment Questions
8. After conducting an __________, the organisation is then in a position
to address its key improvement priorities.
9. In software, three kinds of standards are used to define the way the
software is developed and maintained. (True/False)
10. The ground work for software project management is the ___________
discipline.
Activity 1:
Imagine you are the manager of a software organisation. Explain the
CMM-based process involved in delivering a software product.
(Hint: Refer to Section 15.4, CMM-Based Useful Processes.)
15.1 Training
The previous section familiarised us with the CMM-based useful processes;
so let us now familiarise ourselves with the CMM-based process training.
Documented processes are of little value if they are not effectively
deployed. Training, by means of a broad variety of mechanisms, is crucial to
consistent and effective software engineering and management. The reason
for training employees in an organisation is to develop skills. Apart from
formal class room training, there are various training mechanisms that can
be effective in building skills. The one that needs serious consideration is
the formal mentoring problem.
Inefficient teams can cripple good teams; hence, it is important to provide
management training to all the teams. Individuals are generally promoted to
the managerial levels based on their technical skills. Hence, it is the
responsibility of the organisation to provide such individuals with necessary
Sikkim Manipal University
B1965
Software Engineering
Unit 15
Data custodians
Data architects
Enterprise architects
Data administrators
Business analysts
Project managers
IT professionals
Understanding the CMM content and structure (key process areas, key
process indicators, levels, and so on).
B1965
Software Engineering
Unit 15
Self-Assessment Questions
11. Documented __________ are of little value if they are not effectively
deployed.
12. The reason for training employees in an organisation is to _________.
13. The learning objectives of the training do not include learning about
CMM benefits. (True/False)
Create value.
Be tailored.
B1965
Software Engineering
Unit 15
B1965
Software Engineering
Unit 15
Activity 2:
Briefly explain the process of risk management in CMM-based
processes.
(Hint: Refer to Section 15.6, Risk Management in CMM-Based
Processes.)
B1965
Software Engineering
Unit 15
To execute peer reviews, the CMM requires that the project follow a written
organisational policy. In addition, sufficient resources and funding must be
provided for performing peer reviews on each software product to be
reviewed. Leaders obtain training as to how to lead peer reviews.
Reviewers, who take part, obtain the essential training in the objectives,
principles and methods of peer reviews. Peer reviews are planned and the
plans are executed as per a documented procedure. The data on the
conduct and results are recorded. We can make and use measurements to
determine the status of the peer-review activities. The activities and work
products for peer reviews undergo an audit or group review. This is done by
the software quality assurance group.
Peer reviews are often considered to be expensive and timely and as a
result, we often term them as not being worth the effort. In addition, they are
slow to evolve with a companys software process, and hence are reactive
instead of proactive.
15.8.1 Types of peer reviews
Since we are discussing about the peer reviews, let us have a brief
discussion on the different types of peer reviews. There are several types of
peer reviews currently in use. Each of these is conducted with the purpose
of locating software defects. A few of them involve significant investment
from the project teams, while others include a simple inspection of someone
elses code. The key to obtaining payback on a peer review is to choose the
appropriate method, depending on the magnitude of the project. The
method that we used in the past, to meet the peer-review requirement, has
been the traditional code-walk-through, where the programmer runs the
peers through a program code and justifies their process and data flow
creation. Such meetings are often expensive.
Any process should allow for the five implementation methods that have
been mentioned below. At the same time, these implementation methods
are dependent on project scope and their impact. The scope in software
development varies as drastically as that of constructing building. Let us
briefly discuss the five major peer-review techniques in use, identified from
a study.
Inspections
Structured walk-through
Sikkim Manipal University
B1965
Software Engineering
Unit 15
B1965
Software Engineering
Unit 15
B1965
Software Engineering
Unit 15
B1965
Software Engineering
Unit 15
Self-Assessment Questions
17. ______________technique is a process of desk checking by multiple
peers in a chronological manner.
18. Which peer review is called as a concealed review?
19. Identification of the software products that are to be reviewed is the first
step in the peer-review process. (True/False)
Activity 3:
Suppose you have to conduct a peer review of a CMM-based process
in a software company. Briefly explain the process of peer review in
CMM-based processes.
(Hint: Refer to Section 15.8.2, Peer-review process.)
15.9 Summary
Let us recapitulate the important concepts discussed in this unit:
B1965
Software Engineering
Unit 15
Peer review is the best type of review. Inspections, structured walkthrough, hybrid inspection, desk checking and round-robin review are
some of the types of peer reviews practiced by the software
organisations.
15.10 Glossary
Paradigm: A set of forms all of which contain a particular element.
Total Quality Management (TQM): A method by which management and
employees can get involved in the continuous improvement of the
production of goods.
15.12 Answers
Self-Assessment Questions
1. True
2. Systematic
3. Measurement
4. False
5. Software Engineering Process Group (SEPG)
6. CMM-based improvement
7. True
8. Assessment
9. False
10. Commitment
11. Processes
12. Develop skills
13. False
14. Risk
15. True
16. Recognise
Sikkim Manipal University
B1965
Software Engineering
Unit 15
B1965
Software Engineering
Unit 15
The XYZ consultants provided the necessary training and mentoring to the
process action team members as well as the practitioners.
The business benefits include that the specific pain areas identified by the
client were addresses and new processes were defined. The XYZ
consultants also identified gaps in the existing process with respect to
CMM-level requirements that helped the client in drawing up the future road
map.
Discussion Question:
1. Explain in detail the steps taken by XYZ Technologies to improve the
quality of the entire software development process.
References/E-References:
B1965
Software Engineering
Unit 16
Unit 16
Structure:
16.1 Introduction
16.2 Software Quality Assurance
16.3 Quality Concepts
16.4 Quality Movement
16.5 Reviews
Software review
Formal Technical Review (FTR)
16.6 Software Reliability
16.7 Background Issues
16.8 Software Quality Assurance Activities
16.9 SQA Plan
16.10 Summary
16.11 Glossary
16.12 Terminal Questions
16.13 Answers
16.14 Case Study
16.1 Introduction
In the previous unit, we discussed about Capability Maturity Model (CMM)based process improvement. We analysed that CMM-based improvement is
most effective within a systematic approach to software process
improvement.
In this unit, we will discuss about Software Quality Assurance (SQA),
wherein we will study about the standards and procedures of quality
assurance. We will also study about the various concepts related to quality
and the quality movement. We will also have a brief discussion on software
reviews and Formal Technical Reviews (FTRs). We will also study about the
tools used for formal technical reviews. This unit will also familiarise us with
software reliability. We will also analyse the background issues, and
activities related to quality assurance.
This unit will enable us to understand how to go about the task of software
quality assurance of a software product.
B1965
Software Engineering
Unit 16
Objectives
After reading this unit you should be able to:
explain quality concepts and quality movement
describe software reviews and formal technical reviews
enlist SQA activities
describe the SQA plan
B1965
Software Engineering
Unit 16
B1965
Software Engineering
Unit 16
B1965
Software Engineering
Unit 16
Self-Assessment Questions
5. Implementation of _____ needs procedures, practices, and resources.
6. Cost of failure may occur either before the delivery of the product or
service, or after the delivery of product or service. (True/False)
7. Costs of prevention are the total costs of activities that are particularly
for __________ bad quality.
8. QA plan must be prepared beforehand. (True/False)
B1965
Software Engineering
Unit 16
B1965
Software Engineering
Unit 16
only part of the time. Processes or work methods have even superior
variations. Finally, measurement also varies.
Self-Assessment Questions
9. In _____ the quality movement was established in North America.
10. One of the TQC methodologies developed in Japan is referred to as
the _________.
11. According to cost and effect diagram, measurement also varies.
(True/False)
16.5 Reviews
In the previous section, we discussed about the concept of quality
movement. In this section, we will discuss about software reviews. To start
with, let us first discuss about reviews. We know that generally reviews are
conducted to detect errors and correct them.
We can classify reviews into five types, namely, code review (review of
source code of the computer), technical review (review for examining the
suitability of the software product for its defined use), inspection (simple
review to find defects), walk-through (review, in which people ask questions,
and have a walk-through of the software product) and software review
(review of the software).
We can define software review as a process or a meeting during which a
software product is screened by project personnel, managers, users,
customers, user representatives or other concerned parties for comment or
approval.
If we talk about a software product we can refer to it as a technical
document or partial document, produced as a deliverable of a software
development activity. This may consist of documents such as contracts,
project plans and budgets, requirements documents, specifications,
designs, source code, user documentation and other types of specialist
work product.
16.5.1 Software review
We can consider software review as a process that is industry-proven, and
is used in the improvement of quality of the software product and reduction
in the time and costs of software development life cycle.
Sikkim Manipal University
B1965
Software Engineering
Unit 16
We can divide software reviews into three categories. They are as follows:
Software peer reviews The author of the work product or one or
more colleagues of the author conduct these reviews for evaluating the
technical content and/or quality of the work.
Software management reviews Management representatives
conduct these reviews for evaluating the status of work done and for
taking decisions regarding downstream activities.
Software audit reviews Persons who are external to the software
project conduct these reviews for evaluating compliance with
specifications, standards, contractual agreements or other criteria
related to software reviews.
16.5.2 Formal Technical Review (FTR)
After discussing about software review, we will now discuss about another
type of review called formal technical review.
The term software inspection is sometimes used interchangeably to mean
FTR. Technical reviews must be done by a team of members. The
document is reviewed by the reviewer and also the person who prepares it.
The reviewer and the author of the document sit together and do the review
of the document.
To arrive at a technically superior version of the work, products must be
reviewed. FTR comes into the picture whenever there is a recommendation
for doing so, if any modification has been done, or there has been an
introduction of alternative methods.
Now, let us have a look at the participants whose inclusion is recommended
by IEEE 1028 to fill the following roles while performing a technical review.
The decision maker This is specially meant for the team that requires
mandatory technical review. This determines if the review objectives
have been met or not.
The review leader He/she is accountable for performing
administrative tasks pertaining to the review, making sure decorum is
maintained, and ensuring that the review meets its objectives.
The recorder He/she identifies anomalies, action items, decisions and
suggestions provided by the review team.
Technical staff They are active participants in the review and
evaluation of the software product.
Sikkim Manipal University
B1965
Software Engineering
Unit 16
Management staff They may participate in the review for the purpose
of culling out issues that require management intervention.
Customer or user representatives They may fill roles determined by
the review leader prior to the review.
B1965
Software Engineering
Unit 16
B1965
Software Engineering
Unit 16
Self-Assessment Questions
20. _________technique is used for estimating errors in a program.
21. Trending reliability techniques are more suitable for ________ of a
system.
22. Predictive reliability technique is more suitable for the hardware of a
system. (True/False)
B1965
Software Engineering
Unit 16
B1965
Software Engineering
Unit 16
B1965
Software Engineering
Unit 16
Self-Assessment Questions
26. Software engineers address quality by applying solid technical
methods and measures, conducting formal technical reviews and
performing well-organised software testing. (True/False)
27. In _______, SQA group also checks that mistakes have been corrected
and reports the result to their manager at specified intervals of time.
28. While reviewing for deviations, SQA group makes sure of the
documentation of the deviations occurring in the software project plan,
process description and applicable standards. (True/False)
B1965
Software Engineering
Unit 16
the plan. This stage is a rough presentation of the program, but it still
has to go through meticulous scrutiny before reaching the next stage.
SQA plan for detailed design and production This phase handles
the quality assurance plan for detailed design and actual product and is
probably the lengthiest among all phases. The tools and their
approaches are written by the SQA team in detail as per the plan. The
team starts planning on the transfer phase as well.
SQA plan for transfer The final stage is the QA plan for transfer of
technology to the operations. The process through which transfer of
technology through training and support are monitored as per the QA
plan.
Self-Assessment Questions
29. In smaller businesses, planning might not actually indicate the flow of
SQA. (True/False)
30. The final stage of the SQA plan content is the QA plan for _________
of technology to the operations.
31. SQA plan can be divided into _____ phases.
Activity 3:
Imagine you are the manager of a software organisation. Design an
SQA plan to assure the quality of the product.
(Hint: Refer to Section 16.9, SQA Plan.)
16.10 Summary
Let us recapitulate the important concepts discussed in this unit:
SQA is a process of verifying whether the software product or service
meets the requirements of the customer or not.
There are three main quality concepts, namely, quality control, quality
assurance and cost of quality.
Software reviews are an important means of ensuring statistical quality
assurance. There are three types of software reviews, namely, software
peer reviews, software management reviews and software audit
reviews.
B1965
Software Engineering
Unit 16
16.11 Glossary
Anomalies: An occurrence of the object that is strange.
IEEE: It is the worlds leading technical professional association for industrybased standards.
Statistical Regression Analysis: Techniques for modelling and analysing
different variables.
16.13 Answers
Self-Assessment Questions
1. True
2. Software
3. True
4. Malcolm Baldrige
5. Quality control
6. True
7. Preventing
8. True
9. 1940
Sikkim Manipal University
B1965
Software Engineering
Unit 16
B1965
Software Engineering
Unit 16
leaders and IT start-up companies. They are able to do complex, scienceintensive projects with a lot of science and innovations involved, as well as
specialised projects.
One of the problems with which a client approached XYZ Technologies was
to perform QA activities on one of their products. The product was of webbased and was built on the advanced technologies.
The primary objective was to perform meticulous testing to make it ready for
launch within a scheduled timeline.
Challenge:
1. The client wanted a cost-effective and experienced input to boost their
QA work simultaneously with the deadlines.
2. The team had to get domain knowledge and product knowledge in the
absence of documentation.
3. Build a strong and efficient framework to communicate with the
development team as the task was time critical.
Response:
The XYZ team gathered business domain knowledge and product
understanding while spending strong 2 weeks with the development and
management team.
A communication framework development for bug reporting, build-update
was covered in the 2-week onsite and offsite effort. This was very essential
to integrate QA model developed by the XYZ team as per the clients
development team to minimise work and time together.
Actual strength in the model lies in its flexibility and flawless integration with
the client activities while completing the QA tasks remotely. This resulted in:
1. Elimination of the fixed costs of having a complete QA department.
2. Increase in the profits through the savings.
By combining the testing expertise with the development expertise of client,
several milestones were achieved effectively and on time. The quality team
of XYZ added substantial value to the product by giving suggestions in
cases of improvements in process flow, business flow and feature usability.
Thus, the XYZ team successfully avoided the cost overrun with a
satisfaction level regarding both product quality and services to the client.
Sikkim Manipal University
B1965
Software Engineering
Unit 16
Discussion Question:
1. Briefly explain the challenges faced by XYZ and also the measures
taken by them to achieve the challenges.
References/E-References:
References:
Gordon Schulmeyer, G. Software Quality Assurance. Artech House,
Incorporated, 2008
Granato, G. E. Data Quality objectives and Criteria for Basic
Information, Acceptable Uncertainty and Quality Assurance, U.S.
Department of the Interior, U.S. Geological Survey, 1998.
E-References:
http://www.scribd.com/doc/13926561/Quality-Concepts (Retrieved on
18th May 2012)
http://www.wisegeek.com/what-is-quality-assurance.htm (Retrieved on
18th May 2012)
____________________
B1965