125
Software Engineering Unit 1 Sikkim Manipal University Page No.: 1 Unit 1 The Product and The Process Structure: 1.1 Introduction Objectives 1.2 The Product The Evolving Role of Software Software Software Characteristics Software Applications Software: A Crisis on the Horizon Software Myths 1.3 The Process The Software Process Software Process Models The Linear Sequential Model The Prototyping Model The Incremental Model The Spiral Model The RAD Model 1.4 Fourth Generation Techniques 1.5 Summary 1.6 Terminal Question(s) (TQs) 1.7 Multiple Choice Question(s) (MCQs) 1.8 Answers to SAQs, TQs, and MCQs 1.1 Introduction The world today is growing at a very fast pace. Most of the activities related to business and various applications are computerized. Computerization has led to the development of various types of software. Software has become the basis for various decision-making. Software helps in solving day to day problems and also helps in systematic production. It has become an integral part of service industry today. Software has penetrated various other sectors in applications of forecasting, scientific applications, animation, film making, inventory etc. Software has greatly impacted our society and culture. Its significance has no bounds and has led to rapid development of

Merged Document

Embed Size (px)

Citation preview

Page 1: Merged Document

Software Engineering Unit 1

Sikkim Manipal University Page No.: 1

Unit 1 The Product and The Process

Structure:

1.1 Introduction

Objectives

1.2 The Product

The Evolving Role of Software

Software

Software Characteristics

Software Applications

Software: A Crisis on the Horizon

Software Myths

1.3 The Process

The Software Process

Software Process Models

The Linear Sequential Model

The Prototyping Model

The Incremental Model

The Spiral Model

The RAD Model

1.4 Fourth Generation Techniques

1.5 Summary

1.6 Terminal Question(s) (TQs)

1.7 Multiple Choice Question(s) (MCQs)

1.8 Answers to SAQs, TQs, and MCQs

1.1 Introduction

The world today is growing at a very fast pace. Most of the activities related

to business and various applications are computerized. Computerization has

led to the development of various types of software. Software has become

the basis for various decision-making. Software helps in solving day to day

problems and also helps in systematic production. It has become an integral

part of service industry today. Software has penetrated various other sectors

in applications of forecasting, scientific applications, animation, film making,

inventory etc. Software has greatly impacted our society and culture. Its

significance has no bounds and has led to rapid development of

Page 2: Merged Document

Software Engineering Unit 1

Sikkim Manipal University Page No.: 2

technologies across the globe. This has also created a competition amongst

various companies. The thirst for developing better and better software

continues to increase day by day. There is also a need to develop areas of

importance like hospitals, crime detection, chemical lab tests, astronomic

research etc where quality is of prime importance. Software enables one to

have a quality system. The technologies aim at specific applications like

Web-Site development, technology domain like object-oriented systems,

artificial intelligence, expert systems etc. There is not one software which

can do everything.

Software is an embodied knowledge and is a social learning process. It is a

dialogue in which the knowledge becomes the software. This has resulted in

processes, which provides an interaction between users and designers, and

between designers and evolving technology. It is repetitive in nature, where

the tool itself serves as the medium for communication. It is enriched with

more and more rounds of the interaction where plenty of useful knowledge

from the people is involved.

Objectives

In this Unit you will learn about:

What is computer software . . . really?

Why do we struggle to build high-quality computer-based systems?

How can we categorize application domains for computer software?

What myths about software still exist?

What is a “software process”?

Is there a generic way to assess the quality of a process?

What process models can be applied to software development?

How do linear and iterative process models differ?

What are their strengths and weaknesses?

What advanced process models have been proposed for Software

Engineering work?

1.2 The Product

1.2.1 Software Evolutionary Role

Software has a dual role. First it acts as a product, and secondly it acts as a

delivery model. It provides the facility of computing the various needs of

computer hardware like network of computers to be made accessible by

Page 3: Merged Document

Software Engineering Unit 1

Sikkim Manipal University Page No.: 3

local hardware. A software acts as an information transformer. It transforms

one or more of production, management, acquisition, modification,

displaying, or transmitting information in simple as a single bit. Software is

the basis and a driver to deliver the product. It acts as a controller of the ther

entire systems of communication of information. Transformation of data is

done by software. By transformation data becomes information which is

then more useful in various contexts of business and scientific application. It

helps in enhancing competitiveness; providing gateway to worldwide

information networks, and as a means to acquire information. Along with the

growth of the software industry there has been a drastic growth in the

development of new hardware components and devices.

Self Assessment Question(s) (SAQs)

1. Today software takes on a ______________ role.

2. Software helps in transferring personal information. (T/F)

1.2.2 Software

A software refers to instructions which when executed provide desired

function and performance and data structures that enable the programs to

adequately manipulate information, and documents describing the operation

and the use of the software. It refers to a set of instructions also known as

program.

Self Assessment Question(s) (SAQs)

1. What is software?

1.2.3 Characteristics of a Software

Software is a logical element. Software has the following characteristics:

1. Software is not a manufactured component but it is developed or

engineered.

2. Software does not undergo wear out which is seen in many

manufactured components.

3. Most of softwares today are custom built which means the software are

customized to meet the user needs. It is developed keeping in mind the

requirements of delivery process and finished product.

Self Assessment Question(s) (SAQs)

1. What are the characteristics of software?

Page 4: Merged Document

Software Engineering Unit 1

Sikkim Manipal University Page No.: 4

1.2.4 Software Applications

The application of software is based on the nature of instructions in a

particular area. If the set of instructions are structured well it is appropriate

to develop software for such application. Development becomes easy and

convenient depending on the degree of structure. Higher the degree better it

is to develop the software for such applications. Information content and

determinacy play an important role in determining the nature of a software

application. Content means the form of incoming and outgoing information.

Information determinacy refers to the predictions of the order and timing of

information. It is difficult to develop generic categories for software

applications. The following software areas indicate potential applications:

System software - It is a collection of programs written to serve other

programs. e.g., Compilers and Interpreter. Other systems applications like

the operating system components, drivers, telecommunication processors

process largely indeterminate data.

Real-time software: Events that are real world based if possible to be

controlled by programs are referred to as programmable events. Such

programs control the entire event and act as a monitor or as an analyzer of

the real-world events. Such software are known as real time software. It

includes data gathering components and formats information from an

external environment, an analysis component that transforms information, a

responder component that responds to the changes in the external

environment, and a monitoring component coordinating all other

components.

Business software: Business software refers to applications in the areas of

business. Such software is mainly useful in decision making and

transactions that facilitates business operations or management decision

making. In addition to conventional data processing applications, business

software applications also encompass interactive computing.

Engineering and scientific software: Engineering and scientific software

have been developed mainly to deal with "number crunching" algorithms.

Applications range from astronomical science to seismology to molecular

biology to automated manufacturing. Computer-aided design, system

simulation, and other interactive applications have gained prominence.

Page 5: Merged Document

Software Engineering Unit 1

Sikkim Manipal University Page No.: 5

Personal software: The personal computer software like the word

processing, spreadsheets, computer graphics, multimedia, entertainment,

database management, personal and business financial applications,

external network, and database access are some of the applications.

Web-based software: The Web pages are a software application page that

incorporates executable instructions performing one or more tasks.

Artificial intelligence software: It uses non-numerical algorithms to solve

complex problems. Expert systems, also called knowledge based systems,

pattern recognition, artificial neural networks, and game playing are

representative of applications within this category.

Self Assessment Question(s) (SAQs)

1. What do you mean by Web-based software?

2. Write on personal computer software.

1.2.5 Software Crisis

The success rate of software people is high. Last two to three decades

never one has seen a serious software crisis. A crisis may indicate either a

downfall of a set and well established activity or activities of software. It may

signify a change in the software which is considered healthy for the growth

of the software and its improvement. The set of problems that are

encountered in the development of computer software is not limited to

software that malfunctions. Rather, it may be extended to the stages of the

development of the software. Also it is based on how we support a growing

volume of existing software, and how one can keep pace with a growing

demand in the industry. In the other hand we can say that, the selection of

the software from total market availability is the software crisis.

Self Assessment Question(s) (SAQs)

1. What do you mean by crisis?

1.2.6 Myths about Software

Most of the knowledgeable professionals understand myths as misleading

attitudes that have caused serious problems for managers and technical

people. It is not possible to easily change the old attitudes and habits.

Myth about Management - Managers are often under pressure to maintain

budgets, work towards objectives and accomplish task within deadline, keep

control schedules from slipping, and improve quality.

Page 6: Merged Document

Software Engineering Unit 1

Sikkim Manipal University Page No.: 6

Myth: A book that's full of standards and procedures for developing

software is available. Is that enough to provide people with everything they

need to know?

Reality: The question is whether the book of standards was ever used or

not? Are managers aware of the availability of such codes? Is it complete?

Is it streamlined? Most of the times, the answer to all of these questions is

"no."

Self Assessment Question(s) (SAQs)

1. What do you mean by myths?

2. What are the different types of myths?

1.3 The Process

1.3.1 The Software Process

A lot of focus is on process maturity. Software Engineering Institute (SEI)

based on a software engineering capabilities, have developed a model, to

address the various levels of maturity levels present in an organization. SEI

used a five point grading scheme to assess the maturity level. The five

levels are as follows -

Level 1: Initial level – It is to address the initial processes where there is a

tendency of one or more processes getting chaotic. Some of the issues are

identified and steps are taken to bring in clarity in the initial processes.

Level 2: Repeat level – Based on the successes of certain processes in the

past, processes are reviewed and revised. Some of the processes which are

tracked are the process on costing, scheduling and various other related

functions.

Level 3: Documentation – Organizations follow a streamed line of software

development activities. These activities are documented procedures

developed over years which are used by both the management and

development team. Modules developed are integrated into existing

organization software processes.

Level 4: Managing the processes - It is necessary to measure various

product features and processes associated with the software process.

Measures are taken to collect data from various processes on various

parameter of the software and each one is measured. The quantification of

Page 7: Merged Document

Software Engineering Unit 1

Sikkim Manipal University Page No.: 7

all such measures is done and used in the performance evaluation of the

process and the product.

Level 5: Optimization – Continual improvement is one of the major

objectives of organization today. It is achieved by means of some

predefined characteristics which is expected from the processes. The

measurement methodology can be different for different processes. A

quantitative feedback is obtained for various processes and measured. The

measurements are made under constraints under which a process is

expected to perform. Hence the measurements have to be optimized

measurements. This helps in taking decisions on the improvement of the

process on a continual basis.

The five levels defined by SEI are on the basis of the evaluation responses

from the assessment questionnaire based on CMM. Associated with each

process level is the key process area (KPA). It defines various functions

associated with each process which reflect the qualitative aspect of the

process.

KPA is based on the following characteristics –

Goals – goals refer to the overall objectives to be achieved

Commitments – commitments are the requirements to be adhered to

meet the goals.

Abilities – abilities refer to those aspects necessary to meet the

commitments.

Activities – it signifies task necessary to achieve a particular KPA.

Monitoring – it refers to the ways and methodologies of monitoring a

particular activity or a process.

Verification – it refers to the ways of verifying the methodologies of the

KPA

Self Assessment Question(s) (SAQs)

1. What are the different CMM Levels?

1.3.2 Software Process Models

A development strategy for each process has to be developed to solve

various types of problems associated with a process.

Page 8: Merged Document

Software Engineering Unit 1

Sikkim Manipal University Page No.: 8

Problem solving can become very troublesome if not attempted to solve

properly. It may run into repeated process of corrections and trouble

shooting.

The stages normally encountered are: status quo, problem definition,

technical development, and solution integration. These stages are

represented in the figure 1.1.

Current state is represented by Status quo; identifying specific problem

needed to be solved is problem definition; technical development refers to

application of technology to solve the problem; and solution integration

gives results. This technique may be applied at macro level or at micro level

of processes.

The stages may also exist in the form of nesting one consisting of the other

similar block of stages.

Fig. 1.1: Stages of problem solving in software process model

Self Assessment Question(s) (SAQs)

1. Software process model is used as ________________ level.

Problem

Definition

Technical

Development Status Quo

Integrating

Solution

Page 9: Merged Document

Software Engineering Unit 1

Sikkim Manipal University Page No.: 9

1.3.3 Linear Sequential Model

Linear Sequential Model is also known as the waterfall model. It indicates a

systematic and sequential approach to software development. It

encompasses the following in a sequential order – modeling, analysis,

design, coding, testing, and support.

Modeling: Modeling is done based on the various characteristics and

relevant parameters which affect the performance of the software. The

requirements are identified for each system element and the related

constraints. The view of the system indicating the interaction of various

elements of the system helps in modeling the system. The elements are the

hardware, people, and databases.

Requirements analysis: The information domain is understood for the

software and the related functions and behavior of the various elements.

The requirements for software are well documented. The requirements are

reviewed for time to time with the customer.

Design: The design of software is based on the following steps –

understanding data structure, the software architecture, the interface

representations, and algorithms. The process of design transforms the

requirements into a representation of the software which is then assessed

for quality.

Code generation: The code generation refers to the translation of design

into a machine code. Code generation can be done systematically if the

design steps are listed in detail.

Program Testing: After the development of the program it is subjected to

testing. Testing is done on the logics of the program and the functionality.

During the process of testing, errors if any are identified and then necessary

steps are taken to rectify the error.

Support: Customers who are the end users of the software may come

across certain points while using the software for their business

applications. Such points are communicated to the developer who in turn

incorporates the changes in the software. This is recorded as a revision.

Software goes through a number of revisions during its lifetime of service.

Page 10: Merged Document

Software Engineering Unit 1

Sikkim Manipal University Page No.: 10

Self Assessment Question(s) (SAQs)

1. What do you mean by linear sequential model?

2. What are the features of sequential model?

1.3.4 The Prototyping Model

Detailed input requirements, processing requirements, and output

requirements are not identified easily by the customer but states the general

objectives. Also there is always a doubt about the efficiency of an algorithm.

A prototype model on the requirements stated by the customer is developed

which will enable the developer to understand the requirements more clearly

and implement those requirements in the system. The customer evaluates

the prototype which becomes the basis to refine the requirements.

Self Assessment Question(s) (SAQs)

1. The prototyping paradigm begins with ____________ gathering.

2. What are the features of the prototyping model?

1.3.5 The Incremental Model

The incremental model has the elements of linear sequential model and the

prototype model.

While using the incremental model, it is observed that the first increment is a

core product. A basic requirement is addressed, but many of the

supplementary features are undelivered. Core product is used by customer ,

who in turn suggests he changes which is reflected as in increment. This is

repeated, till such a time that the entire product is completely finished for its

intended use. Incremental model focuses on the delivery. This methodology

is very useful in situation when there is shortage of staff but a progress is

required. An incremental progress is possible then with limited staff. It can

be then developed further depending upon the acceptance of the product by

the customer and can be very useful in handling technical risks.

Self Assessment Question(s) (SAQs)

1. The incremental model combines elements of the __________________

model.

1.3.6 The Spiral Model

The spiral model was proposed by Boehm. It combines the repetitive aspect

of prototyping and systematic and controlled aspect of linear sequential

model. It helps in rapid development of versions of the software through

Page 11: Merged Document

Software Engineering Unit 1

Sikkim Manipal University Page No.: 11

various incremental forms. Early iterations of the incremental release might

be a paper model or prototype. Iterations done later are more in complete

versions form. A spiral model is divided into six task regions:

Customer Communication – it refers to the setting up of a

communication channel between the developer and the customer.

Planning – Resources and other project-related information are

organized in a definite manner to achieve the intended results within the

timeframe is achieved through planning.

Risk Analysis – Risks related to technical and management are

analysed.

Engineering – engineering refers to the set of tasks necessary to build

one or more application forms.

Construction and Release – This refers to the tasks required to

construct, test, install, and provide user support.

Customer Evaluation – Various feedback question types are prepared on

the different types of processes of the system. The feedbacks are inputs to

the data on the software from the customers. The feedbacks are evaluated

which in turns determines the level of acceptance of the software by the

customer.

The system of feedback is a repetitive process aimed at continual

improvement of the product and its services. The software team moves

around the spiral in a clockwise direction, beginning at the center leading to

the development of product specification and subsequent repetitions of the

process leads to development of the prototype and hence the product. Each

pass through the planning region results in improvements. Cost and

schedule are adjusted depending upon the customer needs. The new

product will evolve over iterations around the spiral. The spiral model is a

realistic approach to develop large-scale systems and software. The spiral

model demands attention of the risks involved at various stages of the

project and tend to minimize such risks.

Self Assessment Question(s) (SAQs)

1. ___________ provides the potential for rapid development of

incremental versions of the software.

2. What are the features of the spiral model?

Page 12: Merged Document

Software Engineering Unit 1

Sikkim Manipal University Page No.: 12

1.3.7 The RAD Model

Rapid application development (RAD) is similar to incremental software

development process model. It focuses on short development cycle. The

model is constructed based on the components or rapid development form

linear sequential model. RAD approach covers the phases listed below:

Business modeling phase – in this phase the flow of the information

through various business functions is considered. Certain questions to

generate the model would be on - What drives the business process? What

is generated? Who has generated it? Who is responsible to processes it?

Data modeling phase – Business data objects are modeled based on the

information flow and the functionality of the business module which is

needed to be incorporated into the system.

Process modeling phase – The objects developed in the above phase are

transformed into the form necessary to be implemented in the systems as a

function of the business. This will enable the smooth flow of the information

through the various business processes. Processes are described to add,

modify, delete, retrieve objects.

Application generation phase - RAD uses fourth generation techniques for

creating software. The focus of RAD process is to reuse existing program

components. Automated tools may be used to develop the software.

Testing and turnover phase – The overall testing time is reduced in RAD

since it emphasizes on the reusability of the components. In case of new

components, testing will have to be done. In case the projects are large and

scalable, RAD requires sufficient human resources to form the right team.

Developers and customers are needed to the rapid-fire activities necessary

to get a system complete. RAD is not appropriate to all types of business

applications. RAD becomes troublesome if the if a system cannot be

properly modularized. If the technical risks are high then RAD is not

appropriate.

Self Assessment Question(s) (SAQs)

1. What is the full form of RAD?

2. What is the drawback of the RAD model?

Page 13: Merged Document

Software Engineering Unit 1

Sikkim Manipal University Page No.: 13

1.4 Fourth Generation Techniques

It refers to software tools that enable the software engineer to specify some

characteristic of software at a higher level. Based on the developers

specifications the tool generates the codes automatically. A software

development environment that supports 4GT includes one or more of the

following tools: data manipulation tools, nonprocedural languages,

interactions, screen generation, code generation; high-level graphics

capability; Web-site creation, etc. For applications of smaller size moving

from requirements gathering step to implementation a non procedural 4GL

may be used. For applications of larger size a design strategy along with the

use of 4GL. 4GL is advantages in reducing the development time of the

software and has a little disadvantage in it being not too simple to use.

Self Assessment Question(s) (SAQs)

1. What do you mean by 4GT?

1.5 Summary

In the evolution of computer based systems, software has become the key

element. Over the past few decades, software has evolved from a problem

solving tool and information analysis tool to an industry in itself. Software

has become a limiting factor. Software consists of programs, data, and

documents. These elements comprise a configuration that is created as part

of the software engineering process. The aim of software engineering is to

build high quality software. Software engineering integrates processes,

methods, and tools for the development of software. A number of different

process models have been proposed for software engineering. Each has

some strength and some weakness.

1.6 Terminal Question(s) (TQs)

1. Software is the differentiating characteristic in many computer-based

products and systems. Provide examples of two or three products and at

least one system in which software, not hardware, is the differentiating

element.

2. Provide five examples of software development projects that would be

amenable to prototyping. Name two or three applications that would be

more difficult to prototype.

Page 14: Merged Document

Software Engineering Unit 1

Sikkim Manipal University Page No.: 14

3. The RAD model is often tied to CASE tools. Research the literature and

provide a summary of a typical CASE tool that supports RAD.

1.7 Multiple Choice Question(s) (MCQs)

1. Which model incurs more cost?

(a) Prototyping model (b) RAD (c) Spiral Model (d) None of these

2. Which model is used at the time of risk?

(a) Incremental model (b) Spiral model (c) Prototyping model

(d) none of these.

1.8 Answers to SAQs, TQs, and MCQs

1.8.1 Answers to Self Assessment Questions (SAQs)

1.2.1 : 1. dual 2. true

1.2.2 Refer to 1.2.2

1.2.3 Refer to1.2.3

1.2.4

1. The Web pages retrieved by a browser are software that incorporates

executable instructions (e.g., CGI, HTML, Perl, or Java

2. Word processing, spreadsheets, computer graphics, multimedia,

entertainment, database management, personal and business

financial applications

1.2.5 "the turning point in the course of a disease, when it becomes

clear whether the patient will live or die

1.2.6 Refer to 1.2.6 for both question 1 and 2

1.3.1 Refer 1.3.1

1.3.2 Macro

1.3.3

1. The linear sequential model suggests a systematic,

sequential approach to software development, that begins at

the system level and progresses through analysis, design,

coding, testing, and support.

2. Refer to 1.3.3

1.3.4

1. Requirements

2. Refer to1.3.4

1.3.5 Linear sequential

Page 15: Merged Document

Software Engineering Unit 1

Sikkim Manipal University Page No.: 15

1.3.6

1. Spiral model

2. Refer to1.3.6

1.3.7

1. Rapid application development

2. Refer to 1.3.7

1.4 The term fourth generation techniques (4GT) encompasses a

broad array of software tools that have one thing in common:

each enables the software engineer to specify some

characteristic of software at a high level.

1.8.2 Answers to Terminal Questions (TQs)

1. Refer to section 1.2.2

2. Refer to section 1.3.4

3. Refer to section 1.3.7

1.8.3 Answers to Multiple Choice Questions (MCQs)

1. a

2. b

Page 16: Merged Document

Software Engineering Unit 2

Sikkim Manipal University Page No.: 16

Unit 2 Project Management Concepts,

Process and Project Metrics

Structure

2.1 Introduction

Objectives

2.2 The Management Spectrum

People

Coordination and Communication Issues

The Product

2.3 Software Process and Project Metrics

Measures, Metrics, and Indicators

Metrics in the Process and Project Domains

Software Measurement

Metrics for Software Quality

Measuring Quality

Defect Removal Efficiency

2.4 Process Decomposition

2.5 Summary

2.5 Terminal Question(s) (TQs)

2.7 Multiple Choice Question(s) (MCQs)

2.8 Answers to SAQs, TQs, and MCQs

2.1 Introduction

Project management/Software Project Management is an area of

management in which the people, processes and control are monitored and

controlled according to the plan. This is an ongoing process throughout the

evolution of software from a preliminary concept to an operational

implementation. A software engineer is responsible in managing day-to-day

activities of planning, monitoring, and controlling.

Project managers plan, monitor, and control the work of software

engineering team members. Managers at senior level look after the interface

between the business and the software professionals. The entire process of

software development becomes complex as and when conditions changes

and forces a revision in the software. The process involves contribution from

number of people working for a long time on the development. In a software

Page 17: Merged Document

Software Engineering Unit 2

Sikkim Manipal University Page No.: 17

project the management is essentially the management of people, product,

project and process.

People have to work in a coordinated manner and make their contributions

effective towards the development of the software. Another important aspect

in the successful development of software is the communication.

Communication is a process used for imparting information from a source –

sender to a destination – receiver with the use of some medium of

communication. Communication helps in establishing the requirements of

the customer clearly and also define the scope of the project software. The

development should be appropriate to the people and the product.

Effort required for the completion of the project and the time required to

complete the project has to be properly estimated through the use of

suitable estimation models. The planning must encompass definitions of

products, quality checkpoints, and mechanisms to monitor and control

activities defined in the plan of the project.

Objectives

In this unit we will study:-

How must the people, process, and problem be managed during a

software project?

What are software metrics and how can they be used to manage a

software project and the software process?

How does a software team generate reliable estimates of effort, cost,

and project duration?

What techniques can be used to formally assess the risks that can have

an impact on project success?

How does a software project manager select the set of software

engineering work tasks?

How is a project schedule created?

How is quality defined so that it can be controlled?

What is software quality assurance?

Why are formal technical reviews so important?

How is change managed during the development of computer software

and after delivery to the customer?

Page 18: Merged Document

Software Engineering Unit 2

Sikkim Manipal University Page No.: 18

2.2 The Management Spectrum

The four P’s: people, product, process, and project are the main points to

focus on during the management of a software project. Software project

manager has to pay attention to the risks involved in the processes of the

project. Else the manager runs the risk of inducting competent technical

methods and tools into the project process. This will decide the fate of the

success of the software project.

(1) The People: For people, recruitment, selection, performance, training,

compensation etc play a key role in the maturity model. It is also

important to note that organizations that achieve high levels of maturity

in people management models have been effectively implementing

software engineering.

(2) The Product: The product objectives and scope are defined by

customers and the software managers/engineers. This follows the steps

of initial software engineering process establishment and development.

This enable the manager to do an effective software requirements

analysis. Product relevant objectives have to be stated. The product

scope defines the functions and the primary data. It indicates the

relationship and behavior. Alternative solutions are developed. The

managers work on the alternatives and select the best alternative under

the limitations of deadlines, personnel availability, budgetary restrictions,

technical interfaces, etc.

(3) The Process: Based upon the complexity of the processes involved in a

project development, the entire development process can be broken

down into number of small processes which can all be set with a

framework of overall software development. Different tasks and

products, along with quality assurance points enable the framework of

activities to be adapted to the characteristics of the software project.

(4) The Project: the only way to manage complex software projects is to go

about it in a planned and a controlled manner. The success rate of the

project depends a lot on the planning and the contribution by people

working on the project. In order to avoid project failure, a software

project manager, and the software engineers who build the product must

avoid warning signs, understand the critical success factors, and

Page 19: Merged Document

Software Engineering Unit 2

Sikkim Manipal University Page No.: 19

develop a commonsense approach for planning, monitoring and

controlling the project.

Self Assessment Question(s) (SAQs)

1. What is the different management spectrum?

2.2.1 People

There are a number of people working on a software project. They are

known as players. A player participates in the software processes and

perform effective software engineering.

(1) The Player

The software process has players categorized as follows :

1. Project manager plans, motivate, organizes, and controls the

practitioners who work on various processes of the software.

2. Senior manager defines the business issues that has a significant

influence on the project and its related processes.

3. Practitioners deliver the technical skills necessary for the product or

application.

4. Customers specify the software requirements.

5. End-users are the ones who interact with the system.

The software project team has to be very effective and for being effective

they have to work in a coordinated manner. The teamwork should be such

that one gives the best for obtaining good results from the software project.

Team Leader

Software project management is an area where lots of people are involved

in various processes of the project. The one who manages these people in

the team and works toward the success of the software project is the team

leader.

Motivation: It refers to the act of encouraging the people working on the

software project development.

Ideas or innovation: the organization should encourage people to create

and feel creative. They must work within bounds established for a particular

software product or application. A software project manager should

concentrate on understanding the problem, managing the ideas, letting

everyone on the team understand the importance of quality in the service

Page 20: Merged Document

Software Engineering Unit 2

Sikkim Manipal University Page No.: 20

and product. The aspects of ideation and innovation may be phased in the

following manner :

Problem solving: Based upon the problems faced in the past and the

solutions derived to solve such problems it becomes easy to the software

engineer to device methods to avoid such problems in future. A scheme of

handling such situations by means of some techniques and tools and then

develop the software reflects effective problem solving.

Managerial identity: A project manager must establish good authority on

the project development processes. The manager must take into confidence

the abilities of the project members and maintain a stable and competitive

environment in order to effectively develop the project. In all these activities

the project manager establishes the identity of his or her being a successful

leader.

Achievement: Managers have to take initiatives to encourage the team

members to optimize the productivity of a project team.

Influence and team building: A project manager must understand the

attitude of the people and understand their signals in terms of satisfaction or

dissatisfaction. Even if the situation is tough the manager must keep calm

and handle the situation.

Self Assessment Question(s) (SAQs)

1. What do you mean by people?

2. What is the different category of player?

2.2.2 Issues regarding Coordination and Communication

Software projects are disturbed because of various reasons. One of the

reasons is the scale of the project. Scale refers to the size of the project, the

magnitude of the effort, complexities involved in the project and the size of

the team working on the project or a part of the project. Another reason is

the Uncertainty because of the changes in the project characteristics.

Interoperability ie. Communication between the old modules of the software

and the new modules could be another reason.

To deal with these factors the team members can work in a coordinated

manner. As per Kraul and Streeter, project coordination techniques are

categorized in the following manner:

Page 21: Merged Document

Software Engineering Unit 2

Sikkim Manipal University Page No.: 21

Formal, impersonal approaches include software engineering documents

and deliverables (including source code), technical memos, project

milestones, schedules, and project control tools, change requests and

related documentation, error tracking reports, and repository data.

Formal, interpersonal procedures focus on quality assurance activities

applied to software engineering work products. These include status review

meetings and design and code inspections.

Informal, interpersonal procedures include group meetings for

information dissemination and problem solving and “collocation of

requirements and development staff.”

Electronic communication encompasses electronic mail, electronic

bulletin boards, and by extension, video-based conferencing systems.

Interpersonal networking includes informal discussions with team

members and those outside the project who may have experience or insight

that can assist team members. To assess the efficacy of these techniques

for project coordination, Kraul and Streeter studied 65 software projects

involving hundreds of technical staff; this expresses the value and use of the

coordination techniques just noted. Referring to the figure, the perceived

value (rated on a seven point scale) of various coordination and

communication techniques is plotted against their frequency of use on a

project. Techniques that fall above the regression line were “judged to be

relatively valuable, given the amount that they were used”. Techniques that

fell below the line were perceived to have less value. It is interesting to note

that interpersonal networking was rated the technique with highest

coordination and communication value. It is also important to note that early

software quality assurance mechanisms (requirements and design reviews)

were perceived to have more value than later evaluations of source code

(code inspections).

Self Assessment Question(s) (SAQs)

1. What are the different project coordination techniques?

2.2.3 The Product

A software project manager has to work on quantitative estimates and

suitable plan to deliver the intended product. Analysis pertaining to the

Page 22: Merged Document

Software Engineering Unit 2

Sikkim Manipal University Page No.: 22

requirements of the software has to be done to get proper estimates on the

product and its performance. Time is the major constraint. A minimum scope

of the product has to be established.

(1) Software Scope

Determination of software scope is the first step. By answering the

following questions it becomes easy to determine the scope:

Context: Understand the software product under the framework of the

various constraints in the system and the requirements of the system in

which the product is expected to work.

Information objectives: It refers to object visible to the customers. What

are the outputs from the software and what are the inputs to the software?

Function and performance: Understand the functions of the software.

Understand the transformation job of each function of the software. The

functions should be clearly stated so that the management and technical

people can understand it easily.

(2) Decomposition of the Problem

It is also known as partitioning. It is the core software requirement analysis

step. Decomposition is done with respect to the functionality of the software

and the process. It means a complex problem is partitioned into smaller

problems. Smaller problems are easy to manage.

Self Assessment Question(s) (SAQs)

1. What are the software scopes?

2. Problem decomposition are sometimes called _________________ or

________________.

2.3 Software Process and Project Metrics

Software metrics refers to various methodologies of measurements for

software. For continual improvement in the software, it is necessary to have

a measurement done for the software with respect to its functionality and

utility. Measurements are used in a software project for various estimations,

quality controls, assessment of productivity, and various controls.

Page 23: Merged Document

Software Engineering Unit 2

Sikkim Manipal University Page No.: 23

2.3.1 Measures, Metrics, and Indicators

The necessity of measuring a software product process is to evaluate, to

predict, or to improve. For the measurements it is necessary to understand

the processes, products, resources, and environment in which the software

works, and establish a reference to track the progress. Status should be

brought out to review the progress. This will help identify the deviations and

thereby control the project. These measurements helps in predictions and

predictions in turn will help in setting up various plans.

Self Assessment Question(s) (SAQs)

1. What do you mean by metrics?

2. What do you mean by an indicator?

2.3.2 Metrics in the Process and Project Domains

There is always a dilemma as to which metrics is appropriate and which is

not in software engineering. The question is whether it could have been

better than what it is now? Obtaining a suitable measurement indicator is

always a challenge before the software engineer and the software manager.

An indicator is a metric or a combination of metrics on the software process.

An indicator enables the project manager or software engineer to improve

the process through adjustments.

1) Process Metrics and Improvement of Software Process: The best

way to develop and improvised metric process is to concentrate on

specific process attributes, and provide indicators leading to adoption of

a methodology for improvement. Measure the efficiency of every

process based on the outcomes. Outcomes may be assessed based on

the error rate, defect rate, human effort, time required and conformance

to schedule.

2) Software Metrics

Software process metrics are meant for analyzing strategic issues and

are used for the work flow in the project and related technical activities.

To estimate time and effort for current activities, details of metrics and

outcomes are collected from past identical projects. It helps in

understanding the variances in the ongoing project if any. The project

manager monitors and controls the progress of the project based on the

indicators on each attribute of the process. One process output

Page 24: Merged Document

Software Engineering Unit 2

Sikkim Manipal University Page No.: 24

performance affects the input of another process. It is a chain reaction.

Hence every process becomes significant in terms of quality delivery.

Self Assessment Question(s) (SAQs)

1. What do you mean by software metrics?

2.3.3 Software Measurement

Software measurements are of two types (a) direct measurements include

cost and effort pertaining to the software leading to measurement of number

of lines of codes, speed, size of memory, error rate and (b) Indirect

measurements includes functionality, quality, reliability, efficiency,

complexity and maintainability of the product.

1) Size oriented metrics:

Normalizing quality and productivity measures can be done by

considering the size of the software. To indicate the size of the software

a simple record of the size or a table of information on the size may be

maintained by the organization for the last few years. The effort and cost

recorded in the table represents all activities.

2) Function oriented metrics:

It refers to the functionality delivered by the software application.

Functionality cannot be measured directly. Function-oriented metrics

were first proposed by Albrecht, who suggested a measure called the

function point. Function points are derived using an empirical

relationship.

3) Extended Function Point Metrics:

The function point measure was inadequate for many engineering

applications but was suitable in most of the cases for business

applications.

Self Assessment Question(s) (SAQs)

1. What are the different types of software measurement techniques?

2.3.4 Metrics for Software Quality:

The software engineers have to work towards achieving a good quality

system and good product. For this purpose they have to resort to good

techniques along with suitable software process. They along with the

managers of the project have to evaluate quality at every stage of the

Page 25: Merged Document

Software Engineering Unit 2

Sikkim Manipal University Page No.: 25

project. The main objective in doing so should be to measure and control

errors and defects. Effectiveness has to be measured.

2.3.5 Measuring Quality

As per Gilb the following are the definitions and measures of quality:

Correctness: A program must operate correctly or it provides little value to

its users. Correctness is the degree to which the software performs its

required function. The most common measure for correctness is defects per

KLOC.

Maintainability: Software maintenance accounts for more effort than any

other software engineering activity. Maintainability is the ease with which a

program can be corrected if an error is encountered, adapted if its

environment changes, or enhanced if the customer desires a change in

requirements. A simple time-oriented metric is mean-time-to-change

(MTTC), the time it takes to analyze the change request, design an

appropriate modification, implement the change, test it, and distribute the

change to all users. Hitachi has used a cost-oriented metric for

maintainability called spoilage – the cost to correct defects encountered

after the software has been released to its end-users. When the ratio of

spoilage to overall project cost (for many projects) is plotted as a function of

time, a manager can determine whether the overall maintainability of

software produced by a software development organization is improving.

Actions can then be taken in response to the insight gained from this

information.

Integrity: Software integrity has become increasingly important in the age of

hackers and firewalls. This attribute measures a system's ability to withstand

attacks (both accidental and intentional) to its security. Attacks can be made

on all three components of software: programs, data, and documents. To

measure integrity, two additional attributes must be defined: threat and

security. Threat is the probability (which can be estimated or derived from

empirical evidence) that an attack of a specific type will occur within a given

time. Security is the probability (which can be estimated or derived from

empirical evidence) that the attack of a specific type will be repelled.

Usability: The catch phrase "user-friendliness" has become ubiquitous in

discussions of software products. If a program is not user-friendly, it is often

Page 26: Merged Document

Software Engineering Unit 2

Sikkim Manipal University Page No.: 26

doomed to failure, even if the functions that it performs are valuable.

Usability is an attempt to quantify user-friendliness and can be measured in

terms of four characteristics: (1) the physical and or intellectual skill required

to learn the system, (2) the time required to become moderately efficient in

the use of the system, (3) the net increase in productivity (over the approach

that the system replaces) measured when the system is used by someone

who is Moderately efficient, and (4) a subjective assessment (sometimes

obtained through a questionnaire) of users attitudes toward the system.

Self Assessment Question(s) (SAQs)

1. What are the different quality measurement techniques?

2.3.6 Defect removal efficiency (DRE)

DRE is a measure of the filtering ability of quality assurance and control

activities. When considered for a project as a whole, DRE is defined in the

following manner:

DRE = NE/(NE + ND)

Where NE is the number of errors identified before the delivery of software

and ND is the number of defects found after delivery. Value of DRE is 1

under ideal situations. This happens when there are no errors.

Self Assessment Question(s) (SAQs)

1. What do you mean by defect removal?

2.4 Process Decomposition

While dealing with any software project, one must look into the flexibility

options available to deal with the project. If a project is similar to an earlier

executed project, then a simple linear sequential approach may be adopted

to deal with the project. If the constraints are severely imposed on the

project specially the time constraint, then RAD (Rapid Application

Development) model is more appropriate. Incremental strategy would be the

best if the deadlines are very tight. Once the process model is chosen, CPF

(common process framework) involving customer communication, planning,

risk analysis, etc may be applied. Process decomposition involves

decomposing a task into number of small tasks to accomplish the task, one

by one by means of various events leading to the main task. The sub task

Page 27: Merged Document

Software Engineering Unit 2

Sikkim Manipal University Page No.: 27

list varies from project to project depending upon the complexities of the

project.

2.5 Summary

Software project management is an umbrella activity within software

engineering. It begins before any technical activity is initiated and continues

throughout the definition, development, and support of computer software.

Four P’s have a substantial influence on software project management –

people, product, process, and project. People must be organized into

effective teams, motivated to do high-quality software work, and coordinated

to achieve effective communication. The product requirements must be

communicated from customer to developer, partitioned (decomposed) into

their constituent parts, and positioned for work by the software team. The

process must be adapted to the people and the problem. A common

process framework is selected, an appropriate software engineering

paradigm is applied, and a set of work tasks is chosen to get the job done.

Finally, the project must be organized in a manner that enables the software

team to succeed. The pivotal element in all software projects is people.

Software engineers can be organized in a number of different team

structures that range from traditional control hierarchies to “open paradigm”

teams. A variety of coordination and communication techniques can be

applied to support the work of the team. In general, formal reviews and

informal person-to-person communication have the most value for

practitioners. The project management activity encompasses measurement

and metrics, estimation, risk analysis, schedules, tracking, and control. Each

of these topics is considered in the chapters that follow.

2.5 Terminal Question(s) (TQs)

1. The Software Engineering Institute’s people management capability

maturity model (PM-CMM) takes an organized look at “key practice

areas” that cultivate good software people. Your instructor will assign

you one KPA for analysis and summary.

2. You have been appointed as project manager for a major software

products company.

Your job is to manage the development of the next generation version of

its widely used word-processing software. Because competition is

Page 28: Merged Document

Software Engineering Unit 2

Sikkim Manipal University Page No.: 28

intense, tight deadlines have been established and announced. What

team structure would you choose and why? What software process

model(s) would you choose and why?

3. Describe the difference between process and project metrics in your

own words.

4. What is an indirect measure and why are such measures common in

software metrics work?

2.6 Multiple Choice Question(s) (MCQs)

1. Different Management Spectrum

(a) People (b) Project (c) All the above (d) none of these

2. What are the different software practices and projects?

(a) Measure (b) Metrics (c) All the above (d) none of these

2.7 Answers to SAQs, TQs and MCQs

2.7.1 Answers to Self Assessment Question(s) (SAQs)

2.2 People, project, product, process

2.2.1

1. Refer to 2.2.1

2. Software team, team leader, end user, customer etc.

2.2.2 Formal impersonal approaches, interpersonal procedures, Informal

interpersonal procedures, Electronic communication etc

2.2.3

1. Context, inform objective, function and performance

2. Partitioning, problem elaboration

2.3.1

1. Refer to 2.3.1

2. Refer to 2.3.1

2.3.2

Software process metrics are used for strategic purposes.

Software project measures are tactical.

2.3.3 Specific oriented, Function Oriented, Extend function

2.3.5 Correctness, Maintainability, Integration, Usability

2.3.6 A quality metric that provides benefit at both the project and process

level is defect removal efficiency (DRE).

Page 29: Merged Document

Software Engineering Unit 2

Sikkim Manipal University Page No.: 29

2.7.2 Answers to Terminal Question(s) (TQs)

refers 2.3.1

refers 2.2.1

refer 2.3.2

2.7.3 Answers to Multiple Choice Question(s) (MCQs)

1. c

2. c

Page 30: Merged Document

Software Engineering Unit 3

Sikkim Manipal University Page No.: 30

Unit 3 Software Project Planning, Scheduling,

Tracking and Risk Management Structure:

3.1 Introduction

Objectives

3.2 Observation and Estimation

Project Planning Objectives

Software Scope

Resources

Software Project Estimation

Decomposition Techniques

Empirical Estimation Models

The Make/Buy Decision

3.3 Risk Analysis and Management

Reactive versus Proactive Risk Strategies

Software Risks

Risk Identification

Risk Projection

Risk Refinement

Risk Mitigation, Monitoring, and Management

3.4 Project Scheduling and Tracking

The Relationship between People and Effort

Defining a Task Set for the Software Project

Selecting Software Engineering Tasks

Defining a Task Network

Earned Value Analysis

Error Tracking

The Project Plan

3.5 Summary

3.6 Terminal Question(s) (TQs)

3.7 Multiple Choice Question(s) (MCQs)

3.8 Answers to SAQs, TQs, and MCQs

Page 31: Merged Document

Software Engineering Unit 3

Sikkim Manipal University Page No.: 31

3.1 Introduction

Software project management begins with project planning. The work to be

done and the planning of the resource have to be done keeping in mind the

various objectives of the project work and the constraints on the resources

that are going to be utilized. Another important factor is the time factor which

needs to be estimated well in advance to control the progress of the project.

The entire planning has to be done vey systematically and scientifically.

Project of identical nature to the current project which has been executed in

the past should be studied and understood to bring in necessary control in

the ongoing project. Past experience on the project will always add value to

the execution of the current project. Any past experience will help in

developing the software easily.

Objectives

In this unit you will learn:

The software planning process

The risk management planning

The software tracking and scheduling

3.2 Observation and Estimation

There will be risks associated with every project. The nature and magnitude

of the risk depends upon the various forces that affect the project modules

and the project as a whole. Hence there is a need to estimate the resources

and prepare appropriate schedule for a software engineering effort. This

requires a lot of experience and also the support of historical data will

strengthen the process. Estimations are subjected to some risks and such

risks leads to uncertainty. Uncertainties increase the project complexity

thereby affecting the project plan. A number of methods are available today

to measure complexities in the system. Most of the methods are applicable

at the design level of the software. At the planning stage it is not convenient

to apply such methods. Another factor that affects the accuracy of the

estimates is the Project size. One should not forget the Murphy's law which

states that “What can go wrong will go wrong” – and if there are more things

that can fail, more things will obviously fail.

Page 32: Merged Document

Software Engineering Unit 3

Sikkim Manipal University Page No.: 32

Self Assessment Question(s) (SAQs)

1. ___________ increase the project complexity thereby affecting the

project plan.

2. _________ is another important factor that can affect the accuracy and

of estimates.

3.2.1 Project Planning Objectives

There are a number of project planning objectives. Though there are a

number of objectives in a software project the most important one is the

objective which is focused on planning. It emphasizes on the framework

enabling the manager to make estimates of resources, cost, and schedule.

These estimates serve as checkpoints for monitoring the entire project

during the course of its progress from start to finish. Also check point must

reflect on the extreme values of the outcome of each stage so that the entire

development process remains under control within the extreme values.

These checkpoints on extreme values serve as boundaries which can help

the manager to validate the outcomes of each stage.

Self Assessment Question(s) (SAQs)

1. What is the objective of any project planning?

3.2.2 Software Scope

Determination of software scope is the first activity in software planning. To

determine the scope one has to understand the functionality and

performance of the module in the software. The scope statement should be

bounded. Software scope must include data, controls, functions,

performance, constraints, interfaces, and reliability. Based on the software

metrics of the completed projects, estimates and schedules can be prepared

with greater accuracy leading to reduction in risks. Risk is measured by the

degree of uncertainty in the quantitative estimates pertaining to resources,

costs and schedule. The software planner must achieve completeness of

function, performance, and interface definitions.

A preliminary discussion between the software engineer/manager with the

customer can be structured enough to narrow the focus on to the

determination of the software scope else it may take number of meetings to

actually determine and define a proper scope. After this phase a feasibility

study will have to be conducted on the initial system design and

requirements.

Page 33: Merged Document

Software Engineering Unit 3

Sikkim Manipal University Page No.: 33

Self Assessment Question(s) (SAQs)

1. The first activity in software project planning is the determination of

_______.

2. Based on the _________ of the completed projects, estimates and

schedules can be prepared with greater accuracy leading to reduction in

risks.

3.2.3 Resources

The second activity in software planning is the estimation of the resources.

Resources for software projects are the hardware and software tools. They

provide the infrastructure to support the development of the software.

Reusable software components are found at higher levels of the

development process governed by people. It is possible to determine the

number of people required for a software project only after an estimate of

development effort has been made. Unit of development effort is generally

expressed as person-months. It may become useful to identify the software

components from the past projects that may be reused. Reusability leads to

optimization of the software resources.

Self Assessment Questions

1. What are the different resources?

3.2.4 Software Project Estimation

In estimating the software cost and effort the software engineer will have to

consider variables like human, technical, environmental and political. These

variables are found to affect the ultimate cost of software and effort. If the

estimates are based on projects completed in the past which are identical to

current one then the chances of errors creeping in reduces. One may even

use a decomposition technique to estimate the project. A number of

empirical estimation models may also be used with a fare degree of

accuracy.

Self Assessment Questions

1. Software ____ and _____ are affected by variables like human,

technical, environmental and political.

3.2.5 Decomposition Techniques

While dealing with software project estimation for large size software, it is

convenient to estimate after decomposing the entire project process into

Page 34: Merged Document

Software Engineering Unit 3

Sikkim Manipal University Page No.: 34

number of smaller process and then estimate. The entire software project

problem can also be broken down into number of smaller problems and then

each smaller problem could be solved easily. Software project estimation is

a form of problem solving.

3.2.1.1 Software Sizing

The prediction of accuracy of software project estimate is based on size of

the product to be built, ability to translate size into human effort, time and

money and the environment that supports the effort of software engineering.

3.2.1.2 Problem-Based Estimation

Lines of code (LOC) and function points (FP) are used as estimation

variables to "size” elements of the software. LOC and FP are used in

conjunction with estimation variables to develop cost and effort predictors

for various projections. As mentioned earlier the software scope is

considered and various functions are listed out. For each of the functions

LOC and FP are estimated.

Example of estimation – Process Based:

Estimation is done by considering the various activities and tasks involved in

a project. A list of functions involved in operating the various elements of the

software and the corresponding standard requirements are stated and

points are assigned to each function. There may be a list of parameters for

each function for the purpose of estimation. The points are converted into

percentages and expressed as effort. The data may be collected through a

customer process by way of feedback on the functions.

3.2.1.3 Software Equation:

Based on the productivity data collected for over thousands of contemporary

software projects and estimation model may be considered in the form of a

software equation as given below:

EPM = ( L x Sk(1/3) /PP)3 x(1/d4)

Where

EPM – effort in person months

L – number of code line

Sk – factor of special skills

PP – parameter of productivity

d – duration

Page 35: Merged Document

Software Engineering Unit 3

Sikkim Manipal University Page No.: 35

3.2.1.4 A decision tree

A decision tree is helpful in analyzing a software problem which has multiple

decision stages. Each stage is represented by a node (rectangle). The

multiple options available at this node are represented as branches of this

node in the form of straight lines. Each branch of the tree represents

alternatives and it may further lead to some probable events/outcomes.

Each such event is associated with a probability value and some cost

(– utile) / gain (+ utile). A utile is a monetary value. Nodes which represent

probable outcomes are known as chance nodes and are represented by

circles. A connection of such nodes and branches constitute a decision tree.

Problems associated with risks can be well represented by a decision tree.

3.2.1.5 Automated Estimation Tools

Automated estimated tools are useful to estimate cost and effort and to

perform what-if analysis for variables in projects such as staffing and

delivery rate. They exhibit characteristics like – sizing of the deliverable,

proper selection of activities, estimation of staffing levels and software

effort/cost and schedules.

Self Assessment Questions

1. What are the different decomposition techniques?

3.2.6 Empirical Estimation Models

An estimation model used for estimation of software is used to predict effort

as a function of LOC or FP. Number of sample projects considered to derive

such models are small. Hence the reliability on such small sample data

based empirical relations is less.. For this reason, no estimation model is

1

A

B

2

Str-1

Str-2

Str-3

Str-4

P-1

P-2

Page 36: Merged Document

Software Engineering Unit 3

Sikkim Manipal University Page No.: 36

appropriate for all classes of software and in all development environments.

Therefore, one must judiciously use the results obtained from such models.

(i) The Structure of Estimation Models

A regression analysis is used to derive the model based on data

collected from past software projects. Most of the forms follow the

pattern Y = a + bX, where a and b are the regression constants

In addition to the above relationship, majority of estimation models

have some form of project adjustment component.

Among the many LOC-oriented estimation models proposed in the

literature are E = 5.2 x (KL) 0.91 Walston-Felix model E = 5.5 + 0.73 x

(KL)1.16 Bailey-Basili model

E = 3.2 x (KL)1.05 Boehm simple model E = 5.288 x (KL)1.047 Doty

model for KL > 9 FP-oriented models have also been proposed. These

include E = 13.39 + 0.0545 FP Albrecht and Gaffney model

E = 60.62 x 7.728 x 10-8 FP3 Kemerer model E = 585.7 + 15.12 FP

Matson, Barnett, and Mellichamp model

Estimation models needs to be calibrated before actually it is used.

(ii) The COCOMO Model

Barry Boehm in his book on “Software Engineering Economics“ has

introduced a number of software estimation models known as

COCOMO, for COnstructive COst Model which has evolved into

COCOMO II. COCOMO II addresses the following:

Application composition model: This model is useful in the intitial

stages of software engineering when prototyping of user interfaces,

interactions of software and system are considered, assessment of

performance is done and the evaluation of maturity of technology.

Early design stage model: Once the requirements have been listed

out and stabilized this model becomes useful.

Post-architecture-stage model: Useful during the process of

construction of the software.

Self Assessment Questions

1. What are the different Empirical Estimation Models?

Page 37: Merged Document

Software Engineering Unit 3

Sikkim Manipal University Page No.: 37

3.2.7 The Make/Buy Decision

It is observed that buying a software application is more cost effective than

getting the entire software developed. This is one of the challenges before

every software engineer/ manager. In addition to this a number of options as

listed below makes it difficult to the software engineering managers.

1) software purchased off-the-shelf,

2) “full-experience” or “partial-experience” software components may be

subjected to changes

3) software may be custom built

The acquisition of software is governed by the criticality of the software to be

purchased and the end cost. For expensive software products, the following

guidelines may be considered:

1. Develop specifications for function and performance.

2. Define measurable characteristics.

3. Estimate the internal cost

Various make/buy decision techniques are :

Constructing Decision Trees.

Outsourcing.

Automated Estimation Tools.

Self Assessment Questions

1. What are the different make/buy decision techniques?

3.3 Risk Analysis and Management

3.3.1 Reactive versus Proactive Risk Strategies

A majority of software teams work on a structured framework of risk

strategy. The framework consists of only the likely risks which are

anticipated during the process of development of software. Whenever there

is a problem outside the framework then the software team adopts

measures on a case to case basis to solve the problem which is referred to

as fire fighting. When fire fighting doesn’t help then “crisis management”

takes over, and the project gets into real stiff situation.

Self Assessment Questions

1. What do you mean by fire fighting mode?

Page 38: Merged Document

Software Engineering Unit 3

Sikkim Manipal University Page No.: 38

3.3.2 Software Risks

Software risks are analyzed and managed by careful consideration of all the

forces that act on the software processes. It is derived from thorough study

of the people, the product, the process, and the project. Contingency plans

have to be prepared to manage risks in software development processes

which should be realistic. Risk may or may not be there in a project or

project process. But if it does exist then it may result in severe losses to the

project. Project risks always poses a threat to the project plan. If project

risks become real, it is likely that project schedule hampers and results in

increased project costs. Project complexity, size, and the uncertainties of

the project are factors contributing to project risks.

Self Assessment Questions

1. What are the different Software risks?

3.3.3 Risk Identification

A project manager is always on the lookout for risks which might hamper the

progress of the project work. The main two types of risks are generic risks

and product specific risks. Generic risks are always a threat to every

software project. Product-specific risks are specific to the product

characteristics and can be identified only by those who have a clear

understanding of the technology, the people, and the environment. To

identify product-specific risks, the project plan and the software statement of

scope are examined. A checklist of risk items are prepared to systematically

identify the risks in a project which can be used in the following categories:

Product size – risks associated with the overall size of the software to be

built or modified. They pertain to -

Business impact – risks associated with market constraints

Customer characteristics – risks associated with the characteristics

identified and listed by the customer

Process definition – risks associated with the degree to which the

software process has been defined

Development environment – risks associated with the availability and

quality of the tools

Technology to be built – risks associated with the complexity of the

system

Page 39: Merged Document

Software Engineering Unit 3

Sikkim Manipal University Page No.: 39

Staff size and experience – risks associated with the overall technical

and project experience of the software engineers.

3.3.4 Assessing risks, components, drivers, safety risks and hazards:

Risks can be assessed overall by taking risk data through surveys. A

number of questions as part of questionnaire can be framed as a tool to

collect data, which can then be used to analysis and assess risks in

software projects. The project may be at risk depending upon the number of

negative responses obtained during the survey.

Manager has to identify the risk drivers that affect the risk components in a

project. One must identify the software performance costs and the relevant

controls.

Safety risks and hazards can occur during installation of software or even

after its installation. These are associated with the software failure. These

are the quality assurance activities which can affect performance of the

software and hence the overall software. If it is possible to identify the risks

at an early stage of the development, then automated functions can be

incorporated to eliminate if encountered in future.

3.3.5 TSS value, Timeline and Tracking

A TSS – Task set selector is a selector used to select a set of tasks, which

would be appropriate to a project. The task set will be different for different

projects. It is a collection of software work tasks, deliverables which are to

be completed to compete the project. For an effective development of the

software one must a well defined task set. Different degrees of rigor may be

considered in selecting a set of task for a project. Some of them are

structured, casual, strict and reaction. The task set becomes the basis for

the preparation of task network. It is also known as activity network. The

monitoring the such a network of tasks is done with the help of a time line

chart which indicates the start time of an activity, its duration and its finish

time followed by the next activity and so on till the last activity is reached

and completed. The project map which reflects the entire project schedule is

the basis for tracking the project and its performance. Tracking can be done

through project meetings and reviews, measuring the progress of each

activity, evaluating the performance, comparing performances, and

understanding the gaps for future course of action to be decided.

Page 40: Merged Document

Software Engineering Unit 3

Sikkim Manipal University Page No.: 40

Self Assessment Questions

1. _________________ is a systematic attempt to specify threats to the

project plan.

3.3.6 Risk Projection

Risk projection rates each risk in two ways – the likelihood that the risk is

real and the consequences of the problems associated with the risk, should

it occur. Risk projection is also known as risk estimation.

The risk projection activities are:

1) establish a scale to indicate the likelihood of a risk,

2) list out the consequences of the risk,

3) estimate the impact of the risk and

4) determine the overall accuracy of the risk projection

Self Assessment Questions

1. Risk projection is also called _____________

3.3.7 Risk Refinement

After the commencement of the project, during the initial stages the

statements on risks appear to be vague and general. Only after some

progress of the project does it become possible to clearly state the risks.

it may be possible to refine the risk into a set of more detailed risks, each

somewhat easier to mitigate, monitor, and manage. One way to do this is to

represent the risk in condition-transition-consequence (CTC) format [GLU].

The condition can be refined in the following manner:

Subcondition 1: Certain reusable components were developed by a third

party with no knowledge of internal design standards.

Subcondition 2: The design standard for component interfaces has not

been solidified and may not conform to certain existing reusable

components.

Subcondition 3: Certain reusable components have been implemented in a

language that is not supported on the target environment. The

consequences associated with these refined sub conditions remains the

same, but the refinement helps to isolate the underlying risks and might lead

to easier analysis and response.

Page 41: Merged Document

Software Engineering Unit 3

Sikkim Manipal University Page No.: 41

Self Assessment Questions

1. What are the different conditions for risk refinement?

3.3.8 Risk Mitigation, Monitoring and Management

The risk analysis activities help the software team to develop strategy to

deal with risks. An effective strategy is generally based on the following

issues of risk:

avoidance

monitoring

contingency planning

Risk management

Avoidance is the best strategy if the team adopts a proactive approach. The

following steps may be followed :

Meet current staff to determine causes for turnover.

Mitigate causes of risks as quickly as possible

Assume turnover will occur

Organize project teams so that information is communicated well among

each member

Define documentation standards and their requirements

Establish mechanisms to ensure proper upkeep of the documents

Conduct peer reviews of all work

Self Assessment Question(s) (SAQs)

1. What is the main goal of risk analysis?

3.4 Project Scheduling and Tracking

In the process of development and delivery of the software it is found that

most of the time the delivery of the finished product is delayed. There are

many reasons that could be attributed to the delayed delivery of the product.

Some of the reasons which leads to the delay of the project are listed below:

Very often the requirements are not clearly stated by the customer and

this leads to further changes in the developments which on the whole

causes a delay in the project completion.

Setting up of deadlines which are unrealistic based on the inputs from

agencies outside the software development group.

Page 42: Merged Document

Software Engineering Unit 3

Sikkim Manipal University Page No.: 42

Improper or underestimated amount of the effort and the number of the

resources required to do the job.

Inaccurate tools to monitor and track the project progress

Certain risks that were not considered during the planning process

leading to development of bottlenecks in the project.

Also there could be one or more problems related to the technicalities in

the project

Improper communication systems within and outside the development

area of the software.

3.4.1 People and Effort - Relationship

It is a well known fact that for small projects less number of people are

required and for large projects more people are required. The team working

on the project understands the requirements of the projects, analyze the

constraints and the conditions under which the product has to be developed.

They have to have a strong design and analytical mind to execute the

project as per the plan. As the requirements increases or as the complexity

in the project increases there might be a need to add more people into the

team to share the work. Sometimes it is successful and sometimes not.

Since more people would either gel well in the system team or add

confusion in the team. It is necessary to carefully assess the need to add

more people in the team by means of proper estimation of the effort and

load involved. Empirical relationships may also be used to estimate the

project completion in terms of the code lines to be delivered in the product

completion. Similarly the effort distribution in the project can be streamed. It

is believed that the effort distribution in a project generally follows a 40-20-

40 rule. This means about 40% of effort is towards front end and design

aspect. 20% of effort goes towards coding and the remaining 40% is

towards back end tasks.

Self Assessment Question(s) (SAQs)

1. Explain the relationships between people and effort.

3.4.2 Defining a Task Set for the Software Project

It is not always possible to define a unique set of task which would be

appropriate for all types of projects. It is dependent on the size of the

project, complexities involved in the project, constraints of the projects and

the skill set and capabilities of the team members working on the project.

Page 43: Merged Document

Software Engineering Unit 3

Sikkim Manipal University Page No.: 43

The task set is defined based on the category of the project which is dealt

with by the development team.

The categories of project work that are normally encountered are:

1. Projects dealing with development of new concepts in business.

2. Projects dealing with development of new applications in business as

indicated in the requirements list stated by the customer.

3. Projects dealing with the enhancement of existing facilities in the

product.

4. Project dealing with maintenance aspects of the business modules or

applications.

5. Project dealing with total new structure or restructuring an old system

into a new system or application leading to reengineering.

Self Assessment Question(s) (SAQs)

1. It is not always possible to define a ________ set of task which would be

appropriate for all types of projects.

3.4.3 Selecting Software Engineering Tasks

1. A task has to be properly distributed according to the needs of the

project deadlines and set targets. Each project may result in product

flow into another type. After completion of one project it leads to another

phased project to work on the enhancements. To develop a project

schedule, a task set must be distributed on the project time line.

Sometimes the projects may lead into what is known as Concept

Development instead of enhancements. The trigger for concept

development is the necessity of a new technology in a particular area.

determines the overall scope of the project. Concept Scoping determines

the overall scope of the project. Following tasks are performed leading to

Concept development projects:

1. Determine the scope of the project

2. Concept planning which establishes the organizations ability to work as

defined in the project scope.

3. Technology risk assessment is done to evaluate the risk associated with

the technology.

4. A proof or evidence of the concept to justify the feasibility of the

technology in the project.

Page 44: Merged Document

Software Engineering Unit 3

Sikkim Manipal University Page No.: 44

5. Implement the concept in such a manner that the customer would

understand it and review it and based on this react.

Self Assessment Question(s) (SAQs)

2. In order to develop a project schedule, a task set must be _______on

the project time line.

3. ____________determines the overall scope of the project.

3.4.4 Defining a Task Network

Tasks and Subtasks are related to each other in the sequence of project

network. When there are more people working on the project there is a

chance of people working parallel on different tasks. Under this situation, a

good control system has to be established to monitor the parallel tasks.

Task network is also known as Activity network. Activity network can be

represented graphically. Sometimes it is used as a methodology through

which sequence of tasks and dependencies are input.

3.4.5 Earned Value Analysis

Earned value analysis is a quantitative technique to assess the progress in

the project activities. The assessment is somewhat difficult as it involves

qualitative analysis of various factors affective the progress of the project.

There is an element of subjectivity which is difficult to measure. Hence

earned value analysis is considered very important in assessments of

activities in a project.

As per Humphrey, the earned value system provides a common value scale

for every project task, regardless of the type of work being performed. The

total hours to do the whole project are estimated, and every task is given an

earned value based on its estimated percentage of the total. Earned value is

a measure of progress expressed as percentage of completed project. As

per Fleming and Koppleman earned value analysis “provides accurate and

reliable readings of performance from as early as 15 percent into the

project.”

Earned value can be determined as follows: [Source : Software

Engineering- By Roger S Pressman]

1. The budgeted cost of work scheduled (BCWS) is determined for each

work task represented in the schedule. The work (in person-hours or

person-days) of each software engineering task is planned. Hence,

Page 45: Merged Document

Software Engineering Unit 3

Sikkim Manipal University Page No.: 45

BCWSi is the effort planned for work task i. To determine progress at a

given point along the project schedule, the value of BCWS is the sum of

the BCWSi values for all work tasks that should have been completed by

that point in time on the project schedule.

2. The BCWS values for all work tasks are summed to derive the budget at

completion,

BAC. Hence, BAC = – (BCWSk) for all tasks k

3. Next, the value for budgeted cost of work performed (BCWP) is

computed. The value for BCWP is the sum of the BCWS values for all

work tasks that have actually been completed by a point in time on the

project schedule.

Self Assessment Question(s) (SAQs)

1. What do you mean by earned value analysis?

2. ____________________enables us to assess the “percent of

completeness” of a project using quantitative analysis rather than rely on

a gut feeling.

3.4.6 Error Tracking

A team that works on a project to deliver the product or the services might

end up committing an error. The errors introduced could be at different

levels associated with different processes. If a record of such errors over

number of projects is maintained, it can become a useful source of

information to take decisions on similar errors in future. The manager may

even develop a process to manage such errors based on an appropriate

decision model to tackle the errors. Suitable metrics and measure may be

used to handle errors of similar nature if errors recurs. This process can

become one of the useful sources of information to report the status of the

project progress.

Self Assessment Question(s) (SAQs)

1. _______________can be used as one means for assessing the status

of a current project.

3.4.7 The Project Plan

A Project plan refers to a blue print of the project plan and its execution. A

plan has to indicate clearly the scope of the project , resources required,

risks associated and the corresponding risk management techniques,

management review plan, cost aspects and the methods and measure to

Page 46: Merged Document

Software Engineering Unit 3

Sikkim Manipal University Page No.: 46

ensure quality in the project. The project plan is represented in different

forms dependent on the type of user of the document of plan. The project

plan on the whole acts as a source of information to planner and executers.

The executers benefit from the project plan in the sense that they will have

the idea of how to monitor and control the progress of the project and to

ensure that the project throughout is kept on track.

Self Assessment Question(s) (SAQs)

1. What do you mean by project plan?

3.5 Summary

The software project planner estimates (i) time the project will take for

completion, effort required and the manpower needed. The project planner

must also know how to analyze future requirement of the project in terms of

manpower and other related resources. The scope of the project enables

the project manager to develop suitable estimates.

The estimates involves understanding (1) the number of Lines of codes

(2) values within the information domain, (3) manpower size or (4) the

number of person-months required. Empirical techniques and automated

tools may be used to predict project quantities. The time spent identifying,

analyzing, and managing risk results in stabilizing the project progress,

guiding the project smoothly towards its completion, along with tools and

techniques to track and control a project.

3.6 Terminal Question(s) (TQs)

1. Develop a list of software characteristics (e.g., concurrent operation,

graphical output) that affect the complexity of a project. Prioritize the list.

2. Performance is an important consideration during planning. Discuss how

performance can be interpreted differently depending upon the software

application area.

3. Provide five examples from other fields that illustrate the problems

associated with a reactive risk strategy.

3.7 Multiple Choice Question(s) (MCQs)

1. What are the different ways of creating project schedule?

(a)Time Line Chart (b) Gantt Chart (c) all the above (d) none of these

2. Which of the following are the project scheduling methods?

(a) PERT (b) CPM (c) All the above (d) none of these

Page 47: Merged Document

Software Engineering Unit 3

Sikkim Manipal University Page No.: 47

3.8 Answers to SAQs, TQs and MCQs

3.8.1 Answers to Self Assessment Question(s) (SAQs)

3.2.1

1. Uncertainty 2. Project size.

3.2.2 The objective of software project planning is to provide a framework

that enables the manager to make reasonable estimates of

resources, cost, and schedule.

3.2.3

1. Software scope 2. Software metrics

3.2.4 Refer to section 3.2.4

3.2.5 Cost and effort

3.2.6 Software sizing, problem based estimation

3.2.7 The Structure of Estimation Models, COCOMO model

3.2.8 Creating a Decision Tree, Outsourcing, Automated Estimation Tools

3.3.1 Refer to section 3.3.1

3.3.2 Uncertainty, loss

3.3.3 Risk identification

3.3.4 Risk estimation

3.3.5 Refer to section 3.3.5

3.3.6 To assist the project team in developing a strategy for dealing with

risk.

3.4.1 Refer to 3.4.1

3.4.2 Unique

3.4.3 Distributed, Concept scoping

3.4.4 Refer to section 3.4.4, Earned Value Analysis

3.4.5 Error tracking

3.4.6 Refer to section 3.4.6

3.8.2 Answers to Terminal Question(s) (TQs)

1. Refer to section 3.2.5

2. Refer to section 3.2.7

3. Refer to section 3.3.4

3.8.3 Answers to Multiple Choice Question(s) (MCQs)

1. c

2. c

Page 48: Merged Document

Software Engineering Unit 4

Sikkim Manipal University Page No.: 48

Unit 4 Software Quality Assurance

Structure

4.1 Introduction

4.2 Software Quality Assurance

Quality Concepts

The Quality Movement

Software Reviews

Formal Technical Reviews

Software Reliability

Background Issues

Software Quality Assurance – Activities

SQA plan

4.2 Summary

4.3 Terminal Question(s) (TQs)

4.5 Multiple Choice Question(s) (MCQs)

4.6 Answers to SAQs, TQs, and MCQs

4.1 Introduction

The main objective of software engineering is to produce high quality

software. But the question is – What is meant by software quality ?

According to Philip Crosby - The problem of quality management is not what

people don't know about it. The problem is what they think they do know . . .

Most of the software engineers believe that the quality of software begins

only after the software has been developed and implemented. In many

cases the software engineers start anticipating the quality issues that are

likely to be of importance and work towards development in that direction.

Irrespective of nature of approach it is the Software quality assurance (SQA)

that is applied throughout the software development process.

Objectives

In this chapter you will learn:

What is software quality assurance?

How does it work?

What is work product?

How is it important?

Page 49: Merged Document

Software Engineering Unit 4

Sikkim Manipal University Page No.: 49

4.2 Software Quality Assurance

4.2.1 Quality Concepts

It is a well known fact that all engineered and manufactured parts exhibit

some or the other variation. The variations may not be clearly visible always.

The variations are sometimes microscopic which can be identified by means

of some equipment necessary to measure the geometrical attributes,

electrical characteristics etc.

Quality

Designers specify the characteristics of the quality of a product. The grade

of materials used in the product development and product characteristics,

permissible tolerances, and performance specifications contribute to the

quality of design. For higher-grade of materials the tolerances are very

small. When the tolerance is set to a very low level the expected design

characteristics would be of high quality. When greater levels of performance

are specified, there is an increase in the design quality of a product and the

manufacturing processes and the product specification are set according to

the specified quality norms.

Quality of conformance is expressed as the degree to which the design

specifications are followed during the process of manufacturing. If the

degree of conformance is high then the level of quality of conformance is

also deemed as high.

Quality of conformance is mainly focused on the implementation of the

software.

Quality Control

Quality is the buzz word of every organization today. But how does one

work towards achieving quality in the organization and within the

organization at various process levels. There are a number of ways of

achieving quality. One can consider the fundamental step of quality where

the variations are measured with respect to the expected values in any

process or characteristics of the product. The first step towards quality is to

see that the variations are minimized. Controlling quality can be done by

means of measuring various characteristics of the product and

understanding the behavior of the product towards changes in the product

characteristics. It involves a series of inspections, reviews, and tests on the

software processes. A feedback mechanism in the process list will help in

Page 50: Merged Document

Software Engineering Unit 4

Sikkim Manipal University Page No.: 50

constantly reviewing the performance and enhancement in the performance.

A combination of the measurement and the feedback allows the software

developer to refine the software process and tend to approach perfection.

It is possible to automate these steps in the quality control process of the

software system. One of the concepts of quality control is that every process

can be measured. The measurement will tell as to whether there has been

any improvement in the process or not.

Quality Assurance

Quality assurance is a process of auditing various areas and identifying the

non conformances in such areas. A non conformance is reported if a

deviation is observed in the actual performance when compared with the

planned performance against certain expectation. The expectations are

listed out based on the requirement of certain standards norms. The non-

conformances are reported area wise or process wise. The report based on

the audit provides the management with the information that is necessary

for them to take suitable actions.

Cost of Quality

There are many activities involved in a software project leading to the

completion of the intended service or the product. Every such activity is

associated with some cost. And associated with every process is the quality

which again comes with certain cost. The total cost of quality means the

sum total of all the costs involved in setting up a quality process or a quality

activity and additional resources procured towards maintaining and running

the quality process. The main categories under which the quality costs may

be listed are the ones dealing with processes towards prevention, processes

towards appraisal, and processes towards maintenance. The main

components contributing towards the cost are the cost component of quality

planning, cost component of formal technical reviews and the cost

component pertaining to the test equipment.

Self Assessment Questions

1. _____________ is a process of auditing various areas and identifying

the non conformances in such areas.

2. ______________involves the series of inspections, reviews, and tests

used throughout the software process to ensure each work product

meets the requirements placed upon it

Page 51: Merged Document

Software Engineering Unit 4

Sikkim Manipal University Page No.: 51

3. The _________________includes all costs incurred in the pursuit of

quality or in performing quality-related activities.

4.2.2 The Quality Movement

The quality movement started in the 1940s with a major contribution on

quality aspects from W. Edwards Deming. One of the major benefit of

quality has been the saving in the overall cost of production. A system of

continuous improvement helps in achieving good quality. Kaizen, refers to a

system of continuous process improvement. The purpose of kaizen is to

develop a process that is visible, repeatable, and measurable. After Kaizen

it is atarimae hinshitsu, which refers to examination of intangibles that affect

the process and works to optimize their impact. Both kaizen and atarimae

hinshitsu focuses on processes. The next stage is kansei which leads to

improvement in the product itself and, potentially, to the process that

created it. The final stage is miryokuteki hinshitsu which broadens the

management concern beyond the immediate product.

Self Assessment Questions

1. The first step of quality movement is known as___________.

4.2.3 Software Reviews

[Source: Software Engineering – Roger S Pressman] Software reviews are

a "filter" for the software engineering process. That is, reviews are applied at

various points during software development and serve to uncover errors and

defects that can then be removed. Software reviews "purify" the software

engineering activities that we have called analysis, design, and coding.

Freedman and Weinberg discuss the need for reviews this way:

Technical work needs reviewing for the same reason that pencils need

erasers: To err is human. The second reason we need technical reviews is

that although people are good at catching some of their own errors, large

classes of errors escape the originator more easily than they escape anyone

else. The review process is, therefore, the answer to the prayer of Robert

Burns:

O wad some power the giftie give us to see ourselves as other see us

Page 52: Merged Document

Software Engineering Unit 4

Sikkim Manipal University Page No.: 52

A review – any review – is a way of using the diversity of a group of people

to:

1. Point out needed improvements in the product of a single person or

team;

2. Confirm those parts of a product in which improvement is either not

desired or not needed;

3. Achieve technical work of more uniform, or at least more predictable,

quality than can be achieved without reviews, in order to make technical

work more manageable.

Cost Impact of Software Defects

The primary objective of formal technical reviews is to find errors during the

process so that they do not become defects after release of the software.

The obvious benefit of formal technical reviews is the early discovery of

errors, so that they do not propagate to the next step in the software

process.

A number of industry studies (by TRW, Nippon Electric, Mitre Corp., among

others) indicate that design activities introduce between 50 and 65 percent

of all errors (and ultimately, all defects) during the software process.

However, formal review techniques have been shown to be up to 75 percent

effective in uncovering design flaws. By detecting and removing a large

percentage of these errors, the review process substantially reduces the

cost of subsequent steps in the development and support phases.

Defect Amplification and Removal

A defect amplification model can be used to illustrate the generation and

detection of errors during the preliminary design, detail design, and coding

steps of the software engineering process. A box represents a software

development step. During the step, errors may be inadvertently generated.

Review may fail to uncover newly generated errors, and errors from

previous steps, resulting in some number of errors that are passed through.

In some cases, errors passed through from previous steps are amplified

(amplification factor, x) by current work. The box subdivisions represent

each of these characteristics and the percent of efficiency for detecting

errors, a function of the thoroughness of the review.

Page 53: Merged Document

Software Engineering Unit 4

Sikkim Manipal University Page No.: 53

Self Assessment Questions

1. What is the use of using review?

4.2.4 Formal Technical Reviews

Software engineers participate in all the reviews of the technicalities of the

software. A technical review is a software quality assurance activity. The

main objectives of the Formal Technical Reviews are :

a) to bring out the nature and type of errors related to function, logic or

even with respect to the implementation of the software;

b) to check that the software development is as per the expectations

expressed in the plan;

c) to ensure conformance to standards stated with respect to the software

under considerations ;

d) to manage the project more conveniently and easily.

FTR also acts as a forum to provide orientation to members in the team to

work on the developments, provide facts leading to new ideas and

generation of approaches that could be adopted in the development of the

software.

The Review Meeting

The review meeting is also referred to as executive committee review

meeting or the management review. The frequency of the meeting is

decided by the review leaders of various functions in the organization. The

meeting is structured by the representative of the organization and the

review team by means of well defined agenda. The meeting is attended by

all the members and leaders of the various functions. There is an in-charge

to record the proceedings of the meeting. The in-charge is known as the

recorder. The FTR commences with an introduction of the members,

welcoming of new members to the meeting, and introduction of the agenda.

The meeting then begins agenda wise. The agenda is read out by the

representative and discussions on the agenda begin. A report on the

agenda is presented by the representative or by the function heads. If any

problems are encountered in a particular area, it is discussed at length by

the members of the meeting. Suitable corrective actions and preventive

actions are decided for implementation. Such action plans are recorded by

the recorder. After the completion of the review meeting the members of the

Page 54: Merged Document

Software Engineering Unit 4

Sikkim Manipal University Page No.: 54

review committee would have understood and accepted the action plan

resulting in the following :

1) product is accepted without any modification,

2) product is to be rejected because of major errors,

3) product modifications accepted with a clear understanding of the

deadlines and the in-charge who would be responsible for the change.

i) Review Reporting and Record Keeping

The meeting discussions are recorded and the minutes of the meeting are

circulated to all the members of the review committee. The minutes are

sometimes referred to as the key notes for various reports generated based

on the agenda. The contents of the reports are important as it will enable

one to understand the areas of strengths and weaknesses in the

organization.

Review Guidelines

Various guidelines are framed with respect to the review agenda and

communicated to all the concerned in the organization. The following are

some of the minimum guidelines for formal technical reviews:

1. While reviewing the product, errors should be pointed out gently in order

not to hurt anybody. The meeting discussion should be taken up

positively and should be constructive in suggestion. Once the review

session has commenced the members should follow the agenda. The

discussion should be related to the agenda. At no point of time during

the review should the focus be lost from the agenda. Any clarifications

on the agenda should be sought preferably in advance so as to ensure a

smooth conduct of the review. The review convener or the head should

throughout keep track of the time and the agenda and make

arrangements to support the discussions by means of arranging

necessary documents, equipments, demonstrations, statistics, reports

etc.

2. Recording points for further adjournment : Whenever there is any

discussion leading to some kind of debate or arguments or dissent, the

convener of the FTR can pitch in and moderate the discussion as the

case may be. But if the convener feels that certain points may not be

possible to be discussed during the ongoing session then the convener

may list out such points as agenda to be discussed in the next meeting

Page 55: Merged Document

Software Engineering Unit 4

Sikkim Manipal University Page No.: 55

or even adjourn the discussion of FTR to another mutually agreeable

date and time as per the convenience of the FTR members.

3. Areas of Problems : Areas which have reported problems during the

past performance may be highlighted by the convener so that the such

areas can become major areas of discussion. This would enable the

members of other similar areas to check upon their activities and control

recurring of such problem in their areas.

5. Limiting the members : It is a good practice to keep the FTR members

limited to the heads of the functions in the organization. Much before the

FTR members of various functions can organize meeting at their

functional level and come out with concreted points for the main

discussion in the FTR by the Function head. This would create a great

impact on the overall outcome of the FTR. The discussion in FTR if

limited to only the key persons or the heads it becomes easy to focus on

the key points pertaining to the agenda, as otherwise opinions and ideas

expressed by many members would lead to confusion and chaos in the

FTR. Also the focus on the agenda would get diluted.

Self Assessment Question(s) (SAQs)

1. What are the different steps for reviewing guidelines?

4.2.5 Software Reliability

The need for quality is there in the minds of everybody associated with the

software project. One of the key issues pertaining to the quality aspect is the

reliability of the software product. There are number of methods to ensure

reliability of the product which depends upon the characteristics of the

product and its features and the expectations from the product and its

services. One of the task before the software engineer or the software

manager is to establish the relevant reliability measures well in advance

before the implementation so that the quality is assured. A series of audits

may be conducted to keep a tab on the deviations if they tend to occur.

Statistically the software reliability may be defined as the probability of an

operation of a computer program which is free from error or has not failed

during the operation time, tested under a specified environment and for

specified time. Failure refers to nonconformance to the requirements of the

software stated. One of the simple measures of reliability is the express it as

the meantime between failure (MBF) which is the sum of mean time of

Page 56: Merged Document

Software Engineering Unit 4

Sikkim Manipal University Page No.: 56

occurrence of failure (MTF) and mean time towards repair (MTR). It is

necessary to identify and assess the hazards in software projects that affect

the software performance. If it is possible to identify the hazards in the early

stages of the software project then a module to counteract such hazards

could be developed or built in to the software which will then be able to

rectify errors leading to hazards. Suitable models could be used to achieve

this safety.

Background Issues

The quality assurance processes are very vital in establishing quality

features in the product. Various standard mechanisms are developed in the

companies to focus on the quality of the product. These mechanisms have

to undergo improvements time to time in order to maintain the competition in

the market. The product has to be viewed from the user point of view. A

satisfaction note on the various features of the product is necessary to be

reviewed to bring a change in the product to enhance it and to make it a

quality product.

4.2.6 Software Quality Assurance – Activities

The quality assurance has a number of activities. A number of people are

involved in these activities from software engineers to software managers to

quality controllers. The activities ranges from selecting a suitable method to

maintain the quality of the product, monitor the processes control the

processes, testing and validating various process and to ensure that the

performances of such processes are within certain prescribed quality norms.

The objective of the team members working on the SQA activities is to

achieve high degree of satisfaction on the quality front from the customers.

4.2.7 SQA plan

A plan pertaining to the software project is prepared and reviewed by

various experts before actually it is implemented. Everybody involved in the

project are bound to be governed by the plan. The plan indicates (a) various

types of assessments to be done (b) periodic reviews to be done

(c) conformance to standards (d) relevant documents and (e) proper

feedback mechanism which will enable to collect sufficient data which is

used for analysis.

Page 57: Merged Document

Software Engineering Unit 4

Sikkim Manipal University Page No.: 57

4.3 Summary

Quality is the buzz word of every organization today. But how does one

work towards achieving quality in the organization and within the

organization at various process levels. A feedback mechanism in the

process list will help in constantly reviewing the performance and

enhancement in the performance. Quality assurance is a process of

auditing various areas and identifying the non conformances in such areas.

There are many activities involved in a software project leading to the

completion of the intended service or the product. A technical review is a

software quality assurance activity. FTR also acts as a forum to provide

orientation to members in the team to work on the developments, provide

facts leading to new ideas and generation of approaches that could be

adopted in the development of the software. The need for quality is there in

the minds of everybody associated with the software project. One of the key

issues pertaining to the quality aspect is the reliability of the software

product. Failure refers to nonconformance to the requirements of the

software stated. The quality assurance processes are very vital in

establishing quality features in the product. A plan pertaining to the software

project is prepared and reviewed by various experts before actually it is

implemented. Data about the software engineering process should be

collected, evaluated, and disseminated to smoothly conduct a SQA.

Statistical SQA is helpful in improving the quality of the product and the

software process. Software reliability models along with suitable metrics, are

considered which leads to the identification of the appropriate data and data

collection methodologies making the process simpler and easier.

4.4 Terminal Questions (TQs)

1. Quality and reliability are related concepts but are fundamentally

different in a number of ways. Discuss them.

2. Can a program be correct and still not be reliable? Explain.

3. Can a program be correct and still not exhibit good quality? Explain.

4.5 Multiple Choice Questions (MCQs)

1. What is the full form of MTBF

(a) meantime- between-failure (b) Max time between failure (c) all the

above (d) none of these.

Page 58: Merged Document

Software Engineering Unit 4

Sikkim Manipal University Page No.: 58

4.6 Answers to SAQs, TQs and MCQs

4.6.1 Answers to Self Assessment Question(s) (SAQs)

4.2.1 Quality assurance, Quality control, cost of quality

4.2.2 Kaizen

4.2.3 Refer to section 4.2.3

4.2.4 Refer to section 4.2.4

4.6.2 Answers to Terminal Question(s) (TQs)

1. refer to section 4.2.2

2. refer to section 4.2.4

3. refer to section 4.2.6

4.6.3 Answers to Multiple Choice Question(s) (MCQs)

1. a

Page 59: Merged Document

Software Engineering Unit 5

Sikkim Manipal University Page No.: 59

Unit 5 Software Configuration Management

Structure:

5.1 Introduction

5.2 Software Configuration Management

Software Configuration Management

The SCM Process

Identification of Objects in Software Configuration

Version Control

Change Control

Configuration Audit

SCM Standards

5.3 Summary

5.4 Terminal Question(s) (TQs)

5.5 Multiple Choice Question(s) (MCQs)

5.6 Answers to SAQs, TQs, and MCQs

5.1 Introduction

It is not possible to avoid changes in software that has been developed

based on the specifications laid down by the customer. Changes may come

from customer or from a third party who is using the software module for

some or the other application. Changes can lead to lot of confusion amongst

various users if not perceived and analyzed properly. Changes have to be

understood and should be documented for all future references. It is a good

practice to keep a log of all such reviews and discussion leading to the

changes in the software. Configuration management is the management of

all such activities that require proper coordination of members and the

changes required in the software. It is an activity of the software

development. Its main objective is to minimize confusions in bringing about

a change in the software and thereby the software development activity.

This will lead to maximization of the productivity of the software. Software

configuration management (SCM) is applied throughout the software

process and it is applied as and when the change is required because

changes can occur during any stage. The main reason to develop SCM

activities are (1) to identify the changes, (2) to control the changes,

Page 60: Merged Document

Software Engineering Unit 5

Sikkim Manipal University Page No.: 60

(3) ensure proper implementation of changes and (4) reporting the changes

to the concerned.

Objectives

In this chapter you will learn :-

What is software configuration?

What are the steps in software configuration?

Why is it important?

5.2 Software Configuration Management

5.2.1 Software Configuration Management

It is well known that the output of most of the software process is the

information. This information is divided into three broad categories –

programs, documents and data. The list of items that consists of all the

information produced by one or more processes of the software are together

known as software configuration. As more and more processes are

executed more and more items are generated and the information list grows

along with the number of software configuration items (SCI).The software

project plan and the software requirements specifications are laid forth each

time the software configuration items builds up. This leads to creation of

hierarchy of information. The systems engineering law states that in the

systems life cycle, the system will undergo a change if not there will be a

tendency to change. This tendency will persist throughout the life cycle of

the software project development activity.

Baseline

A baseline is a concept of the software configuration management that is

useful in controlling the changes in the software process based on certain

guidelines.

Software Configuration Items

Configuration objects are formed out of clusters of software configuration

items. The objects are listed in the project database under a title. The object

has all applicable attributes and is connected by means of arrows indicating

relationships amongst objects in the system. An arrow indicates

compositional relation. A compositional relation means a data model and a

specific component are held together as a part of the object design

Page 61: Merged Document

Software Engineering Unit 5

Sikkim Manipal University Page No.: 61

specification. Interrelationships are indicated by means of doubled headed

straight arrows.

Self Assessment Question(s) (SAQs)

1. What do you mean by Baselines?

5.2.2 The SCM Process

A software project has to go through a set of processes. Each process has

to be well defined according to the output it is expected to generate. The

outputs are dependent on the inputs fed to the process. These processes

have to be developed keeping the quality aspect in mind. The processes are

expected to deliver quality output. The assurance on the quality front has to

be made at every process level in the overall development of the product

and the related services. One of the important elements of the software

quality assurance is the software configuration management. It is mainly

concerned with the control of the changes that are required in the processes

and maintaining different versions of the changes. These changes are

audited periodically to have a proper control on the changes and qualitative

control on the changes. Proper documentation is necessary for the audits to

be successful. A set of questions can become a part of periodic audit

process within each function of the software process like the ones listed

below :

What are the documented procedures to bring about a change in the

process and the product ?

How are the changes identified ?

What are the reasons for the change ?

Who has approved the change ?

What are the deadlines and who is responsible to bring about the

change?

How are the change s controlled ?

Upon bringing about the change is it communicated to others associated

with the project ?

The key five SCM task that could be brought out based on the above

questions are identification of change, change control, change version

control, auditing, and reporting.

Page 62: Merged Document

Software Engineering Unit 5

Sikkim Manipal University Page No.: 62

Self Assessment Question(s) (SAQs)

1. Software configuration management is an important element of

_________.

5.2.3 Identification of Objects

The software configuration items have to be managed and controlled. The

management of the items and their control is possible only if they are named

and identified depending upon the category to which they belong to. Object

oriented approach may be adopted for this task. There are two categories

generally – basic objects and aggregate objects. A unit of text is the basic

object. It is created by a software engineer during the stages of analysis,

design, coding and testing. Whereas aggregate objects are collection of

basic objects. Sometimes aggregate objects may also contain other

aggregate object.

Self Assessment Question(s) (SAQs)

1. What are the different types of objects?

5.2.4 Version Control

A number of configuration objects are created during the software process.

The changes resulting because of the process specification changes and

the tools are held together and combined into a single version control

number.

Clemm describes version control in the context of SCM as – Configuration

management allows a user to specify alternative configurations of the

software system through the selection of appropriate versions. This is

supported by associating attributes with version number and allowing a

configuration to be specified by describing the set of desired attributes.

Self Assessment Question(s) (SAQs)

1. ______________combines procedures and tools to manage different

versions of configuration objects that are created during the software

process.

5.2.5 Change Control

The change control in software engineering context as per James Bach is:

Change control is vital. But the forces that make it necessary also make it

annoying. We worry about change because a tiny perturbation in the code

can create a big failure in the product. But it can also fix a big failure or

Page 63: Merged Document

Software Engineering Unit 5

Sikkim Manipal University Page No.: 63

enable wonderful new capabilities. We worry about change because a

single rogue developer could sink the project; yet brilliant ideas originate in

the minds of those rogues, and a burdensome change control process could

effectively discourage them from doing creative work.

Self Assessment Question(s) (SAQs)

1. What do you mean by change control?

5.2.6 Configuration Audit

A software developer can maintain records pertaining to identification label,

change version control, and change control in order to avoid confusion

because changes if any in future. But the question is how can one ensure

that the change has been implemented properly or not? The answer is

(1) formal technical reviews and (2) the software configuration audit. To

determine the consistency with all SCIs, the reviewers have to assess the

omissions and the side effects of omission. It is a good practice to conduct

FTR for every change but however the size of the FTR committee may be

restricted depending upon its significance to other functions related to the

software project.

Self Assessment Question(s) (SAQs)

1. What do you mean by Configuration Audit?

5.2.7 SCM Standards

Over the past two decades a number of software configuration management

standards have been proposed. Many early SCM standards, such as MIL-

STD-483, DODSTD- 480A and MIL-STD-1521A, focused on software

developed for military applications. However, more recent ANSI/IEEE

standards, such as ANSI/IEEE Stds. No. 828-1983, No. 1042-1987, and

Std. No. 1028-1988 [IEE94], are applicable for nonmilitary software and are

recommended for both large and small software engineering organizations.

[Source : Software engineering – by Roger S Pressman]

5.3 Summary

Configuration management is the management of all such activities that

require proper coordination of members and the changes required in the

software. It is an activity of the software development. Its main objective is

to minimize confusions in bringing about a change in the software and

thereby the software development activity. As more and more processes are

Page 64: Merged Document

Software Engineering Unit 5

Sikkim Manipal University Page No.: 64

executed more and more items are generated and the information list grows

along with the number of software configuration items (SCI). The software

project plan and the software requirements specifications are laid forth each

time the software configuration items builds up. Configuration objects are

formed out of clusters of software configuration items. The objects are listed

in the project database under a title. A software project has to go through a

set of processes. Each process has to be well defined according to the

output it is expected to generate. The outputs are dependent on the inputs

fed to the process. The software configuration items have to be managed

and controlled. The management of the items and their control is possible

only if they are named and identified depending upon the category to which

they belong to. A software developer can maintain records pertaining to

identification label, change version control, and change control in order to

avoid confusion because changes if any in future.

5.4 Terminal Question(s) (TQs)

1. Why is the First Law of System Engineering true? How does it affect our

perception of software engineering paradigms?

2. Discuss the reasons for baselines, in your own words.

3. Assume that you're the manager of a small project. What baselines

would you define for the project, and how would you control them?

5.5 Multiple Choice Question(s) (MCQs)

1. Which of the following are the types of objects?

(a) Basic Objects (b) Aggregate objects (c) All the above

(d) None of these

2. Software Configuration belongs to which of the following activities?

(a) Umbrella activity (b) Economic Activity (c) All the above

(d) None of these.

5.6 Answers to SAQs, TQs and MCQs

5.6.1 Answers to Self Assessment Question(s) (SAQs)

5.2.1 A baseline is a software configuration management concept that

helps us to control change without seriously impeding justifiable

change

5.2.2 Software quality assurance

Page 65: Merged Document

Software Engineering Unit 5

Sikkim Manipal University Page No.: 65

5.2.3 Basic objects and aggregate objects

5.2.4 Version control

5.2.5 Refer to 5.2.5

5.2.6 Refer to section 5.2.6

5.6.2 Answers to Terminal Question(s) (TQs)

1. Refer to section 5.2.3

2. Refer to section 5.2.1

3. Refer to section 5.2.4

5.6.3 Answers to Multiple Choice Question(s) (MCQs)

1. c

2. a

Page 66: Merged Document

Software Engineering Unit 6

Sikkim Manipal University Page No.: 66

Unit 6 System Engineering

Structure

6.1 Introduction

Objectives

6.2 System Engineering

Computer Based Systems

The System Engineering Hierarchy

Requirements Engineering

6.3 Summary

6.4 Terminal Question(s) (TQs)

6.5 Multiple Choice Question(s) (MCQs)

6.6 Answers to SAQs, TQs, and MCQs

6.1 Introduction

One of the main reasons for the software engineering to get initiated is the

process called system engineering. Systems engineering deals with

software and also other related elements of the software pertaining to a

business. It deals with analysis, design and organization of the various

elements into the business system. The system ultimately has to give the

end result in the form of a product or a service. This process of systems

engineering is known as business process engineering. If a product with

certain characteristics is to be built the process is called product

engineering. The two processes business process and the product process

are responsible for the development of computer based systems.

Objectives

In this chapter you will study:-

What is System Engineering?

What is the importance of System Engineering?

What are the steps of System Engineering?

6.2 System Engineering

6.2.1 Computer Based Systems

There are so many types of systems namely political systems, educational

systems, avionics systems, manufacturing systems, banking systems,

subway systems, control systems, traffic systems, quality systems, etc. A

Page 67: Merged Document

Software Engineering Unit 6

Sikkim Manipal University Page No.: 67

system refers to a systematic style of doing things. The system works

according to the predefined rules and procedure. People working with the

systems have to follow the guidelines of the systems and strictly follow the

procedures in order to smoothly run the system. Only then it is possible to

get good results from the system. Any such system which takes the support

of the electronic computer is a computer based system. According to

Webster's definition, a computer-based system is ‘A set or arrangement of

elements that are organized to accomplish some predefined goal by

processing information’.

Self Assessment Question(s) (SAQs)

1. What do you mean by system?

6.2.2 The System Engineering Hierarchy

Systems engineering can be seen in any software development domain

irrespective of its application. It basically works on the top down approach or

the bottom up approach. These approaches are useful to navigate various

elements of the system. The system engineering process begins with a

‘word view’. To ensure proper business or technology context the entire

business domain is tested and inspected. The product domain also is

inspected. The purpose of the word view is to fully focus on a specific

domain of the business enterprise. Within each domain of the business, the

need for the systems engineering elements is analyzed. The elements that

are focused during the analysis are World view, Domain view, Element view,

Detailed view, Domain of interest, System element, the system engineering,

hierarchy, and design. A detailed description of the entire analysis is

provided. The broad context of the entire analysis is provided at the top of

the document hierarchy and technical details of various technical activities

are provided at the bottom.

System Modeling

System engineering is also a modeling process. The systems engineer

creates the model based on the requirements and the forces acting in the

domain in which the application is to be developed. The various steps in the

modeling that the systems engineer follows are:

1. Process Definition: In this step the system engineer identifies the needs

and specifications pertaining to the applications and clearly defines each

Page 68: Merged Document

Software Engineering Unit 6

Sikkim Manipal University Page No.: 68

process one by one with appropriate linkages and relationships between

each process.

2. Process Behavior: The systems engineer represents the process

behavior and the related assumptions for each process.

3. Process Input – The systems engineer defines the exogenous and

endogenous input to the model.

4. Process Linkages: the process linkages have to be well established so

that the engineer can understand the relationships better.

System Simulation

Whenever there is a need to develop an application to cater to the real world

problems, a model has to be prepared. The model has to be developed

based on the parameters identified to solve the problem and then to

sensitize the model towards any changes in the external forces that affect

the model. A model is an abstraction of the reality. There are different

computers that interact with the real world in different manner. Real world

events are monitored by automated systems and the programs that control

the activities through hardware and related software. The hardware and the

software together constitutes the computer based systems. Based on the

inputs and the information provided to the systems, the computer based

systems controls the machines and the processes. Lack of knowledge and

experience of the software engineer leads to inefficient performance of the

systems in which they work and also the outputs that are delivered by these

systems. It has been difficult to predict the performance, efficiency, and

behavior of such systems.

Self Assessment Question(s) (SAQs)

1. What do you mean by system stimulation?

2. What do you mean by system modeling?

6.2.3 Requirements Engineering

As discussed in the earlier paragraphs the computer based system is the

outcome of an engineering process and the specification pertaining to the

business domain application. But the main question is whether the

specifications have been stated clearly or not, or is it adequately stated, so

that the system engineer will not have to go through any major amendments

in future. The amendments if any may be restricted to a small proportion.

There is no unique solution to this question. The best thing is to work on a

Page 69: Merged Document

Software Engineering Unit 6

Sikkim Manipal University Page No.: 69

solid requirements engineering process. Requirements engineering will

provide necessary mechanism to understand what the customer wants and

what the customer needs are. The best way to tackle this is to have a solid

requirements engineering process. The process has to validate the

specification stated and manage other requirements as they are

transformed into a active operational system. The requirements engineering

process can be stated in five steps as follows:

Requirements description

Analysis of requirements

Specification of requirements

Modeling of the system

Validation of the system

Management the various requirements

Self Assessment Question(s) (SAQs)

1. What are the various steps of requirements engineering?

6.3 Summary

Systems engineering deals with software and also other related elements of

the software pertaining to a business. It deals with analysis, design and

organization of the various elements into the business system. Any such

system which takes the support of the electronic computer is a computer

based system. According to Webster's definition, a computer-based system

is ‘A set or arrangement of elements that are organized to accomplish some

predefined goal by processing information’. The system engineering process

begins with the with a ‘ word view’. To ensure proper business or technology

context the entire business domain is tested and inspected. The product

domain also is inspected. The purpose of the word view is to fully focus on a

specific domain of the business enterprise. The systems engineer creates

the model based on the requirements and the forces acting in the domain in

which the application is to be developed. Whenever there is a need to

develop an application to cater to the real world problems, a model has to

be prepared. The model has to be developed based on the parameters

identified to solve the problem and then to sensitize the model towards any

changes in the external forces that affect the model. A model is an

abstraction of the reality.

Page 70: Merged Document

Software Engineering Unit 6

Sikkim Manipal University Page No.: 70

6.4 Terminal Question(s) (TQs)

1. Find as many single-word synonyms for the word system as you can.

Good luck!

2. Build a hierarchical "system of systems" for a system, product, or service

with which you are familiar. Your hierarchy should extend down to

simple system elements (hardware, software, etc.) along at least one

branch of the "tree."

3. Select any large system or product with which you are familiar. Define

the set of domains that describe the world view of the system or product.

Describe the set of elements that make up one or two domains. For one

element, identify the technical components that must be engineered.

6.5 Multiple Choice Question(s) (MCQs)

1. Which of the following are the steps in system engineering?

(a) Requirements elicitation

(b) Requirements analysis and negotiation

(c) All the above (d) none of these

6.6 Answers to SAQs, TQs and MCQs

6.6.1 Answers to Self Assessment Question(s) (SAQs)

6.2.1 A set or arrangement of things so related as to form a unity or organic

whole.

6.2.2

1. Refer to section 6.2.2

2. Refer to section 6.2.2

6.2.3 Requirements elicitation, Requirements analysis and negotiation,

Requirements specification, System modeling, Requirements

validation, Requirements management

6.6.2 Answers to Terminal Question(s) (TQs)

1. Refer to section 6.2.1

2. Refer to section 6.2.2

3. Refer to section 6.2.3

6.6.3 Answers to Multiple Choice Question(s) (MCQs)

1. c

Page 71: Merged Document

Software Engineering Unit 7

Sikkim Manipal University Page No.: 71

Unit 7 Analysis Concepts and Principles

Structure:

7.1 Introduction

Objectives

7.2 Analysis Concepts and Principles

Requirements Analysis

Requirements Elicitation for Software

Analysis Principles

Software Prototyping

7.3 Summary

7.4 Terminal Question(s) (TQs)

7.5 Multiple Choice Question(s) (MCQs)

7.6 Answers to SAQs, TQs, and MCQs

7.1 Introduction

A step towards building a good and a stable software platform for the user

requires the software team of engineers and managers to concentrate on

the processes of discovery, refinement, modeling, and specification. The

system engineer has to establish the system requirements and role

allocated to software in detail. The software engineer has to then create

various models to indicate the need of specific data, information and

controls. The needs are translated into suitable formats represented by the

models. For the purpose of detailed analysis models are created and

alternative solutions are analyzed. Donald Reifer describes the software

requirement engineering process in the following way:

Requirements engineering is the systematic use of proven principles,

techniques, languages, and tools for the cost effective analysis,

documentation, and on-going evolution of user needs, and the specification

of the external behavior of a system to satisfy those user needs. Notice that

like all engineering disciplines, requirements engineering is not conducted in

a sporadic, random or otherwise haphazard fashion, but instead is the

systematic use of proven approaches.

The effectiveness of the operations of the software depends upon the

degree of involvement of the software engineer and customer. The

Page 72: Merged Document

Software Engineering Unit 7

Sikkim Manipal University Page No.: 72

involvement refers to how much the software engineer and customer take

an active role in software requirements engineering. Software requirements

engineering is a set of activities known as analysis. The role of the software

engineer as a software developer is to act as an interrogator, consultant,

problem solver, and negotiator.

Objectives

In this unit you will study:

What is concept analysis and principle?

What is the work product?

What is the work product of concept analysis and principle?

7.2 Analysis Concepts and Principles

7.2.1 Requirements Analysis

A software is developed based on the requirements stated by the customer.

The requirements stated are sometime not very clear. The interpretation of

the requirements in the initial outlay may change as the interaction between

the developer and the customer goes on and on with respect to the

software. It is very difficult to perfectly predict the customer’s expectation

from the software hence there is always a gap between the software system

level requirements engineering and the software design. A process is

therefore necessary to bridge the gap. Requirements analysis is a software

engineering process which helps in bridging the gap between system level

requirements engineering and software design. It results in the specification

of software’s operational characteristics with respect to function, data, and

behavior. It also acts as an indicator that indicates software's interface with

other system elements and the various constraints within which the software

developed must work.

As a step in requirements analysis, the software engineer refines the

software allocation, and build models of the data, functional, and behavioral

domains. Requirements analysis provides the software designer with a

representation of the following :

i) information,

ii) function, and

iii) behavior

Page 73: Merged Document

Software Engineering Unit 7

Sikkim Manipal University Page No.: 73

The three representations can be translated to data, architectural, interface,

and component-level designs. Requirements specification is stated. It

provides the developer and the customer with the means to assess quality

of the software. The five areas of software requirements analysis are:

1) problem recognition,

2) evaluation and synthesis,

3) modeling,

4) specification, and

5) review.

The commencement of the software requirements analysis and the

development activity is marked by the studies and reports on the System

Specification and the Software Project Plan. For the software development

team it is important to understand the software in the context of a system.

They should be able to review the software scope that was used to generate

planning estimates. Communication of the analysis details to the customer

is very important. This will lay the foundation to the development of a good

software system for the customers.

Self Assessment Question(s) (SAQs)

1. ____________is a software engineering task that bridges the gap

between system level requirements engineering and software design.

7.2.2 Requirements Elicitation for Software

The requirements have to be analyzed and modeled. The details are

gathered through an elicitation process. The problem a customer has may

be possible to be solved by a computer-based solution technique.

For the communication of the details between the developer and the

customer one has to make it clear by taking necessary steps to ensure that

the communication is proper. Once the communication begins there will be

lots of points which may be not very clear or is misunderstood. A proper

communication process may be established and the following stages in the

process may be followed :

Initiating the Process – This basically involves asking a few general

questions pertaining to the software process, and on the personnel

involved in the process. It can act as an ice-breaker which is very

necessary for a successful completion of a project.

Page 74: Merged Document

Software Engineering Unit 7

Sikkim Manipal University Page No.: 74

Facilitated Application Specification Techniques – It helps in grouping of

customers and enable people to work together to understand the

problem identified, discuss various techniques to solve the problem, and

the related methodologies.

Quality Function Deployment- it is one of the main steps which enables

the team to understand the customer requirements and translate them

into technical forms.

Use-Cases- Based on the above points it is possible to link the

requirements stated by the customer to situations and scenarios already

faced and bring out the performances to the notice of the customer to

enable him to understand the process in a better way. At this stage the

customer will be in a position to bring about changes to the stated

requirements.

Self Assessment Question(s) (SAQs)

1. What are the different steps in requirement elicitation for software?

7.2.3 Analysis Principles

A large number of analysis models have been developed over the last few

decades of research in the software development area. Analysis problems

and their causes have been identified and developed by the researchers.

Each of the model is unique in its own way to deal with the software

problem. However, the analysis methods are all related by various

operational principles which are as follows:

1. The information domain of a problem should be well represented and

understood.

2. Definition of the functions that the software is to perform.

3. Representation of the behavior of the software.

4. The models used to predict information, function, and behavior must be

partitioned. The analysis process migrates from essential information

towards implementation details.

By applying these principles, the analyst will be able to systematically

approach a problem. A systematic approach consists of four steps –

information domain, modeling, partitioning, essential and implementation

views. Examination of the information domain leads to clear understanding

of the model and its application clearly. The use of appropriate models

characteristics the function and behavior which is then communicated to the

Page 75: Merged Document

Software Engineering Unit 7

Sikkim Manipal University Page No.: 75

customer. Partitioning can be applied to reduce complexity. Implementation

views of the software are necessary to accommodate the logical constraints

that are imposed by the processing requirements as explained below:

1) The Information Domain

Software applications are a set of processes. Software applications are

collectively called data processing. Software is built to process data, to

transform data from one form to another. It accepts inputs in one form

and processes it or manipulates it to generated information of another

form which is then the output of that process. This is applicable to batch

software for a payroll system or real-time embedded software to control

fuel flow to an automobile engine. A software also processes events. An

event represents some system control and is a boolean data.

2) Modeling

Functional models are created in order to understand the actual entity of

software clearly. A model should be able to take different forms

depending upon the area of application. The model must be capable of

representing the information that software transforms, the functions that

enable the transformation to occur, and the behavior of the system as

the transformation is taking place.

3) Partitioning

Problems are sometimes very large and complex. Such problems are

difficult to understand in the first attempt. To manage such situation

partitions may be made. Problems are broken down in to small parts that

can be easily understood and interfaces could be established between

such small parts. For this reason, we tend to partition (divide) such

problems into parts that can be easily understood and establish

interfaces between the parts. This will lead to overall achievement of

the function. Partitioning decomposes a problem into its constituent

parts. A hierarchical representation of function and the partition

according to the hierarchy will lead to the following -

i) increased visibility of the function vertically in the hierarchy,

ii) decomposing the problem horizontally in the hierarchy, and

iii) increased clarity of the relationships between various functions

Page 76: Merged Document

Software Engineering Unit 7

Sikkim Manipal University Page No.: 76

4) Essential and Implementation Views

The functional aspect of the software and the information to be

processed forms the essential view of software requirements. Options

can be open in the early stages of the development. The focus of the

development can then be on one or more options which tend to appear

more feasible than the rest. Implementation details to a large extent are

then clear in the minds of the development team.

The implementation view of the software requirements exhibits the real

world attributes of processing functions and the information structures. The

analyst has to recognize the constraints imposed by predefined system

elements. They have to consider the implementation view of function and

information when such a view is appropriate.

Self Assessment Question(s) (SAQs)

1. A/an _______of software requirement presents the functions to be

accomplished and information to be processed without regard to

implementation details.

7.2.4 Software Prototyping

Analysis should be conducted independent of the software engineering

approach. The form of analysis will vary according to the area of analysis..

In some cases, operational analysis principles are applied and a model is

derived. In such situations requirements elicitation is conducted. Various

analysis principles are applied, and a model of the software to be built,

called a prototype, is developed. the construction of a prototype at the

beginning of analysis is desired. The model is the only means through which

requirements can be effectively derived. The model evolves into production

software.

Selecting the Prototyping Approach

Prototyping Methods and Tools

Self Assessment Question(s) (SAQs)

1. What do you mean by software prototyping?

7.2.1 Elements of analysis model

An analysis model consists of data dictionary at the center of three main

segmented diagrams – (i) ERD-entity relationship diagram, (ii) DFD - data

flow diagram and (iii) STD - state transition diagram. The construction of the

Page 77: Merged Document

Software Engineering Unit 7

Sikkim Manipal University Page No.: 77

three diagrams is based on the inputs from data objects designed on

customer requirements, their controls specified and the necessary

processes.

7.2.2 ERD, Functional and Behavioral modeling and the Control

Specification

ERD indicates relationships between data objects. The attributes of each

such object is described by object description. The DFD provides indication

of transformation of data from one stage to another and the functions

responsible for such transformation. This is essentially based on the

functional modeling and its specifications. Based on the functionality the

relationship and the behavioral aspect of the objects entities are described

and detailed. Description of each function of the DFD is indicated in PSPEC-

process specification. The STD indicates the behavior of the systems to

external changing forces. The description of each is listed out in the Data

dictionary. Necessary controls are then described in order to control the flow

of data at various functional modules and the way it needs to be formatted

for further processing.

Additionally, information on the control features of the system can be stated

in specification known as CSPEC- control specification.

Self Assessment Question(s) (SAQs)

1. The ________ indicates the behavior of the systems to external

changing forces.

2. The _________ provides indication of transformation of data from one

stage to another and the functions responsible for such transformation.

7.3 Summary

The system engineer has to establish the system requirements and role

allocated to software in detail. The software engineer has to then create

various models to indicate the need of specific data, information and

controls. The effectiveness of the operations of the software depends upon

the degree of involvement of the software engineer and customer. The

involvement refers to how much the software engineer and customer take

an active role in software requirements engineering. A software is

developed based on the requirements stated by the customer.

Requirements analysis provides the software designer with a representation

Page 78: Merged Document

Software Engineering Unit 7

Sikkim Manipal University Page No.: 78

of the information, function, and behavior. The commencement of the

software requirements analysis and the development activity is marked by

the studies and reports on the System Specification and the Software

Project Plan. The requirements have to be analyzed and modeled. The

details are gathered through an elicitation process. The problem a customer

has may be possible to be solved by a computer-based solution technique.

A proper communication process may be established and the following

stages :

Initiating the Process, Facilitated Application Specification Techniques,

Quality Function Deployment, Use-Cases. A systematic approach to

requirement analysis consists of four steps – information domain, modeling,

partitioning, essential and implementation views. Various analysis principles

are applied, and a model of the software to be built, called a prototype, is

developed. the construction of a prototype at the beginning of analysis is

desired.

7.4 Terminal Question(s) (TQs)

1. Software requirements analysis is unquestionably the most

communication intensive step in the software process. Why does the

communication path frequently break down?

2. There are frequently severe political repercussions when software

requirements analysis (and/or system analysis) begins. For example,

workers may feel that job security is threatened by a new automated

system. What causes such problems? Can the analysis task be

conducted so that politics is minimized?

3. Discuss your perceptions of the ideal training and background for a

systems analyst?

7.5 Multiple Choice Question(s) (MCQs)

1. Software Analysis is divided into the following areas.

(a) one (b) three (c) five (d) 6

Page 79: Merged Document

Software Engineering Unit 7

Sikkim Manipal University Page No.: 79

7.6 Answers to SAQs, TQs, and MCQs

7.6.1 Answers to Self Assessment Questions

7.2.1 Requirements analysis

7.2.2 Initiating the Process, Facilitated Application Specification

Techniques, Quality Function Deployment, Use-Cases

7.2.3 Essential view

7.2.4 Refer to section 7.2.4

7.2.5 i) STD, ii) DFD

7.6.2 Answers to Terminal Question(s) (TQs)

1. Refer to section 7.2.2

2. Refer to section 7.2.4

3. Refer to section 7.2.3

7.6.3 Answers to Multiple Choice Question(s) (MCQs)

1. c

Page 80: Merged Document

Software Engineering Unit 8

Sikkim Manipal University Page No.: 80

Unit 8 Design Concepts and Principles

Structure:

8.1 Introduction

Objectives

8.2 Design Concepts and Principles

Software Design and Software Engineering

The Design Process

Design Principles

Design Concepts

Effective Modular Design

Design Heuristics for Effective Modularity

8.3 User Interface Design

The Golden Rules

User Interface Design

8.4 Component-Level Design

Structured Programming

8.5 Summary

8.6 Terminal Question(s) (TQs)

8.7 Multiple Choice Question(s) (MCQs)

8.8 Answers to SAQs, TQs, and MCQs

8.1 Introduction

The goal of the designer is to produce a model of an entity that will later be

developed. The process by which the design model is developed is

described by Belady There are two major phases to any design process:

diversification and convergence. Diversification is the acquisition of a

repertoire of alternatives, the raw material of design: components,

component solutions, and knowledge, all contained in catalogs, textbooks,

and the mind. During convergence, the designer chooses and combines

appropriate elements from this repertoire to meet the design objectives, as

stated in the requirements document and as agreed to by the customer. The

second phase is the gradual elimination of all but one particular

configuration of components, and thus the creation of the final product.

Page 81: Merged Document

Software Engineering Unit 8

Sikkim Manipal University Page No.: 81

Objectives

In this chapter you will study:

What is Design concept and principles?

What is the work product?

What is the work product of Design Concept and principles?

8.2 Design Concepts and Principles

8.2.1 Software Design and Software Engineering – Its evolution and

hierarchy

Software design is present at the technical kernel of software engineering.

Software design is applied regardless of the software process model that is

used. After the software requirements are stated and analyzed, software

design is the first of three technical activities – design, code generation, and

test. These three technical activities are required to build and verify the

software. Each activity transforms the information into a form which is a

validated computer software. Each of the elements of the analysis model

provides information necessary to create the four design models required for

a complete design specification. Software requirements which are stated

usually comes with a stream of data, functional, and behavioral models,

which is the basis for design task. The design task produces a data design,

an architectural design, an interface design, and a component design.

The information domain model is transformed by the data design into a

suitable data structure .this data structures is necessary to create the

software. Entity relationship diagram represents the relationships between

entity and the data objects. The data content in the data dictionary provide

the basis for the data design activity. This may happened in conjunction with

the design of software architecture. As each component of the software is

designed, more and more detailed data design occurs. The interface design

describes how the software communicates within itself. It also describe how

the software communicate with systems that interoperate with it, and with

the people who are the end users. An interface signifies the flow of

information and a specific type of behavior.

The component-level design is responsible for the transformation of the

structural elements of the software architecture into a procedural description

of software components. The basis for a component design in the software

is the information that is obtained from the PSPEC, CSPEC, and STD.

Page 82: Merged Document

Software Engineering Unit 8

Sikkim Manipal University Page No.: 82

During the process of the software design, decision have to be taken at

various stages which is mainly responsible for the overall success of the

software and the convenience with which the software could be maintained.

Self Assessment Question(s) (SAQs)

1. The ___________transforms the information domain model created

during analysis into the data structures that will be required to implement

the software.

2. The _________________ transforms structural elements of the software

architecture into a procedural description of software components.

8.2.2 The Design Process

Software design is type of a repetitive process also referred to as an

iterative process. Through this iterative process the requirements are

translated into a “blueprint” for constructing the software. Initially, the

blueprint represents a holistic view of software. This means that the design

is represented at a high level of abstraction. The highest level of abstraction

can be directly traced to the specific system objective, and more detailed

data, functional, and behavioral requirements. As more and more iterations

takes place the software undergoes refinement in its design leading to

design representations at much lower levels of abstraction. It can still be

traced to the requirements, but the connection is more elusive.

i) Design and Software Quality- It is necessary that the quality of the

design process is maintained and monitored throughout the design

process. The entire design process is broken down into modules,

distinct data structures to present the data and interfaces and

independent functional modules. This will enable easy control of the

software quality.

ii) The Evolution of Software Design- It is a continuous process. Various

technological developments in the design has lead to the evolution of

various improved methodologies in the software design and its

architecture. It is necessary to apply basic principles and concepts to the

pertinent data and interfaces at component level.

Self Assessment Question(s) (SAQs)

1. What is the design process?

Page 83: Merged Document

Software Engineering Unit 8

Sikkim Manipal University Page No.: 83

8.2.3 Design Principles

Software designing involves both modeling and designing processes. Hence

software design is both a process and a model. All the aspects of the

software design are possible to be represented in the form of a sequence of

steps. The sequenced steps enable the designer to describe and

understand all the aspects for the software module in the design. To

develop a good software it is necessary to have experienced developers in

the software team who are capable of anticipating likely problems under

specific conditions. They will be well conversant with the critical success

factors which are necessary to develop competent software. The design

model that is created for software provides number of views. The software

developer will be able to navigate the entire software process based on the

basic principles of the software design.

Davis suggests a set of principles for software design, which have been

adapted and extended in the following list:

The design process should not suffer from “tunnel vision.” A good

designer should consider alternative approaches, judging each based on

the requirements of the problem, and the resources available to do the

job.

The design should be traceable to the analysis model. Because a

single element of the design model often traces to multiple

requirements, it is necessary to have a means for tracking how

requirements have been satisfied by the design model.

The design should not reinvent the wheel. Systems are constructed

using a set of design patterns, many of which have very likely been

encountered before. These patterns should always be chosen as an

alternative to reinvention. Time is short and resources are limited!

Design time should be invested in representing truly new ideas, and

integrating those patterns that already exist.

The design should “minimize the intellectual distance” [DAV95]

between the software and the problem as it exists in the real world.

That is, the structure of the software design should (whenever possible)

mimic the structure of the problem domain.

The design should exhibit uniformity and integration. A design is

uniform if it appears that one person developed the entire thing. Rules of

style and format should be defined for a design team before design work

Page 84: Merged Document

Software Engineering Unit 8

Sikkim Manipal University Page No.: 84

begins. A design is integrated if care is taken in defining interfaces

between design components.

Self Assessment Question(s) (SAQs)

1. What are the different Design principles?

8.2.4 Design Concepts

A number of design concepts have evolved over the past few decades.

Each concept is strong in its foundation that enables the designer to work

conveniently on various models both simple and complex. Each of the

concept provides the software engineer with knowledge to answer the

following questions:

What is the criteria that will help in partitioning a software?

How is it possible to separate the function or data structure from a

conceptual representation of the software?

What are the criterions that define the quality of the software design?

Abstraction and Refinement

Abstraction refers to the process of formulating general concepts by

abstracting common properties of instances. Data abstraction refers to a

collection of data that describes a data object taken from a real world

problem. The process of program refinement proposed by Wirth is

analogous to the process of refinement and partitioning that is used during

requirements analysis. The differentiation of the data abstraction is created

at the level of implementation. At different levels of the software design

process, refinement is done. It is actually a process of elaboration.

At the beginning the statement of function is made. The statement is defined

at a high level of abstraction. The statement describes the function and the

information conceptually. It is also very important to hide certain design

details in a software program specially the functions. It is necessary to hide

the design details because some of the functional aspects in the program

would undergo a change during the course of its development based on

changes indicated by the customer. This would also enable the security of

the other parts of the software as each change would be local to the function

in which the change is expected to be incorporated. It provides no

information about the internal workings of the function or the internal

structure of the information. Refinement requires the designer to work on the

elaborate details of the function statement. It provides more and more detail

Page 85: Merged Document

Software Engineering Unit 8

Sikkim Manipal University Page No.: 85

as each successive refinement occurs. Refinement is very effective if the

following points are considered and are taken into the process of

decomposing and understanding the function problem of the software.

1. Modularity

2. Software Architecture

3. Control Hierarchy

4. Structural Partitioning

5. Data Structure

6. Software Procedure

7. Information Hiding

Self Assessment Question(s) (SAQs)

1. A ________is a named collection of data that describes a data object.

2. What do you mean by refinement?

8.2.5 Effective Modular Design – Cohesion and Coupling

Most of the concepts revolve around the idea of modularity, as mentioned in

earlier sections. Modularity is one of the most accepted idea in most of the

practical areas. The benefit of modularity is derived in the form of simplicity

in solving complex problems, easy approach to maintain the systems, and

permits parallel development and implementation of various other modules

in the system. The modularity induces functionality in the modules. Each

module of the system is independent of the other and the functional

independence can be either of coupling type or cohesion type. Coupling

refers to the degree of interaction between two or more modules in a

system. Cohesion is the term used to describe how well the contents of a

module in the system are bonded together. It is good to have a high degree

of cohesion and low degree of coupling. Cohesion and coupling support the

reuse of a code and easy maintenance. The design aspects of the

modularity focus on maximizing cohesion and minimizing coupling.

A cohesive module is generally meant to perform a single task in a system

with little interactions with other modules in the system. Cohesion can be of

any of the three types : coincidental, logical, communication type. Coupling

can be of the following types :

i) data coupling – used for passing parameters and interaction

with data

Page 86: Merged Document

Software Engineering Unit 8

Sikkim Manipal University Page No.: 86

ii) control coupling – used for the purposed of sharing related

control data

iii) common coupling – for the purposed of sharing common data

iv) content coupling – for linking one module to another content in

another module.

Self Assessment Question(s) (SAQs)

1. What are the different parts of effective modular design?

8.2.6 Design Heuristics for Effective Modularity

It is possible to achieve effective modularity by careful study of the entire

systems and meticulously planning the modules. Also the design could be

made effective by thoroughly understanding the relationships between

different modules in the system and their interdependencies. The program

structure for modularity can be adjusted according to the following

heuristics:

Meyer defines five criteria to evaluate a design method or the steps in terms

of its ability to define an effective modular system:

i) Modular decomposability: it refers to a mechanism where a problem is

decomposed in to sub problems, as this will help reduce the

complexity in the problems and make the entire big complex problem

in to smaller simpler problems.

ii) Modular composability: it refers to a design methodology that enables

existing components of the design modules to be assembled in to new

ones.

iii) Modular understandability: it refers to the understanding ability of the

developer of the modules as a single standalone modules as this

enables the developer to build the module further and makes it easier

to change the module.

iv) Modular continuity: it refers to the flexibility offered to bring in changes

in the modules without bringing in major changes in the entire system

modules.

v) Modular protection: it refers to the security of the modular content from

getting modified accidentally.

Modules may be exploded to improve module independence once the

program structure has been developed. In the final structure an exploded

module becomes two or more modules. An imploded module is the result of

Page 87: Merged Document

Software Engineering Unit 8

Sikkim Manipal University Page No.: 87

combining the processes of the modules. The scope of a module is defined

based on the effect of the decision changes on all other modules. If one of

the module makes a decision that affects another module it refers to

violation of this heuristic. The main cause of software errors is the module

interface complexity. Interfaces should be designed to pass information.

Interfaces should be consistent. Unrelated data passed via an argument list

is an indication of low cohesion. The module in question should be

reevaluated.

A module is said to be predictable when it is treated as a black box. This

means the same external data will be produced irrespective of internal

processing details. Modules that have internal "memory" can be

unpredictable. Software is easier to understand and therefore easier to

maintain.

Self Assessment Question(s) (SAQs)

1. What are the Design Heuristics for Effective Modularity?

8.2.1 Design Model Implementation and Documentation: A design model

for the development of software should be stable. The various design issues

are considered based on the requirements specification and each one of the

issue is review at full length and then a evaluation is made. The evaluation

of the design aspects is based on the experience of the team members and

the ability to lay down criteria for such evaluation.

Criteria for each of the module in the software and its modularity is listed

module by module, considering the modules interface and the various object

interface to the module and the corresponding actions that are expected by

the objects on other such modules or objects. It can be made stable by

adopting a suitable model of stability like a pyramid model. The design

model should not get toppled even with the slightest of the changes in the

system or factors external to the system. The designing aspects with

respect to the specifications have to be documented, indicating all relevant

procedures, algorithms, data structures, data tables etc. Appropriate

instruction manuals may be prepared to indicate the usage of the

application.

8.2.2 Architecture and its importance – Architecture refers to the

structure of the system. It consists of various components and their

Page 88: Merged Document

Software Engineering Unit 8

Sikkim Manipal University Page No.: 88

relationships in the system. The components can be considered as software

program module. It enables one to easily communicate various aspects of

the module under development and the one which is already developed. It

also helps to build successive modules based on the development of the

modules already done by means of proper architectural documents.

8.2.3 Data concepts – Objects pertaining to data are designed from the

ERDs. Data structure has been the main component of the design in the

past. But today the challenges are different which has led to the emergence

of concepts like data mining and data warehouse apart from the

conventional databases. The purpose of data mining is to provide a means

to search through the databases to abstract business information suitable to

a business environment. In a data warehouse, large amount of databases

are stored holding the business information on a day to day basis. Some of

the key aspects of data warehouse are its orientation to the subject of

interest, consistent naming conventions, and non-changing nature of the

data in the database.

8.2.4 Style, Mapping and Flow – software that is developed may exhibit

certain style which is unique to its purpose and application. The style

describes categorically the components and the connectors of the

components. It also describes the limitations and the semantics pertaining to

the overall characteristics of the software. The different styles that exist in

different software architectures have to make to adhere to a uniform

standard style. This can be achieved by means of mapping. For an effective

mapping to be implemented one has to have an effective information flow

from module to another. The data that has to move from one module of a

particular style to another module of a different style will have to flow

through a transforming module which transforms it to the form needed. The

flow in and the flow out to and from the transforming module is controlled in

a sequential manner. Each of the tasks has to follow a defined design step.

8.2.5 Interface Object and Actions-In any design objects which interface

have to be defines and the actions on them have to be clearly stated.

Objects are then classified depending upon their type. The objects may be

of target type, source type or application type. Actions on the stored data

could be sorting, merging etc., followed by screen layout.

Page 89: Merged Document

Software Engineering Unit 8

Sikkim Manipal University Page No.: 89

8.2.6 Design Issues, Implementation, Evaluation and Notation – The

commonly considered design issues are systems response time, help to the

user, handling of error information and labeling of command. Response time

refers to the time from the point user enter the response till the time system

responds to the user. A design model is implemented as a prototype. The

prototype is checked by users and they are then modified.

A number of interface design and tools of prototyping are used to create

windows, menus, command, messages etc. For implementing the tools

provide support to manage various devices, validation of inputs, error

handling etc. The user then evaluates the interfaces keeping in mind its

usage. User then provides a feedback on the interface either to modify, or to

change, or in the form of few suggestions to change the outlook etc. The

user comments are then reviewed by the designer and takes action to

implement the changes. In the design, various notations are used to

graphically represent a task or an instruction. Sequence is represented by

means of two connected boxes. If – then – else is represented by means of

rhombus, repetition can be indicated by means of closed sequential

connected boxes and rhombus. Another notation is to use the graphical box

design, developed by Nassi and Shneiderman and extended by Chapin also

know as N-S charts or Chapin charts. Another notation is to use a decision

table to indicate multiple conditions and multiple actions based on

conditions. The table consists of four parts – list of conditions, list of actions,

condition combinations and action on conditions. Another form is a PDL-

program design language also known as pseudo-code. It uses the simple

language for indicating the steps with some parts written in the syntax of the

language of programming. A PDL should include subroutine definitions,

description of all interfaces, data definition, structures etc.

8.3 User Interface Design

8.3.1 The Golden Rules

Theo Mandel states three “golden rules”:

1. Place the user in control.

2. Reduce the user’s memory load.

3. Make the interface consistent.

These golden rules form the basis for a set of user interface design

principles that guide this important software design activity.

Page 90: Merged Document

Software Engineering Unit 8

Sikkim Manipal University Page No.: 90

Self Assessment Question(s) (SAQs)

1. What are the different golden rules?

8.3.2 User Interface Design

Different Models of system function are created to design a user interface.

The human and computer oriented tasks are then delineated; design issues

pertaining to the interfaces are considered; prototyping tools are used and

ultimately implement the design model. The results are then evaluated for

the purpose of quality.

Self Assessment Question(s) (SAQs)

1. What is the first step of user interface design?

8.4 Component-Level Design

8.4.1 Structured Programming and PDL

Various concepts towards component level designs were developed in the

early 1960s and during late 1960s, Dijkstra and others proposed

constrained logical constructs from which any type of logical program could

be developed. These constructs mainly focused on functional domain. The

constructs are used as descriptions for writing down the detailed design

method and the related documentation needed. The methods for designing

and documentation as acceptable in any standards is written down to

explain the details of the software under consideration. It may also contain

certain pseudo-codes indicating the closeness of the programming language

to the documented procedure which is known as PDL or the program design

language.

Example :

Drawing a line:

Select a tool to draw the line. Indicate the start point on the screen. Start

point could be selected based on the coordinate of the pixels on the screen

where a line is to be drawn. Use command “LINE”. Select point using a

mouse or enter co-ordinate in the text command box available in the tool

box. Select another point to which the line is required to be connected to.

Call the two points “From Point” and “To Point”.

Page 91: Merged Document

Software Engineering Unit 8

Sikkim Manipal University Page No.: 91

The constructs are mainly sequence, condition, and repetition. Sequence

refers to algorithmic approach presenting the processing steps in sume

order.

Condition provides the facility for selected processing. Repetition allows for

looping.

These three constructs are the core fundamentals of structured

programming. Structured constructs limits the procedural design of software

to a small number of predictable operations. The use of a limited number of

logical constructs leads to understanding of the processes. Various

notations :

Graphical Design Notation

Tabular Design Notation

Program Design Language

Self Assessment Question(s) (SAQs)

1. What are the different structured programming languages?

8.5 Summary

Software design is present at the technical kernel of software engineering.

Software design is applied regardless of the software process model that is

used. After the software requirements are stated and analyzed, software

design is the first of three technical activities – design, code generation, and

test. The information domain model is transformed by the data design into a

suitable data structure .this data structures is necessary to create the

software. Entity relationship diagram represents the relationships between

entity and the data objects.

The component-level design is responsible for the transformation of the

structural elements of the software architecture into a procedural description

of software components. Software design is type of a repetitive process also

referred to as an iterative process. Through this iterative process the

requirements are translated into a “blueprint” for constructing the software. It

is necessary that the quality of the design process is maintained and

monitored throughout the design process. Software designing involves both

modeling and designing processes. Hence software design is both a

process and a model. All the aspects of the software design are possible to

be represented in the form of a sequence of steps. Abstraction refers to the

Page 92: Merged Document

Software Engineering Unit 8

Sikkim Manipal University Page No.: 92

process of formulating general concepts by abstracting common properties

of instances. Data abstraction refers to a collection of data that describes a

data object taken from a real world problem. Component-level design

depicts the software at a level of abstraction that is very close to the code.

At the component level, the software engineer must represent data

structures, interfaces, and algorithms in sufficient detail to guide in the

generation of programming language source code. Intent of structured

programming is to assist the designer in defining algorithms that are less

complex and therefore easier to read, test, and maintain. The benefit of

modularity is derived in the form of simplicity in solving complex problems,

easy approach to maintain the systems, and permits parallel development

and implementation of various other modules in the system. Modules may

be exploded to improve module independence once the program structure

has been developed.

8.6 Terminal Question(s) (TQs)

1. Develop two additional design principles that “place the user in control.”

2. All modern programming languages implement the structured

programming constructs. Provide examples from three programming

languages.

8.7 Multiple Choice Question(s) (MCQs)

1. Which of the following is the structured programming language

a) Graphical Design Notation

b) PDL

c) All the above

d) None of these

8.8 Answers to SAQs, TQs, and MCQs

8.8.1 Answers to Self Assessment Question(s) (SAQs)

8.2.1 1. Data design, 2. Component-level design

8.2.2 Design and software Quality, The Evolution of software Design

8.2.3 Refer to section 8.2.3

8.2.4 Data abstraction , refer section 8.2.4

8.2.5 Functional dependency, Cohesion, Coupling

8.2.6 Refer to section 8.2.6

Page 93: Merged Document

Software Engineering Unit 8

Sikkim Manipal University Page No.: 93

8.3.1 Refer to section 8.3.1

8.3.2 The creation of different models of system function

8.4.1 Graphical Design Notation, Tabular Design Notation, Program

Design Language

8.8.2 Answers to Terminal Question(s) (TQs)

Refer to section 8.3.2

Refer to section 8.4.1

8.8.3 Answers to Multiple Choice Question(s) (MCQs)

1. b

Page 94: Merged Document

Software Engineering Unit 9

Sikkim Manipal University Page No.: 94

Unit 9 Software Testing Techniques and

Technical Metrics Structure:

9.1 Introduction

Objectives

9.2 Software Testing Techniques

Software Testing Fundamentals

White-Box Testing

Basis Path Testing

Controlling Structure Testing

Black-Box Testing

Testing for Specialized Environments, Architectures, and Applications

9.3 Introduction to Technical Metrics

9.4 Technical Metrics for Software

Software Quality

A Framework for Technical Software Metrics

Metrics for the Analysis Model

Metrics for the Design Model

Metrics for Source Code

9.5 Summary

9.6 Terminal Question(s) (TQs)

9.7 Multiple Choice Question(s) (MCQs)

9.8 Answers to SAQs, TQs, and MCQs

9.1 Introduction

Software testing and its implications with respect to software quality should

be well understood. The development of software systems involves a series

of production activities. Every process is prone to errors. The software

development should be subject to quality assurance process. Software

testing represents the ultimate review of specification, design, and code

generation. The visibility of software system and the costs associated with a

software failure are the main forces for software testing.

Page 95: Merged Document

Software Engineering Unit 9

Sikkim Manipal University Page No.: 95

Objectives

In this chapter we will study:

o What is testing?

o What are the different testing techniques?

o Where and how to use this testing techniques?

9.2 Software Testing Techniques

9.2.1 Software Testing Fundamentals and Comparison

During the process of software development the software development team

goes through the stages of the development based on the principles of the

developmental models and the requirements stated. The engineer attempts

to build software from an abstract concept to what is known as tangible

product. To check upon the development testing is done. Testing is one step

in the software process that could be viewed psychologically as a

destructive process rather than constructive process though there is no such

damage done to the system as may be perceived in the general sense.

i) Testing Objectives

Glen Myers states a number of rules that can serve well as testing

objectives:

1. Testing is a process of executing a program with the intent of finding an

error.

2. A good test case is one that has a high probability of finding an as return

discovered error.

3. A successful test is one that uncovers an as-yet-undiscovered error.

ii) Testing Principles

Davis suggests a set of testing principles that have been adapted in this

book:

All tests should be traceable to customer requirements: As we have

seen, the objective of software testing is to uncover errors. It follows that

the most severe defects (from the customer’s point of view) are those

that cause the program to fail to meet its requirements.

Tests should be planned long before testing begins: Test planning

can begin as soon as the requirements model is complete. Detailed

definition of test cases can begin as soon as the design model has been

Page 96: Merged Document

Software Engineering Unit 9

Sikkim Manipal University Page No.: 96

solidified. Therefore, all tests can be planned and designed before any

code has been generated.

The Pareto principle applies to software testing: Stated simply, the

Pareto principle implies that 80 percent of all errors uncovered during

testing will most likely be traceable to 20 percent of all program

components. The problem, of course, is to isolate these suspect

components and to thoroughly test them.

Testing should begin “in the small” and progress toward testing

“in the large”: The first tests planned and executed generally focus on

individual components. As testing progresses, focus shifts in an attempt

to find errors in integrated clusters of components and ultimately in the

entire system.

Exhaustive testing is not possible: The number of path permutations

for even a moderately sized program is exceptionally large. For this

reason, it is impossible to execute every combination of paths during

testing. It is possible, however, to adequately cover program logic and to

ensure that all conditions in the component-level design have been

exercised.

To be most effective, testing should be conducted by an

independent third party- By most effective, we mean testing that has

the highest probability of finding errors (the primary objective of testing).

For reasons that have been introduced earlier in this unit, the software

engineer who created the system is not the best person to conduct all

tests for the software.

iii) Testability

James Bach describes testability in the following manner. Software

testability is simply how easily [a computer program] can be tested. Since

testing is so profoundly difficult, it pays to know what can be done to

streamline it. Sometimes programmers are willing to do things that will help

the testing process and a checklist of possible design points, features, etc.,

can be useful in negotiating with them. There are certainly metrics that could

be used to measure testability in most of its aspects. Sometimes, testability

is used to mean how adequately a particular set of tests will cover the

product. It's also used by the military to mean how easily a tool can be

checked and repaired in the field. Those two meanings are not the same as

software testability.

Page 97: Merged Document

Software Engineering Unit 9

Sikkim Manipal University Page No.: 97

Self Assessment Question(s) (SAQs)

1. What are the different testing objectives?

2. What are the different testing principles?

9.2.2 Test Case Design

The tests for software have to be designed depending upon the nature of

the system and the working of the processes. Designing of the test model

can be as challenging as the initial design of the product itself.

Testing can be done in two ways:

1) Knowing the specified function that a product has been designed to

perform.

2) Knowing the internal workings of a product.

Self Assessment Question(s) (SAQs)

1. _______testing of software is predicated on close examination of

procedural details.

2. A ________test examines some fundamental aspect of a system with

little regard for the internal logical structure of the software.

9.2.3 White-Box Testing

White-box testing is also known as glass-box testing. It uses the control

structure of the procedural design to derive test cases. Using white-box

testing methods, the software engineer can derive a number of test cases.

The test case checking for (1) all independent module paths have been

exercised at least once, (2) check all logical decisions for being true or false,

(3) execute all loops within their operational bounds, and (4) exercise

validity of internal data structures.

Self Assessment Question(s) (SAQs)

1. White box testing is also known as ______________

2. What is white box testing?

9.2.4 Basis Path Testing

Basis path testing is the same as white-box testing. The technique first

proposed by Tom McCabe. It enables the test case designer to derive a

logical complexity measure of a procedural design. It uses this measure as

a guide to define the basis set of execution paths. Test cases execute every

statement in the program at least one time during testing.

Page 98: Merged Document

Software Engineering Unit 9

Sikkim Manipal University Page No.: 98

i) Flow Graph Notation

The flow graph depicts the logical flow of the control. Each structured

construct has a corresponding flow graph symbol.

ii) Cyclomatic Complexity

Cyclomatic complexity is software metric that provides a quantitative

measure of the logical complexity of a program. In basis path testing, the

value computed for cyclomatic complexity defines the number of

independent paths in the basis set of a program and provides with an upper

bound for the number of tests. An independent path is any path through the

program. Independent path introduces at least one new set of processing

statements.

iii) Deriving Test Cases

The basis path testing method is generally applied to a procedural design or

to source code. The following steps can be applied to derive the basis set:

1. Draw flow graph: Flow graph is created using the symbols and

construction rules which are based on the design foundation.

2. Determination of cyclomatic complexity : The cyclomatic complexity,

V(G) can be determined without developing a flow graph by counting all

conditional statements in the PDL (Program design language).

iv) Graph based testing – Graph Matrices

A graph matrix is a data structure and is considered as a software tool that

assists in basis path testing. A graph matrix is a square matrix. The size of

the square matrix is equal to the number of nodes on the flow graph. Each

row and column pertains to a node. The entries in the matrix correspond to

the connections between nodes and the associated link weight. In its

simplest form, the link weight is 1 (a connection exists) or 0 (a connection

does not exist). Link weights can be used to indicate :

The probability of execution of the link.

The processing time to traverse the link.

The memory required during link traversal.

The resources required to traverse the link.

Page 99: Merged Document

Software Engineering Unit 9

Sikkim Manipal University Page No.: 99

Self Assessment Question(s) (SAQs)

1. A ________is a square matrix whose size (i.e., number of rows and

columns) is equal to the number of nodes on the flow graph.

2. An ____________is any path through the program that introduces at

least one new set of processing statements or a new condition.

9.2.5 Controlling Structure Testing

Although basis path testing is simple and highly effective, there arises a

number of other variations on control structure that broaden the testing

coverage and improve quality of white-box testing.

i) Condition Testing

Condition testing refers to a test case design method that exercises the

logical conditions contained in a program module.

ii) Data Flow Testing

The data flow testing method selects test paths for testing based on the

locations of definitions and uses of variables in the program.

iii) Loop Testing

Loop testing is a white-box testing technique focusing mainly on the validity

of loop constructs. Four different classes of loops that could be tested are:

simple loops, concatenated loops, nested loops, and unstructured loops.

Self Assessment Question(s) (SAQs)

1. ___________is a test case design method that exercises the logical

conditions contained in a program module.

2. The ____________method selects test paths of a program according to

the locations of definitions and uses of variables in the program.

9.2.6 Black-Box Testing

Black-box testing is also known as behavioral testing. It focuses on the

functional requirements of the software. Black-box testing helps to derive

sets of input conditions to handle and test all functional requirements for a

program. Black-box testing is complementary to white-box techniques to

uncover different class of errors. Black-box testing finds errors in the

following categories:

1) Incorrect functions,

2) Errors in the Interface

3) Data structure errors

Page 100: Merged Document

Software Engineering Unit 9

Sikkim Manipal University Page No.: 100

4) Performance errors

5) Errors due to initialization and termination.

Graph-Based Testing Methods – This is the starting point of software

testing. A graph is created for important objects along with t heir

relationships with each other. A series of tests are conducted on the

objects and the errors are identified. This is then rectified.

Equivalence Partitioning – this divides the input of program into classes

of data from which tests are devised. It helps in uncovering the errors.

Boundary Value Analysis – this is used to identify errors which occurs on

the periphery of the classes and not at the centre of the object.

Comparison Testing – Real time comparison is done with respect to

items to be tested through new version software. The same old data is

put through the new software to check whether it produces identical

results or not?

Orthogonal Array Testing- It is applicable to testing of software where

the input set is very small. It is useful to find errors which are connected

with the faulty logics of the software.

Self Assessment Question(s) (SAQs)

1. Black box testing is also known as ________________

2. What are the different black boxes tests?

9.2.7 Testing for Specialized Environments, Architectures, and

Applications

The white-box and black-box testing methods discussed are applicable

across all environments, architectures, and applications. Testing guidelines

for specialized environments, architectures, and applications that are

commonly encountered by software engineers are :

Testing GUIs – Complexities of GUI increases depending upon its utility

and usage. To address the issues related to specific data and objects, finite

state graphs may be used. Testing is done with automated tools.

Testing of Client/Server Architectures – This environment is distributed

hence on different machines the performance issues are different. These

issues are more complicated to deal with than on standalone machines. It

requires more time and is a costly process.

Page 101: Merged Document

Software Engineering Unit 9

Sikkim Manipal University Page No.: 101

Similar is the case in testing under the following categories:

i) Testing Documentation and Help Facilities

ii) Testing for Real-Time Systems

Challenges of Technical Metrics: It is always a challenge to the

researches to develop a model of testing, one which will be comprehensive

covering all the aspects of testing software. In the process various

complexities have been dealt with for measurements. These measurements

on the program attributes like modularity, independence etc can be used as

indicators of quality.

Attributes of Effectives software metrics:

The various attributes which may be considered in testing software

effectively are –

i) Simplicity in understanding the metric

ii) Satisfaction about the various attributes should be experienced

iii) Metric should be yielding results

iv) The metric should have uniform and consistent used of dimensions

v) Metrics should be program independent

vi) Metric should be capable of providing quality information for further

developments.

Interface Design Metrics: There is shortage of metrics which could be

used for providing insight into the quality and usability of the interface.

Different methodologies have been used in such measurements. The

methods have been based on the appropriateness of the application and the

interface.

Metrics for Testing and Maintenance: Most of the metrics are developed

on the process of testing and not on the technicalities of the tests. The tests

rely mainly on the design characteristics and the analysis characteristics of

the software. Metrics which are function based are also found to be

effective. These metrics enable to measure the effort of testing, time

required to test and errors of testing if found.

Almost every metrics can be used to measure the maintenance aspects of a

software. IEEE has suggested SMI-Software maturity index that indicates

the stability of the product software. Based on the mean time required to

Page 102: Merged Document

Software Engineering Unit 9

Sikkim Manipal University Page No.: 102

produce software, empirical models can be considered for maintenance

models.

Self Assessment Question(s) (SAQs)

What do you mean by testing GUI?

9.3 Introduction to Technical Metrics

Measurement is the key element of any engineering process.

Measurements are used to understand the attributes of the models.

Measurements are used to assess the quality of the engineered products.

Fenton states that measurement is the process by which numbers or

symbols are assigned to the attributes of entities in the real world in such a

way as to define them according to clearly defined rules.

9.4 Technical Metrics for Software

9.4.1 Software Quality

The following three points are emphasized while defining a software quality:

1. The foundation from which the quality is measured the software

requirements. Lack of quality is nothing but the lack of conformance to

requirements.

2. Specified standards guide the manner in which software is engineered.

3. If software conforms to its explicit requirements but if it fails to meet

implicit requirements, software quality is doubtful. Software quality is a

complex mix of factors that will vary across different applications and the

customers who request them.

i) McCall’s Quality Factors

The software quality factors can be categorized in two groups:

1) Directly measurable factors

2) Indirectly measurable factors.

McCall, Richards, and Walters propose a useful categorization of factors

that affect software quality. These software quality factors focus on three

important aspects of a software product: operational characteristics, ability

to undergo change, and adaptability to new environments.

McCall and his colleagues provide the following descriptions:

Page 103: Merged Document

Software Engineering Unit 9

Sikkim Manipal University Page No.: 103

Correctness: The extent to which a program satisfies its specification and

fulfills the customer's mission objectives.

Reliability: The extent to which a program can be expected to perform its

intended function with required precision. [It should be noted that other,

more complete definitions of reliability have been proposed.

Efficiency: The amount of computing resources and code required by a

program to perform its function.

Integrity: Extent to which access to software or data by unauthorized

persons can be controlled.

Usability: Effort required to learn, operate, prepare input, and interpret

output of a program.

Maintainability: Effort required to locate and fix an error in a program. [This

is a very limited definition.]

Flexibility: Effort required to modify an operational program.

Testability: Effort required to test a program to ensure that it performs its

intended function.

Portability: Effort required to transfer the program from one hardware and/or

software system environment to another.

Reusability: Extent to which a program [or parts of a program] can be

reused in other applications – related to the packaging and scope of the

functions that the program performs.

Interoperability: Effort required to couple one system to another.

ii) FURPS

Hewlett-Packard developed a set of software quality factors that has been

given the acronym FURPS – Quality Factors functionality, usability,

reliability, performance, and supportability. The FURPS quality factors

define the following attributes for each of the five major factors:

Functionality is assessed by evaluating the feature set and capabilities

of the program, the generality of the functions that are delivered, and the

security of the overall system.

Usability is assessed by considering human factors, overall aesthetics,

consistency, and documentation.

Page 104: Merged Document

Software Engineering Unit 9

Sikkim Manipal University Page No.: 104

Reliability is evaluated by measuring the frequency and severity of

failure, the accuracy of output results, the mean-time-to-failure (MTTF),

the ability to recover from failure, and the predictability of the program.

Performance is measured by processing speed, response time,

resource consumption, throughput, and efficiency.

iii) ISO 9126 Quality Factors

The ISO 9126 standard was developed in to identify quality attributes for

computer software. There are six key quality attributes which are as follows:

Functionality: The degree to which the software satisfies the requirements

against the attributes: suitability, accuracy, interoperability, compliance, and

security.

Reliability: Based on sub-attributes: maturity, fault tolerance, recoverability,

it is the time of availability of the software.

Usability: The degree to which the software is easy to use indicated by the

understandability, learn ability, operability of the software.

Efficiency: The degree to which the software makes optimal use of system

resources as indicated by time and resource behavior.

Maintainability: It refers to the ease with which repair may be made to the

software indicated by sub-attributes : analyzability, changeability, stability,

testability.

Portability: The ease with which the software can be transposed from one

environment to another indicated by adaptability, install ability,

conformance, and replace ability.

iv) The Transition to a Quantitative View

According to Cavano and McCall there is no such thing as absolute

knowledge, one should not expect to measure software quality exactly, for

every measurement is partially imperfect. The metrics represent indirect

measures. The complicating factor refers to the precise relationship

between the variable that is measured and the quality of the software.

Self Assessment Question(s) (SAQs)

1. __________ is the degree to which the software makes optimal use of

system resources as indicated by the following sub-attributes: time

behavior, resource behavior.

Page 105: Merged Document

Software Engineering Unit 9

Sikkim Manipal University Page No.: 105

2. ____________is the amount of time that the software is available for

use as indicated by the following sub-attributes: maturity, fault tolerance,

recoverability.

9.4.2 A Framework for Technical Software Metrics

A framework for the technical software metrics is established based on the

principles of technical metrics for software. The framework may be well

understood under the following points:

1) The Challenge of Technical Metrics

Over the past three decades, many researchers have attempted to develop

a single metric that provides a comprehensive measure of software

complexity. Complexity takes a somewhat different view of what is expected

from quality metrics. Consider a metric for evaluating an attractive

motorcycle. Some emphasize body design, others might consider

mechanical characteristics, or performance, or fuel economy, or the ability to

recycle when the motorcycle is scrapped. It is very difficult to obtain a single

value for “attractiveness.” A similar problem is seen with the computer

software.

2) Measurement Principles

Technical metrics assist in the evaluation of the analysis and design models.

It provides an indication of the complexity of procedural designs and source

code, and facilitates the design of more effective testing, it is important to

understand basic measurement principles. Roche suggests a measurement

process that can be characterized by five activities:

Formulation. The derivation of software measures and metrics that is

appropriate for the representation of the software that is being

considered.

Collection. The mechanism used to accumulate data required to derive

the formulated metrics.

Analysis. The computation of metrics and the application of

mathematical tools.

Interpretation. The evaluation of metrics results in an effort to gain

insight into the quality of the representation.

Feedback. Recommendations derived from the interpretation of

technical metrics transmitted to the software team.

Page 106: Merged Document

Software Engineering Unit 9

Sikkim Manipal University Page No.: 106

Self Assessment Question(s) (SAQs)

1. __________is the computation of metrics and the application of

mathematical tools.

2. _____________is the mechanism used to accumulate data required to

derive the formulated metrics.

9.4.3 Metrics for the Analysis Model

Analysis model is the starting point of all technical work in software

engineering. At this stage, requirements are derived and a foundation for

design is established. Therefore, technical metrics that provide insight into

the quality aspect of the analysis model are desirable. It is possible to adapt

metrics for use in this context. There is a possibility of the two size and

design complexity being correlated directly.

i) Function-Based Metrics

The function point metric is used for predicting the size of a system. The

function can manage the interactions between users, accept user password,

to activate or deactivate systems, and allows inquiries on various security

sensors.

The function displays messages and sends control signals to various

components of the security system. The data flow diagram is evaluated to

determine the key measures of the function point metric on the following

point : number of user inputs, outputs, inquiries, files and external interfaces.

ii) Metrics for Specification Quality

Davis and his colleagues propose a list of characteristics useful to assess

the quality of the analysis model and the corresponding requirements

specification:

specificity (lack of ambiguity), completeness, correctness, understandability,

verifiability, internal and external consistency, achievability, concision,

traceability, modifiability, precision, and reusability. These characteristics

are qualitative in nature; Davis et al. suggest that each can be represented

using one or more metrics.

Self Assessment Question(s) (SAQs)

1. ___________is the number of user observable states in the state

transition.

2. _____________is the number of state transitions in the state transition.

Page 107: Merged Document

Software Engineering Unit 9

Sikkim Manipal University Page No.: 107

9.4.4 Metrics for the Design Model

The design of complex software systems does not have any measurement

to start with. The design metrics for software are available, but most of the

software engineers are unaware of the metrics. Design metrics for computer

software are not perfect. There is always a scope for debating on this issue.

Design without measurement is an unacceptable alternative. Some of the

common design metrics to be considered are:

1) Architectural Design Metrics

Architectural design metrics focus on architectural characteristics of the

software and the effectiveness of modules. These metrics do not require

any knowledge of the inner workings of a particular software component.

2) Component-Level Design Metrics

Component level design metrics focus on internal characteristics like

module cohesion, coupling, and complexity. These measures can help a

software engineer to judge the quality of design. Suitable metrics may

be applied once a procedural design has been developed.

Self Assessment Question(s) (SAQs)

1. __________assigns quantitative laws to the development of computer

software, using a set of primitive measures that may be derived after

code is generated or estimated once design is complete.

9.5 Summary

The primary objective for test case design is to derive a set of tests that

have the highest likelihood for uncovering errors in the software. The

development of software systems involves a series of production activities.

Every process is prone to errors. The software development should be

subject to quality assurance process. During the process of software

development the software development team goes through the stages of the

development based on the principles of the developmental models and the

requirements stated. Davis suggests that All tests should be traceable to

customer requirements, Tests should be planned long before testing begins,

The Pareto principle applies to software testing, Testing should begin “in the

small” and progress toward testing “in the large”, Exhaustive testing is not

possible.

Page 108: Merged Document

Software Engineering Unit 9

Sikkim Manipal University Page No.: 108

To be most effective, testing should be conducted by an independent third

party. The tests for software have to be designed depending upon the

nature of the system and the working of the processes. Designing of the

test model can be as challenging as the initial design of the product itself.

White-box testing is also known as glass-box testing.

It uses the control structure of the procedural design to derive test cases.

Using white-box testing methods, the software engineer can derive a

number of test cases. Basis path testing is the same as white-box testing.

The technique first proposed by Tom McCabe. The flow graph depicts the

logical flow of the control. Each structured construct has a corresponding

flow graph symbol. Cyclomatic complexity is a software metric that provides

a quantitative measure of the logical complexity of a program. In basis path

testing, the value computed for cyclomatic complexity defines the number of

independent paths in the basis set of a program and provides with an upper

bound for the number of tests. The basis path testing method is generally

applied to a procedural design or to source code. Black-box testing is also

known as behavioral testing. It focuses on the functional requirements of the

software.

Black-box testing helps to derive sets of input conditions to handle and test

all functional requirements for a program. Measurement is the key element

of any engineering process. Measurements are used to understand the

attributes of the models. Measurements are used to assess the quality of

the engineered products. Software quality may be defined as conformance

to explicitly state functional and performance requirements. It may also be

conformance to explicitly documented development standards, and implicit

characteristics that are expected of all professionally developed software. A

framework for the technical software metrics is established based on the

principles of technical metrics for software.

Analysis model is the starting point of all technical work in software

engineering. At this stage, requirements are derived and a foundation for

design is established. The function point metric is used for predicting the

size of a system. The function can manage the interactions between users,

accept user password, to activate or deactivate systems, and allows

inquiries on various security sensors.

Page 109: Merged Document

Software Engineering Unit 9

Sikkim Manipal University Page No.: 109

9.6 Terminal Question(s) (TQs)

1. What do you mean by Basic Path Testing?

2. What are the differences between black box and white box testing?

3. Write a detailed note on Technical Metrics for Software.

9.7 Multiple Choice Question(s) (MCQs)

1. Which of the following is a Basic path Testing?

(a) Flow graph (b) Graph metrics (c) all the above (d) none of these.

2. Which of the following are ISO 9126 Quality Factors?

(a) Reliability (b) Usability (c) both a & b (d) none of these

9.8 Answers to SAQs, TQs, and MCQs

9.8.1 Answers to Self Assessment Question(s) (SAQs)

9.2.1 Refer to section 9.2.1

9.2.2 1. White-box, 2. black-box

9.2.3 1. Glass box Testing, 2. Refer to section 9.2.3

9.2.4 1. Graph matrix, 2. Independent path

9.2.5 1. Condition testing, 2. Data flow testing

9.2.6 1. Behavioral testing, 2. Refer to section

9.2.7 Refer text 9.2.7

9.4.1 1. Efficiency 2. Reliability

9.4.2 1. Analysis 2. Collection

9.4.3 1. State 2. Transition

9.4.4 1. Software Science

9.8.2 Answers to Terminal Question(s) (TQs)

Refer to section 9.2.4

Refer to section 9.2.3

Refer to section 9.4

9.8.3 Answers to Multiple Choice Question(s) (MCQs)

1. c

2. c

Page 110: Merged Document

Software Engineering Unit 10

Sikkim Manipal University Page No.: 110

Unit 10 Object-Oriented Concepts and

Principles Structure:

10.1 Introduction

Objectives

10.2 Object-Oriented Concepts and Principles

Object Oriented Concept

Identifying the Elements of an Object Model

Management of Object-Oriented Software Projects

10.3 Object-Oriented Analysis

Object Oriented Analysis

Domain Analysis

Generic Components of the OO Analysis Model

The OOA Process

The Object-Behavior Model

Identification of Events with Use Cases

Representation of State

10.4 Summary

10.5 Terminal Question(s) (TQs)

10.6 Multiple Choice Question(s) (MCQs)

10.7 Answers to SAQs, TQs, and MCQs

10.1 Introduction

A real world feature can be represented as an object. The details of the real

world feature are abstracted into objects. Objects can be categorized,

described, organized, combined, manipulated, and created. An abstraction

enables us to model the world. An object-oriented development was

proposed first during the 1960s. One can derive a number of benefits from

the object technologies. Both the management and technical level people

have benefited from object techniques in dealing with real world business

problems.

Object-oriented techniques provide a number of strategies in software

based on practical methodologies. Most of the object techniques have been

implemented and tested. The techniques are proven. The strategies are

Page 111: Merged Document

Software Engineering Unit 10

Sikkim Manipal University Page No.: 111

designed to deal with complex natural and man-made system. The

strategies are very fundamental.

Objectives

In this Chapter you will learn:

What is Object Oriented Concept?

What is Object Oriented Analysis?

What are Object Oriented Techniques?

10.2 Object-Oriented Concepts and Principles

10.2.1 Object Oriented Concept

Object oriented approach can be understood well if the knowledge of the

real world entity is clear. A simple approach has to be considered to analyze

any object. Consider an example of a car. A car is an automobile. Car

belongs to the category of automobiles. Therefore we can say that car is an

instance of automobile. Car is treated as an object and automobile is treated

as a class. Every class of objects will have certain attributes and functions.

In case of the automobile, an automobile has engine, fuel system, ignition

system, exhaust system, wheels, seat for driver etc. These attributes can be

seen in any object belonging to the class of automobiles. Ex. A car, a bus, a

truck etc. The objects are said to inherit all the properties of the class to

which it belongs to.

i) Classes and Objects

Object oriented approach and concepts used in object oriented technology

lead to effective modularity. A class encapsulates the data and procedural

abstractions required to describe the content and behavior of a real world

entity. The data abstractions are also referred to as attributes. The attributes

are controlled and manipulated by abstraction procedures known as

operations or methods. These methods are also referred to as services.

There is only way to access and operate the attribute of any object and that

is through one of the operations. A class encapsulated both data and the

processing function on the data. It is known as encapsulation. Classes can

of two main types : super-class and subclass.

A super-class refers to a collection of classes, and a subclass is referred to

as a specialized instance of a class.

Page 112: Merged Document

Software Engineering Unit 10

Sikkim Manipal University Page No.: 112

ii) Attributes

Real world entities have features such as shape, weight, color, and type of

material. These are abstracted as attributes of the object representing the

real world problem. A person is considered to have attributes like date of

birth, parents, name, and eye color. A domain is simply a set of specific

values. For example, assume that a class named automobile has an

attribute say - color. The domain for color could be {white, black, silver,

gray, blue, red, yellow, green}. Under some situations, the domain can be a

set of classes. The domain values can be supported with a default value for

an attribute.

iii) Messages

Messages are the means by which objects communicate with each other.

The message triggers some behavior to occur in the object that receives the

message. The behavior is seen when an operation is executed.

iv) Encapsulation, Inheritance, and Polymorphism

Encapsulation refers to the data and the methods on the data which are

held together in a class by means of specifications stated for the class.

Inheritance refers to the condition of acquiring all the properties by an object

from the class to which it belongs to and also from the class which is

superior to its parent class. Polymorphism refers to the behavior of the

object and its ability to behave in more than one form depending upon the

method specification.

This provides a number of benefits:

The internal implementation details of data and procedures are hidden

from the outside world.

Data structures and the operations that manipulate them are merged in

a single class. This enables it to be reused.

An object that sends a message is controlled based on the specification

of the internal data structure.

Self Assessment Question(s) (SAQs)

1. ________ are the means by which objects interact.

2. What is a class?

Page 113: Merged Document

Software Engineering Unit 10

Sikkim Manipal University Page No.: 113

10.2.2 Identifying the Elements of an Object Model

The main elements of an object model are the classes and objects,

attributes, operations, and messages. To identify the various elements from

a given problem or a case one should concentrate to determine the

following:

Identifying the nouns in the case problem

Specifying Attributes

Defining Operations

Finalizing the Object Definition

Identifying the actions verbs in the problem

Self Assessment Question(s) (SAQs)

1. What are the elements of an object model?

10.2.3 Management of Object-Oriented Software Projects

Modern software project management can be divided as :

1. Establish a common process framework .

2. Use framework to develop effort and time estimates.

3. Establish deliverables and milestones to enable measurement of

progress.

4. Define checkpoints for risk management, quality assurance, and control.

5. Manage the changes.

6. Tracking, monitoring, and controlling the progress.

The technical manager who is faced with an object-oriented project applies

these six activities.

i) The Common Process Framework (CPF)

It defines an organization’s approach to software engineering. It identifies

the paradigm that is applied to build and maintain software. It establishes

the degree of rigor necessary to approach different kinds of projects. The

CPF can meet the individual needs of a project team.

ii) Project Metrics and Estimation

Conventional software project estimation techniques require the estimates

of lines-of code (LOC). It may also require function points (FP) for

estimation. FP estimates is effective because the information domain counts

that are required are readily obtainable from the problem statement. FP

analysis provides value for estimating Object Oriented projects. The FP

measure does not provide enough granularities for the schedule and effort.

Page 114: Merged Document

Software Engineering Unit 10

Sikkim Manipal University Page No.: 114

According to Lorenz and Kidd, the following points on project metrics may

be followed:

Number of scenario scripts. A scenario script is a detailed sequence of

steps that describe the interaction between the user and the application.

Each script is organized into triplets of the form {initiator, action,

participant} where initiator is the object that requests some service (that

initiates a message); action is the result of the request; and participant is

the server object that satisfies the request. The number of scenario scripts is

directly correlated to the size of the application and to the number of test

cases that must be developed to exercise the system once it is constructed.

Number of key classes. Key classes are the “highly independent

components” that are defined early in OOA. Because key classes are

central to the problem domain, the number of such classes is an indication

of the amount of effort required to develop the software and also an

indication of the potential amount of reuse to be applied during system

development.

Number of support classes. Support classes are required to implement

the system but are not immediately related to the problem domain.

Examples might be GUI classes, database access and manipulation

classes, and computation classes. In addition, support classes can be

developed for each of the key classes. Support classes are defined

iteratively throughout the recursive/ parallel process. The number of support

classes is an indication of the amount of effort required to develop the

software and also an indication of the potential amount of reuse to be

applied during system development.

Average number of support classes per key class. In general, key

classes are known early in the project. Support classes are defined

throughout. If the average number of support classes per key class were

known for a given problem domain, estimating would be much simplified.

Lorenz and Kidd suggest that applications with a GUI have between two and

three times the number of support classes as key classes. Non-GUI

applications have between one and two times the number of support

classes as key classes.

Number of subsystems: A subsystem is an aggregation of classes that

supports a function that is visible to the end-user of a system. Once

Page 115: Merged Document

Software Engineering Unit 10

Sikkim Manipal University Page No.: 115

subsystems are identified, it is easier to lay out a reasonable schedule in

which work on subsystems is partitioned among project staff.

iii) An OO Estimating and Scheduling Approach

Software project estimation remains more of an art than a science.

However, this in no way precludes the use of a systematic approach. To

develop reasonable estimates it is essential to develop multiple data points.

That is, estimates should be derived using a number of different techniques.

Effort and duration estimates used for conventional software development

are applicable to the OO world, but the historical database for OO projects is

relatively small for many organizations. Therefore, it is worthwhile to

supplement conventional software cost estimation with an approach that has

been designed explicitly for OO software. Lorenz and Kidd suggest the

following approach:

1. Develop estimates using effort decomposition, FP analysis, and any

other method that is applicable for conventional applications.

2. Using OOA, develop scenario scripts (use-cases) and determine a

count. Recognize that the number of scenario scripts may change as the

project progresses.

3. Using OOA, determine the number of key classes.

4. Categorize the type of interface for the application and develop a

multiplier for support classes.

iv) Tracking Progress for an OO Project

Although the recursive/parallel process model is the best framework for an

OO project, task parallelism makes project tracking difficult. The project

manager can have difficulty establishing meaningful milestones for an OO

project because a number of different things are happening at once. In

general, the following major milestones can be considered “completed”

when the criteria noted have been met.

Self Assessment Question(s) (SAQs)

1. What are the different activities of modern software management?

10.3 Object-Oriented Analysis

10.3.1 Object Oriented Analysis

The main objective of object-oriented analysis is to develop a model that

describes computer software. The model should work to satisfy a set of

Page 116: Merged Document

Software Engineering Unit 10

Sikkim Manipal University Page No.: 116

customer-defined requirements. The model used for the purpose of

analysis depicts information, function, and behavior within the context.

i) Conventional vs. OO Approaches

Fichman and Kemerer address the question head-on: a unified modeling

language (or some other method). What is the work product? An object-

oriented analysis model is created. The OO analysis model is composed of

graphical or language-based representations. These representations define

class attributes, relationships, and behaviors, as well as interclass

communication and a depiction of class behavior over time. At each stage,

the elements of the object-oriented analysis model are reviewed. The review

is done with respect to clarity, correctness, completeness, and consistency

with customer requirements.

Fichman and Kemerer suggest “modeling dimensions” that may be used to

compare various conventional and object-oriented analysis methods:

1. Identification/classification of entities

2. General-to-specific and whole-to-part entity relationships

3. Other entity relationships

4. Description of attributes of entities

5. Large-scale model partitioning

6. States and transitions between states

7. Detailed specification for functions

8. Top-down decomposition

9. End-to-end processing sequences

10. Identification of exclusive services

11. Entity communication

ii) The OOA Landscape

The OOA approach lead to development of number of concepts in object

technologies during the late 1980s and into the 1990s. Each of these

introduced a process for the analysis of a product. A number of process

diagrams were developed during the analysis stage. The diagrams drawn

were based on the standards accepted universally and hence the notations

used enabled the software engineer to create the analysis model in a

consistent manner. Among the most widely used were:

The Booch method. The Booch method encompasses both a “micro

development process” and a “macro development process.” The micro level

Page 117: Merged Document

Software Engineering Unit 10

Sikkim Manipal University Page No.: 117

defines a set of analysis tasks that are reapplied for each step in the macro

process. Hence, an evolutionary approach is maintained. Booch’s OOA

micro development process identifies classes and objects and the

semantics of classes and objects and defines relationships among classes

and objects and conducts a series of refinements to elaborate the analysis

model.

The Rumbaugh method. Rumbaugh and his colleagues developed the

object modeling technique (OMT) for analysis, system design, and object-

level design. The analysis activity creates three models: the object model (a

representation of objects, classes, hierarchies, and relationships), the

dynamic model (a representation of object and system behavior), and the

functional model (a high-level DFD-like representation of information flow

through the system).

The Jacobson method. Also called OOSE (object-oriented software

engineering), the Jacobson method is a simplified version of the proprietary

objectory method, also developed by Jacobson. This method is

differentiated from others by heavy emphasis on the use-case. A description

or scenario that depicts how the user interacts with the product or system.

The Coad and Yourdon method. The Coad and Yourdon method is often

viewed as one of the easiest OOA methods to learn. Modeling notation is

relatively simple and guidelines for developing the analysis model are

straightforward. A brief outline of Coad and Yourdon’s OOA process follows:

Identify objects using “what to look for” criteria.

Define a generalization/specification structure.

Define a whole/part structure.

Identify subjects (representations of subsystem components).

Define attributes.

Define services.

The Wirfs-Brock method. Wirfs-Brock, Wilkerson, and Weiner do not make

a clear distinction between analysis and design tasks. Rather a continuous

process that begins with the assessment of a customer specification and

ends with design is proposed. A brief outline of Wirfs-Brock et al.'s analysis-

related tasks follows: Evaluate the customer specification.

Extract candidate classes from the specification via grammatical

parsing.

Page 118: Merged Document

Software Engineering Unit 10

Sikkim Manipal University Page No.: 118

Group classes in an attempt to identify super-classes.

Define responsibilities for each class.

Assign responsibilities to each class.

Identify relationships between classes.

Define collaboration between classes based on responsibilities.

Build hierarchical representations of classes.

Construct a collaboration graph for the system.

iii) A Unified Approach to OOA

Over the last few decades, Grady Booch, James Rumbaugh, and Ivar

Jacobson have collaborated to combine the best features of their individual

object-oriented analysis methods. Analysis methods along with design

methods were combined into a unified method of modeling language. The

resulting language was called the Unified Modeling Language (UML). UML

allows a software engineer to express an analysis model. The analysis

model is expressed based on the standards notation of UML, governed by

a set of syntactic, semantic, and pragmatic rules. Eriksson and Penker

explain these rules in the following way: The syntax tells us how the

symbols should look and how the symbols are combined. The syntax is

compared to words in natural language; it is important to know how to spell

them correctly and how to put different words together to form a sentence.

The semantic rules tell us what each symbol means and how it should be

interpreted by itself and in the context of other symbols; they are compared

to the meanings of words in a natural language.

The pragmatic rules define the intentions of the symbols through which the

purpose of the model is achieved and becomes understandable for others.

This corresponds in natural language to the rules for constructing sentences

that are clear and understandable. In UML, a system is represented using

five different “views” that describe the system from distinctly different

perspectives. Each view is defined by a set of diagrams. The following views

are present in UML:

User model view- This view represents the product as a system. The view

is from the user’s perspective. The use-case is the modeling approach of

choice. This important analysis representation mainly describes a scenario

for usage from the perspective of the end-user.

Page 119: Merged Document

Software Engineering Unit 10

Sikkim Manipal University Page No.: 119

Structural model view- Data and functionality are viewed. The view is

internal and is view from within the system. Static structure is modeled

based on the data and functionality.

Behavioral model view- This part of the analysis model represents the

dynamic aspects of a system. The dynamic aspect refers to the behavioral

aspects of the system. It depicts the interactions or collaborations between

various structural elements.

Implementation model view- The structural and behavioral aspects of the

system are developed and assembled depending upon the requirements

and built according to the end user needs.

Environment model view- The structural and behavioral aspects of the

environment are represented. UML analysis modeling focuses on the user

model and structural model views. One of the task of UML design modeling

is to address the behavioral model, implementation model, and

environmental model views.

Self Assessment Question(s) (SAQs)

1. Name any two views used in UML.

10.3.2 Domain Analysis

At the business or enterprise level, the techniques associated with OOA can

be coupled with a business process engineering approach.

At the business area level, an object model that describes the workings of a

particular business area an be defined.

At an application level, the object model focuses on specific customer

requirements as those requirements affect an application to be built.

Self Assessment Question(s) (SAQs)

1. What various levels of domain analysis?

10.3.3 Generic Components of the OO Analysis Model

Rumbaugh et al. states that Analysis is concerned with devising a precise,

concise, understandable, and correct model of the real world. . . . The

purpose of object-oriented analysis is to model the real world so that it can

be understood. To do this, you must examine requirements, analyze their

implications, and restate them rigorously. You must abstract real-world

features first, and defer small details until later.

Page 120: Merged Document

Software Engineering Unit 10

Sikkim Manipal University Page No.: 120

To develop a “precise, concise, understandable, and correct model of the

real world,” a software engineer must select a notation that implements a set

of generic components of an OO analysis model. Monarchi and Puhr define

a set of generic representational components that appear in all OO analysis

models.6 Static components are structural in nature and indicate

characteristics that hold throughout the operational life of an application.

These characteristics distinguish one object from other objects. Dynamic

components focus on control and are sensitive to timing and event

processing. They define how one object interacts with other objects over

time. The following components are identified

Static view of semantic classes: A taxonomy of typical classes was

identified. Requirements are assessed and classes are extracted (and

represented) as part of the analysis model. These classes persist

throughout the life of the application and are derived based on the

semantics of the customer requirements.

Static view of attributes. Every class must be explicitly described. The

attributes associated with the class provide a description of the class, as

well as a first indication of the operations that are relevant to the class.

Static view of relationships. Objects are “connected” to one another in a

variety of ways. The analysis model must represent these relationships so

that operations (that affect these connections) can be identified and the

design of a messaging approach can be accomplished.

Static view of behaviors. The relationships just noted define a set of

behaviors that accommodate the usage scenario (use-cases) of the system.

These behaviors are implemented by defining a sequence of operations that

achieve them.

Dynamic view of communication. Objects must communicate with one

another and do so based on a series of events that cause transition from

one state of a system to another.

Dynamic view of control and time. The nature and timing of events that

cause transitions among states must be described.

Self Assessment Question(s) (SAQs)

1. What are the various generic component of object oriented analysis?

Page 121: Merged Document

Software Engineering Unit 10

Sikkim Manipal University Page No.: 121

10.3.4 The OOA Process

The OOA process begins with an understanding of the manner in which the

system will be used. The modeling of the software begins only after the

scenario of usage has been well understood and defined. The following

points may be followed to gather customer data to model the system:

i) Use-Cases

This refers to the model of the system from the end-user’s point of view. It is

created during elicitation of user requirements. The following objectives

have to be borne in mind with respect to use-cases:

Define the functional and operational requirements of the system

Provide a clear and unambiguous description of the interaction between

the end-user and the system.

Provide a basis to validate the testing

ii) Class-Responsibility-Collaborator Modeling

After having developed the usage scenarios, dentify candidate classes and

indicate their responsibilities and collaborations. Class-responsibility-

collaborator (CRC) modeling provides a simple means for identifying and

organizing the classes that are relevant to system or product requirements.

Ambler describes CRC modeling in the following way:

A CRC model is really a collection of standard index cards that represent

classes. The cards are divided into three sections. Along the top of the card

you write the name of the class. In the body of the card you list the class

responsibilities on the left and the collaborators on the right.

Classes

Identify classes and objects based on the following guidelines: Identify from

the cases and problem under consideration, the variety of forms an object

may assume, external entities, things, occurrences, or events, roles,

organizational units, places etc. Perform a grammatical parse on the

processing aspects of the system. List of all the identified nouns become

potential objects. The following are the characteristics of selection :

1. Retained information- During analysis the potential object will be useful

only if it is necessary to remember the information

2. Needed services- The operations have to identified wrt the potential

object.

Page 122: Merged Document

Software Engineering Unit 10

Sikkim Manipal University Page No.: 122

3. Multiple attributes- The focus should be on "major" information

pertaining to the object, this may result in multiple attribution of the

object.

4. Common attributes- A set of attributes defined may appear to be

common when compared with other object in the system.

5. Common operations- There can be a common set of operations on the

object which are identified as potential object

6. Essential requirements- External entities be defined as objects in the

requirements model.

iii) Defining Structures and Hierarchies

Once classes and objects have been listed out with the help of CRC model,

the analyst then focuses on the structure of the class model. The analyst

then determines the hierarchies with respect to each object and classes.

Class diagrams are created with the help of UML.

iv) Defining Subjects and Subsystems

Group of all classes are referred to as subsystems or packages. A

subsystem can be treated as a black box when it is viewed from outside. A

subsystem implements one or more contracts. A contract is a specific list of

requests made on the subsystem. Subsystems can be represented with the

by creating a subsystem index card. The subsystem index card indicates the

name, contracts, and classes of the subsystems that support the contract.

Packages can be referenced by a single icon. Package references can be

created for multiple objects structure.

Self Assessment Question(s) (SAQs)

1. ________models the system from the end-user’s point of view.

2. Generalization/specialization class structures can be created for

___________ classes.

10.3.5 The Object Relationship and Behavior Model

The CRC and the object-relationship model represent static elements the

Object analysis model. To incorporate dynamic behavior into the model,

consider the behaviour of the system as function of specific events and time.

The object-behavior model is sensitive to external events. To model the

functionality the following steps may be considered:

1. Evaluate all use-cases

2. Identify events

Page 123: Merged Document

Software Engineering Unit 10

Sikkim Manipal University Page No.: 123

3. Create an event trace

4. Build a state transition diagram

5. Review the object-behavior model

10.3.5.1 Identification of Events with Use Cases

The methodology of going through the various sequences of activities and

understanding the process helps in easy identification of the events. Any

such case will be looked into to capture information. The performer actor is

to be identified in the case scenario. Conditions and limitations if any are

identified and listed. After identifying the events in the scenario, they are to

be allocated to objects.

10.3.5.2 Representation of State

There are two different aspects of the state to be considered. The first is the

state of the object and the second is the state of the system in which the

object functions. The state of object can be active or passive. The object is

said to be in active state if it is undergoing a transformation through a

process. Event is responsible to bring about a change in the object whereas

the passive state indicates the status of all the attributes of the object.

Self Assessment Question(s) (SAQs)

1. What are the steps followed in object-behavior model?

10.4 Summary

An abstraction enables us to model the world. An object-oriented

development was proposed first during the 1960s. One can derive a number

of benefits from the object technologies.

Object oriented approach can be understood well if the knowledge of the

real world entity is clear. A class encapsulates the data and procedural

abstractions required to describe the content and behavior of a real world

entity.

The data abstractions are also referred to as attributes. The attributes are

controlled and manipulated by abstraction procedures known as operations

or methods. A super-class refers to a collection of classes, and a subclass is

referred to as a specialized instance of a class.

Real world entities have features such as shape, weight, color, and type of

material. These are abstracted as attributes of the object representing the

Page 124: Merged Document

Software Engineering Unit 10

Sikkim Manipal University Page No.: 124

real world problem. Messages are the means by which objects

communicate with each other.

Encapsulation refers to the data and the methods on the data which are

held together in a class by means of specifications stated for the class. The

main elements of an object model are the classes and objects, attributes,

operations, and messages. Software project estimation remains more of an

art than a science. To develop reasonable estimates it is essential to

develop multiple data points. That is, estimates should be derived using a

number of different techniques.

The main objective of object-oriented analysis is to develop a model that

describes computer software. The model should work to satisfy a set of

customer-defined requirements. The model used for the purpose of

analysis depicts information, function, and behavior within the context.

The use-case is the modeling approach of choice. This important analysis

representation mainly describes a scenario for usage from the perspective

of the end-user.

10.5 Terminal Question(s) (TQs)

1. Develop a classroom presentation on one static or dynamic modeling

diagram used in UML. Present the diagram in the context of a simple

example, but provide enough detail to demonstrate most important

aspects of the diagrammatic form.

2. In your own words describe the difference between static and dynamic

views of an OO system.

3. Using your own words and a few examples, define the terms class,

encapsulation, inheritance, and polymorphism.

10.6 Multiple Choice Question(s) (MCQs)

1. Which of the following are the features of object oriented approach?

(a) Polymorphism (b) inheritance (c) all the above (d) none of these

2. Which of the following are the elements of object model?

(a) classes and objects (b) attributes (c) all the above (d) none of these

Page 125: Merged Document

Software Engineering Unit 10

Sikkim Manipal University Page No.: 125

10.7 Answers to SAQs, TQs, and MCQs

10.7.1 Answers to Self Assessment Question(s) (SAQs)

10.2.1 1. Message 2. Refer section 10.2.1

10.2.2 Classes and objects, attributes, operations, and messages

10.2.3 Refer to section 10.2.3

10.3.1 Implementation model view, environment model view

10.3.2 Refer to section 10.3.2

10.3.3 Static view of semantic classes , Static view of attributes ,Static view

of relationships, Static view of behaviors, Dynamic view of control

and time, Dynamic view of communication

10.3.4 1. Use-cases 2. Identified

10.3.5 Refer to section 10.3.5

10.7.2 Answers to Terminal Question(s) (TQs)

1. Refer to section 10.3.2

2. Refer to section 10.3.4

3. Refer to section 10.2.3

10.7.3 Answers to Multiple Choice Question(s) (MCQs)

1. c

2. c