0% found this document useful (0 votes)
22 views

Software Engineering and Modeling

Uploaded by

8qhkdmc9wq
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views

Software Engineering and Modeling

Uploaded by

8qhkdmc9wq
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 170

Software Engineering and Modeling 1

Module-1: Introduction to Software Engineering


Notes

ity
Unit Outcomes:
At the end of this unit, you will be able to:

1. Apply standard coding practice in developing of software project


2. Review the principles and procedures of software planning and development of

rs
software projects.

Introduction
Software engineering is a concept that combines the words software and

ve
engineering. Software is a set of programs that offer instructions and functionality to
customers. Engineering is the method of planning and constructing projects with a
specific intent and a cost-effective solution to problems. It is a methodical approach
to a system’s particular design, production, operation, and maintenance. Software
engineering establishes a method for designing and developing software. The social

ni
procedure surrounding software development is highly reliant on an engineer’s ability
to communicate with others who have similar goals and skills, to harmonize each team
member’s contact and reaming priorities, to collaborate across the software lifecycle,
and to lobby for the commercial success of their goods. It is extremely difficult to build
computer software that satisfies all of the needs of its client/user.
U
ity
m

Software engineering is a branch of computer science that concludes the


development and builds the computer systems software and applications software.
)A

Computer systems software controlled the programs that include computing utilities and
operations systems.

Software Engineering provides a structure or concept for developing high-quality


software. It is the result of following a specific protocol to create simple and cost-
effective applications.
(c

1.1 What is and why Software Engineering?


To build the software that is ready to solve the challenges of the upcoming century,
you know some realities.
Amity Directorate of Distance & Online Education
2 Software Engineering and Modeling

●● The software has become deeply place in virtually every feature of our daily
Notes needs.

ity
●● Information technology requirements inquire by individuals, growing businesses,
and governments. Nowadays people create computer code that was once
built by a single individual. Advanced software that was once implemented in a
predictable, independent, computing environment is now implant inside each and
everything from customer electronics to medical types of equipment to machine

rs
gun systems.

The nature of software


The software now serves a dual purpose. It is both a commodity and the mode
of transportation for delivering one. The product embodies the computing potential

ve
embodied by computer hardware or, more generally, provides the computing potential
embodied by computer software. A desktop network that can be accessed via local
hardware. The program, whether it’s on a phone, a tablet, a laptop, or a mainframe
computer, is an information transformer, generating, managing, acquiring, updating, or
transmitting data that can be as plain as a single bit or as complex as a multimedia
display generated from data gathered from dozens of sources.

ni
U
ity

As the vehicle is used to deliver the product, the software acts as the basis for the
control of the operating systems, the communication of information, and the control of
the tools.

The software delivers the most important product- information. It also transfers the
m

data so that data will safe or we can use it in a local context: it provides us a gateway
to worldwide information networks, and provides us information in all of its forms. In
addition, the vehicles threaten personal privacy and a gateway that enables those with
malicious intent to commit criminal acts.
)A

The function of computer software has changed dramatically over the last half-
century. More advanced and complex computer-based systems have resulted from
dramatic advances in hardware, such as high memory, storage space, and a wider
range of exotic input and output options. When a system works, the complex can
produce stunning results, but it can also cause major problems for those who must
create and protect complex systems. Today a huge software industry has become a
dominant factor in the economics of the industry world. A team of software specialists,
(c

focus on one part of the technology required to deliver a complex application, has
replaced the complex program of an earlier era. The question that was asked of the
lone programmer is the same questions that are asked when modern computer-based
systems are built.
Amity Directorate of Distance & Online Education
Software Engineering and Modeling 3

●● Why does it take so long to get the software finished?


Notes

ity
●● Why are development costs so high?
●● What has the problem come in the future so we can solve it before delivering the
software?
●● Why we have to invest our time to maintain an existing program?
●● Why do we continue to have difficulty in measuring progress, as the software is

rs
being developed and maintained?
These are the key concerns we have about the software and how it is built during
the development process. – leading to the introduction of software engineering practice.
You will need to improve software architecture if you want to minimize software

ve
degradation.

ni
U
Figure: failure curve for hardware

This figure shows a failure rate as a function of time for hardware. The curve is
ity

called the “bathtub” curve. The bathtub curve indicates the hardware exhibits relatively
high failure rates in its life; defects are corrected and failure rate drops to a steady-
state level for some time. As time increases, the failure rate rises again as hardware
components interact with the many effects like dust, vibration, abuse, temperature
extremes, and many other environmental-related issues. Stated simply, the hardware
begins to wear out.
m
)A
(c

Figure: failure curves for software

Amity Directorate of Distance & Online Education


4 Software Engineering and Modeling

The failure rate curve for software should call the “idealized curve”. Undiscovered
Notes defects will cause high failure rates early in the life of a program. Hence, they

ity
can be corrected and the curve flattens as shown. The idealized curve is a gross
oversimplification of actual failure models for software. The software does not wear out.
However, it does deteriorate!

The software will change, or changes are made. Errors will come, failure rate curve
to spike as shown in the “actual curve”. The curve returns to the original steady-state

rs
failure rate, the next change is requested, causing the curve to rise again. The minimum
failure rate comes the software is deteriorating due to change.

When hardware wears out, it can be replaced by spare parts. However, there
are no software spare parts. Software failure indicates an error in design or in the

ve
procedure through which design was translated into machine-executable code. The
software maintenance tasks that accommodate change requests include involving more
complex than hardware maintenance.

What is Software Engineering?


Software engineering is the analysis of consumer needs, followed by the

ni
design, development, and testing of software applications. It is a method or a set of
methods that enables anyone to create high-quality computer software. The software
engineering method is used by software engineers.

Software is more than just a set of lines of code. It is a piece of executable


U
code that serves no reason. It consists of executable code as well as libraries and
documents. It is referred to as a software product when it is created for a particular
purpose.

Engineering is the process of creating products through the application of


ity

knowledge, scientific concepts, and common methods.


m
)A

There are various definitions of software engineering:

●● IEEE defines software engineering as the application of a systematic, disciplined,


(c

which is a computable approach for the development, operation, and maintenance


of software.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 5

●● Fritz Bauer, defines the establishment and he used standard engineering


principles. It helps you to obtain, economically, software that is reliable and works Notes

ity
efficiently on real machines.
●● Boehm defines software engineering, which involves the practical application of
scientific knowledge to the creative design and building of computer programs.
It also includes associated documentation needs for developing, operating, and
maintaining them.

rs
Software engineers can be divided into two categories

Applications Engineers
Through evaluating the client specifications, applications engineers build

ve
applications for businesses and every industry. These applications or programs will be
designed, developed, executed, installed, and maintained by them.

Systems Engineers
Systems engineers oversee the development, implementation, maintenance, and

ni
expansion of a company’s or industry’s computer systems. They organize the needs
of each department, make technical suggestions, and set up any connections between
computers and the business.

Why software engineering?


U
●● To manage the software
●● For more extensibility
●● Expenditure
●● To maintain the vital nature of software
ity

●● For best management


Software engineers are the people who make the digital world go round.
They improve social media applications such as Twitter and Instagram while also
programming the future of autonomous vehicles, robots, and websites. It means that
if you use a website, an app, or a digital screen, you are interacting with the work of
skilled software engineers.
m
)A
(c

Software engineers are computer professionals who develop, manage and


upgrade computer software using their knowledge of engineering concepts and
Amity Directorate of Distance & Online Education
6 Software Engineering and Modeling

languages. With so many positions and technological skills, the world of software
Notes engineering is extremely diverse. What you’re doing right now isn’t magic. It takes a lot

ity
of time and commitment on the part of committed engineers. Since they must function
well with a large team, communication is the most important factor. After all, the project
spans a wide range of technology, programming languages, and specialties.

Engineers have unique roles to perform certain computer engineering tasks.


To produce applications, it takes so many engineers. Some engineers are in always

rs
demand:

ve
Front-end Engineer
Front-end engineers specialize in the development of software that interacts with
customers. The user interface developers are in charge of everything from bug fixes

ni
to design elements that make the user experience on apps and websites as seamless
as possible. Structure, data, design, menu, material, and functionality are all layers
that make up the pages of the internet. Without front-end developers taking backend
data and building user-facing features, the site will be a dust bowl of HTML and “Under
U
Construction” GIFs. Front-end developers build the environment for all that users see,
press, understand, and touch by incorporating HTML and CSS languages, architecture,
scripts, and frameworks.

HTML basics
ity

<!DOCTYPE html>

<html>

<body>

<h1>My First Heading</h1>


m

<p>My first paragraph.</p>

</body>

</html>
)A

Program output:

My First Heading

My first paragraph

CSS Basics
(c

<!DOCTYPE html>

<html>

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 7

<head>
Notes

ity
<style>

p{

color: red;

text-align: center;

rs
}

</style>

</head>

ve
<body>

<p>Hello World!</p>

<p>These paragraphs are styled with CSS.</p>

</body>

</html>

Program output:
Hello World!
ni
U
These paragraphs are styled

Front-end developer’s responsibilities include:


●● Prioritizing the user experience
ity

●● Bringing a concept to life with HTML, CSS, and JavaScript


●● Re-built and maintenance of websites and web application user interfaces
●● Maintaining tools that enhance interaction with the site in any server
●● Reviewing the SEO best practices
●● Testing the website for usability and fixing any errors.
m

Back-end Engineer
Back-end developers are experts in the reasoning and coding of every software or
website. These engineers concentrate on the code and carry out every action. They test
)A

various databases, scripting, and application programming interfaces (APIs) to ensure


that the backend is bug-free. A website is run by a back-end person; the user does not
see or communicate with it, but it is still running in the background. It provides features
as well as a desktop-like environment. Back-end developers play a crucial role in web
development teams, ensuring that the front-end framework or software’s requirement
list is implemented on time.
(c

Responsibilities of a back-end developer can include working with


1. Database creation and maintenance, integration, and management.
2. To build Back-end frameworks

Amity Directorate of Distance & Online Education


8 Software Engineering and Modeling

3. Cloud computing integration and server-side programming languages


Notes

ity
4. Content management system development, deployment, and maintenance
5. Backup and restore technologies for a website’s files and DB

Full-stack Engineer
A full-stack engineer is skilled in both front-end and back-end growth. They employ
design elements that aid in the creation of the best possible user experience. A full-

rs
stack developer is someone familiar with all levels of front-end and back-end software
development. Developers have the skills and expertise to take an idea and transform it
into a finished product.

Each “end” (front end and back end) contains a significant amount of data. A full-

ve
stack developer is fluent in both database and browser languages. Databases, PHP,
HTML, CSS, JavaScript, and all in between are all available to them.

Security Engineer
Security engineers are becoming increasingly important because of their ability to

ni
manage the entity’s cyber infrastructure during disturbances such as natural disasters
or cyber-attacks. They use various methods to repair their databases, and the system
infrastructure is secure.

Soft skills for a security engineer


U
●● Leadership
●● Project management
●● Problem-solving
●● Communication
ity

Hard skills for a security engineer

●● Ethical hacking
●● Computer operating system
●● Network architecture
●● Computer forensics
m

Security engineer main responsibilities

●● Develop security protocols


●● Test system vulnerabilities
)A

●● Implement and upgrade security measures


●● Maintain security system
●● Investigate security breaches

DevOps Engineer
The phrases “software (dev)elopement” and “information-technologic (op)eration”
(c

are described as DevOps Engineer. DevOps engineers are critical because they know
how to use DevOps practices to reduce the time it takes to launch any application

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 9

without sacrificing the task’s overall quality. They have a high level of productivity when
it comes to software creation. Notes

ity
“Languages are used by software engineers to program any application or website
to carry out a mission. Most languages are difficult to learn and take engineers years to
master. Today’s programming languages are widely used.”

Key skills for DevOps engineers

rs
●● excellent team management
●● communication skills
●● good knowledge of programming languages
●● strong problem-solving skills

ve
●● excellent organizational and time management skills
●● Ability to work on multiple projects at the same time
●● awareness of DevOps and Agile principles.
●● Multitasking

JavaScript

ni
Websites are built with JavaScript. JavaScript was widely used in 2019, with 95%
of all websites using it. It is primarily used in front-end creation to build attractive web
pages. In comparison to other languages, it is a very simple language. It is a very
U
versatile language that aids in the development of a website. JavaScript (JS) is a web
programming language that is compatible with all web browsers and tools. This aids in
the development, enhancement, and modification of websites.

JavaScript syntax
ity

<!DOCTYPE html>

<html>

<body>

<h2>JavaScript Strings</h2>
m

<p>Strings can be written with double or single quotes.</p>

<p id=”demo”></p>

<script>
)A

document.getElementById(“demo”).innerHTML = ‘John Doe’;

</script>

</body>

</html>
(c

Program output:
JavaScript Strings

Amity Directorate of Distance & Online Education


10 Software Engineering and Modeling

Strings can be written with double or single quotes.


Notes

ity
John Doe

Python
Python is a free and open-source programming language. A simple and easy-to-
understand language. The short code is created using this language. Many software
engineering projects employ this technique. It is used in the development of artificial

rs
intelligence and machine learning systems.

Python syntax

if 5 > 2:

ve
print(“Five is greater than two!”)

if 5 > 2:

print(“Five is greater than two!”)

ni
program output

Five is greater than two!

Five is greater than two!


U
C

The programming language C is the most special. It was founded in 1971. It is in


high demand at all times. It is simple to read. It is mostly used in games and computer
graphics.
ity

‘C’ was developed by Dennis Ritchie in 1972.

●● Robust language.
●● It is a low programming level language.
●● It is widely used in the software development field.
●● It is a structure-oriented language.
m

●● C language has the full support of various operating systems and hardware
platforms.
●● In the C programming language, many compilers are available for executing
programs that are written in the ‘C’ language.
)A

●● A compiler compiles the source file and generates an object file.


●● It is highly portable.

Defining an accessing structure member in C


#include<stdio.h>

#include<string.h>
(c

struct Courses

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 11

char WebSite[50];
Notes

ity
char Subject[50];

int Price;

};

void main( )

rs
{

struct Courses C;

//Initialization

ve
strcpy( C.WebSite, “w3schools.in”);

strcpy( C.Subject, “The C Programming Language”);

C.Price = 0;

//Print

printf( “WebSite : %s\n”, C.WebSite);

printf( “Book Author : %s\n”, C.Subject);

printf( “Book Price : %d\n”, C.Price);


ni
U
}

Program output

WebSite : w3schools.in
ity

How C works?
m

Software application domains


Today, there are 7 broad areas of computer software present continuing challenges
for software engineers.
)A

1. System software: system software is a collection of programs written to service other


programs. Example: compilers, editors, and file management utilities. Other systems
software processes largely indeterminate data.
2. Application software: application software is a stand-alone program that helps to
solve a specific business need. It functions the data in a way that facilitates business
operations decision-making.
(c

3. Scientific/Engineering software: it is a broad area of number-crunching programs


that range from astronomy to volcanology, from automotive stress analysis to orbital

Amity Directorate of Distance & Online Education


12 Software Engineering and Modeling

dynamics, and from computer-aided design to molecular biology’, from genetic


Notes analysis to meteorology.

ity
4. Embedded software: it is used to implement and control the features and functions
for the end-user and for the system itself. It also provides significant function and
control capability.
5. Product-line software: this software is designed to provide a specific capability for
customers. It also focuses on a limited and esoteric marketplace or addresses mass

rs
consumers.
6. Web/Mobile application: this network-centric software category is used in a wide
array of applications and it encompasses both browser-based apps and software
that resides on mobile devices.

ve
7. Artificial Intelligence software: it is used to make non-numerical algorithms to solve
a complex problem that is not implemented for computation analysis. Its example
is robotics, expert system, pattern recognition, artificial neural networks, theorem
proving, and game playing.
Thousands of software developers are unable to work on one or more of these

ni
types of projects. Although some new projects are being developed, many existing
applications are being updated, modified, and improved.

Some critical challenges faced by software engineers:


U
●● The cost of software failure can be high if there are any safety-critical crisis
areas such as space, aviation, nuclear power plants, etc.
●● Increased market demands.
●● Increased complexity of software application.
●● The municipality of software systems should be communicating with each
ity

other.
A software engineer should be skilled in:

- Programming language

- Fundamentals of computer science


m

- Design and architecture of computer system

- Algorithms and data structures

- Information analysis of the document


)A

- Debugging software

- Testing software

1.2 Software Crisis–Problem and Causes


In computer science, the term “software crisis” is used. Increases in computing
(c

resources and the complexity of issues that might now collide triggered the tech crisis.
Since existing approaches were inadequate, many software problems arose as the
complexity of the software increased.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 13

The key cause of the tech crisis is that computers have grown in power by many
orders of magnitude! To put it simply, programming was never a concern as long as Notes

ity
there were no machines; when we had a few weak computers, programming became a
minor issue; and now that we have massive computers, programming has become an
equally massive issue.

Edsger Dijkstra, The Humble Programmer (EWD340), Communications of the


ACM.

rs
ve
Causes of Software Crisis:

●● In the 1960s many software projects failed. ni


U
●● So much software is over budget and expensive to maintain.
●● Projects are unmanageable and codes are difficult to maintain.
●● Big software was expensive and difficult.
●● Many software doesn’t satisfy the requirements of the users.
●● When Hardware capability increased then the complexity of software projects
ity

increased.
●● Demand for new software increased faster compared with the ability to
generate new software.
●● The quality of the software was low.
●● The software was never delivered on time.
m
)A
(c

Amity Directorate of Distance & Online Education


14 Software Engineering and Modeling

The solution to software crisis:


Notes

ity
●● In the 1970s the widespread use of software engineering principles.
●● In the 1980s the automation of software engineering process and computer-
aided software engineering.
●● In the 1990s increased emphasis on the management aspects of projects
standard of quality and processes like ISO 9001.
●● Reduction of over-budget in software.

rs
●● The quality of the software must be good.
●● The project was delivered on time.
●● Experience working team member in a software project.

ve
1.3 Responsibility of Software Engineering,

Software engineering has four main responsibilities:


A software engineer’s duties are divided into four groups. It is first, initial
techniques used in software engineering projects over the course of a software

ni
development lifecycle when it comes to a method called the “Waterfall model.” Other
methodologies, such as the Agile methodology, are becoming more common.
U
ity
m

●● Research and analysis: Programmatically proficient, many software engineers


)A

must give solutions without a roadmap. For back-end engineers, this means
adding API into their tech stack. For front-end developers, this means building
interfaces that work in many different browsers. Software engineers spend a
good amount of time researching both programmatic solutions and technical
documentation for any kind of help.
●● System design: A back-end software engineer has to design the practical sustain
that brings a creator solution to life and a front-end engineer center on the client-
(c

facing aspect of the coding. There are some points and responsibilities to include
like having good coding and good algorithms.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 15

●● Implementation: The main point is software engineers have to implement the


code into the product foundation. Mainly software developers work in a group Notes

ity
or a team and make their focuses on building specific front-end and back-end
components of a particular product. But this is important to demonstrate a have
a good understanding of the implementation logic as a key part of a software
engineer job responsibilities.
●● Support: In a market,many products are not completed they need iteration and

rs
support. Companies software engineer always supports the products they build.
Software engineer always designs the product, implement a code, test then fix
if a problem arises such as bugs or any errors. Software engineer makes their
relation with QA team to continuously support their product during the software
development lifecycle.

ve
Some more responsibilities of software engineering:

●● Software engineers need to review or check the current working system of the
client.
●● In the case of a fresh system, the software engineer reviewed the documents.

ni
●● Software engineers present the improvement of a current system/
requirements including cost proposal, time, and some other information.
●● Software engineers have to Identify the weaknesses and lowest points of the
existing programs, products, operating systems, or applications.
U
●● A software engineer needs to work closely with a business analyst, client
employees, and designer.
●● A software engineer needs to create code, programs for desktop and mobile
applications, or platforms.
●● A software engineer preparesa training manual that can be used by
ity

application users at any time.


●● A software engineer attends meetings with clients, end-users, coders,and
other staff to make better software.
●● A software engineer develops a well plan to produce a program that meets the
needs of a client perfectly.
m

●● A software engineer analyses and tests the whole program to ensure it works
according to a design created in the requirement phase.
Software engineers are better if they know computer science or information
technology. They can secure jobs in big firms or government offices.
)A

1.4 Fundamental Qualities of a Software Product


The goal of software engineering is to design and develop better software.
In this topic, we are going to introduce a “better software” quality. There are main 6
fundamental qualities to make the software more productive.

●● Maintainability:
(c

Maintainability can be described as “the ease with which adjustments can be


made to meet new requirements or correct deficiencies” (Balci 1997). Well-designed

Amity Directorate of Distance & Online Education


16 Software Engineering and Modeling

software should be adaptable enough to handle potential changes as new requirements


Notes emerge. The value of this quality trait cannot be overstated, as maintenance accounts

ity
for approximately 70% of the cost of the software life cycle [Schach 1999]. The
programmer must write code that would not need to be maintained. The software
documentation has a major impact on the software product’s maintainability.

●● Correctness:
Correctness is described as “the degree to which software complies with its stated

rs
requirements” (Balci 1997). The software specifications are specified and approved in
the requirements specification document. To create good applications, we must meet all
of the requirements.

●● Reusability:

ve
[Balci 1997] Reusability is described as “the ease with which software can be
reused in the creation of other software.” The existing software can be reused by
software developers to build more complex software in less time.

●● Reliability:

ni
Reliability is “the frequency and critically of software failure, where failure is an
unacceptable effect or behavior occurring under permissible operating conditions” [Balci
1997]. The frequency of software failure is measured by the average time between
some failures.
U
●● Portability:
The ease of which software can be used on device configurations other than its
current one is referred to as portability [Balci 1997].

It’s important to port applications to different device configurations for a variety


ity

of purposes. For starters, good software devices can last 15 years or longer, while
hardware is replaced every 4 to 5 years at the very least. As a result, good software
can be deployed on three or more separate hardware configurations over the course
of its lifetime [Schach 1999]. The second option is to port the programme to a different
machine configuration, which could be less costly than designing similar software from
scratch. Last but not least, sales of “shrink-wrapped software” could increase as a result
of increased demand.
m

The last one is sales of “shrink-wrapped software” can grow because a greater
market for the software is available.

●● Efficiency:
)A

“Efficiency” is described as “the degree to which software achieves its goal without
wasting resources” (Balci 1997). The first definition of efficiency is the speed at which a
programme is implemented. The second factor is the amount of storage required for the
programme to run. They are inversely connected, with increasing execution efficiency
resulting in a decrease in space efficiency. The space-time tradeoff is the name for the
partnership between these two.
(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 17

Notes

ity
rs
1.5 Kinds of Software Life-Cycle Models and Case Study

ve
ni
U
ity

The Software Development Life Cycle (SDLC) is a collection of stages that


provides a general understanding of the software development process. It explains
how software is created and produced, starting with business ideas and requirements
intelligence and progressing through the stages of converting business ideas and
requirements into functions and features, to its use and operation to meet business
demands. Based on project ideas and company specifications, a software engineer
m

should have a clear understanding of the SDLC model.

We may think of SDLC models as tools that help us deliver your software project
more effectively.
)A

Types of software developing life cycles (SDLC)

●● Waterfall model
●● V-Shaped model
●● Evolutionary prototyping model
●● Spiral method (SDM)
(c

●● Iterative and Incremental method


●● Agile development

Amity Directorate of Distance & Online Education


18 Software Engineering and Modeling

Waterfall model
Notes

ity
The waterfall model is a sequential flow that follows a linear path. In which we can
see that change is moving slowly across the stages of software implementation, just like
a waterfall (downwards). As a result, we can see that the phases of the development
process begin only after the previous phase has been completed. It is not necessary to
return to the previous stage to make adjustments to the specifications. It was the first
and most well-known approach to software development.

rs
The WATERFALL MODEL is a step-by-step model that divides software
development into phases. Each process must be completed before moving on to
the next. The phases do not overlap in any way. Each process has its concept for
completing specific tasks.It was introduced in 1970 by Winston Royce.

ve
Usage of Waterfall model
ni Figure:Waterfall Model
U
The projects which not focus on modifying the requirements, for example, projects
started from, a request for the plan, the customer has a very fixed-document.

The waterfall model can be used when:

●● Waterfall model requirements are not changing frequently.


ity

●● The waterfall model application is not very complex and large.


●● Project is short
●● The requirement is very clear
●● Environment is stable
●● In this model, the technology and tools we used are not dynamic in nature and
m

is stable
●● There are so many resources are available and trained
Advantages of Waterfall Model:
)A

●● This is easy to explain to the users.


●● It has a structured approach.
●● Well explained phases and functions.
●● It helps to plan and schedule the project.
●● It verifies each phase and ensures early detection of errors.
(c

●● Specific deliverables.
Disadvantages of waterfall model

●● Assumes that the requirements of a system can be frozen.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 19

●● We can’t go back to any stage after completion.


●● It is very expensive and difficult for letter flexibility and adjusting.
Notes

ity
●● Expensive and required more time, in addition to the plan.

V-Shaped Model
The method steps are bent upwards after implementation and during the coding
phase to form the V shape in this extended version of the waterfall model. In the

rs
V-shaped form, it has the earliest test preparation.

ve
●●
Figure: V-Shaped Model

Software requirements clearly defined and known ni


U
●● Software development technologies and tools are well-known.

Advantages of V-Shaped Model:

●● Easy and simple to use


●● Each stage has some different deliverables.
ity

●● The chance of success is more due to the development of test plans early on
during the life cycle.
●● Where requirements are easy to understand then this model is good.
●● Verification and validation of the product in the early stages of product
development.
m

Disadvantages of V-Shaped Model:

●● Not flexible
●● Expensive and difficult adjusting scope
)A

●● The software is developed during the implementation phase, so no early


prototypes of the software are produced.
●● A clear path is not there for problems found during the testing stages.
●● Costly and takes more time, in addition to a plan.

Prototyping Model
(c

The practise of developing prototypes of software applications, such as unfinished


implementations of the software programme, is established in this model. This task

Amity Directorate of Distance & Online Education


20 Software Engineering and Modeling

is performed in software development and is used by the software developer to


Notes review some of the software’s operations to ensure that they meet the customer’s

ity
requirements.

rs
ve
Prototyping Model is a model where a software development prototype is built,

ni
tested, implement, and reworked. This process is going until an acceptable prototype
is achieved. It also creates a base to produce the user requirement system or software.

Prototyping model phases:


U
ity
m

It has four types


1. Throwaway prototyping: which are discarded in time rather than becoming a part of
)A

the final delivered software


(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 21

Notes

ity
rs
ve
2. Evolutionary prototyping: it evolves into the last system through iterative incorporation
of user feedback.

ni
U
ity
m

3. Incremental prototyping: in the end, the separate prototypes are joint in an overall
design.
)A
(c

Amity Directorate of Distance & Online Education


22 Software Engineering and Modeling

4. Extreme prototyping: mainly it is used in web applications. Based on the preceding


Notes one, it breaks down web development into three phases. The first is a static prototype

ity
that contains HTML pages. In the second phase, the screen is fully functional using a
simulated services layer. In the third phase, the services are implemented.
The prototyping model is the process used with the software development life cycle
model. If the system does not have user interactions, such as a system does some
calculations shall not have prototypes.

rs
Types of Prototyping Models:

●● Rapid Throwaway prototypes


●● Evolutionary prototype

ve
●● Incremental prototype
●● Extreme prototype

Advantages of prototyping model:

●● Reduced cost and time


●●
●●

●●
Better user involvement.

ni
The prototyping model helps team members to communicate effectively with
the stakeholders.
The prototyping model provides client satisfaction.
U
●● In the Prototyping model, there is hardly any chance of software rejection.
●● Client feedback helps you to achieve better software development solutions.
●● The prototyping model allows the user to compare if the software code
matches the software specification.
ity

●● If there is any missing functionality in the system, it helps to find that


functionality.
●● It also identifies the complex functions.
●● Encourages innovation and provides flexible design.
●● It is easy to understand.
m

●● In this model, there is no requirement or need for specialized experts to build


the model
●● The prototype serves as a basis for deriving a system specification.
●● The prototype helps to gain a better understanding of the client’s
)A

requirements.
●● This gives the advantage of prototypes that can be changed and even
discarded.
●● It also serves as the basis for operational specifications.
●● Prototypes may offer training at a very early stage for future users of the
software system.
(c

Disadvantages of prototyping model:

●● Insufficient analysis.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 23

●● Excessive development time of the prototype.


●● Sometimes it is costly to implement the prototypes.
Notes

ity
●● It is a slow and time taking process.
●● The cost of developing a prototype is a waste because the prototype is
ultimately thrown away.
●● Prototyping may encourage excessive change requests.
●● Many times clients may not be willing to participate in the iteration cycle for a

rs
longer time duration.
●● There are so many variations when the prototype is evaluated by the
customer.
●● The requirements of the customers are changing so there is a lot of confusion.

ve
●● Sometimes, developers who want to build prototypes in a lesser time may end
up building sub-standard development solutions.

Spiral model
In the software development process model, the Spiral Model takes risks. It’s a

ni
hybrid of the waterfall and iterative approaches. It facilitates the adoption of software
development elements from different process models for software projects based on
new risk trends, resulting in a more productive development process.

In software engineering, each step of the spiral model starts with a design objective
U
and ends with client feedback. Barry Boehm discussed the spiral model of software
engineering in a 1986 article.

It’s a hybrid of architecture and prototyping-in-stages that combines the


advantages of top-down and bottom-up approaches. It combines the characteristics of
both the prototyping and waterfall models. It’s used in big apps and systems that have
ity

small phases or segments built in.


m
)A
(c

When to use the Spiral Model?

●● A Spiral model in software engineering is used when the project is complex.


●● When any application is required to be fast, the spiral methodology is used

Amity Directorate of Distance & Online Education


24 Software Engineering and Modeling

●● It is used when risk and costs change.


Notes ●● The spiral methodology is useful for application which has high-risk projects

ity
●● When requirements are not clear
●● When changes may require at any time of the development.

Advantages of the spiral model:

●● The budget and schedule are more realistic as work progressed.

rs
●● Good involvement of developers.
●● Manage risk in the system into several stages.

Disadvantages of spiral model:

ve
●● Have high costs and time taken to complete the final software.
●● High risk to evaluate.

Iterative and Incremental Model


This model was created to address the flaws in the waterfall model. This model

ni
begins with deployment and ends with deployment, with cyclic interactions in between.
The main goal of this approach is to build a system by repeating cycles in a smaller
area at a time. Mini waterfalls or a V-shaped model are included.
U
ity
m
)A
(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 25

This model is used to create small stages or segments in large products and short
applications. A separate aspect exists in an ERP scheme. In the first version, there is a Notes

ity
budget, and then we can move on to the inventory module and so on.

An incremental model is a software development process in which specifications


are broken down into several standalone modules over the course of the software
development cycle. Analysis, design, implementation, testing/verification, and
maintenance are all stages in incremental progress.

rs
When to use Incremental models?

●● An incremental model is used when the requirements of the system are


understandable.

ve
●● An incremental model is used when demand for an initial stage release of a
product comes.
●● An incremental model is used when the software engineering team is not very
well educated, skilled, or trained.
●● An incremental model is used when high-risk features and goals have to be

ni
implemented.
●● The incremental model is used for web application and product-based
companies.

Advantages of Iterative and Incremental Model:


U
●● It produces value in an early stage in the development lifecycle.
●● It focused on customer value than the linear approaches.

Disadvantages of Iterative and Incremental Model:


ity

●● Heavy documentation
●● It needs a defined set of processes.
●● Integration between the iterations can be a problem if it is not considered
during the development and project planning.

Agile Model
m

It is focused on iterative and gradual growth, with cross-functional teams


collaborating to improve our requirements and solutions. This model can be applied to
any project that needs more client participation and interaction. When the client has any
practical specifications, this can be completed in less than three weeks. This is a more
)A

useful component for customer-satisfaction software.

The AGILE approach encourages continual iteration of development and testing


during the project’s software development lifecycle. Both development and testing
practises are concurrent in the Agile model.
(c

Amity Directorate of Distance & Online Education


26 Software Engineering and Modeling

Agile testing strategies:


Notes

ity
rs
ve
ni
There are 12 agile principles for those who want to achieve agility:
U
1. The highest priority is to satisfy the customer through the delivery of software
2. Agile process harness changes for the client’s competitive advantage.
3. Deliver the software on time.
4. All the team members have to work together daily.
ity

5. Build the project through motivation. Give a good environment and support them.
6. Make a face-to-face conversation.
7. Working software is the primary measure of progress.
8. The developers, business team, and users should be able to maintain a constant
pace indefinitely.
m

9. Make a tracking of project and have technical excellence and good design enhances
agility.
10. Simplicity
)A

11. The best architectures, requirements, and designs emerge from self-organizing
teams.
12. At a fix time interval, the team member has to show their work and adjusts its behavior
accordingly.
(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 27

Notes

ity
rs
Advantages of Agile Model:

ve
●● Less time required to avail of some system features.
●● Having high-quality software in the least time duration and satisfied client.

Disadvantages of Agile Model:

●● Scalability
●●
●●
●●
Documentation is at the last stages
Usability of components is less
Skills must be good ni
U
ity
m
)A

Activity:

1. Write the advantages and disadvantages of developing software in which


quality is good and working properly. What happens when we highlight the
development speed over product quality?
(c

2. Explain any programming languages?


3. What is software?
4. What are the four basics process activities?

Amity Directorate of Distance & Online Education


28 Software Engineering and Modeling

5. What are the characteristics of software engineering?


Notes

ity
6. Why is development cost being so high?
7. Why do we spend so much time in maintain the existing software?
8. Explain an example both positive and negative that shows the impact of software
on our society.
9. Describe agility in your own words.

rs
10. Why do requirements change so much? Are people don’t know what they want?
11. Visit the official agile site and make a full list of all core and supplementary AM
principles.
12. Why does it take so long to get the software finished?

ve
13. Why are development costs so high?
14. What did the problem come in the future so we can solve it before delivering the
software?
15. Why we have to invest our time to maintain an existing program?

ni
16. Why do we continue to have difficulty in measuring progress as the software is
being developed and maintained?
17. Explain the incremental model and define the core product and detailed plan.
U
18. What is a sequence of testing?
19. Explain various object-oriented concepts used in software engineering. Give an
example.
20. A spiral model is a realistic approach to the development of large-scale systems
and software. Explain the model.
ity

21. Explain acceptance testing and beta testing.


22. Explain the bathtub curve of hardware reliability.
23. Explain the concept of bottom-up, top-down, and hybrid design.
24. What kinds of project is suitable for Agile methodology?
m

25. Can you explain pair programming and its benefits?


26. What are the pros and cons of agile methodology?
27. Describe the software development process in brief.
)A

28. How you can identify that your program is safe and fast?
29. Who is the software project manager? What is his role?
30. Write some project management tools.
31. What is quality assurance vs. quality control?
32. Do you think that software maintenance is expensive?
(c

33. Can you differentiate between software and computer program?


34. What are SDLC models available?

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 29

35. Which SDLC model is best?


Notes

ity
36. What is SRS?
37. What are the challenges in software?
38. What is the difference between software developers and software engineers?
39. Write steps to become a software engineer.
40. What is the purpose of SDLC?

rs
41. What is SRS?
42. What is meant by the incremental model?

Exercise:

ve
Check Your Understanding:

1. SDLC stands for?


a. Software development life cycle
b. System development life cycle

2.
c.
d.
Software design life cycle
System design life cycle
ni
Which of the following software engineering activities are not a part of the software
U
process?
a. Software development
b. Software dependence
c. Software validation
ity

d. Software specification
3. What is the main advantage of using the Incremental model?
a. Easy to test
b. The client can respond to each increment
m

c. It is used when there is a need to get a product to the market early


d. Easy to test and debug & it is used when there is a need to get a product to the
market early.
4. What is the agile model isbased on?
)A

a. Iterative model
b. Incremental model
c. Incremental and iterative model
d. None of the above
(c

5. Software is considered to be collection of?


a. Programming code
b. Associated libraries

Amity Directorate of Distance & Online Education


30 Software Engineering and Modeling

c. Documentations
Notes

ity
d. All of the above
6. Which of the following are the characteristics of good software?
a. Transitional
b. Operational
c. Maintenance

rs
d. All of the above
7. What is the [Kiran] main reason for software bugs and failures?
a. Software developers

ve
b. Software companies
c. Both (a)and (b)
d. None of the above
8. What are the attributes of agood software?
a.
b.
c.
Functionality
Development
Maintainability
ni
U
d. Both (a) and (c)
9. What are the signs that a software project is in trouble?
a. Project scope is poorly defined
b. Deadlines are unrealistic
ity

c. Changes are managed poorly


d. All of the above
10. Which of the following efficiency is not included in a software product?
a. Responsive
m

b. Licensing
c. Memory utilization
d. Processing time
)A

11. Who had proposed the spiral model?


a. Barry Boehm
b. Pressman
c. Royce
d. None of the above
(c

12. Which of the following are the main advantages of using an incremental model?
a. Easy to test
b. Easy to debug
Amity Directorate of Distance & Online Education
Software Engineering and Modeling 31

c. It is used when there is a need to get a product to the market early


Notes

ity
d. All of the above
13. What is theAgile software development is based on?
a. Incremental and iterative development
b. Linear development
c. Both (a) and (b)

rs
d. None of the above
14. How many different categories, software has been divided into by Lehmanwho has
given laws for software evolution?

ve
a. 6
b. 2
c. 3
d. 5
15. What is the reason for software bugs and failures?
a.
b.
Software developers
Software companies ni
U
c. Both (a) and (b)
d. None of the above
16. RAD stands for?
a. Rapid application development
ity

b. Required application development


c. Rapid application developer
d. Rapid application decomposition
17. Which of the following LOC is suitable for programming exercises in Build & Fix
Model?
m

a. 100-200
b. 200-400
c. 500-700
)A

d. 1000 above
18. Which of the following projects are not suitable using the waterfall model?
a. Small projects
b. Complex projects
c. Accommodating projects
(c

d. Maintenance projects

Amity Directorate of Distance & Online Education


32 Software Engineering and Modeling

Answer keys (Exercise):


Notes

ity
1. A
2. B
3. D
4. C
5. D

rs
6. D
7. C
8. D

ve
9. D
10. B
11. A
12. D
13. A
14. C
15. C
ni
U
16. A
17. A
18. A
19. C
ity
m
)A
(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 33

Module-2: Module II Software Requirement


Notes
Engineering and Coding

ity
Unit Outcomes:
At the end of this unit, you will be able to:

1) Describe and Employ the concept of Software Life Cycle Model and Quality Concepts

rs
in various Softwareprojects.
2) Demonstrate the ability to perform software testing for different types of
softwareapplications.

ve
Introduction
The most challenging challenge that any software engineer faces is understanding
the requirements of a problem. When you think about it, designing software does not
seem to be difficult. And the clients have no idea what is expected of them? It’s a good
idea to prepare a set of specifications for every project before you begin. This leads

ni
to a better understanding of the software’s market effect, the client’s needs, what the
client requires, and how end-users can communicate with the software. All stakeholders
(managers, clients, and end-users) create and satisfy the specifications, whether they
are software engineers or analysts.Before designing and developing a computer-
based system, make sure you know exactly what the customer needs. Requirements
U
engineering begins with defining the problem’s reach and existence. The next task is
to assist stakeholders in defining what is expected, followed by elaboration, in which
the specifications are fine-tuned and updated. Stakeholders are now defining the
problem and negotiating a solution. Finally, the problem is identified in certain places
and then checked to ensure that the perception of the problem matches that of the
ity

supervisors, clients, and end-users. Specifications engineering aims to provide a written


understanding of the problem to all clients.This can be accomplished using a variety
of work products, such as usage examples, function and feature lists, templates, or a
specification. Stakeholders look at work product requirements to ensure that what
you’ve learned matches what they want. A word of caution: if both parties agree, things
can be changed, and adjustments can be made at any time during the project.
m
)A

The process to collect the software requirements lists from the client, then analyze
the list, and document them is known as requirement engineering.

The goal of requirement engineering is to develop and maintain a sophisticated


and descriptive ‘System Requirements Specification’ document.
(c

2.1 Traditional Methods for Requirement Determination.


The knowledge group is at the heart of systems analysis. To begin, you must
gather information about the current information systems in use. You must determine

Amity Directorate of Distance & Online Education


34 Software Engineering and Modeling

how clients would like to make the existing system and organisational processes more
Notes valuable by implementing new or replacement information systems. Speak with them

ity
to obtain knowledge that is directly or indirectly related to the various phases of the
company that are impacted by possible system changes. The second method is to
gather copies of documents that are compatible with existing structures and business
processes.

In this module, you learn about traditional ways to get ideas directly from those who

rs
have the ideas you need: interviews and direct observation.

It’s simple to do and inexpensive. It entails conducting interviews with customers


and domain experts, completing questionnaires, observing, and studying documents
and software systems, among other things.

ve
You’ll discover how to gather data on existing systems and organisational
operations in the form of written processes, documents, forms, papers, or any other
hard copy.

Traditional methods for determining requirements:


●●

●●

Individual interviews

ni
Find the issues with the updated system and need for the upcoming time.

Questionnaires
U
• Find the issues with the updated system and need for the upcoming time.

●● Observations of workers
• Observe the data how they are handled and what information people need to do
their jobs.
ity

●● Document Analysis
• Work on business policies and rules

Interviews
●● Gather facts and opinions
m

●● Observe your body language and emotions


●● Guidelines: plan, be natural, listen properly.
)A
(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 35

Notes

ity
rs
ve
Figure: Interviewing strategies

Interview question

Open-ended Closed-ended
Advantages

Disadvantages
It is easy and involved
Very long answers
ni
Updated information can It is the short time commitment
surface.
More topics can be revised.
Sometimes useful information
U
is ignored if it does not fit their
choices
Very hard to summarize

Interviewing and listening


ity

Interviewing is a time-honored method of gathering key information for an


information system project. A project engineer spends several days before the start of
the project interviewing people about their job, the information they use to do it, and
the various forms of information processing that may be useful to them. Others are
consulted to get a better understanding of the organization’s goals, strategies, and
m

assumptions.

You gather some information, thoughts, and speculation during the interview and
observe the body language, feelings, communication abilities, and how they function
in the current system. Interviewing can be performed in a variety of ways. First and
)A

foremost, prepare for the interview.

Make an appointment with the interviewee at a time and place that is convenient
for them. Before the interviewee, the general points are explained. To prepare for the
interview, you can practise the questions or solve some problems, or go through some
papers. Spend some time with yourself to train yourself, and keep a diary of all your
questions. You must create a relaxed atmosphere, and you should be able to guide
(c

the interview impulsively as you learn what knowledge the interviewee brings to the
scheduled time.

Amity Directorate of Distance & Online Education


36 Software Engineering and Modeling

As seen in a sample guide, you can combine your interviewing guide with the notes
Notes you take during the interview.The sample guide can be used as a framework for writing

ity
a description of what you learn in an interview. The first page of the interview sample
guide contains a general interview description. Along with some clear details about who
is being interviewed and how to set some relevant interview goals. You should cover
the most relevant data in goals, such as a list of problems in content for specific system
reports or which areas you want to investigate.

rs
The most common interview technique is:

●● If you need to know something, simply ask


●● Process:
Recruit members of the team, conduct interviews, and set up a timetable.

ve
Construct interview questions (Open-ended, closed-ended, & probing types of
questions)

Prepare yourself for the interview (Unstructured vs. structured interview organised
in a logical order)

ni
Organize the interview (Top-down vs. bottom-up)

After the interview, follow up


U
ity
m
)A

Remind the interviewee of important details such as work history, known problems,
and the current system’s position. All of these specifics assist you in being specific,
piques your interest in the interviewee, and aids in the explanation of certain solutions.
(c

Choosing Interview Questions: The first step is to choose the mix and order of
open-ended and closed-ended questions to use.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 37

First, whether asking open-ended or closed-ended questions, do not word a


question in a way that suggests a correct or incorrect answer. The person in front of you Notes

ity
must feel free to express their views and have confidence that their suggestions will be
taken into account.

Second, pay close attention to what others are saying to the guy. Take notes or use
a tape recorder to record the interview.

Third, after the interview is completed, return to your cabin and use Microsoft Word

rs
to access your notes within 48 hours. A spreadsheet, such as Microsoft Excel, can be
used for numerical details. Make use of the recordings to double-check your notes.

Fourth, be careful to set expectations about the new system during the interview,
particularly if you are confident that these features will be included in the delivered

ve
system. The interviewees are aware that the project is divided into many stages.

Fifth, from the interviews, aim for a range of perspectives. Encourage people to
consider current concepts and prospects.

2.2 Modern Methods for Requirement Determination.


●●

ni
Interviews, questionnaires, observation, and document analysis are all standard
approaches used by quality analysts to collect important information about the
existing system, the organisational field requiring the new system, and what
the new system specifications are. In this topic, you’ll learn about modern data
U
collection methods and analysis techniques. These methods can help to support
the key data and cut down on the amount of time it takes to analyse it.
●● Joint application design (JAD)
• Join stakeholders
ity

• The purpose is to collect system requirements back to back from key people
• It conducted off-site
●● Prototyping
• It has a repetitive process
m

• It is a primary version of the system is built.


• Replaces or increases of SDLC
• The goal of this is to develop solid specifications for the ultimate system.
)A

Joint application design (JAD)


Session chief, users & supervisors, sponsor, device analysts & IS Staff, and Scribe
are among the participants. The result is documentation that details the current system
as well as the proposed system’s functionality. In the 1970s, IBM merged the primary
users, administrators, and system analysts involved in a current system’s analysis. JAD
has spread across many businesses since the 1970s. It was particularly common at the
(c

time in the insurance industry. It aims to gather system specifications from key people
involved with the systems during the analysis process. It’s very well-structured and
accurate. It gathers all of the main players in one location and helps analysts to see the

Amity Directorate of Distance & Online Education


38 Software Engineering and Modeling

areas of agreement.It is carried out in an environment where the people involved live,
Notes limiting distractions and assisting participants in concentrating on the systems research.

ity
A JAD can last anywhere from 4 hours to a week, with multiple sessions.

The list of typical JAD participants:


●● JAD session leader: the JAD leader organizes and runs the JAD. These people
have been trained in group management in system analysis. They set the agenda
and checks. JAD session leader neutral on errors but concentrates on keeping the

rs
group on the agenda, resolving conflicts and disagreements to all ideas.
●● Users: the key users of the system are needed participants in a JAD. Users know
what it means to use the system daily.

ve
●● Managers: it is workgroups that use the system in question to provide awareness
into new industrial directions, motivations for the industrial effect of systems, and
support for tools use in JAD.
●● Sponsor: JAD must be sponsored by someone at a high position in the company
such as vice president or chief executive officer.
●●

●● ni
Systems analysts: members of the systems analysis team attend the JAD, the
number of participants is limited. Analysts learn from users and managers.
Scribe: that they take the information during JAD sessions, on a computer or
laptop.
U
●● IS staff: IS staff, such as coders, database analysts, IS planners, and data-center
personnel, attend the session. IS staff learning and contribute their ideas on the
technical feasibility and give ideas on the technical limitations of current systems.
ity
m
)A

JAD sessions are organized in a meeting room where all participants sit around
horseshoe-shaped tables. These rooms have whiteboards. Some other tools are also
used like electronic things, magnetic symbols that work on whiteboards, charts.

Prototyping
(c

This process rapidly transforms the criteria into a functional framework. If the
client sees that the specifications have been transferred to the framework, he or she

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 39

may ask for modifications or make additional requests. It’s most useful when the client’s
specifications are unclear, there are fewer customers in the framework, the concept is Notes

ity
complex and requires a simple form, and prototyping tools are readily available.

When it comes to determining specifications, prototyping is most useful when:

User requirements are not clear or well understood, in the case of new systems or
systems that support decision making.

rs
●● Users and other stakeholders are involved with the system.
●● Some design is complex.
●● Communication issues have existed in the past between users and analysts, make
sure that the system isas specific as possible.

ve
Drawbacks of prototyping
●● The tendency to avoid formal documentation
●● Hard to adapt to more user’s audience
●● Sharing data with other system is the absence
●● SDLC checks are often bypassed.

2.3 Process Modelling using DFD ni


U
Process modelling is a graphical representation of the functions, or processes, that
collect, manipulate, store, and exchange data between a system’s components and its
environment.

DFDs (data flow diagrams) are graphical representations of data processes and
movements within an organisation.
ity

It shows how data is processed by a system.

Components of the data flow diagram include:

●● Process
●● Flow
m

●● Store
●● Terminator
A conceptual data flow diagram depicts the operations of the system, while a
physical data flow diagram depicts the infrastructure of the system. To define the project
)A

scope and generate the output, a data flow diagram is created early in the requirement
process of the analysis phase of the SDLC (System Development Life Cycle).
(c

Amity Directorate of Distance & Online Education


40 Software Engineering and Modeling

Notes

ity
rs
ve
ni
Why we use Data flow diagrams (DFD)?
U
●● It has a logical information flow in the system
●● Assigned physical system construction requirements
●● Symbol of notation
●● Establishment of manual and automated systems requirements
ity

Advantages of Data Flow Diagram

●● It understands the system’s technical implications fast.


●● The concern of inter-relatedness between business and systems
●● Client participation with system development
m

●● Set on if data and processes have been defined correctly.

Data Flow Diagrams symbols


There are 4 symbols:
)A
(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 41

Notes

ity
rs
ve

ni
The process helps or takes actions performed on data so that they are
transformed, stored. It set of tasks that perform on data to convert the input to outputs.
Denoted as a verb/noun example: ENTER ORDERS.
U
ity

Data at rest, applications, file and folder, and databases are all stored in the
datastore. The knowledge is unaltered. It’s the same as data files or tables.

It can be either electronic or typed. It is apparent as a rectangle. The first type of


m

arrow is an arrow into files, which means data is written, and the second type is an
arrow out, which means data is read.

Source/sink origin and final point of the external data.


)A

Data flow is said to be data in motion. It represents data flowing to or from. It is


shown as a line with arrowheads. It is labeled with some description of the type of data,
document.
(c

Amity Directorate of Distance & Online Education


42 Software Engineering and Modeling

●● External entities supply data to the system. It receives data from the system. But it
Notes is not considered part of the system.

ity
rs
Guidelines for Drawing DFDs

ve
There are 5 guidelines for drawing DFDs:

●● Completeness: in this all-important components ate added and mentioned.


●● Consistency: the information on one level is included on the next levels.
●● Timing: a DFD does not show when the flowing.
●● Iterative development: this phase takes some time like 3 or more DFDs to get

●●
it correct.

ni
Primitive DFDs: it is the lowest phase of DFD. It stops deteriorate when this
level comes.
U
Examples of how DFDs can be used
It is well suited for the analysis or modeling of different types of systems in different
fields.

●● DFD in software engineering: the flow diagrams got their start in the 1970s. DFDs
provide a focused approved to technical development, where the research work is
ity

more where it is done upfront to get to coding.


●● DFD in business analysis: business analysts use DFDs to check existing systems
and find issues. Making the diagrams of the process can uncover phrases that
might or be missed or not fully understood.
●● DFDs may be used in business process reengineering to make a floe stronger and
m

more useful in a particular process. In the 1990s, it aided businesses in reducing


overhead expenses, improving customer support, and increasing market share.
●● DFD in agile development: in this DFDs used to visualize and understand
business and technical requirements and make the plans for the next steps.
)A

It is a very powerful tool for communication and collaboration to focus on fast


development.
●● DFD in system structures: process can be analyzed in progressive detail to make
it better on both a technical and non-technical basis.

2.4 Data Modelling using ERD.


(c

Data modelling is a method of creating a software structure with the help of


diagrams and symbols. We may reflect data communication in this way.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 43

A graphical model is provided by an Entity-Relationship (ER) diagram. It is


beneficial to a company that deals with (entities) and relationships. An ER diagram is Notes

ity
a high-level, conceptual model that end-users and database designers use to file every
industry’s data specifications. Since it does not need specific data details, the model is
categorised as “high-level.” Since it offers a conceptual interpretation of the results, it is
referred to as a “logical model.” The information will be saved in a database, referred to
as the “physical” model.

rs
Entity Relationship Diagram is the highest level of abstraction for a data model
(ERD). It’s used to create a graphical representation of a database’s data specifications.

Entity Relationship Diagram is the abbreviation for Entity Relationship Diagram.


ERD stands for Entity Relationship Diagram. It is a diagram that shows the relationship

ve
between entity sets stored in a database. It also assists in the description of database
logical structure. Entities, qualities, and relationships are the three fundamental
principles that ERD is built on.

Rectangles are used to describe entities, ovals are used to identify attributes, and
diamond shapes are used to represent relationships in ER Diagrams.

ni
Rectangles are used to describe entities, ovals are used to identify attributes, and
diamond shapes are used to represent relationships in ER Diagrams.

The ER diagram resembles the flowchart in appearance. The ER Diagram, on the


other hand, contains a large number of specialised symbols. The ER Diagram’s main
U
aim is to represent the entity framework infrastructure.

The ER (entity-relationship) model is best represented using ER diagrams. It was


provided by Peter Chen in 1971 to assist in the development of a uniform relational
convention.
ity

Here, are prime reasons for using the ER Diagram

Entity-relationship modeling use:

●● ERD provides fields are going to be on each table


●● ERD helps to define the entities, attributes, and relationships
m

●● ER diagrams are translatable into relational tables which allows building


databases rapidly.
●● ER diagrams can be used as a blueprint for executing the data in a specific
software application
)A

●● With the help of ERD, the database designer gains a relational understanding of
the information to be contained in the database.

There are 3 components in ERD


●● Entities: it consists of several tables you need for your database. It is the most
basic object of ERDs. The type usually falls into 5 classes: concepts, locations,
(c

roles, events, or things. For example, students, courses, books, campus,


employees, payment, projects. The main example of an entity is called an
instance. Instances are becoming a record or a row in a table. For example, the
student Ravi is a record in a table called students. It is a set of similar kinds of

Amity Directorate of Distance & Online Education


44 Software Engineering and Modeling

entities. It is represented by properties, which is also said to be attributed. All


Notes attributes have their separate values.

ity
A environment may be either living or non-living, which is easily distinguishable.

An entity is something in the physical world, such as an individual, an object, an


event, or a concept, that stores data in a database. Entities have an attribute and a
special key for their characteristics. Any entity is made up of a set of ‘attributes’ that
identify it.

rs
In records, entities are objects. They may be major, such as a classroom or a
building, or insubstantial, such as a transaction or a meeting. Facts regarding an object
are expressed by attributes. The social security number, name, and address attributes,
for example, are used to identify an individual entity. At least two attributes can be used

ve
to characterise an entity.

To begin, an attribute is a distinct identifier. For each occurrence of an object, the


value must be unique. If there were a large number of workers, there would be no main
field values that were repeated with any of them. Take, for example, the Customer
agency. A customer number as the main field (to enable us to uniquely identify a

ni
customer) and other information about a customer such as full name, address,
occupation, and age are examples of attributes defining Customer. On an ER diagram,
a rectangle enclosing the entity name is used to graphically represent an entity.
U
Figure: Entities are shown as named rectangles on an ER diagram.
ity

The second example, a student entity that has a name, age, class, as attributes.
m

●● Attributes: Each table contains information such as property, statistics, and


important items that you must explain. They become the table’s columns. For
)A

example, the attributes of a student entity may be first name and last name. Email,
address, and phone numbers are all needed.
●● This is also known as the identifier. It’s an attribute (or a group of attributes) that
uniquely identifies one of the entity’s instances. The number of a student, for
example, is a special primary key. As a result, no two students have the same
student identification number. In a table, each entity has a unique primary key that
(c

defines each row and cannot be null.


●● Relationships: this helps to know how tables are linked to each other. It is the
association between entities. Different entities are related to one another. For

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 45

example, in a university, all Students and the Course entities are related to each
other because students “enrolment number” courses. Database stores the data Notes

ity
not only in the Student and Course entities, but it also stores the relationship
between Student and Course. So, the user of the database can ask for a list of
courses taken by any particular student or ask for a list of students he or she
currently enrolled in a specific course.
Example: Tom works in the chemistry department.

rs
ve
There are 3 types of relationship:

ni
U
One to one Relationship (1:1)
A single entity instance in one entity class is related to a single entity instance in
ity

another entity class.

Example: 1. single student sits one seat and one seat is assigned to only one
student.

2. Each employee has one office space.


m
)A

One too many Relationship (1:M)


Multiple entity instances in another entity class are bound to a single entity instance
in a single entity class (parent) (child).
(c

One professor, for example, can teach a variety of subjects, but one subject can
only be taught by one professor.

Amity Directorate of Distance & Online Education


46 Software Engineering and Modeling

In one class, one professor can teach a large number of students, but all of the
Notes students in that class have the same professor.

ity
Example: one class consists of multiple students

rs
Many to Many Relationship (M:M)

ve
Any entity instance in one entity class is linked to a large number of entity
instances in another entity class, and vice versa.

For example, each child can enrol in multiple classes, and each class can enrol
multiple students.

ni
Each consumer can purchase a large number of products, and each product can
be purchased by a large number of consumers.

Student groups, for example, can be linked to multiple faculty members, and faculty
members can be linked to multiple students.
U
ity

Attributes
These are the facts or descriptions of entities. It becomes the columns of the table.
The attributes can be first name, last name, email address, and phone number.
m

●● Primary key:
It’s a collection of attributes with unique data that we use to define an entity
instance. For example, the primary key for a student entity is the student number, since
no two students have the same number. There is only one primary key in a table. It
)A

can’t be null because it uniquely identifies each row.

●● Foreign key:
A foreign key, also known as a referencing key, is a key that connects two tables.
When you copy a table’s primary key field and paste it into another table, it becomes
a foreign key (primary key in the first table). In a table, there are several international
keys.
(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 47

How to create an ERD


Notes

ity
ERD Tools

rs
These tools help you to design entity relationship diagrams. Here is a list of
options you might

Visio
●● This is Microsoft’s popular and very powerful diagramming software.

ve
Concept Draw

Draw.io

2.5 Requirement documentation

ni
Software development is an innovative problem-solving, design, and engineering
process that can be fun. The term documentation ensures that teams and stakeholders
are on the same page when it comes to the objectives, scope, purpose, limitation, and
U
functional specifications of a product or software application.

The method of developing specifications can be difficult to grasp, complicated, and


messy.

These specifications documents are lengthy, unwieldy, contain additional


content, are high, and contain misinterpretations. As a result, creating and using
ity

these documents can be time-consuming and costly design mistakes. What are the
responsibilities of product managers, teams, and corporate leaders?

There are two types of software requirement documentation: functional and non-
functional. It must be incorporated into the system. The term “functional” refers to the
provision of some service to the end-user. For example, when customers click “View
m

Balance” in a banking application/product, they want to see their most recent account
balance. If it isn’t working.

For example, a non-functional requirement is that the customer should be able to


see every page of the system within 5 seconds.
)A

There are two types of software requirements: functional and non-functional. It’s
programmed into the machine.

Although there are no hard and fast rules for any development strategy, there are
several strategies that can help you minimise mistakes, save time, and produce quality
results.
(c

Requirements aid in the communication and definition of the client’s needs,


requirements, and solutions. Stakeholders come to an understanding about what

Amity Directorate of Distance & Online Education


48 Software Engineering and Modeling

the specifications and needs of the client problems to be solved are by requirements
Notes gathering. The following are some of the advantages:

ity
●● Alignment
●● Preparation
●● Direction
●● Efficiency

rs
●● Productivity

ve
ni
U
ity
m
)A

Figure: Recommended structure for SRD


(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 49

What are the software requirements documents?


Notes

ity
Computer requirements specifications is another name for it. It’s a document or
collection of documents that includes software application functionality. It defines a
company’s or an organization’s client understanding and dependency, as well as any
device limitations.

It is a document that defines a software application/intended product’s use-case,


diagrams, functionality, and challenges.

rs
These documents are developed before the project begins production to ensure
that all stakeholders have the same knowledge about the software’s features.

ve
ni
U
What is included in an SRD?
ity

SRD functions as a blueprint for managing the scope of a project, it defines


functional and non-functional requirements for a system. The documents don’t outline
design or technology solutions.

A perfect SRD should:


m

●● Manage the problem into manageable parts.


●● Acts as a reference for testing and validation.
●● It adds all information on the requirements of the software to render an
effective design).
)A

●● Provide feedback to the client.


The SRD describes to the client that your company understands all the problems
they want to be get solved and defines those problems through their solutions. It is very
important to make all the documents clearly to avoid the technical jargon.

Your organization has different approaches to make the SRD. The IEEE standards
(c

organization recommends SRDs should cover the multiple steps:

●● Functional capabilities
●● Performance level

Amity Directorate of Distance & Online Education


50 Software Engineering and Modeling

●● Data elements
Notes ●● Safety

ity
●● Interfaces
●● Reliability
●● Privacy
●● Qualitative product

rs
●● Constraints and limitations

If all the above topics are clearly explained and outlined in the documentation file,
and the completed important files to develop your application.

There are some best ideas to create an effective and informational SRD.

ve
Organized:

●● The main game is an organization of your documents.


●● Make sure before you start the documentation with an organization strategy

ni
that your documents are stored, how to make consistent, and how the team
can easily keep documents up-to-date.
●● It should be organized and clear.
●● Templates are a great way to save time and consistent in your documentation
U
process.

Requirements are complete:

●● All the important information should be complete to implement the


requirements.
ity

●● To avoid issues of designers and software developers build the function, so


that time can be saved, and making guesses and any assumption about the
requirements.

Requirements are testable:

●● This is a universal standard, sometimes organizations fail to maintain the


m

requirements that fully satisfied the rile.


●● Verified requirements.
●● Every requirementis written and validated in several ways: Inspection,
verification, revision,and tested.
)A

●● High-level requirements are checked on the side of the client. And lower-level
requirements need more detailed specifications.

Apply implementation-neutral functional requirements:

●● All the requirements should be implemented neutrally.


(c

●● The requirement team should know what the system should do, how to do it.
●● There are many advantages if doing implementation-neutral includes:
i. More useful design

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 51

ii. Changeable requirements that aren’t dependent on a specific


implementation design. Notes

ity
●● Things can be reserved for the non-functional-requirements.
Types of requirements:

1. Business requirements
2. Architectural and design requirements

rs
3. System and integration requirements

Estimate documentation with stakeholders:

●● Before development starts all the requirements have been documented

ve
correctly.
●● Stakeholders should include developers, testers who validate the
requirements, engineers, end-users, and the client.
●● By getting approval from the stakeholders before the development, you
have to improve and better satisfaction across the teams and increase the

●●
ni
selections of the probability that the requirements will meet their needs.
Make proper flowcharts and take the help of software developers to make the
proper map of the software requirements specifications.

Requirements guidelines checklist


U
A well-designed written specifications document is a must-have. Whose
specifications are poorly or haphazardly designed may lead to uncertainty and add
to the time and effort required to produce a document. Use this checklist to make a
document that is easy to read and understand.
ity

Each requirement full-fill the:

1. Use clear, simple language


2. Use the common terminology
3. Only one interpretation
m

4. Use direct statements


5. Grammatically correct
6. Express all the idea
)A

7. Maintenance
8. Explain all the needs not only design
9. Proper testing tools

Does each requirement avoid:

1. Only carries implementation details


(c

2. Multiple-use of functions
3. Negative outlines

Amity Directorate of Distance & Online Education


52 Software Engineering and Modeling

4. Not user-friendly
Notes

ity
5. Used unappropriated words
“Don’t design the system first design a great requirements document.”

2.6 Case Study


A case study is an investigation into a particular topic, such as a community, place,

rs
computer, individual, or organisation. In most case study research designs, qualitative
and quantitative approaches are used. It’s used to explain, compare, analyse, and
comprehend various aspects of science.

A case study is used when you want to learn something thoroughly. It forces you to

ve
consider the case’s main features, definitions, and consequences.

ni
U
write an awesome case study:

1. Be real about your goals


ity

2. Identify a perfect angle


3. Make it relatable to your all prospects
4. Follow the classic narrative arc
5. Use the key point to explain the things
m

6. Make your topic a supporting character to nature


7. Let make your clients tell their own stories in a case study.

Strengths of the case studies:


)A

1. It helps to explain the full detailed information.


2. It provides insight for further research.
3. Permitting investigation of otherwise impractical situations.
One person has been identified, use cases can be developed. Jacobson [Jac92]
suggests some questions that should be answered by a use case:
(c

●● Who is the primary actor, the secondary actor?


●● What are the actor goals?

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 53

●● What preconditions should exist before the story begins?


●● What main tasks or functions are performed by the actor?
Notes

ity
●● What exceptions might be considered as the story is described?
●● What variations in the actor interactions are possible?
●● What system information will the actor acquire, produce, or change?
●● Will the actor have to inform the system about changes in the external
environment?

rs
●● What information does the actor desire from the system?
●● Does the actor wish to be informed about unexpected changes?

ve
ni
U
ity
m
)A
(c

Amity Directorate of Distance & Online Education


54 Software Engineering and Modeling

Case Study
Notes

ity
How to remove the deficiency of waterfall and agile development process by using
a hybrid model:

The Waterfall Model has proven to be the ideal method for software creation. In
this model, design is transformed into working software through a sequential process
that includes phases such as Analysis, Implementation, Testing, and Maintenance. The

rs
Waterfall model has a few drawbacks.

Agile software development aims to eliminate the flaws that the Waterfall model
has. It now has a brand-new structure. The Agile model takes a gradual approach, while
the Waterfall model takes a sequential approach.

ve
As people went from using the Waterfall model to Agile, the improvements in the
waterfall model introduced a slew of flaws. The explanation is that it is unsuitable for
software development. The project ended up becoming a failure as a result of the
outcome.

A new methodology, known as a ‘Hybrid,’ has emerged to ensure project

ni
performance by combining the benefits of both Agile and Waterfall models.

We’ll go over the Waterfall and Agile development models first, before moving on to
the “Agile Waterfall Hybrid Model.”
U
Waterfall model
The waterfall model is a sequential flow that follows a linear path. In which we can
see that change is moving slowly across the stages of software implementation, just like
a waterfall (downwards). As a result, we can see that the phases of the development
ity

process begin only after the previous phase has been completed. It is not necessary to
return to the previous stage to make adjustments to the specifications. It was the first
and most well-known approach to software development.

The WATERFALL MODEL is a step-by-step model that divides software


development into phases. Each process must be completed before moving on to the
next. The phases do not overlap in any way.
m

Each phase has its concept for carrying out specific tasks during the SDLC phase.
Winston Royce first launched it in 1970.

It is a multi-phased approach to software development. Only after the stakeholders


)A

have checked and validated the previous process should one move on to the next.
Phases do not overlap in the waterfall model.
(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 55

Notes

ity
rs
Figure:Waterfall Model

Usage of Waterfall Model

ve
The projects which not focus on modifying the requirements, for example, projects
started from, a request for the plan, the customer has a very fixed-document.

The waterfall model can be used when:

●● Waterfall model requirements are not changing frequently.


●●
●●
●●
Project is short
The requirement is very clear
ni
The waterfall model application is not very complex and large.
U
●● Environment is stable
●● In this model, the technology and tools we used are not dynamic in nature and
is stable
●● There are so many resources are available and trained
ity

Advantages of Waterfall Model:

●● This is easy to explain to the users.


●● It has a structured approach.
●● Well explained phases and functions.
●● It helps to plan and schedule the project.
m

●● It verifies each phase and ensures early detection of errors.


●● Specific deliverables.

Disadvantages of waterfall model


)A

●● Assumes that the requirements of a system can be frozen.


●● We can’t go back to any stage after completion.
●● It is very expensive and difficult for letter flexibility and adjusting.
●● Expensive and required more time, in addition to the plan.
(c

Amity Directorate of Distance & Online Education


56 Software Engineering and Modeling

Agile Model
Notes

ity
It is focused on iterative and gradual growth, with cross-functional teams
collaborating to improve our requirements and solutions. This model can be applied to
any project that needs more client participation and interaction. When the client has any
practical specifications, this can be completed in less than three weeks. This is a more
useful component for customer-satisfaction software.

The AGILE approach encourages continual iteration of development and testing

rs
during the project’s software development lifecycle. Both development and testing
practises are concurrent in the Agile model.

Wikipedia defines the Agile Modelas “a group of software development methods


based on iterative and incremental development, where requirements and solutions

ve
evolve through collaboration between self-organizing, cross-functional teams.”

The model has its principles that help to build a software

Agile testing strategies:

ni
U
ity
m

There are 12 agile principles for those who want to achieve agility:

1) The highest priority is to satisfy the customer through the delivery of software
)A

2) Agile process harness changes for the client’s competitive advantage.


3) Deliver the software on time.
4) All the team members have to work together daily.
5) Build the project through motivation. Give a good environment and support
them.
(c

6) Make a face-to-face conversation.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 57

7) Working software is the primary measure of progress.


Notes

ity
8) The developers, business team, and users should be able to maintain a constant
pace indefinitely.
9) Make a tracking of project and have technical excellence and good design
enhances agility.
10) Simplicity

rs
11) The best architectures, requirements, and designs emerge from self-organizing
teams.
12) At a fix time interval, the team member has to show their work and adjusts its
behavior accordingly.

ve
ni
U
ity
m
)A
(c

Amity Directorate of Distance & Online Education


58 Software Engineering and Modeling

There are 5-10 people on the squad. Multiple scrum teams work in tandem on
Notes large projects. The product backlog required all of the information from the product

ity
owner’s requirements list. Between sprints, product owners have the authority to adjust
the list. The sprint backlog goes through the list and breaks it down into several tasks.
The scrum master’s job is to conduct a 10-minute “stand-up” meeting. The squad
receives a briefing from the scrum master. The job is assessed by stakeholders.

Advantages of Agile Model:

rs
●● Less time required to avail of some system features.
●● Having high-quality software in the least time duration and satisfied client.
●● Customer involvement in the process.

ve
●● Requirements can change at any phase of software development.

Disadvantages of Agile Model:


●● It is stable and Scalability.
●● Documentation is at the last stages

ni
●● Usability of components is less
●● Skills must be good
U
ity
m

Hybrid (Collaborative) Model:


)A

The collaborative model is done by executing:

Requirement analysis and design = as per Waterfall model

Coding test and deploy = as per Agile model


(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 59

Notes

ity
rs
ve
Figure: a hybrid model

The Collaborative Paradigm blends the Waterfall and Agile methodologies. The
project would be successful if both the Waterfall and Agile approaches are used. This
model eliminates the drawbacks of both models thus combining their benefits.

Advantages of Hybrid Model:


●●
●●
combines both the models – Waterfall and Agile.
Apply high-level design in the waterfall model.
ni
U
●● Coding and testing are done using the agile model.

A Case Study: Agile Waterfall Hybrid Model


Software company XYZ Software Service provides services to a customer, a
University named ‘ABC University’ to develop, test, and maintain their software.
ity

The main features are:


●● XYZ Software Services have to upgrade the applications of ABC University.
The database and the features have to add to the software. The Data
needs to be addedand all applications need to be re-developed to the latest
m

technology available in the market.


●● Until now, all the projects handled by XYZ Software were executed in the
Waterfall model.The client wants to develop the software using the Agile
model.
)A

●● Highpriority applications were now scheduled to be re-developed. ‘Online


registrations’, ‘application form’, and ‘Online examinations’ have to be
upgraded in the application.
●● Client ABC University wants the application work on the Agile model of
Software development.
Online registrations is the first activity in an Agile model for XYZ Software.
(c

When this project’s implementation is complete, it will be realised in stages. Defects


were addressed in the next project, which included an application form and online
examinations. After that, a hybrid model is used to carry it out.

Amity Directorate of Distance & Online Education


60 Software Engineering and Modeling

Both the Waterfall and Agile models have their drawbacks. As a result, using a
Notes Hybrid model is a smart way to get in touch with the best of both worlds.

ity
The most important role of the project is to choose which model the team will use.
This necessitates a proper meeting and preparation. Budget, time, resource usage, and
the complexity of specifications are only a few examples.

The hybrid model pictorially represented as below:

rs
ve
ni
U
ity
m
)A

Figure: Hybrid Model

The Hybrid model is still in a developing stage. As more and more companies will
adopt it, we will learn more about this concept.

The hybrid model does not stick to this 100% for making projects. It is up to the
client/project managers to decide which aspects to value more and which aspects to
(c

valueless.

In this topic you are going to learn the top 10 case study in Software Engineering:

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 61

1. Machine learning:
Notes

ity
• It is widely used in software engineering.
• It is a study of algorithms and how a computer works.
• Working on a computer or any artificial system taking any task.
• It helps to make computers more function-able so that we can get more tasks.
2. Natural language processing:

rs
• It is a very important part of software engineering.
• It is very practical in making a connection between machine language and
human language.

ve
• With this technology, computers understand our languages.
• It is the future of search engines.
3. Data Mining:
• It is a very important topic.


• ni
All the artificial intelligence is established on data mining.
It is a process that has all the raw data which converts it into useful entities.
All companies need data mining.
U
4. Graphics:
• What you are watching on the internet almost everything is based on graphics.
• It is a very important part of software engineering and is idle for a case study.
• It helps in generating images and content with different effects.
ity

• Example: gaming, digital photography, video visuals, etc.


5. Cloud computing:
• Nowadays, this technology is the most in-demand skills.
• It is used to manage and access data without involving a user managing it.
m

6. Optimized regression Test using Test Case Prioritization:


• It is one of the most upcoming topics for a case study.
• It doesn’t affect the overall functionality of the program when we have to do any
changes or fix anything.
)A

7. Text mining:
• It terms as data mining.
• It is a procedure in which a maximum amount of raw data is analyzed with
different static patterns and convert into useful information.
• This is used to analyze large data to get details.
(c

8. Technology can be used to reduce shortage:


• This is also a very important topic in software engineering.

Amity Directorate of Distance & Online Education


62 Software Engineering and Modeling

• This helps us take advantage of our technology to struggle with a shortage in


Notes our world.

ity
9. Artificial Intelligence:
• This is a very big topic. It is the simulation of human information into the machine.
• It makes the machine think and act like a human and performed several tasks.
10. Application Development:

rs
• It is a very ideal topic for a case study.
• The procedure of making an application for artificial intelligence is called
application development.

ve
2.7 Programming Practices
We will learn some rules and practises in this subject that will hopefully save you
time and headaches.

We programmers are dictatorial in general, and a strong opinion is a sign of great


passion.

ni
U
ity

Some development and test best practices


YAGNI: You aren’tgoing to need it. What you think about code doesn’t mean you
can write it if you don’t need it right now. This coding is for potential use cases, and it
m

will eventually become dead code, forcing you to rewrite it because the future use case
often turns out to work slightly differently than you expected.

There is no need to test tests. If it’s critical, you don’t need to test the browser or
any external libraries. Testing systems, infrastructure, and libraries need tests. Instead
)A

of checking other people’s code, evaluate the code you’ve written.

The third time you write the same code is the right time to withdraw it into and
write tests for this. When you break them out and use themagain then they do need
tests. Now, if you write the same code, you tend to have a clear view of the purpose of
solving.

Next, when it comes to API design: we have to make simple things simpler and
(c

hard things simple. First, make a simple case, add options for API methods for more
hard and flexible use cases.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 63

Fifth, check your result, and if there is any failure on nonsensical input or any error
state make it early as soon as possible. If there is any error, you know it before then you Notes

ity
know it early. Allow “innovative” use cases of your code.

Unit tests check the basic behaviour. Modification of the implementation, without
changing the behaviouror want to change any of your tests is the destination, not
always possible. So If it is possible treat your test objects as black boxes., and do
testing through the public API without calling private methods or play with the state.

rs
For check infrastructure tests all the phases should be tested. 100% coverage is
the best place to begin.

The code needs maintenance. Don’t write unnecessary code. Write less code if
possible.

ve
Inevitably, code comments become lies over time. In the browser,many people
always update when things change.

Write the code carefully. Always check about what is wrong things are going, what
is the result we any input is wrong.

ni
Logic is easy to unit test if it is stateless and error-free. Break out things into a
separate function, rather than making hard logics and error-filled code. Separating
useful code and useful function makes them easier to mock out and unit tests without
side effects. If there is any error, then it needs testing. It is a very good pattern.
U
Functions are better to use. Use objects to make it better.

Python is a popular programming language that is simple to learn and use. It would
be easier to use their built-in forms and methods than to write your own (unless you are
writing in C). Using the built-in forms instead of custom pieces.
ity

Dependency injection is a coding pattern that helps you understand where the
dependencies come from.

The more mock outs you use to test your code, the worse it becomes. Tiny testable
units are the primary target, with higher-level integration and functional checks to
ensure that the unit’s expressions are accurate. Try to divide a feature or method into
lines if it has more than 30 lines of code. Around 600 lines is a decent module size.
m

Don’t make it impossible to test the code. Make sure the code is neat and easy to
read.

Estimates for feature work should be included. Working Successfully with Legacy
)A

Code, by Michael Feather, is a fantastic book on refactoring and testing.

The first step is to make your code correct and proper, followed by making it quick.
It operates in a split second.

If unit tests fail, you get more useful knowledge and you can see exactly what went
wrong. Gary Bernhardt’s presentation Quick Test, Slow Test is a clear example of unit
testing activities.
(c

We’ll know what the code can do, how to handle it, and what we can add or modify
depending on how it’s used once we’ve written it. For iteration or execution time errors,
we may use generators because they are shorter and easier to understand than stateful
Amity Directorate of Distance & Online Education
64 Software Engineering and Modeling

artefacts. Generator Tricks for Machine Programmers, by David Beazley, is a nice book
Notes for generators.

ity
Rather than emerging organic monsters, build and design. A good reference on this
subject is clean architecture: a craftsman guide to software structure and design. Every
software engineer should read Design Patterns, a simple programming book.

Correcting failing tests is difficult, but it is necessary.

rs
Make sure you’re putting your skills to the test.Make sure you are testing your
code. Check the bug. And finally, you have to check the management.

Some habits that make your work poor:

1. Saying “I’ll fix it later”

ve
2. Solving problem in one line
3. Meaningless sentence
4. Convincing yourself that styling is not that important
5. Ignoring the bugs
6.
7.
8.
Using Pointless information
Not explaining proves
Not working hard
ni
U
9. Working according to your time
10. Writing bad codes
11. To blame others
12. Information is not shared with your team
ity

13. Not giving any feedback to stakeholders


14. Research work is very poor
15. No technical knowledge
16. Not using the proper tool
m

17. Blindly copy/paste code


18. Stopped learning
19. Bad listener
)A

20. Not asking for any help

2.8 Top-down Approach & Bottom-up Approach


(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 65

The top-down and bottom-up approaches are two common methods for
estimating operational risk. Is this the kind of danger that results from organisational Notes

ity
flaws like mismanagement or technological issues? Fraud risk and model risk are
examples of operational risk.

Fraud risk arises from the lack of controls, while model risk arises from the
incorrect implementation of the model. We will learn about these two approaches in this
subject.

rs
Top-Down Approach
This is a concept that refers to an investment strategy that chooses various areas
or industries to create a stable investment portfolio. This method assesses the risk by
combining the impact of any interior organisational failures. It calculates the variation in

ve
economic variables that aren’t represented by the macroeconomic part on the outside.
This method is clear and straightforward. It’s a methodology for constructing software
architecture. Modules are linked by working their way down the control hierarchy. It
primarily refers to historical records.

After that, we’ll hear about the Bottom-Up Approach. To ensure device stability,

and integrated.

Top-down
ni
higher-level modules are tested first, followed by lower-level modules that are tested
U
ity

Figure: Top-Down Approach


m

Advantages:
●● In the top-down approach, Fault Localization is easy.
)A

●● In top-down possibility to obtain an early prototype.


●● In top-down critical Modules are tested on a priority

Disadvantages:
●● In top-down Modules at a lower level are not tested properly.

Bottom-Up Approach
(c

This is a stock-picking technique that relies on the collection of individual stocks.


It is concerned with an organization’s operations and management rather than with

Amity Directorate of Distance & Online Education


66 Software Engineering and Modeling

general economic patterns. It uses mathematical models to analyse a single risk in the
Notes procedure. This approach is inapplicable to historical data.

ity
Bottom-up design and research starts with atomic modules, as the name suggests.
The functionality offered by components subordinate to a given level is always available
since components are integrated from the bottom up.

rs
ve
ni
U
ity

Figure: Bottom-Up Approach

Clusters 1, 2, and 3 are formed by combining components. A driver block is used to


m

evaluate each cluster. Ma is in charge of Clusters 1 and 2. After removing drives D1 and
D2, clusters are directly connected to Ma. D3 for cluster 3 is also omitted to integrate
with module Mb.

Both Ma and Mb must be connected to the component Mc, and so on. When the
)A

level of convergence rises, so does the need for separate test drivers.

Advantages of bottom-up approach:


• In bottom-up fault localization is easy.

Disadvantages of bottom-up approach:


(c

• Complex things are tested in the last step.


• An early prototype is not possible.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 67

Difference between Top-Down Approach and Bottom-Up Approach:


Notes

ity
• The top-down approach analyses risk by collecting the impact of internal
organisational failures, while the bottom-up approach uses models to analyse
risk in individual procedures.
• Unlike the top-down approach, the bottom-up approach will distinguish between
high-frequency low severity and low-frequency high severity strength incidents.
• The top-down approach is simple and straightforward, while the bottom-up

rs
approach is complicated.
• Bottom-up approaches are forward-looking, while top-down approaches are
backward-looking.

ve
2.9 Structure Programming
Structured programming is a technique come up with to improve the reliability
and purity of programs. It is a logical programming method that is observed as a
predecessor to object-oriented programming. It understands and has a top-down design
approach. Certain languages like Pascal, Algorithms language, and Ada are designed
to implement structured programming.

ni
In structured programming, we divide the whole programme into small modules so
that the programme becomes easier to implement. The purpose of this programming
is to maintain a control flow with the help of a computer programme so the execution
U
sequence follows the linearity in which the code is written.This magnifies the readability,
testability, and modifiability of the program.

Structured Programing can be seen as a sub-discipline of Procedural Programing.


It is a major programming paradigm. We use structured programming because it allows
ity

the coder to understand the code easily. If a programme has thousands of features and
an error occurs in the code, it is difficult to locate the error in the code; however, with
structured programming, we can quickly identify the error and correct it. The coder and
tester will save time as a result of this.

Structured programming is used because it makes it easier for the coder to


recognise the code. If a programme contains a large number of instructions, an error
m

may occur, making it difficult to locate the error. As a consequence, make the software
simpler. However, in structured programming, we can quickly detect errors and go
straight to the line to correct them. Your time is going to be saved.

The following are some structure programming rules:


)A

Structure Rule One: Code Block


●● Entry conditions are correct, but the ending conditions are not correct, then the
error must be blocked. The execution is allowed to jump into a block. And the error
can be anywhere in the code. To make changes in this is hard. A code block is
structured. The entry point and exit point are structured. It is a method of making
(c

that the program is correct.

Amity Directorate of Distance & Online Education


68 Software Engineering and Modeling

Notes

ity
rs
ve
Figure: Code block is structured

StructureRule Two: Sequence


A sequence of blocks is right if the exit conditions of each block match the data

ni
conditions of the following block. Execution enters each block at the entry point and
exits through the exit point. The whole series is a single block with an entry point and an
exit point.
U
ity
m
)A

Figure: A sequence of code blocks is structured

Structured rule Three: Alteration


Alteration is the word for if-then-else logic. If you look at the flowchart to the right,
there is just one entry point and one exit point in organised programming. The coding
(c

must prosper so that the entry point is met, and then the exit conditions must be met.
It’s well-organized.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 69

Notes

ity
rs
ve
ni
Figure: An Alternation of code blocks is structured
U
Structured Rule 4: Iteration
The while-loop is used in this example. It also has one point of entry and one point
of exit. Some criteria must be met at the exit point, as well as some conditions that must
ity

be met at the entry point.


m
)A
(c

Figure: Iteration of the code block is structured

Amity Directorate of Distance & Online Education


70 Software Engineering and Modeling

Structured Rule 5: Nested Structures


Notes

ity
Code blocks can be distributed through all of the structures in this system. If a
structure with a single entry point and exit point is the same as a code block.

1. First View

rs
ve
2. Second View

ni
U
ity
m
)A
(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 71

3. Third View
Notes

ity
rs
ve
ni
U
ity

It is a programming approach in which the programme is generated as a single,


identical structure. It means that the programme can carry out the programmer’s
m

instructions one by one. This approach does not support the strategy of using
a statement like GOTO to skip from one instruction to the next. As a result, the
instructions in this method will be carried out sequentially and systematically. The
structured programming method is supported by the following languages:
)A

• C
• C++
• C#
• Java
(c

Advantages of structured programming


1. It encourages top-down implementation, which helps to improve readability and
maintainability

Amity Directorate of Distance & Online Education


72 Software Engineering and Modeling

2. It promotes code reuse, internal modules can be extracted and make it independent,
Notes by many other applications.

ity
3. Using structured programming the development time and code quality are improved.
4. Easy to use
5. User friendly
6. Easier to maintain

rs
7. Development is easy as it needless effort and time
8. Machine independent

Disadvantages of structured programming

ve
1. It is a reduction in execution efficiency, followed by more memory use.
2. Since it is Machine-Independent. So, it takes time to convert into machine code.
3. The converted machine code is not the same as for assembly language.
4. The program depends upon changeable factors like data-types.
5.
6.
7. ni
It needs to be updated with the need on the go.
The development in this approach is time taking as it is language-dependent.
Whereas in the case of assembly language, the development takes less time as it is
fixed for the machine.
U
Structured programming (SP) is a programming methodology that seeks to
increase software efficiency and clarity. The series, IF THEN ELSE, and DO WHILE
structures, or a structure derived from a combination of the three, are the only ways
to regulate programme flow. The program’s production is made up of modules that are
ity

highly independent of one another. As a consequence, a software engineer will be more


sure that the code is free of logic errors and will be simpler to implement and modify
in the future. Structured programming, on the other hand, can be less effective than
unstructured programming.

Another downside is the challenge of using Structured programming with a


language that does not support it, though this is evolving as languages become more
m

up to date.
)A
(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 73

2.10 Information hiding


Notes

ity
To intercept device design changes, the information hiding word is used. Any
computer code cannot be modified if any design decisions are secret. This is used for
internally modifiable code that is not intended to be released to the public.

David Parnas suggested the concept of information hiding in 1972. Some critical
design frameworks, he explains, should be shielded from clients and front-end users.
It’s a way of shielding clients from the inner workings of a programme.

rs
A software that generates results based on equations, for example, must be secret.
It follows a functional model that can be defined as a form of knowledge concealment.

ve
ni
The benefit of knowledge hiding is that it gives up versatility, allowing a
programmer to change the code. This can also be accomplished by storing source code
U
inside modules for future access as the software grows and evolves.

It is the concept of hiding design decisions in code that protects other areas of the
software from large-scale changes if the design has to be changed.

In programming, data hiding or information hiding refers to the process of


shielding data from external change throughout the software. It comes with a robust
ity

OOP function. It safeguards data from direct modifications from other sections of the
programme.

Modules should be “characterised by design choices that conceal from all others,”
according to the concept of information hiding. Modules should be defined and built in
such a way that the knowledge found inside them is available to other modules that lack
m

it.

Hiding is accomplished by specifying a series of independent modules that


communicate only the information required to perform software functions with one
another. When modifications are needed during testing and later during software
)A

maintenance, the use of knowledge hiding as a design criteria for modular systems
offers the greatest benefits.

Inadvertent errors introduced during alteration are less likely to spread to other
parts of the software because most data and procedural information is shielded from
other parts of the software.

In Java, data hiding refers to hiding a class’s variables from other classes to
(c

keep it stable. It can only be reached by a software engineer using a tool from their
current class. To make the code safe, it hides the important information from the users.
Effective data management or a collection of similar data is data hiding.

Amity Directorate of Distance & Online Education


74 Software Engineering and Modeling

Orthodox cryptography is not the same as information hiding. Its function is


Notes to ensure that the programmer’s knowledge will not be exposed and found, rather

ity
than to limit normal access to the object. As a result, information hiding technology
was developed to combat the threat posed by programmers’ regular operation of
information, i.e., to conceal the embedded secret information from normal data
manipulation techniques. The main purpose of this technology is to conceal information,
which is difficult to destroy using standard data manipulation techniques. The following
features or specifications relate to this technology:

rs
• Transparency

• Robustness

• Security

ve
• Hiding capacity

• Undetectability

• Self-recoverability

ni
U
Example of information hiding in C++:

class student
ity

char name[30];

int marks;

public:
m

void display();

};

int main()
)A

student s;

S.marks=50; //wrong code

getch();
(c

return 0;

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 75

The data element mark is a private element in this case, and it cannot be accessed
by the class student’s main function or member function show (). It should be made a Notes

ity
public member to make it available in the main feature.

rs
ve
Characteristics of information-hiding:

• Imperceptibility

• Symmetry


Security

Error-correction ni
U
Information Hiding in OOP?
The primary criterion of system modularization is information hiding, and it should
be concerned with hiding information in critical OOP design decisions. Information
hiding frees the client from the requirement of inferring design information to use a
module.
ity

Information hiding is a way of concealing sensitive information by using redundant


cover data such as images, audios, movies, and records. This technology has
recently gained a lot of traction in a variety of fields. Pictures, digital video, audio,
and photographs, for example, are being increasingly embedded with imperceptible
markings that may contain secret data/signatures or watermarks to help avoid
m

unauthorised copying. It is a performance in which confidential messages are inserted


into a cover file in such a way that the existing data of the messages is hidden.

Information hiding in ransomware


)A

The first tests of this kind were discovered at the start of 2016. When the Neutrino
exploit kit has been used to spread Tesla Crypt into an area. The virus is transmitted
as well. Neutrino sends users to a sour landing page designed to discover the victim’s
vulnerabilities so that the most suitable exploit can be delivered. A downloader is
launched if the vulnerability is successfully exploited. It contacts a server for details,
which responds with an HTTP 404 error page with C&C commands embedded in the
HTML comments tag.
(c

Cerber was discovered as a macro-type malware-delivered ransomware in a range


of cloud-based file-sharing applications/products in mid-2016. Cerber uses a decoy

Amity Directorate of Distance & Online Education


76 Software Engineering and Modeling

document to spread the virus, and when opened loads a malicious macro-code that
Notes downloads a JPEG file to the targeted computer.

ity
The same technology was discovered in the SyncCrypt ransomware in August
2017. WSF (Windows Script File) attachments acting as court orders were found
in infected emails. An valuable code downloaded a digital image containing the core
components of SyncCrypt if it was opened.

rs
Information hiding in exploit kits
One of the most recent phenomena is this. In this case, information hiding methods
have become so common among cybercriminals that they are now included in exploit
kits, enabling software developers with little to no programming expertise to build,
configure, execute, and distribute malware. The Stegano/Astrum exploit kit, which was

ve
released at the end of 2016 as part of a massive malvertising campaign, is the first
example of this feature. By altering the colour space of the used PNG image, software
developers were able to insert important code within banner advertising (i.e., the alpha,
beta).

The exploit kit’s landing page is then redirected to by the server of end-users

important code.
ni
watching an infected ad, which parses an injected JavaScript code and extracts the

On the landing page, various types of malware are infected, usually by exploiting
multiple Flash vulnerabilities. Another form of exploit kit based on malvertising was
U
discovered in mid-2016. An AES encryption key is hidden by DNS Changer.

DNSChanger aims to conduct brute-force attacks against network routers to gain


control of the victim’s network and insert advertisements into all traffic exchanged.
Although Stegano and DNSChanger are niche products, the Sundown exploit kit was
ity

one of the first in the exploit kit industry to bring data hiding techniques to the general
public. Sundown employs steganography in two different ways:

i) to covertly remove information stolen from the infected system in PNG files
which are uploaded to an Imgur album where cybercriminals can access them
undisturbed.
m

ii) To hide the exploit code delivered to the victims.

2.11 Paired Programming


Jama Software agreed a few years ago to take a step toward developing pair-
)A

programming in a broad field of engineering culture. With some changes, and self-
organizing teams, the product development agency generates software according to the
Agile software development system of Scrum.

Today’s development efforts include pair programming, test-driven development,


read-by-refactoring, continuous changes, and self-organizing groups.

It’s the most effective tool we have in the battle against technological debt in our
(c

applications.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 77

Notes

ity
rs
In Agile software development, pair-programming is a methodology in which
a group of engineers shares a single workstation. One engineer acts as the pilot,

ve
controlling the mouse and keyboard to write the code, while the other acts as the
navigator, checking the code and providing analytical input. This couple will exchange
roles at regular intervals, giving each other the same opportunity to both conduct and
direct the initiative.

Pairs are typically formed in the middle of a scrum team by two people who are on

ni
the same team and exist for as long as it takes to complete a single user storey. When
the storey is over, team members have indicated that they would like to form a pair
with another available team member, work on a project that needs a single engineer, or
participate in a slack time project.
U
The ultimate aim of pair-programming is to offer a way to enhance software quality
while also offering several secondary benefits that increase a team’s ability to continue
delivering valuable functionality to customers.

Why we adopt pair-programming


ity

Jama’s engineering team expands in tandem with the company’s growth from a
small start-up to a venture-backed company with a large customer base, to help feature
creation and platform scaling. With the increased headcount and subsequent increase
in codebase adjustment, collaboration, teamwork, and mastery of the programme
became more in touch. Jama had previously succeeded thanks to a strict culture of
individual handouts and protections including code feedback, unit tests, and continuous
m

integration. But, as we continued to evolve, we realised that the growing activities that
had worked for the tiniest team with a simpler characteristic would not scale.

Silos are popular in the early stages of a startup because there are only so many
financial runways, so many workers, and yet you still want to pass useful functionality
)A

to customers quickly. As a result of this set of circumstances, the individual handout


is often tasked with enforcing the entirety of a specific character or component on
their own. The product owner assigns disparate tasks to several engineers intending
to deliver a minimum viable product. Code feedbacks are used to ensure technical
consistency, but they don’t guarantee that the rest of the team understands the
consequences of a particular implementation.
(c

Amity Directorate of Distance & Online Education


78 Software Engineering and Modeling

Advantage of pair-programming
Notes

ity
●● Two minds are better than one. If there is any confusion then, there will be two of
them who’ll solve the problem.
It is more efficient: It takes less time if two programmers collaborate. Rather than
making them operate on two separate projects independently. If two programmers
working on the same programme with Code feedbacks often find typos and minor
errors, they do not have the same degree of insight into concerns regarding software

rs
architecture and design standards. As a result, despite using all of the best-practices
and methods available to them, the programmer who writes the code becomes
inextricably tied to their job.

●● Getting a situation with your company where a person is vital to its continuing

ve
success is a massive liability that makes scaling the product-development firm
difficult. You can always bring in an engineer who is unfamiliar with the code later,
but much of the meaning of the software is lost, even to the original author, and
the same benefits will not be remembered.
●● Lesser programming language mistakes. Another coder is checking your job,

ni
which results in a better application. It also helps the driver to concentrate on the
code.
●● An effective way to share their experience and knowledge: It would encourage
coders to have direct face-to-face meetings and training, which would be
U
much superior to online tutorials and far quicker than searching the Internet for
resources. You can learn more from your second person, especially in areas
where you may be unfamiliar.
●● It Develops your staff’s interpersonal skills. Combining a single project helps your
team to appreciate the value of teamwork.
ity

Jama’s solution to the immediate problem of accumulated technological silos was


pair-programming. We will get closer to a paradigm of “collective-code ownership”
by using pair-programming, where many people have expertise in a specific field of
our systems. As a result, we reduce the risk associated with jama’s software’s long-
term maintenance. This is the most evident and significant value of pair-programming
knowledge diffusion.
m
)A
(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 79

Some other advantages of pair-programming: -


Notes

ity
Satisfaction: Many engineers find pair-programming to be more engaging than
programming alone, and they felt more secure in the solutions they came up with. It
also provided an easy means of getting to know your coworkers better while at work.

Integration involves reducing teamwork efforts.


Pair-programming has been an integral aspect of our onboarding process for new

rs
hires. It provided a much more efficient way for new hires to become acquainted with
the new code base, gain experience with Jama’s technical practises, and integrate into
their team.

Adaptability: - more freedom from interruptions One developer will leave the pair

ve
to provide short-term assistance to an external problem while another developer works.

Is pair-programming right for you?


Pair-programming has offered many benefits to Jama Software, but it does not
seem to be an easy task to implement it as a standard.

ni
Adopting an Agile software development technique over an ancient waterfall task
management strategy can be a difficult transformation for many software companies.

Pair-programming is no different, and it benefits from a firm’s well-established Agile


community.
U
Pair programming is a method of agile software development in which two
programmers collaborate in one location. It can only help a small number of team
members who follow it. Even if they claim to be using the agile process, they will often
be split into two parts.
ity

For starters, some proponents argue that pairing programming leads to information
transfer or the acquisition of some knowledge. A member of the opposing team feels
it is a waste of time. They claim that when software developers operate in pairs, it is
difficult for them to concentrate solely on the delivery job, and that the developers would
most likely end up fighting over trivial matters such as “which text editor to use.”

Another common problem is that when a team member uses pair programming, it
m

is difficult to quantify success for each software developer. It’s also difficult to calculate
anything in certain organisations.

Pair programming is the most challenging part of almost all of the projects in any
organization I’ve worked on.
)A
(c

Amity Directorate of Distance & Online Education


80 Software Engineering and Modeling

Notes

ity
rs
The Good, The Bad, The ugly in Pair programming

ve
The Good
Paired programming sounds “slow,” but I felt like I learned a lot when I was pairing.
When you pair, you prefer to remain on track and, even though someone wants to take
a break here and there, on your job. Given all of this, I agree that working with software
developers more than makes up for the fact that I am “slower” at coding.

ni
When I was pairing on a project, you never felt lost in the programming language
base. When it came to coding, some people felt completely confused. People were
given a high-level overview of the codebase before being assigned tasks to complete
independently. You might try to get assistance at times, but as a “senior,” you should be
U
able to work it out on your own.

Now, while this is a clear example of what not to do, pairing would have greatly
aided you in learning how to use the codebase.

Information transfer in the team was supported by pairing.


ity

When two or more people are working on it, you have more chances to strengthen
your skills and gain a greater understanding of what is going on.

It compelled you to interact with others rather than isolate yourself. At work, you
struggled with shyness.
m

The Bad
Roses aren’t the name of the game when it comes to pairing. From the perspective
of a software developer, pairing had several drawbacks. In a team, you will be swapping
partners, so you or your colleague will need to swap desks to make this possible. This
)A

gives the feeling that you have your own “home base.”

As a result, you don’t feel like you can “play” with tiny structures.

Experimentation is a crucial part of the software development process.

Another downside is that socialisation should be avoided. Some people dislike


social contact, while others want to avoid it at all costs. It can be boring to be pairing all
(c

of the time.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 81

The Ugly
Notes

ity
There is an ugly side of pairing in an organisation, in addition to the good and poor.

People who are dominant in any industry can, whether intentionally or


unintentionally, drive non-dominate personalities towards them. “Strong views, loosely
held,” someone said. Some people tend to keep their views “looser” than others. Yes,
this can happen to any member, but when this is the case for all of your interactions, it
quickly becomes exhausting.

rs
For example, one person might be writing code on a keyboard while the other
“navigates.” The individual at the keyboard is meant to be a “smart keyboard” that
codes quickly, while the navigator instructs the smart keyboard about what to do but not
how to do it. In reality, they always ended up being a clumsy keyboard that simply did

ve
whatever the other person told them to do.

Pair combinations

Senior – Senior

ni
Even though you’re a human being you can make mistakes, won’t always see the
best result, and will always have something more to learn. It could be a good way to fill
those gaps.

Senior – Junior
U
This is a wonderful opportunity for juniors to accelerate their learning and develop
in a company that is ahead of the curve. The junior will have a more open mind, be
more interested, and ask more questions than the senior has become accustomed to.
This will be a perfect opportunity for juniors and seniors to gain experience.
ity

As a consequence, maintaining a sense of balance is important. If there isn’t


much cooperation, a junior can end up just watching and listening. Seniors in many
companies find explaining annoying and face resistance in their growth flow. Make sure
that everybody has a healthy work-life balance.

For example, if the boss emphasises the importance of everyone’s learning, the
senior will feel more comfortable explaining the job.
m

Since the employer invests his time in a productive team, pair programming may
be a successful investment for the business in this case; otherwise, it will go in the
wrong direction. Slowing down the coding allows the senior developer to feel more
inspired to teach and less impatient.
)A

Junior – Junior
This combination has the potential to boost productivity and efficiency in the long
run. Juniors want to learn more and ask more questions about emerging technology.
They will benefit from each other’s abilities and advance more quickly.
(c

When to pair and when not to


Although pair programming indeed improves concentration for both members of
a team, this is not always the case. Simple tasks, for example, are simple tasks that

Amity Directorate of Distance & Online Education


82 Software Engineering and Modeling

are based on experience. Since a single senior or a pair of juniors could solve a tough
Notes challenge, getting a senior-junior mix could be a good opportunity to improve junior

ity
skills and experience while seniors feel inspired to learn new stuff.

Courage is the most important factor to make it better.


●● Discuss with your partner you can do the task better alone
●● To grow your partner skill

rs
●● Asking for an explanation you think you “should” know instead of waiting
●● Courage to admit that you’re both stuck and need to swap their pair partners
to bring a fresh pair of eyes to the problem and get the result soon

ve
A measure of Pair Programming
It’s not hard to measure the value of a given task.

Development time: How much time a project is spent on development

Fixing time: How much time is spent on fixing errors, and maintenance.

phase

ni
Enjoyment: How much work satisfaction do the employees feel at the development

User satisfaction: How many happy clients and end-users do you have after using
any software
U
Money: how much budget it will take to complete the project. If you get this data
you should have an idea of the economic value initiating project as well

Activity
ity

1. Explain all the approaches using an example.


2. Create a web application using c language code.
3. Write some benefits of structured programming.
4. Who is a stake in the solution to the problem? And who are the stakeholders?
5. What is agile software development how is different it from traditional process
m

models?
6. You should choose a task set the best accommodates the needs of the project and
list the characteristics of your team. Software engineer action can be adapted to the
specific needs of the software project and the characteristics of the project team.
)A

For a small, relatively project, the task set for requirements gathering might:

i. Make a list of stakeholders for the project.


ii. Make an invitation for all stakeholders to an informal meeting.
iii. Tell to all stakeholders to make a list of features and requirements.
(c

iv. Make a final list of requirements.


v. Make an area of risk.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 83

For a large relatively project, the different task set for requirements gathering might:
Notes

ity
i. Make a list of stakeholders for the project.
ii. Take the interview of each stakeholder separately.
iii. Build a list of features and functions and features based on stakeholder’s
requirements.
iv. Schedule a series of meetings.

rs
v. Refine user scenarios based on stakeholder’s feedback.
vi. Build a revised list of stakeholder requirements.
vii. Use quality function deployment techniques to prioritize requirements.

ve
viii. Constraints and restrictions that will be there in the system.
ix. Discuss the following methods for validating the system.
7. Build a set of actions for the communication activity. Select one action and define a
task set.
8. Give two examples of software projects that prefer the waterfall model.
9.

ni
Give two examples of software projects that prefer the prototyping model.
10. Give two examples of software projects that prefer the incremental model.
11. The unified process and UML the same thing? Explain.
U
12. How to design high-quality software components?
13. Who should practice software engineering explain?
14. Is programming language necessary for software engineering?
ity

15. How does pair programming work? Explain.


16. Explain some key factors of pair programming?
17. What are the 2 programmers in pair programming called?
18. Explain structured programming using 4 programming languages.
19. What was the software crisis in the mid-1960s?
m

20. Is information hiding necessary in a major project? Explain.


21. Draw an ER diagram for the following situation.

An account is a relationship between the customer and a bank. A customer has a


)A

name and the bank has a branch. A customer has several accounts of different types
and balances.

22. Explain CASE tools?


23. Explain the concept of modularization.
24. Give some examples of project management tools.
(c

25. Explain V-Model in detail.

Amity Directorate of Distance & Online Education


84 Software Engineering and Modeling

26. What is the difference between system software and application software?
Notes

ity
27. Explain at least 2 programming language which is in trend?

Exercise:

Check Your Understanding:


1. What are the types of requirements?

rs
a. Availability
b. Reliability
c. Usability

ve
d. All of the above
2. A use-case person works on having a role that different people may play.
a. true
b. false

ni
3. A stakeholder is anyone who will buy the whole software system under development.
a. True
b. false
4. Which one of the followingis one of the most important people in stakeholders?
U
a. Entry-level
b. Middle level
c. Managers
ity

d. Users of the software


5. The job of the requirement engineer is to make differences in all stakeholder
information in a way that allows deciding to choose an internally consistent set of
requirements.
a. True
m

b. False
6. Non-functional requirements can be safely ignored in modern software development
projects.
a. True
)A

b. False
7. In agile process models requirements, engineering, and design activities are
interleaved.
a. True
b. False
(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 85

8. The most common reasons for software project failure is lack of functionality
Notes

ity
a. True
b. False
9. Which tool is used to assist in designing web pages?
a. Web development tools
b. Prototyping tools

rs
c. All of the above
d. None of the above
10. For the best software model suitable for the project, in which of the phase the

ve
developers decide a roadmap for the project plan?
a. Software design
b. System analysis
c. All of the above
d. None of the above

ni
11. A stakeholder buys the complete software system under development.
a. True
U
b. False
12. Non-functional requirements can be safely ignored in modern software development
projects.
a. True
ity

b. False
13. Use-case actors are people, not system devices.
a. True
b. Maybe
c. False
m

14. In agile process models requirements, engineering and design are interleaved.
a. True
b. False
)A

15. The basic reason for software project plan failure is lack of functionality.
a. False
b. True

Answer keys (Exercise):


(c

1. D
2. B

Amity Directorate of Distance & Online Education


86 Software Engineering and Modeling

3. B
Notes

ity
4. D
5. A
6. B
7. A
8. B

rs
9. A
10. B
11. B

ve
12. B
13. C
14. A
15. A

ni
U
ity
m
)A
(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 87

Module-3:Software Design
Notes

ity
Unit Outcomes
At the end of this unit, you will be able to:

1) Describe and Employ the concept of Software Life Cycle Model and Quality Concepts
in various Softwareprojects.

rs
2) Demonstrate the ability to perform software testing for different types of
softwareapplications.

Introduction

ve
Software design is the process of converting user specifications into a format that
can be programmed and implemented. It is a type that contains the specifications as
defined in the SRS (Software Requirements Specification) document. The software
design stage is the first in the SDLC process.

Computer design is a process for converting client specifications into a format that

ni
the programmer can use to programme and execute software.

A document called an SRS (Software Requirement Specification) is developed.


Where can we get a software development idea? This procedure’s output can be used
directly in a programming language’s execution.
U
The first phase in the SDLC (Software Design Life Cycle) is software design, which
aids in focusing from the problem domain to the solution domain. It also seeks to satisfy
all of the client’s needs.

The idea of using a system to design applications. Some theories are difficult to
ity

understand:

1. Abstraction
2. Refinement
3. Modularity
m

4. Software architecture
5. Control hierarchy
6. Structural partitioning
7. Data structure
)A

8. Software procedure
9. Information hiding
(c

Amity Directorate of Distance & Online Education


88 Software Engineering and Modeling

Notes

ity
rs
ve
There are three levels of software design:

1. Architectural design: it is the highest version of the system. At this level, the
designers have an idea of the proposed solution domain.
2. High-level design: it mainly focuses on how the system along with all components

ni
can be implemented.
3. Detailed design: it deals with the implementation part. It defines the logical
structure of module and their interfaces to communicate with other modules
U
ity

Figure:Objectives of software design:

3.1 Software Design Process and Design Objectives


m

The design process of software development deals with translating the


client specifications in the SRS documentation into a type implementable using a
programming language. Its position in determining whether to pass an application into
the development process.
)A

In the requirement analysis process, the software design is a technology-


independent term that specifies a framework that determines tasks. It’s crucial because
it aids in the creation of the software’s structure. This is a critical stage. It aids in the
completion of the project.

It is the most critical step of the software development methodology, as well as the
(c

first. The application is built on this foundation.

For practical designs, the following concepts are used. They aid in the
development of a positive user experience and customer loyalty.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 89

The principle of a good software design is:


Notes

ity
1. Modularity
2. Coupling
3. Abstraction
4. Anticipation of change
5. Simplicity

rs
6. Sufficiency and completeness
1. Modularity: it divides a large software into small modules. It is the key to scalable
and maintainable software design. The project is divided into many components and
work on one component is done at once. After dividing into many parts it becomes

ve
easy to test each component.
2. Coupling: It describes the extent of interdependence between software modules as
well as the degree to which two modules are linked. A characteristic of good design
is low coupling. Low coupling allows improvements to be made in each module
independently without affecting the other modules.
3.

ni
Abstraction:Identifying the proper behaviorof each module by doing implementation
and removing irrelevant details is known as abstraction. The incompetence to spit
the main behavior from its implementation will tend to unnecessary coupling.
U
4. The anticipation of change: demand for software always changes depending on
many factors and requirements are also changes. Building a good software design
carry its ability to accommodate and adjust to make change without any problem
5. Simplicity: software developers aim to make software simple. Each task is a module,
which can be easily modified. It makes the code simple to use and implement and
ity

minimizes the number of setbacks.


6. Sufficiency and completeness: good software ensures the sufficiency and
completeness of the software concerning the established requirements. It ensures
that the software has been properly and completely built.
There are some stages of the software design process:
m

Stage 1: Requirements of the project

Stage 2: Research and Analysis

1. Interviews
)A

2. Focus groups
3. Survey is important
Stage 3: Proper Design

1. Wireframing
2. Creating client stories
(c

3. Data flow diagrams


4. Technical design

Amity Directorate of Distance & Online Education


90 Software Engineering and Modeling

5. User interface
Notes

ity
Stage 4: prototyping

1. Low Fidelity Prototyping


2. Medium Fidelity Prototyping
3. High Fidelity Prototyping
Stage 5: Evaluation

rs
ve
ni
U
ity

Figure: Software Design Process

Explanation

Stage 1:
m

Before you start any project, you need to know all the project requirements. These
requirements can low the risk, help to know all the things, their difficulties, and the
issues while creating software design specifications.

Stage 2:
)A

This stage assists in the development of user personas, data analysis, and user
design by assisting in the research of your and your client’s requirements. This stage is
extremely important because it is the foundation of software. This stage is finished by
conducting interviews, focus groups, and surveys.

Interviewing users and asking them questions about their needs and problems will
(c

aid in the development of apps. It gives them facts as well as some genuine opinions
about the problems they’re having and the answers they’re looking for.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 91

Focus group: form a group that is solely focused on their work, to conduct and
observe a conversation about a particular software design problem. Notes

ity
Surveys: by doing surveys or questionnaires to your users about such issues, you
can easily find their opinions and attitudes towards their problems and preference in
software design.

You will evaluate and appreciate the variables you’ll be able to concentrate on in
software design once you’ve gathered all of the requirements from your analysis. Now

rs
that you know what your audience wants, you can make your product the best option.

Stage 3:
You collect and analyze your data, now you can start to design your software.

ve
1. Wireframing: It is the software’s skeleton. This is used in the structural design of the
software. It aids in the development of basic structures, functionality, components,
navigation, and several other aspects of your design. This portrays the appearance
of the page and will serve as a prototype for the final software design. It allows
the consumer to understand how to set things up in the app plainly and simply.

2. ni
Wireframes are simple to alter and modify. You will make changes to the wireframes
before you have a complete design that meets your business needs.
Creating user stories: user can easily navigate the software design without facing
any issues that’s why the design description is written from the user’s perspective.
U
For example, suppose you are developing a food delivery app. The client is both the
delivery boy as well as the user. Stories may look like this:
●● As a user, I want to link my debit card to my account for delivery payments.
●● As a delivery agent, I want to add my preference areas.
ity

●● As a user, I want to give feedback on the quality, quantity, and delivery agent
behavior of the food I received.
3. Data flow diagram (DFD): it has different levels of concepts in the system, there are
3 types:
●● 0-level DFD: we can fundamental system model, using a single bubble it
shows the complete system requirement with inward and outward arrows
m

denoting data movement.


●● 1-level DFD: in this level, multiple processes are shown. It breaks down the
0-level DFD into more detail. In this system, we can system main aims.
●● 2-level DFD: it makes 1-level DFD in more depth. Its stores are the crucial
)A

details about the software’s functioning.


4. Technical design: it consists of the detailed description of:
●● Important hardware components and their functions
●● Components of the elements
●● Number of aspects of software
(c

●● Data structures
●● Coding
●● Data flow diagram

Amity Directorate of Distance & Online Education


92 Software Engineering and Modeling

5. User interface: it comprises all the parts of software with which a client can interact.
Notes The aim of this stage to make it easy for the user that must be able to use of interface

ity
easily. There are 3 types of user interface:
●● Graphical user interface (GUI): the users interact with graphics on digitally
regulated panels. E.g., Computer desktop.
●● Voice Controlled Interfaces (VUI): the users interact through their voiceswith
these interfaces. E.g., Apple Siri, Amazon Alexa.

rs
●● Gesture-Based Interfaces: users interact with these interfaces through bodily
movements. E.g., VR Games

Stage 4:

ve
This stage is a rough draught of a product that shows how the finished product will
look. Wireframing is a more comprehensive stage than this. This stage aids in layout
testing, determining whether anything meets the pre-established criteria, and gathering
user input. This stage takes the least amount of time.

Types of Prototyping
1.

ni
Low fidelity prototyping: this approach includes sketching on paper. It is mostly used
starting designing stages and it is a quick way to create a rough software design
model. It helps in brainstorming for new ideas and testing some new ideas before
settling on the final design.
U
2. Medium fidelity prototyping: this approach helps you in deciding the requirements
are reached or not. It is viewed as a work in progress.
3. High fidelity prototyping: it can be the final stage of the product because they are of
high quality and more real. It takes a lot of time to be made.
ity

Stage 5:
User testing is part of this level. It verifies that the programme meets all of the
specifications and is easy to use. Before launching the design, this stage is critical for
identifying any errors or debugging them.
m

The various tools used for creating software design:


There are 6 most effective and commonly used tools are:

1. Draw.io: it is used to create diagrams in Confluence and Jira. In this, you can
make flowcharts, process diagrams, ER diagrams, and much more. In this tool,
)A

you can design your unique shape libraries.


2. Jira: it is a highly efficient software development tool used to make plans, check,
and make reports of your work. In this, you can make your workflow.
3. Mock flow: it is a web-based wireframe tool to plan and build the design. It is
cloud-based and provides its users with a very good library.
(c

4. Sketch: it is a vector graphic editor for MAC users. It is used for the user interface
design.
5. Marvel: This tool helps the software design to wireframe and design.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 93

6. Zeplin: in this platform designers share, organize, and collect all the designs.
Notes

ity
There are many concepts of software design and some more are given below:

rs
ve
Figure: concepts of software design.

Design objectives of software design

ni
We prepare a solution to the problem specified by the document’s specifications
during the design process. This is the first step in transitioning from the problem to the
U
solution domain. In other terms, beginning with the design requirement leads to the
satisfaction of needs. Some goals are as follows:

1. Find out the different kinds of software based on the requirement.


2. Define the design and code.
ity

3. Describe the concepts of structured programming.


4. Design some basic design concepts.
5. See how to design for testability as well as maintainability.
Software designers do not arrive at a completed design document right away, but
rather work through the design process in phases. In this method, specifics are added
m

as the design evolves, with frequent backtracking to fix earlier, less formal designs. This
diagram will assist you in comprehending the transformation:
)A
(c

Amity Directorate of Distance & Online Education


94 Software Engineering and Modeling

3.2 Structured Design Methodologies.


Notes

ity
The software framework is a major concern throughout the design process.
There have been a plethora of techniques developed in recent years to include some
discipline in dealing with the complexities of designing complex systems. The aim
of design methodology is not to shorten the design process. It provides the required
instructions for the designer to follow throughout the design process.

Every software system, according to structured design methodology (SDM), has

rs
some data that is converted into the desired outputs by the software system. The
programme converts the inputs into the specifications. The structured design approach
is based on functional abstraction and functional decomposition and is function-
oriented.

ve
ni
U
The definition of a program’s structure is based on the organised design method.
This approach seeks to monitor and influence the structure of the final programme
during the design phase. The main purpose of this approach is to create a hierarchy
ity

between modules in programmes that implement the design.

The significance of software design methods cannot be overstated (Freeman,


1980). It offers a rational and structured approach to the design process, as well as
a collection of various decision-making guidelines. Several tasks are included in
the design methodology, which often employs a collection of notations, flowcharts,
or diagrams. The design methodology is particularly relevant for complex projects
m

involving a large number of designers who must establish a methodology. It has a set of
standard communication channels for converting designs to codes, as well as a set of
common goals. There must also be an objective match between the general nature of
the problem and the characteristics of the outcome.
)A

The modules with subordinates don’t have to do much work in this case. Its
subordinates are in charge of the actual computation. It coordinates data flow between
subordinates to complete the computation. A system is complete when bottom-level
atomic modules handle all processing factors and non-atomic modules handle the
majority of control and coordination tasks.

The key task is to define the inputs and output sources, as well as the
(c

transformation factors that must be completed to generate the output. Modules are
created to keep track of and improve the efficiency of the main activities. This technique
entails several moves.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 95

Notes

ity
rs
ve
3.3 Modules Coupling and Cohesion

ni
The degree to which components are made up is measured by modularity. And
we need to work together. Software architectures are so complicated that it’s difficult to
comprehend how they work. Modularity is a vital tool in such situations, since it aids in
reducing the sophistication of such applications or projects.
U
The software components that are generated by splitting into the software are
referred to as modules. The programme is divided into different components that
work together to form a single operating object, but they can sometimes operate
independently if they are not related. Modularity is a concept used in software
engineering to describe the method of constructing software modules.
ity

Modularity
●● Easy to understand
●● Easy to make documents
●● Testing a fixing is easy
m

●● Bug tracking and fixing is easy and fast


●● Reusable

Cohesion
)A

The relationship within a module is referred to as cohesion. It’s also known as intra-
module. There are several different forms of cohesion. However, in most cases, high
cohesion is beneficial to apps.

Coupling
(c

The term coupling refers to the relationship between modules. It’s also known as
inter-module. There are several types of couplings. Low coupling, on the other hand, is
typically advantageous to software.

Amity Directorate of Distance & Online Education


96 Software Engineering and Modeling

Notes

ity
rs
Example

ve
cohesion

coupling

Module Coupling
The degree of linkage between software modules is referred to as coupling in

ni
software engineering. These two modules are inextricably connected and reliant on one
another. Modules that are loosely coupled and independent of one another are known
as uncoupled modules.

Coupling is a qualitative indicator of how closely classes are related. Coupling rises
U
as groups become more interdependent.

Internally and externally, the machine must interact. As a result, the coupling is
unavoidable. When coupling cannot be prevented, the designer works to minimise it as
much as possible while still recognising the effects of high coupling.
ity

●● It indicates how closely two modules interact and interdependent with each
other.
●● The degree of coupling depends on their interface complexity.
●● Loosely coupled: less interaction between two modules
●● Tightly coupled: more interaction between modules.
m

Categories of coupling:

●● No direct coupling
●● Stamp coupling
)A

●● Data coupling
●● Control coupling
●● Common coupling
●● Content coupling

There are different coupling techniques are shown in the figure:


(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 97

Notes

ity
rs
ve
Module cohesion
The degree to which the elements of a module are dependent on one another
in computer programming is referred to as cohesion. It also assesses the strength of
connections between different pieces of functionality within a module. It’s classified as
either “high cohesion” or “poor cohesion.”.

Cohesion= Strength of relations within modules

ni
U
ity
m
)A

The strength of the association of elements within a module is measured by


cohesion. It has a module with a single, distinct, and logically distinct obligation. A
function or class with cohesion encapsulates only attributes and operations that are
closely linked to each other and to the class or component itself.

Categories of cohesion:
(c

●● Sequential cohesion
●● Functional cohesion
●● Communicational cohesion
Amity Directorate of Distance & Online Education
98 Software Engineering and Modeling

●● Procedural cohesion
Notes ●● Temporal cohesion

ity
●● Logical cohesion
●● Coincidental cohesion

3.4 Types of Coupling and Cohesion


The Software Development Life Cycle’s Design process attempts to solve

rs
a problem in the Software Requirement Specification text. The Software Design
Document is the outcome of the design process.

Iterative design is a two-part operation. The first is Conceptual Design, which


informs the customer about the system’s capabilities. The second is Technical Design,

ve
which enables device builders to understand hardware and software problems to solve
the customer’s problem.

ni
U
ity

Conceptual design of the system:


• Written in simple language.
m

• Detailed explanation about system features.


• Explain the functionality of the system.
• It is not dependent on implementation.
• Must Link with requirement document.
)A

Technical Design of the system:


• Hardware and design.
• Functionality and hierarchy of software.
• Software, network architecture
(c

• Data structure and data flow.


• Input and output of the system.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 99

• Shows interface.
Notes

ity
Types of module coupling:
There are various types of module coupling are as follows:

rs
ve
1. No direct coupling: there is no direct coupling between m1 and m2. Modules are
subordinates to different modules.

ni
U
2. Data Coupling: when data of one module is passed to another module.
ity
m

3. Stamp coupling: they communicate using composite data items like using structures,
objects, etc. ex: passing structure variable in C or object in C++ language to a
module.
4. Control coupling: it is in two modules. Data from one module is used to direct the
)A

structure of construction execution in another.


5. External coupling: in this coupling, two modules share an external data format,
protocols, or gadgets interface.
6. Common coupling: if any information is shared using some global data items, then it
is said to be common coupling.
(c

Amity Directorate of Distance & Online Education


100 Software Engineering and Modeling

Notes

ity
7. Content coupling: it is in between two modules if they share any code, e.g., branch

rs
from one module into another module.
Types of module cohesion

The degree to which the module’s elements are functionally connected is

ve
determined by cohesion. It refers to how well all of the elements in a component work
together to complete a single mission. The module is kept together by cohesion. High
cohesion is a sign of a successful software design.

There are 7 types of cohesion module:

1. Functional cohesion
2.
3.
4.
Sequential cohesion
Communication cohesion
Procedural cohesion
ni
U
5. Temporal cohesion
6. Logical cohesion
7. Coincidental cohesion
ity
m
)A

1. Functional cohesion: it exists if the different elements of a module reached a single


(c

function. It contributes to the execution of one and only one problem-related task.
It focused on strong, single-minded propose. Examples: assigning seats to airline
passengers.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 101

2. Sequential cohesion: it is the phase where the output comes from one component of
the sequence is input to the next. in this type output entity from one activity becomes Notes

ity
input data to the next. It is easily maintained. It has good coupling. For example: in
module format and cross-validate it uses the raw recode, format raw record, cross-
validate fields in the raw record, and return formatted cross-validated record.
3. Communicational cohesion: if all the jobs of the module mention or update the same
data structures.it is not flexible. Example: a module has customer details so its loan

rs
balance, account no, customer name all are the example of theses communicational
cohesion.
4. Procedural cohesion: if all groups of design of the module are all pieces of a process
in which any specific sequence of phases has to be carried out for executing a goal.
It is similar to sequential cohesion. It is very important. It is found atthe top of the

ve
hierarchy. For example: in the module, we use to record, write the record, read in
the record,
5. Temporal cohesion: when a module includes functions that are related by the fact
that all the procedures must be implemented at the same time. It is commonly
found in initialization and termination modules. Example: module initialization, open

6.
student file, clear error message variable.

ni
Logical cohesion: it performs the same operation. It contributes the activities of
the same type. It usually has control coupling, since one activity will be selected.
Example: module displaying record use record-type.
U
7. Coincidental cohesion: it performs a set of jobs that are related to each other not
tightly.it has activities with no meaningful relationship to one another. It is similar
to logical cohesion except for the activities that do not have the same type. It is
difficult to maintain because it shows any side effects while changing something.
For example, so many functions use customer records, display customer records,
ity

calculate total sales.

Difference between coupling and cohesion:

Coupling Cohesion
It is also called inter-module binding. It is also called intra-module binding.
m

It shows the relationships between It shows the relationship within the


modules module.
It shows the relative independence It shows the module’s relative
between the modules functional strength.
)A

Modules are linked to the other modules It focuses on a single thing.

3.5 Structured Chart


The device and module design stages are aided by the structure map. It employs
an illustration technique that is followed by a description. It’s a series of modules
(c

arranged in a ladder.

The control hierarchy determines how data flows. The control hierarchy depicts
decomposition.

Amity Directorate of Distance & Online Education


102 Software Engineering and Modeling

The computer-oriented heart is organised. It’s generated using the data flow
Notes diagram and then cleaned up.

ity
The hierarchical structure of modules can be seen here. It deconstructs the entire
structure into the most basic functional modules. Each module’s functions and sub-
functions are defined.

As a company expands, so does its complexity, both in terms of organisational


structure and the types of projects it employs. It is becoming more difficult to articulate

rs
the business’s organisational structure as it becomes more complex.

The hierarchical structure of modules is illustrated by the Structure Map. It dissects


the entire system into its smallest functional modules and thoroughly explains the
functions and sub-functions of each module. The users are familiar with the system’s

ve
features, but the inner details are not specified in the Structure Chart. The black boxes
are given inputs and appropriate outputs are generated.

Modules at the highest level are referred to as top-level modules. Components


are read from left to right and from top to bottom. When one module calls another, the
called module is treated as a black box, with the called module passing necessary

ni
parameters and obtaining results.
U
ity
m

A structure chart aims to provide a simple, graphical representation of a more


complex organisation or procedure. In the construction industry, for example, a
)A

structural chart might show how the general manager and director have direct or
indirect communication with both the engineering and design departments, but that
these two departments are effectively separated. The viewer can understand the
basic relationships between parts of an organisation or a process using such graphical
representations without getting lost in the information. In structured programming,
they’re used to organise programme modules into a tree.

Each module is represented by a specific box, which contains the module’s name.
(c

The tree structure shows the relationships between modules.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 103

Notes

ity
rs
ve
The President is at the top, followed by vice presidents, and so on. It defines
the relationship between modules within the framework of a computer programming
language.

It does, however, show the organisation of the functions used within the code,
indicating which functions are dependent on a subordinate function. People higher up in
the computer system are calling those lower down.

ni
A software developer develops hierarchy charts to assist in the documentation of a
programme.
U
It is made up of five different structures. A organised chart’s main objective is to
provide a simple, graphical representation. It’s also known as a hierarchy map, and
it illustrates the links between various module. It depicts the relationship between
modules on a computer. It is developed by a programmer to aid in the documentation of
code.
ity
m
)A
(c

Structured charts – Module

Lable 1

Amity Directorate of Distance & Online Education


104 Software Engineering and Modeling

• It helps to process the task


Notes

ity
• It is the unit of execution

• It accepts the parameters as inputs

• It produces the outputs

Structured charts – Special Module

rs
Lable 1

• It is very useful

ve
Structured charts – Invocation

ni
U
• It is a connector element

• It is not a data flow


ity

• It shows the direction of the process

Structured charts – Jump to Address


m
)A

• This label call jumps INTO invoked module


(c

• Assembler type of programming

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 105

Structured charts – Sequence of Execution


Notes

ity
rs
ve
• It is defined in the specification of the super-ordinate module.

Structured charts – Conditional Execution

ni
U
ity

• In this chart,the condition is explained.


m

Structured charts – Loops in the Execution


)A
(c

• Loop is defined in the module specification

Amity Directorate of Distance & Online Education


106 Software Engineering and Modeling

Structured charts – Data Flow


Notes

ity
rs
ve
• It defines the flow of information

• It transfers the data from taking input to giving output

Structured charts – Control Flow

ni
U
ity

• It shows the direction

• It manages the flow of control

Structured charts – Interfaces


m

• It is the destination of data flows


)A

• It connects the multiple gadgets

Structured charts – Control Flow


(c

• It shows the connection to databases, operating systems, etc.

• Destination of the data flow

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 107

Types of structured charts:


Notes

ity
1. transform centered structured: the system receives the input which is transformed by
a sequence of operations.
2. Transaction-centered structure: describes a system that processes several different
types of transactions.

3.6 Qualities of Good Software Design

rs
When we create any type of software product, we must consider the software’s
quality.

ve
ni
U
We must ensure that the software product meets all of the customer’s
requirements. It is sufficient in terms of cost perception. It must be done within a certain
time frame. These are the basic considerations we must make and what we expect
from any software creation.

By having various variables, software is like a good software. Good software


ity

is described by its features and ease of use. There are three types of factors that
influence software properties: operational, transitional, and maintenance. These are
explained further down.
m
)A
(c

There are some important factors that you are going to learn by Software Quality
Triangle:

1. Operational characteristics

Amity Directorate of Distance & Online Education


108 Software Engineering and Modeling

2. Transition characteristics
Notes

ity
3. Revision characteristics

rs
Figure: Software Quality triangle

1. Operational characteristics:it is functionality based factors and related to the ‘exterior


quality’ of software. It has some characteristics:

ve
a. Correctness: the software should fulfill all the requirements of the customer.
b. Usability: software user-friendly to everyone. The amount of time required or
efforts in a software product must be less.
c. Integrity: just like some others have side effects software products has also

d.
e.
ni
some side effects. It can affect your computer. So, we have to take care ofthe
side effects.
Reliability: we have to take care of defects in software during execution time.
Efficiency: the software uses effective use of storage and the execution time
U
should be less as required.
f. Security: nowadays security is very important to any computer so it has high
security. Our data must be secure from external threats.
g. Safety: the software product should not harm anyone’s life.
ity

2. Revision characteristics: this characteristic is accommodating to the ‘interior quality’


of the software. It has some different characteristics:
a. Maintainability: software maintenance is very important. Show the software is
easy to maintain.
b. Flexibility: they should be flexible and easy to use.
m

c. Extensibility: the software function should easy to use.


d. Scalability: the software should have upgradesfrom time to time to make it
user-friendly and easy to use.
)A

e. Testability: the software testing should be easy and not have any error.
f. Modularity: this software uses different modules that are not dependent on
each other but for making the software we relate every module to execute any
program. The software should be tested and have high modularity.
3. Transition characteristics: it has some important factors like:
a. Interoperability: it is the ability to transfer the information with the other modules
(c

and make the software better.


b. Reusability: if we can use the software program with some small changes for
different work then we call software to be reusable.
Amity Directorate of Distance & Online Education
Software Engineering and Modeling 109

c. Portability: the ability of software to do any task the same functions across all
the environments and platforms, then it is said to be portability. Notes

ity
Based on its intended use, each piece of software has a distinct purpose. The
most important aspect of any role is to preserve honesty and dependability. The primary
considerations to consider are usability and maintainability.

So, to create a software product, we must take care of everything. Since software
quality is so critical in software engineering, we’ve considered all of the factors and

rs
characteristics. And then produce a product that meets all of their requirements and has
all of the qualities that make software successful and effective.

ve
ni
Budget, performance, accessibility, dependability, correctness, functionality,
protection, and security are some of the characteristics that can be measured in
U
operations.

Activity
1. Explain who should practice software engineering?
ity

2. Explain the DFD with a real-world problem.


3. Write some basic qualities of design thinking.
4. Develop a complete use case for one of the following activities:
a. Making a withdrawal at an ATM.
b. Using your charge card for a meal at a restaurant.
m

c. Buying a stock using an online brokerage account.


d. Searching for books a specific book using an online bookstore.
e. An activity is specified by your instructor.
)A

5. Describe software architecture in your own words.


6. Why is design for testing so important?
7. Describe the software quality dilemma in your own words.
8. Our quality and security the same thing? Explain.
(c

9. List different types of coupling and cohesion.


10. What arethe software requirement specifications? Why is it important? List the
characteristics of good quality SRS.

Amity Directorate of Distance & Online Education


110 Software Engineering and Modeling

11. What is the use of the data flow diagram?


Notes

ity
12. List any two characteristics of a good SRS.
13. What is structured programming and why is it important?
14. Describe system testing.
15. Why is the maintenance of software important? Discuss some of the issues that are
faced during the maintenance of software.

rs
16. Explain some of the limitations of testing.
17. Differentiate between functional testing and structural testing.
18. Write a short note on the structure chart.

ve
19. Define software reliability. What is the difference between hardware & software
reliability?
20. How does the risk factor affect the spiral model of software development?
21. What is the advantage of using a prototype software development model instead of
a waterfall model? Also, explain the effect of defining a prototype on the overall cost
of the software project?

ni
22. Define a software process. How do software myths affect a software process?

Exercise
U
Check Your Understanding:

1. Which one of the following tool is used for structured designing?


a. Programming chart
b. Structured chart
ity

c. Module chart
d. None of the above
2. Which one of the following is the worst type of coupling?
a. Control coupling
m

b. Content coupling
c. Stamp coupling
d. None of the above
)A

3. CASE tool stands for?


a. Computer-aided software engineering
b. Component aided software engineering
c. Constructive aided software engineering
d. Computer analysis software engineering
(c

4. FAST stand for?


a. Facilitated application specification technique.
b. Functional application software technique
Amity Directorate of Distance & Online Education
Software Engineering and Modeling 111

c. None of the above


Notes

ity
d. All of the above
5. An entity in ER model is a real-world being, which has some properties known as?
a. Relationship
b. Domain
c. Attributes

rs
d. All of the above
6. Which of the following is not a characteristic of a good software design?
a. Correctness

ve
b. Understandability
c. Complex design
d. Efficiency
7. What does an ER diagram reflect?
a.
b.
c.
Entities
Keys
Relationship
ni
U
d. All of the above
8. Which of the following is used in Data flow diagrams? are used for:
a. Data modeling
b. Process modeling
ity

c. None of the above


d. All of the above
9. Which of the following is related to ER diagram?
a. Entity-relationship
m

b. Data flow
c. Foreign key
d. System testing
)A

10. Which of the following is not related to DFD?


a. Bubble
b. Secondary storage
c. Datastore
d. Arrow
(c

11. What does software design consist of?


a. Software engineering design
b. Software product design
Amity Directorate of Distance & Online Education
112 Software Engineering and Modeling

c. Both (a) and (b)


Notes

ity
d. None of the above
12. Which of the following is not a characteristic of a good software design?
a. Complex design
b. Efficiency
c. Correctness

rs
d. Understandability
13. What does an ER diagram depicts?
a. Entities

ve
b. Relationship
c. Keys
d. All of the above
14. What of the following is necessary to develop software requirements?
a.
b.
c.
Model business
Analyze
Design
ni
U
d. All of the above

Answer keys (Exercise):


1. B
2. B
ity

3. A
4. A
5. C
6. C
m

7. D
8. B
9. A
)A

10. B
11. C
12. A
13. D
14. D
(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 113

Module-4: Software Testing


Notes

ity
Unit Outcomes:
At the end of this unit, you will be able to:

1. Demonstrate the ability to perform software testing for different types of


softwareapplication

rs
Introduction
This module covers all of the fundamentals of software testing. This module is
appropriate for all levels of learners, from beginners to experts.

ve
Software testing is a method of ensuring that a software product meets all of
the desired specifications and is bug-free. It concludes the evaluation of one or more
properties of interest by executing software components using manual or automated
methods. Software testing aims to identify any flaws, holes, or missing specifications in
the user requirements.

ni
Software testing is important for a software product since it verifies its functionality.
Before deploying software, it is needed to test and evaluate it. This module covers
everything you need to know about software testing. Software testing is the art of
determining the consistency of software as it is being tested against the client’s
U
requirements. Technology advances daily, allowing you to access your bank online,
shop online, order food from the comfort of your own home, and so on. Can you
imagine what would happen if these systems failed? A single small bug can result in
a slew of financial problems. As a result, software testing is becoming increasingly
important in the IT industry.
ity

4.1 Introduction to Software Testing


Software testing is the method of assessing the correctness and error of software
by reviewing all aspects and analysing the execution of software attributes to detect any
bugs, flaws, or defects.
m
)A

Computer testing is a critical technology that offers an unbiased perspective and


(c

ensures that software is bug-free. It has a lot of features under the essential services
that make you happy. It also demonstrates the software’s capabilities.

Amity Directorate of Distance & Online Education


114 Software Engineering and Modeling

Software testing is important because it allows any bugs or flaws in the software to
Notes be detected early and fixed before the software product is released. Software products

ity
that have been thoroughly tested ensure reliability, security, and high efficiency,
resulting in time savings, cost-effectiveness, and customer satisfaction.

It is crucial to test the software product because if we do not do so, a dangerous


condition will arise or the product will malfunction at a critical time. As a consequence,
software that has not been reviewed should not be released to end users.

rs
ve
ni
U
ity

Testing
m

Testing is a collection of techniques for ensuring the correctness of a software


application or product. It aids in the detection of flaws in any case, which are then
intended to be corrected.
)A

It does not imply that a product functions properly in any environment, but rather
that it does not work in those circumstances. It discusses the code and the time it takes
to execute it in some circumstances and environments.

The method is corrected by software production, and the testing is performed by


the software testing team. The acceptance of software by the end-user decides its
satisfaction. It has basic graphics and a lot of features.
(c

It analyses all of the loads to ensure that they are satisfactory. The software testing
of a product differs from one product to the next, much as the function of a user of a
back and a user of a video game differs. As a consequence, when a company designs

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 115

software, it reviews all of the specifications to see if the product would be useful to the
consumer. Notes

ity
It is crucial to test the software product because if we do not do so, a dangerous
condition will arise or the product will malfunction at a critical time. As a consequence,
software that has not been reviewed should not be released to end users.

Testing is necessary because software bugs can be costly or even harmful.

rs
Software bugs cause monetary and human loss, and history is full of such
examples.

●● In April 2015, the Bloomberg terminal in London crashed due to a software glitch
that affected more than 200,000 traders in financial markets.

ve
●● Nissan cars recalled over 1 million cars from the industry due to software failure
in the airbag sensory detectors. Which is very dangerous. This reported two
accidents due to this software failure.
●● Starbucks was forced to close about 60 percent of stores in the U.S and Canada
due to software failure in its POS system. At one point, the store served coffee for

ni
free because they were unable to make the process the transaction.
●● Some of Amazon’s third-party retailers saw their product price is reduced to 1p
due to a software glitch.
●● Changes in Windows 10. This defect enables users to escape from security
U
sandboxes through a flaw in the win32k system.
●● In 2015 fighter plane F-35 fell sufferer to a software error, making it unable to find
out targets correctly.
●● China Airlines Airbus A300 crashed due to a software error on April 26, 1994,
ity

killing 264 innocents live.


●● In 1985, Canada’s Thorac-25 radiation therapy machine malfunctioned due to
software error and delivered lethal radiation doses to patients, leaving 3 people
dead and critically injuring 3 others.
●● In April of 1999, a software error caused the failure of a $1.2 billion military satellite
m

launch, the costliest accident in history.


●● In May of 1996, a software error caused the bank accounts of 823 customers of a
major U.S. bank to be credited with 920 million US dollars.

Benefits of software testing:


)A

●● Cost-effective
●● Security
●● Customer satisfaction
●● Product quality
There are different types of testing depend on the product, which is used to test the
(c

application:

Amity Directorate of Distance & Online Education


116 Software Engineering and Modeling

Notes

ity
rs
ve
ni
U
ity
m
)A

Figure: software testing methodology in software engineering

Manual Testing
Manual testing is described as checking functionality without the use of automation
software.
(c

Manual testing is a form of software testing in which a tester manually implements


test cases without the use of automated tools. The aim is to inspect the software
application/product for bugs, flaws, problems, and defects.
Amity Directorate of Distance & Online Education
Software Engineering and Modeling 117

Before any testing can be automated, any new programme must be manually
reviewed. Manual Software Testing takes more time and effort, but it is necessary to Notes

ity
determine whether or not automation is possible. Manual testing’s main aim is to ensure
that the programme is free of flaws.

3Manual testing principles do not necessitate the use of any testing software.

We don’t need any advanced knowledge of any testing method to conduct manual
testing on any software product; rather, we need a clear understanding of the product

rs
so that we can build the test document.

Manual testing has three types:


1. white box testing

ve
2. black-box testing
3. gray box testing

How Manual Testing perform:


●● Read carefully and understand carefully of the software project

●●
documentation.

ni
Check Draft Test cases that cover all the requirements of clients mentioned in
the documentation.
U
●● Review and baseline the test cases.
●● Execute the test cases on the Application Under Test.
●● Report and check the bugs.
●● Once errors are fixed, again implement the test cases to verify they pass.
ity

Tools to Automate Manual Testing


●● Selenium
●● QTP
●● Jmeter
●● Loadrunner
m

●● TestLink
●● Quality Center(ALM)

Automation testing
)A

Automation testing is described as the process of converting manual tests into


test scripts using automation software or any code. Since we use test scripts and then
execute those scripts, we will increase our test execution. We don’t need any human
effort here.

Test Automation is another name for automation testing. It is a software testing


methodology in which a test case is applied using automated testing software methods.
(c

Manual testing is carried out by a person sitting at a computer, carefully following the
test steps. Automation testing software, on the other hand, enters test data into the
System Under Test, compares predicted and actual performance, and produces all
comprehensive test reports.
Amity Directorate of Distance & Online Education
118 Software Engineering and Modeling

Test automation necessitates financial and human capital.


Notes

ity
Why automation testing?

●● It is difficult to test for multiple sites manually.


●● You can run an automated test overnight.
●● It increases the speed of test execution
●● Automation helps increase the Test Coverage

rs
ve
ni
U
Process of automation testing:
Benefits of Automation Testing

●● It is 70% faster than the manual testing


●● It is Reliable
ity

●● It Ensures the Consistency


●● It Saves the Time and Cost
●● It Improves the accuracy
●● It Increases Efficiency
m

●● It gives you a better speed in executing tests


●● Test Frequently

How to choose an automation tool:


)A

Tool selection is one of the biggest challenges for automation. Firstly, Identify the
requirements, check the various tools and theiruses, set the expectation from the tool.

There isthe following best tool for requirement:

●● It must have Environment Support


●● Ease to use, debug the requirements
(c

●● It Tests the Database


●● Must good in error Recovery
●● Use Scripting Language

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 119

●● Support for various types of tests - including functional, test management,


mobile, etc... Notes

ity
●● It gives support for multiple testing frameworks
●● Ability to recognize objects in any environment
●● Extensive test reports and results
●● It should minimize the training cost of selected tools

rs
Difference between manual and automated testing

Parameter Automation testing Manual testing


Definition A u t o m a t i o n t e s t i n g u s e s Manual testing the test cases
automation tools to execute test are executed by human tester

ve
cases. and software.
Processing time Faster Slower than the automation
testing.
Exploratory testing It does not allow random testing Exploratory testing is possible
in manual testing.
Investment

Cost-effective ni
Investment is required for testing Investment is needed for human
tools as automation engineers. resources.
Not cost-effective for low volume Not cost-effective for high
regression. volume regression.
U
Pros and cons of manual testing

Pros:
●● It is fast and accurate visual feedback
ity

●● It is less expensive
●● People judgment and intuition always benefit the manual testing
●● You could test manually very fast.

Cons:
m

●● Less reliable because it’s conducted by a human.


●● Sometimes It makes errors and defects.
●● The manual testing process can’t be recorded, so it is not possible to reuse
the manual test.
)A

●● Tasks are difficult to perform manually. It may require additional time for the
software testing phase.

Pros and Cons of automated testing:

Pros:
(c

●● Automated testing helps you find more defects.


●● Speedy and efficient process

Amity Directorate of Distance & Online Education


120 Software Engineering and Modeling

●● The automation process can be recorded. We can reuse and implement the
Notes same kind of testing operations

ity
●● Automated testing is conducted using software tools.
●● It provides fast & accurate testing result

Cons:
●● Without the human element, it’s difficult to like colors, font, sizes, contrast, or

rs
button sizes.
●● It can be expensive.
●● It has its limitations which reduces the scope of automation.
●● Test maintenance is costly.

ve
ni
U
ity

Figure: Non-technical skills of a software testing


m
)A
(c

Figure: technical skills of a software testing

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 121

Software Testing with their 7 principles:


Notes

ity
To make our product bug-free, we must obey some essential principles when
testing any application. It also aids the research engineers in their effort and time spent
testing the application. We will learn some fundamental principles here:

1. With the help of software testing, we can check the bugs.


2. Defect clustering

rs
3. Pesticide paradox
4. Testing in an early stage
5. Exhaustive testing is not possible
6. Context-dependent

ve
7. Absence of errors fallacy

Academic Background
A computer science degree is required for software testers.

ni
Bachelor in Technology / B.E., MCA, BCA, BSc- Computers, MCA, BCA, BSc-
Computers, MCA, BCA, BSc- Computers, MCA, BCA, BSc- Computers, MCA, BCA,
BSc- Computers, MCA

If you don’t have one of these degrees, you’ll need to get a software testing
U
qualification, such as the ISTQB or CSTE, to learn and improve the Software
Development/ Test Life Cycle and other testing methodologies.

Remuneration
A software tester’s salary varies from company to company and place to location.
ity

A software tester’s average salary in India is between Rupees 247,315 and Rupees
449,111.

What Does a Software Tester do?


She/he is familiar with:
m

●● requirement papers,
●● test case formation, and
●● running test cases
●● bug reporting and re-testing
)A

●● participating in evaluation sessions.

Software Tester Career Path


The career of a software tester is:

●● QA Analyst (Fresher)
(c

●● Sr. QA Analyst (2-3 years’ experience)


●● QA Team Coordinator (5-6 years’ experience)

Amity Directorate of Distance & Online Education


122 Software Engineering and Modeling

●● Test Manager (8-11 years’ experience)


Notes ●● Senior Test Manager (14+ experience)

ity
Certification Exams
In the field of testing, the ISTQB Foundation certification is required. You can also
get trained with your favorite testing tool.

It is not critical, but it will improve the chances of landing a full-time job. The

rs
majority of businesses have a set of requirements.

A software tester who has passed the ISTQB exam will be given higher priority
than others.

Then, when you apply for permanent positions in product-based businesses or

ve
large organizations, you’ll have a leg up on the market.

4.2 Level of Testing


There are 4 levels of testing:

1.
2.
3.
Unit testing
Integration testing
System testing ni
U
4. Acceptance testing
Early testing is beneficial to app developers. The fault of a system can be identified
by developers’ alertness through a systematic approach to testing, saving money and
time.
ity

Finding software bugs early on is preferable to discovering them after the product
has been launched.
m
)A
(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 123

Details of all level


Notes

ity
1. Unit testing:
It is the most fundamental form of research. Component testing is another name
for it. It uses integration to verify each portion of the program and then testing to
connect each requirement to the desired functionality. This research is done at the very
beginning of the process. Before handing the program over to the testing team, it is
regularly reviewed by the developers themselves. It lowers the risks while also saving

rs
time and resources.

It concentrates verification efforts on the software part or module, which is the


smallest unit of software design.

ve
Unit testing is a form of software testing in which individual software units or
components are evaluated.

Unit testing aims to ensure that each component of the software code works as
intended by the user. Developers/engineers conduct unit testing during the coding
process of an application.

production phase. It lets you save money and time.


ni
Unit checks to aid in the early detection and correction of errors during the

A unit is the smallest testable component of the software system or program. As a


result, the purpose of this testing level is to analyze each unit of a software system to
U
ensure that it meets the original specifications and performs as anticipated by clients.
Unit testing is often conducted by the engineers themselves, rather than by the testing
team, at a very early point in the development process.

Advantage of Unit Testing:


ity

●● Developers learn the functionality provided by a unit and how to use it.
●● It makes sure that the module still works correctly.
●● The procedure is to write test cases for all functions.
●● In unit testing, we can test parts of the project without waiting for others to be
completed.
m

Disadvantages of Unit testing:


●● It is not possible to evaluate all execution paths even in the most minor
programs
)A

●● It can’t catch integration defects


(c

Amity Directorate of Distance & Online Education


124 Software Engineering and Modeling

2. Integration testing:
Notes

ity
It evaluates the system’s various phases. The system’s functionality can be
checked in several ways. It can be achieved from the bottom up or from the top down.
Bottom-up integration testing is based on unit testing which includes testing a wider
group of modules. Try the technique first before starting to test in a top-down manner.

It is a method of testing in which software modules are logically combined and


evaluated as a group. Many modules are made up of multiple software modules written

rs
by various programmers. This testing aims to find flaws in the way software modules
work when they’re combined. It’s also known as string or thread checking.

The integration testing level’s main goal is to see whether the merged units
work well together as a team. Integration testing is used to find errors in a module’s

ve
interactions between units.

ni
U
Figure: integration testing approach
ity

Bottom-up and top-down techniques are the two primary approaches to this testing.

The complexity of the software modules under evaluation rises as a result of


bottom-up integration testing.

The top-down method examines high-level combinations first, before moving on to


basic ones.
m

Advantages of integration testing:


●● It is suitable for small systems.

Disadvantages of integration testing:


)A

●● In integration testing fault Localization is difficult.


●● The testing team has less time for execution in the testing phase.

3. System testing:
Device testing is the next phase of testing. All of the functions are checked to
(c

ensure that the product meets the end-needs. user’s

Checking is an extremely important move. This staging method is ready to ship, so


it’s being tested in a setting that’s close to where the project will be delivered. It ensures

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 125

that customer expectations are met and that operations run smoothly in any setting.
This testing is carried out by a high-profile team that has gained expertise in this area Notes

ity
as part of a testing team.

It’s a form of testing that confirms the software’s overall functionality and
integration. A device test is used to estimate the system’s end-to-end efficiency. Other
software or hardware devices are interfaced with the software. System testing is a set
of tests designed to verify the functionality of a computer system as a whole.

rs
A complete software framework is tested as a full box in system testing. This step
compares the complexity of the product to the functional and technical specifications,
as well as overall quality standards. A highly experienced testing team verifies system
testing.

ve
This is also known as End to End testing.It Verifies by the testing of every problem
in the application to check for the user’s desired result.

It has seven types they are as follows:

1) Usability testing
2)
3)
4)
Load testing
Regression testing
Recovery testing ni
U
5) Migration testing
6) Functional testing
7) Hardware/software testing

4. Acceptance testing:
ity

This is the final stage of the research process. It is the method of supplying a
commodity to a consumer. This testing ensures that the device is bug-free and meets
all of the specifications. It is now ready for use. To validate the submission, the method
tester uses a range of tools. In this stage, the tester uses the tools to find a variety
of ways to enhance the method. These tests aim to find spelling errors and frontend
m

errors, as well as to demonstrate a bug that may be the application’s key flaw.

When these test programs are mounted on the user’s device, they perform
extremely well.

The product is tested to the end-user specifications and for consistency at this
)A

level of the testing process. The final stage assists members of a team in deciding
whether or not the product is ready to ship. This testing level focuses on whole system
efficiency, from content and UI to performance defects, and small-to-medium defects
should be identified and corrected earlier in the process. Following the acceptance
point, alpha and beta testing may be used to encourage a small group of end-users to
try out the program before it is officially released in an environment.
(c

There is a logical sequence that must be followed to reduce the probability of


errors just before the launch. During the development process, all software engineers
and testers must follow these steps. The majority of people are aware that acceptance
testing is completed within the first six months of the development process. Acceptance
Amity Directorate of Distance & Online Education
126 Software Engineering and Modeling

checking, on the other hand, can be completed in 2-3 weeks as part of the sprint demo
Notes in the agile strategy.

ity
4.3 Characteristics of Software Testing
Technology is now used in every aspect of growth. Real estate has its own set of
software and automation standards, ranging from mutual funds to startups. In today’s
world, a successful software tester is someone who enjoys testing. There are several

rs
software testing positions available on the market that pay well. So, in this section,
you’ll learn about some of the qualities that a tester must possess.

The demand for software testers is growing in every company. They are the
backbone of the organization because they are responsible for ensuring the project or

ve
application’s quality. As a result, you must determine what the best quality of a software
tester is for testing an application/product.

ni
U
ity

Testing is the process of finding and resolving technical problems in software


source code, as well as evaluating the overall usability, functionality, security, and
compatibility of a product. It is carried out by test engineers either simultaneously with
the development process or as part of a dedicated testing period.
m

The following are the fundamental concepts of software testing:

a. Testing reveals the existence of code errors.


b. The fallacy of the absence of error
)A

c. Research is context-dependent.
d. Clustering of defects
e. It’s hard to measure so much.
●● According to the IEEE standard for software test documentation, a test plan
document should contain the following step:
(c

●● Test plan identifier


●● Introduction
●● References (list of related documents)

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 127

●● Test items (the product and its versions)


●● Features to be tested Notes

ity
●● Features not to be tested
●● Item pass or fail criteria
●● Test approach (testing levels, types, techniques)
●● Suspension criteria

rs
●● Deliverables (Test Plan (this document itself), Test Cases, Test Scripts, Defect/
Enhancement Logs, Test Reports)
●● Test environment (hardware, software, tools)
●● Estimates

ve
●● Schedule
●● Staffing and training needs
●● Responsibilities
●● Risks
●● Assumptions and Dependencies
●● Approvals

ni
Here, in this topic you are going to know some basic qualities that must software
tester know:
U
1. Creative mind:
●● Software tester must think about what is expected of the users.
●● They must have a mind to think about how users can do any task.
ity

2. Analytical skills:

●● This skill is when the situation comes to know the client’s feedback while the
test strategy.
●● It helps to build smart testing solutions.
●● This skill also helps to test and analyze them for the particular behavior of the
product or application.
m

3. Good listener:

●● It is the quality a tester should have to listen to.


)A

●● They must know the way of improvement in the application.


●● They must listen to everyone if someone is giving ideas.

4. Curiosity:

●● This skill is very critical to determine the area of a problem where no one can
find it.
(c

5. Passionate:

●● A good tester is passionate about their work.

Amity Directorate of Distance & Online Education


128 Software Engineering and Modeling

●● Must provide the suggestions to make the product more efficient.


Notes ●● Testers are regular also reach to higher profile to become a project manager.

ity
6. Domain knowledge:

●● Good software must know the application domain.


●● They have to give time to the terminology of the specific domain.

rs
7. Quick learner:

●● A tester has a proper skill of quick learning with technology.


●● They must know the updated tools.
●● Uses the latest techniques while testing.

ve
8. Testing knowledge:

●● They must have a piece of technical knowledge to determine the test which
applies to the modules
●● To choose appropriate automation tools and the latest tools that take less time

9. Good organizer:

●●
ni
to save effort and time.

A good tester must have the ability to identify and organize main tests and
U
execution time.
●● Consider the good past.

10. Client-oriented:

●● Makes the client happy


ity

●● May know the use of their testing skills to fulfill the client’s needs while
delivering the project.

11. Communication skills:

●● They are at communication


m

●● They must know how to talk with people.


●● They can convey their details to the team

12. Business 0riented:


)A

●● Ability to understand the project from a business point of view.


●● Understand the client’s requirements.
●● Understand the people
●● Know the business issues can be solved by technical tools.

13. Good observer:


(c

●● Keep tracking of project items being discussed in a meeting.


●● Observe the changes and stay in touch with the project.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 129

●● Making important implementation in the project.


●● It is very crucial.
Notes

ity
14. Time management:

●● Time management for testing


●● Know their priorities.
●● Management of the time

rs
●● Must be able to answer every question to help the manager to make the
decisions.

15. Perseverance:

ve
●● A good tester never gives up in any situation.
●● They must have the patience to find the bugs.
●● Can make the improvements.
●● Takes all the challenges

ni
●● And solve the complexity positively and patiently.

16. Ability to work in a team:

●● Good software must have the capability to work and learn inside as well as
outside the team.
U
●● Must have the ability to exchange ideas, and gain experience to boost the
quality and the efficiency of the solution.
●● Can coordinate well therewith team members and another team member as
well.
ity

An approach and testing type used to certify that the Application Under Scrutiny
meets client and end-user needs is known as Software Testing Methodology. Functional
and non-functional research are used in these methodologies for validating the AUT.

Unit testing, integration testing, system testing, performance testing, and other
software testing methodologies are examples. The test goal, test plan, and deliverables
are all different with each testing technique.
m

4.4 Black-Box Testing and White-Box Testing


Software testing has several types of testing and as a software tester, they must
)A

know the performance of every approach:

The main type of testing is Black Box Vs White box testing.


(c

Amity Directorate of Distance & Online Education


130 Software Engineering and Modeling

Black box testing


Notes

ity
Black-box testing is described by the ISTQB as testing an application under test
(AUT) without referencing the internal structure. The program will be checked as if it
were a black box.

Testing in a black box Technique: It is used to generate test cases based on the
software’s purpose rather than the system’s structure. Specification-based research is
another term for it.

rs
This black box-checking is used to check the AUT’s functionality. It takes the inputs
and outputs them.

Black Box Testing is a software testing approach that involves testing software
applications’ functionalities without understanding the internal programming language,

ve
implementation specifics, or internal paths. It focuses primarily on the input and
performance of software applications and goods. Behavioral Testing is another name
for it.

The name of this testing stage comes from the fact that a QA engineer will
concentrate on the problem and the predicted outcome without understanding how the

ni
program operates internally or how these inputs are handled in software.

Black-box testing is a form of software testing that determines an application’s


or product’s functionality without delving into its internal structures or workings.
This test method can be used at all levels of software testing, including device,
U
integration, framework, and acceptance. The main aim of this approach is to test the
software application’s functionality to ensure that it performs correctly and meets user
requirements. This approach can be used at any stage of testing. It’s mostly used in
device and user adoption testing.
ity

Advantages of black-box testing


●● The main advantage is it is done from a client’s point of view and will help in
exposing discrepancies in the specifications.
●● Software Tester doesn’t know the programming languages or how the
software has been implemented.
m

●● It can be held by a body independent from the developers, which is allowing


for an objective perspective and the avoidance of developer-bias.
●● It can be designed as soon as the specifications are completefor the user.
)A

Disadvantages of black-box testing:


●● Only a minimum number of possible inputs can be tested.
●● Many program paths will untested.
●● Without clear specifications, the test cases are difficult to design.
●● Sometimes tests are unnecessary if the software designer/developer has
already run a test case.
(c

Example: Television= as a user we watch the TV only we don’t need to know how
the TV work or built, etc. we have to only operate the remote control to change the

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 131

channel. Increase or decrease the volume, etc. the TV is your AUT and the remote
control Is the user interface (UI) that you use to make the changes. Notes

ity
rs
White Box Testing
White box testing is described by the ISTQB as “testing an application in terms of
the internal structure of the software component.”

It is a method for selecting test cases based on a system’s internal modules.

ve
Clear-box testing, code-based testing, glass-box testing, structural testing,
structured-based technique testing, and other terms have been used to describe it.

Its key component, black-box research, involves testing from an external or client-
side perspective. White box inspection, on the other hand, is focused on the inner

ni
workings of an application in software engineering.

The tester uses white-box testing to provide inputs for processing paths through
the programming language and determining correct outputs. Programming skills and
knowledge of how to put them into practice are important. The word “white box testing”
U
refers to testing that goes beyond the user interface. Since the tester’s eyes are a
white/transparent box in a colour; inside of which we can see clearly, this approach is
called white box testing.

White Box Testing is a software testing methodology in which the software’s


internal structure, architecture, and coding are analyzed to validate the input-output flow
ity

and improve design, usability, and security.

Simple box testing, Open box testing, transparent box testing, Code-based testing,
and Glass box testing are all terminology used to characterize this form of testing.

It’s used to put the software’s implementation to the test. A developer should be
familiar with the application’s internal structure and functionality. White-box testing is
m

also known as structural testing or glass-box testing. It’s a test-case design theory that
employs a controlled framework to derive test cases. Consider the following scenario:
To fix a car engine, a mechanic must be familiar with its internal components.

The AUT is the car. The black-box tester is the customer. The white box tester is
)A

the mechanic.
(c

Amity Directorate of Distance & Online Education


132 Software Engineering and Modeling

Using white-box testing techniques, you can build test cases that ensure that all
Notes non-dependent routes have been checked at least once and that all rational decisions

ity
have been taken on their sides. All loops are executed from their boundaries, and then
internal data structures are exercised to ensure their validity. The unit and integration
testing stages are where this approach is most widely used.

This testing necessitates a detailed understanding of the programming language.


As a result, this type of testing is typically performed by software developers who are

rs
specifically interested in writing programming languages. The main goal of white-
box testing is to improve the design and usability of the program while also adding
protection and ensuring the safety of the problem/result.

What you verify in white box testing?

ve
●● In white-box; testing, we verify the Internal security holes
●● In white-box testing, we verify the Broken or damaged structured paths in the
coding processes
●● In white-box testing, we verify the flow of specific inputs through the code
●● Expected user output
●●
●●
ni
The functionality of conditional loops
Testing of each statement, object on an individual.

How do you perform white box testing?


U
●● First, we have to understand the source code
●● The second step involves to create and execute the test cases

White Box Testing Tools:


ity

●● ParasoftJtest
●● EclEmma
●● NUnit
●● PyUnit
●● HTMLUnit
m

●● CppUnit

Advantages of White Box Testing:

●● In white-box testing code optimization by finding hidden errors.


)A

●● It can be easily automated.


●● Testing is fast.
●● The main advantage is testing can begin early in SDLC even if GUI is not
available.

Disadvantages of White Box Testing:


(c

●● It is quite complex and expensive.


●● White box, testing requires professional resources, with a detailed
understanding of programming and implementation.
Amity Directorate of Distance & Online Education
Software Engineering and Modeling 133

●● White-box testing is time-consuming


●● It has bigger programming applications that take the time to test the whole
Notes

ity
code.

rs
Difference between black box testing and white box testing:

Block box test White-box testing

ve
It tests the behavior of the application It tests the infrastructure of the application
It is done by a tester without any coding The tester should knowthe internal structure
knowledge and its working.
It can be done by using GUI. It is done at a very early stage before the
GUI gets ready.

testers.
design document.

ni
Test cases are written based on Test cases are written based ona detailed
requirement specifications.
This is done by professional software This is done by professional software
developers
U
Knowledge of programming and K n o w l e d g e o f p r o g r a m m i n g a n d
implementation is not required implementation is required.
Tester focuses mainly on how the The tester/developer’s focus is to check the
application is working. path is working or not.
ity

4.5 Alpha, Beta, and Gamma testing

Alpha testing
The in-house developers perform usability testing as part of Alpha testing.
The client or end-users can perform alpha testing on occasion. Almost all of our
m

work is done in alpha mode. The alpha testing process concludes with a feature
freeze, meaning that no new functionality can be added to the program at this point.
A representative community of end-users evaluates the developer’s premises. The
program is used in a natural environment, with the developer “looking over the
shoulders” of the users and catching errors. It takes place in a regulated environment.
)A

Alpha testing is a form of software testing that aids in the detection of errors before
the release of a software application or product to the public. It falls under the category
of acceptance assessment. The primary aim of filter alpha testing is to develop the
software application/product by detecting and repairing flaws.

During the alpha process, the tester is in charge of this. It consists of:
(c

●● smoke testing,
●● integration testing,
●● system testing,
Amity Directorate of Distance & Online Education
134 Software Engineering and Modeling

●● UI and usability testing,


Notes ●● functional testing,

ity
●● testing,
●● performance testing
●● regression testing
●● sanity testing and

rs
●● acceptance testing.

ve
Advantages of alpha testing:
●● alpha testing provides a better view of the software at a very early stage.
●● Helps to replicate the real-time user behavior and environment.
●●
●●

ni
Detect many serious errors
It can provide detection in an initial stage concerning design and functionality.

Disadvantages of alpha testing:


U
●● The main disadvantage of alpha testing is depth and functionality cannot be
tested as the software is still under the development stage.
●● Second. The disadvantage is sometimes developers and software testers are
not satisfied with the results of alpha testing
ity

Beta testing:
Many end-users participate in beta testing before a product is released. If there is
an error, it is patched with the help of customer reviews.

Beta testing is carried out in the “real world” by “real users” of the software
application. It can be thought of as an external method of User Acceptance Testing.
m

It is the final review before a product is delivered to customers. The key benefit of
beta testing is that it enables consumers to have direct input. It aids in the testing of
applications/products in the context of the customer’s environment.

One or more end-user sites are used for beta testing. Unlike alpha testing, the
)A

developer is not required to participate. As a consequence, the beta test is a “live”


application of the program in an area that the developer cannot monitor. The client
keeps track of all issues that arise during beta testing and reports them to the developer
regularly. As a result, you make improvements and plan for the software product’s
release to meet the needs of the entire consumer base.

Pre-release research is another name for it. It now has so many versions and is
(c

distributed to so many people on the internet, partly to give the software a “real-world”
test and partly to give a sneak peek at the next update.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 135

It is mainly used to gather feedback from various users and to compare the
feedback across various networks and hardware. Notes

ity
Beta research can be divided into two categories:
1. Open beta: this is done for a wide number of people or someone interested.
2. Closed beta: it is only open to a limited number of people who have been hand-
picked for beta testing.

rs
Types of beta testing:
●● Traditional beta testing
●● Public beta testing

ve
●● Technical beta testing
●● Technical beta testing
●● Post-release beta testing

Phases of testing:

ni
U
Advantages of beta testing:
●● Beta testing reduces the product failure risk.
●● It allows a company to test post-launch infrastructure.
●● Beta testing upgrades the product quality based on client requirements.
ity

●● Cost-effective compared to similar data gathering methods.


●● Creates goodwill with customers and also increases customer satisfaction.

Disadvantages of beta testing:


●● The disadvantage of beta testing is the test Management
●● Beta testing is implemented out in the real world where you rarely have
m

control.
●● It is very challenging to find the right beta users and maintaining their
participation.
)A

Gamma testing
When the program is ready for deployment and meets all of the specifications,
gamma testing is performed. The program is complete and ready for distribution.

This check is done without going through any of the testing activities at home, and
the application is ready to launch to the defined specifications.
(c

It is the third stage of the testing process. for the sake of protection.

Amity Directorate of Distance & Online Education


136 Software Engineering and Modeling

Notes

ity
These are the 3 levels of software testing. alpha, beta, and gamma. They
performed one after another, and together ensure a release of high-quality software.

rs
ve
Phases of testing
ni
The software development life cycle also consists of the pre-alpha stage for some
U
activities done before the testing phase. They are:

●● Analysis of project requirements


●● Testing
●● Test plan
ity

●● Test cases
●● Execution
m

Activity
)A

1. What are the testing activities with an example?


2. Describe the role of software testing?
3. Explain all software testing principles.
4. What are the phases involved in the software testing life cycle?
(c

5. What is the difference between functional and non-functional testing?


6. What are the different levels of testing?

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 137

7. What is the difference between the Software testing life cycle (STLC) and the
software development life cycle (SDLC)? Notes

ity
8. What are verification and validation?
9. How will you conduct Risk Analysis?
10. Explain what is testing types. What are the commonly used testing type?
11. What are some common mistakes which create issues?

rs
12. What is the Data flow diagram (DFD)?
13. What is the difference between a “defect” and a “failure” in software testing?
14. Is software testing being important for and software? If “yes” then write the whole
process of software development. If “no” then express your thought.

ve
15. What is “use-case” testing?
16. What is white box testing? and write the types of software testing?
17. What are verification and validation?
18. What are the different test levels of testing?

20. What are the common mistakes which create issues?


21. What is the data flow diagram?
ni
19. What are the common risks that lead to project failure?
U
22. Mention the difference between defects and failure.
23. What is bottom-up testing?
24. Why we use a decision table?
ity

25. Explain the waterfall model and its advantages.

Exercise:
Check Your Understanding:

1. Which sentence u=is used to find errors?


a. Evaluating deliverable to find errors
m

b. Finding broken code


c. The phase of any application development
d. None of the above
)A

2. Which of the following is not a valid phase of SDLC?


a. Testing phase
b. Requirement phase
c. Deployment phase
(c

d. Testing phase
3. What does Functional testing mean?
a. Test design

Amity Directorate of Distance & Online Education


138 Software Engineering and Modeling

b. SDLC model
Notes

ity
c. Test level
d. Test type
4. What are the different levels of testing?
a. Integration testing
b. Unit testing

rs
c. system testing
d. All of the above
5. White box testing techniques areknown as ?

ve
a. Statement coverage testing
b. Decision coverage testing
c. Data flow testing
d. All of the above
6.
a.
b.
ni
Does the client get a 100% bug-free product?
The product is under construction
The testing team is not good
U
c. Developers are super
d. All of the above
7. Which testing technique is used for usability testing?
a. Black box testing
ity

b. White-box testing
c. All (a) and (b)
d. None of the above
8. Under which environment, we can perform the beta testing?
m

a. Users end
b. Developers end
c. Stakeholder end
)A

d. None of the above


9. Whichtesting is used to check the code?
a. Grey box
b. Black box
c. White box
(c

d. All of the above


10. Which of the following technique relates to the decision table testing?
a. White box test design technique
Amity Directorate of Distance & Online Education
Software Engineering and Modeling 139

b. Black-box test design technique


Notes

ity
c. Grey box test design technique
d. All of the above
11. How many types of software testing exist?
a. 1
b. 2

rs
c. 3
d. 4
12. When would the testing have been stopped?

ve
a. When all the tests run
b. The fault has been fixed
c. When the time completed
d. When all the risk is resolved

b.
SQA
SQM
ni
13. What is Quality management in software engineering is also known as?
a.
U
c. SQA and SQM
d. None of the above
14. Who checks, documents, and verifies all documents to be made in the software?
a. Project team
ity

b. Stakeholders
c. SQA group
d. All of the mentioned
15. Which one of the following model is a waterfall model?
m

a. linear
b. iterative
c. rapid
)A

d. interactive

16. Which of the following failure happens due to [Kiran] one fault?
a. one, two, many

b. zero

c. both (a) and (b)


(c

d. none of the above

Amity Directorate of Distance & Online Education


140 Software Engineering and Modeling

Answer keys (Exercise):


Notes

ity
1. A
2. D
3. D
4. D
5. D

rs
6. B
7. A
8. A

ve
9. C
10. B
11. B
12. D
13. A
14. C
15. A
ni
U
16. A
ity
m
)A
(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 141

Module-5: Software Project Planning and Management


Notes

ity
Unit Outcomes:
At the end of this unit, you will be able to:

1. Apply standard coding practice in developing of software project

rs
Introduction
The whole method of programming from the client’s requirement to test, help, and
complete the procedure at a specific time is known as software project planning. Project
management is a collection of procedures for managing various stages of an object to

ve
assist managers in achieving specific objectives by carefully planning, overseeing, and
implementing the project.

Software development is the stage during which all new software in the world’s
business is created, with little to no intervention in structure programming. The majority
of programming products are upgraded to meet the needs of customers.

ni
A software project manager is in charge of organizing and scheduling the
construction of a project. Their job is to handle the client’s entire set of specifications.
They keep track of the project’s progress and ensure that it is completed on schedule
and budget. The major concerns such as scale, consistency, and cost estimate
U
scheduling, project control, staff selection assessment, and risk management must all
be included in the project planning.

To plan a good software project, we need to know a few pointers:

●● Scope of work to be completed


ity

●● Risk analysis of the project


●● The important resources
●● The project to be accomplished
●● Record of being followed by the team

5.1 Software Project Planning


m

Before beginning the project, it is essential to complete a task and control the task
allocation in software development. Planning is so critical that it affects the software
development process.
)A

It focuses on the activities that are needed for effective software development. The
lack of preparation results in challenges that bring the project to a halt.

Plan preparation also assists in improved resource allocation and the most
effective use of a project’s allotted time.

●● Project preparation is also responsible for the team’s project management.


(c

●● It functions following company objectives.


●● It discusses the timetable as well as the needs of the consumers.
A large number of individuals assist the team in moving forward with project

Amity Directorate of Distance & Online Education


142 Software Engineering and Modeling

preparation. Senior management and the project management committee are in charge
Notes of these. Management is responsible for introducing their team members and supplying

ity
all of the project’s support. The project’s activities must be planned, determined, and
tracked by all team members.

rs
ve
Tasks of senior management involved in a software project:

ni
●● Approve the project
●● Provide resources for the project
●● Rate the project plan to ensure that it accomplishes the business objectives.
●● Resolve the issues
U
●● List the risk that may occur at the development time.

Tasks of the Project management team involved in a software project:

●● Review the project plan and implements the process to complete the cycle.
ity

●● Manage all the activities.


●● Manage the budgets
●● Helps in distributing resources
●● Project management
●● Analyze the time and effort to achieve the expected results.
m

●● Selects the important tools for the project.

Effective project planning helps to minimize the effort and costs.

Some important basic principlesthat must be followed are listed below:


)A

●● Planning is a must: planning is done before the project starts for making the
project. All the things must be clear.
●● Risk analysis: Senior management and project management team should
consider all the risks that can occur during the project development. The
budget should be cleared in this planning stage.
●● Tracking of a project plan:The project should be always tracked by the team
(c

member.
●● Meet quality up to the mark:Based on the project planning ensure that the
quality, time, and cost for the project.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 143

Purpose of the project


Notes

ity
The software project plan has some purpose, which is in various categories, that
are project objectives and business objectives.

The main project objectives are listed below:

●● Meet user requirements


●● Meet deadline

rs
●● Budget-friendly
●● Produce quality deliverables

The main business objectives are listed below:

ve
●● Evaluate the processes
●● Project scheduled and up to date
●● Policies and processes
●● Improve the software

Scope of the project

ni
The project’s reach is decided by the project management team. It outlines the
software’s roles, functionality, limitations, and user interface that must be considered.
U
The project scope also takes into account the project’s success, which is determined by
the processor’s processing capabilities and the time it takes to generate the output.

Once this is established, it is critical to comprehend how to design software


following the client’s requirements. The budget needs to be fixed.
ity

It explains the situation:

●● The main elements of the project


●● The entities which are required
●● The main functions are required in software.
Maintain constant contact between the project management team and the senior
m

management team. As a result, all team members are aware of the user requirements
and are developing applications following them.

Project planning process


)A

It involves a set of activities to implement the user requirements in software and the
activity of individuals for performing.

There is some addition:

●● Objectives of the project


●● Scope of the project
(c

●● The effort of individual members


●● Resources required for the project
●● Risk factors
Amity Directorate of Distance & Online Education
144 Software Engineering and Modeling

Notes

ity
rs
ve
ni
U
ity

5.2 Software Metrics


It is critical to assess the project’s and processes’ quality, expense, and impact. A
project cannot be completed successfully unless these are measured.
m

The word “software metrics” refers to a quantitative indicator that can be used to
estimate the progress and efficiency of a software testing project. It’s a level at which
a device or process has some activities. A project team collects all data, which is then
translated into metrics for usage. A project may also be assigned to those in charge of
)A

developing software processes. The same metrics are often used in the method and
project domains.

Software metrics are objective indicators of the software testing process’s


development, efficiency, effectiveness, and overall health.

The main aim of software metrics is to improve software testing performance and
efficacy, as well as to assist in making informed decisions for the next testing process,
(c

by providing reliable data about the testing process.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 145

A metric describes the degree to which a system/product, system part, or process


acts as data that is given in quantitative terms. A weekly mileage of a car relative to Notes

ity
its ideal mileage recommended by the manufacturer is an example of metrics to
understand.

A software metric is a quantifiable indicator of software characteristics. Software


metrics are important for a variety of purposes, including evaluating software efficiency,
planning work items, determining product productivity, and many other applications.

rs
The aim of monitoring and evaluating software metrics is to assess the product’s
quality and functionality; it also aids in quality management and forecasting once the
software development project is completed.

software development managers are trying to:

ve
●● Increase return on investment
●● Identify areas of improvement
●● Manage workloads of the project
●● Reduce overtime and save the efforts
●● Reduce costs and complete the task on a budget.

ni
U
ity
m

Figure: determinants for software quality and organizational effectiveness

All three variables that have a significant impact on software quality and
)A

organizational efficiency are linked in a triangle. People’s motivation has become


a more important factor in quality and success. The product’s complexity can have a
significant effect on quality. Technology, such as software engineering methods and
tools, assist in the project’s growth and effects.

A circle of atmosphere surrounds the process triangle, which involves the


production environment, market conditions, and consumer characteristics.
(c

If a company aims to improve the overall process efficiency, software process


metrics provide various advantages. Grady recommends a “software metrics etiquette”

Amity Directorate of Distance & Online Education


146 Software Engineering and Modeling

for administrators and clinicians to adopt while implementing a process metrics


Notes program:

ity
●● It offers input to the teams and person to person who gathers the information, and
it must use common sense and organizational sensitivity.
●● Don should not evaluate anyone using metrics.
●● Collaborate with clinicians and team members to develop specific priorities and
indicators that will help us accomplish our target.

rs
●● Don’t use metrics to bully people or teams.
●● It identifies areas of risk that should not be regarded as “bad.”
●● Don’t depend only on one single metric to the exclusion of other important metrics.

ve
●● The set of process metrics becomes more comfortable for the company. In
essence, statistical software process improvement (SSPI) employs a software
failure analysis to gather data on all errors and defects in a developed and used
system or product.
●● Metrics for software testing are relevant for a variety of reasons.
●●
●●
●●
ni
It assists you in deciding on the next move.
It contains all of the results.
It contains the type of enhancement that is needed.
U
●● It supports the decision-making process.

Types of software testing metrics


ity

In the software development life cycle, process measurements are used to


increase the performance of the operation. It is a compilation of all projects over
a long period. This results in a series of process metrics that contribute to long-term
m

improvements in software processes.

Product metricsare used to know all the quality of the software product.

Project measurements are used to assess the effectiveness of a group of people


)A

who are using resources to work on a project. It allows a software project manager to
evaluate a project’s progress. Monitors the project, identifies issues and risks, adjusts
work or assignments, and assesses the project team’s ability to monitor the quality of
software work items.
(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 147

The life cycle of software testing metrics:


Notes

ity
rs
ve
The analysis is for the identification of metrics

Communicate helps to explain the requirements of metrics to the team.

Evaluation helps in identifying the data.

ni
Reports help to develop the report. It is viral in between stakeholders, developers,
and the testing team.
U
Scope
Software metrics have some activities which include the following −

●● Cost and effort estimation


ity

●● Productivity measures and model


●● Data collection
●● Quantity models and measures
●● Reliability models
●● Performance and evaluation models
m

●● Structural and complexity metrics


●● Capability – maturity assessment
●● Management by metrics
●● Evaluation of methods and tools
)A

Method to calculate test metrics:


1. Identify the main key of software testing processes
2. Data use to define the metrics
3. The information followed, track the information
(c

4. The calculation, management of the metrics


5. Areas to be improved on the given metrics.

Amity Directorate of Distance & Online Education


148 Software Engineering and Modeling

5.3 Cost and Size Metrics- FP & COCOMO.


Notes

ity
The most important product metric is its size. Size can be expressed in terms of the
LOC, several classes of several bytes of source code. LOC is the most popular metric.
Software is measured for some reasons:

●● To check the quality of the software


●● To assess the productivity of the people.

rs
●● To check the estimated time of the product
●● The needs of tools and stakeholders training.
●● Advantages and disadvantages of the new tools and new methods.
LOC has long been a common and straightforward method of calculating software

ve
metrics. These are the metrics that are obtained by normalizing quality and efficiency
measurements and treating the product’s cost and size as a metric. There are a few key
points to consider when it comes to cost and size metrics:

●● In size-oriented metrics, it is said to be a normalization value.


●● It is developed by FORTRAN and COBOL programming.
●●
●●
●●
It is a very old model.

ni
In this, the effort applied is measured in person-months.
It is depending on the programming language which is used.
U
●● As its productivity is defined as KLOC, so assembly language code will
produce more productivity.
●● These metrics are not universally accepted.
Based on the LOC/KLOC number of software, many other metrics can be
calculated:
ity

●● Errors
●● $
●● Defects
●● Pages of documentation
●● Productivity
m

Advantages
●● Proponents of LOC measure give a LOC in an artifact of all software development
projects that can easily be done by project development.
)A

●● C programming language will take lesser LOC as compared to the assembly


language program for any task.
For example, a bubble sort program in C language will take a lesser number of
LOC as compared to a COBOL program of bubble sort.

Functional point Metrics


(c

In 1977, IBM’s A.J. Albrecht devised a system of software metrics focused on


the functionality of software distribution and a normalization value of an application.
Function-oriented metrics are another name for it.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 149

FP is used to measure the system’s functionality, or whether the system operates.


It’s a straightforward approach for calculating FPs that can’t be calculated directly. A Notes

ity
functional point is a set of software characteristics rather than a single characteristic.
An international functional point user group (IFPUG) was founded in 1986 to take on the
task of designing the rules.

IFPUG currently has over 3000 members and affiliates in 24 nations. There are
various variations, such as backfires FP, COSMIC FPs, function stage, Netherlands

rs
FPs, and so on. There are a few things to keep in mind:

1. FP’s application is counting the number and types of functions used in the many
applications. There is the application where different types of the function used:

Table 1.1 Types of FP Attributes

ve
Measurement Parameter Examples
1. Number of external inputs (EI) Input screens and tables
2. Number of external outputs Output screens and reports
3. Number of external inquiries Prompts and interrupts.

4.
5.
(EQ)
Number of internal files (ILF)
ni
Databases and directories.
Number of external interfaces Shared databases and shared
U
(EIF) routines.

2. Its characteristics are the complexity of the software system and it is used to know
the project requirements of the project time and the requirements.
3. It is an independent programming language.
ity

4. The above 5 parameters explained above are also known as the information domain.
5. The above 5 parameters are assigned to some given weights that have experiments
which are explained in table 1.2:

Table 1.2 weights of 5-FP Attributes


m

Measurement parameter low Average High


Number of external inputs 7 10 15
Number of external outputs 5 7 10
)A

Number of external inquiries 3 4 6


Number of internal files 4 5 7
Number of external interfaces 3 4 6

The functional complexities are multiplied by the corresponding weights against


each function, and values are then applied to decide the subsystem’s unadjusted
(c

function point. The following table is now shown:

Amity Directorate of Distance & Online Education


150 Software Engineering and Modeling

Table 1.3: Computing FPs


Notes

ity
Measurement parameter Count
Number of external inputs _ * 3 4 6 –

Number of external outputs _ * 4 5 7 –

Number of external inputs _ * 3 4 6 –

Number of internal files _ * 7 10 15 –

rs
Number of external _ * 5 7 10 –
interfaces

Weighting factor is simple

ve
Now, Function point is calculated using formula:

FP= count-total * [0.65 + 0.01 * ∑(Fi)]

= count-total * CAF

CAF = [0.65 + 0.001 * ∑(Fi)]


ni
Now, the count-table is obtained from the above table.

∑(Fi)= sum of all 14 questionnaires and it is the complexity adjustment value/


factor-CAF.
U
Ranges:

i = 1 to 14

∑(Fi)= 0 to 70,
ity

0<= ∑(Fi) <= 70

CAF = 0.65 to 1.35 because

When ∑(Fi) = 0 then CAF = 0.65

When ∑(Fi) = 70 then CAF = 0.65 + (0.01 * 70) = 0.65 + 0.7 = 1.35
m

With the help of FP measurements of software many other metrics can be


calculated that terms are:

●● Errors
)A

●● $/FP
●● efects
●● Pages of documentation
●● Errors
●● Productivity = FP/PM (effort is calculated in person-months).
(c

●● $/Page of documentation.
8. LOC application can be calculated from FPs. This is interconvertible. This process is
known as backfiring. FP = about 100 lines of COBOL code.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 151

9. FP is used for measuring the size of management information system (MIS) software.
Notes

ity
10. The function point obtained using above are unadjusted function point (UFPs).
These subsystems are adjusted by some general system characteristics (GSCs).
GSCs area set of 14 GSCs. The process for adjusting UFPs is as follows:
a. The degree of influence for every 14 GSCs is in between on a scale of 0 to 5.
b. If GSC does not affect, then its weight is 0 and if it affects then its weight is 5.

rs
c. The total value of all 14 GSCs is to calculate the Total Degree of influence (TDI).
d. Then value adjustment factor is calculated from TDI by using the formula:
VAF = (TDI * 0.01) + 0.65

VAF= 0.65 to 1.35 because

ve
When TDI = 0, VAF = 0.65

When TDI = 70, VAF = 1.35

e. FP = VAF * UFP

COCOMO Model:

ni
COCOMO was proposed by Boehm in 1981. (constructive cost estimation model).
It is one of the most widely used estimation models in software. It measures a software
product’s or application’s effort and timeline based on its scale. One of the most
U
commonly used and debated software cost estimation methods in the industry is the
COCOMO model.

Based on the size of the software product/application, the COCOMO calculates


the cost of software product creation in terms of effort and schedule. It calculates the
ity

number of Man-Months (MM) needed to complete the production of software products/


applications.

In short-
●● COCOMO is one of the most commonly used software models in the world,
created by Barry Boehm in 1981 to estimate the time required to produce a
m

software product.
●● COCOMO estimates a software product’s effort and timetable based on the
size of the software, as well as a budget estimate.
●● The complexity of COCOMO is represented by three different models:
)A

simple, intermediate, and information. There are three types of organic mode:
detached, semi-detached, and embedded.

The following are some of the basic steps:


a. Estimate the implementation effort based on the assessment of thousands of
lines of delivered source code (KDLOC).
(c

b. There is a collection of 15 multiplying factors based on project attributes.


c. Next, find out how much effort you’ll need.

Amity Directorate of Distance & Online Education


152 Software Engineering and Modeling

d. Taking the original calculation and multiplying it by all of the multiplying variables.
Notes

ity
e. Multiplying steps a and b is an example.
An equation is used to calculate this. It’s used in static single-variable models, and
its size is determined by KDLOC. We now have the initial attempt, also known as the
nominal estimate (Ei) in person-months.

Ei = a * (KDLOC)b

rs
a and b is a constant value depends on the project type.

Projects are of three types in the COCOMO model:

1. Organic

ve
2. Semidetached
3. Embedded

ni
U
1. Organic: A project in progress is considered organic if it works with any application
software, the team is limited, and the team members are skilled in designing the
same project methods. It refers to tiny, straightforward software projects that are
tailored by a team with deep domain experience and few specifications.
ity

For instance, a small data processing or inventory management system, a simple


business system, a simple inventory management system, and data processing
systems are all examples of small data processing or inventory management systems.

2. Semidetached: If the method has an experienced team, a development project can


be understood with a semidetached form. There may be an experienced member
m

on the team, but there may be some unfamiliar aspects with some of the order’s
resources that are being created. It’s an intermediate project with team members who
have a lot of experience working with rigid and non-rigid criteria (both experienced
and novice resources).
)A

Database design or OS development, for example, or the creation of a new


operating system or a database management system (DBMS)

3. Embedded: if the device is designed in a way that is closely coupled to complex


hardware When considering all sets of software, hardware, and operational, this
project has a high degree of complexity and a broad team size member.
(c

Banking software, traffic light control software, ATMs, and air traffic control are only
a few examples.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 153

Boehm offers various sets of expressions in a unit of the individual month


depending on the size of the estimate in KLOC (kilo line of code) efforts estimation Notes

ity
takes into account efficiency loss due to holidays, weekly off, coffee breaks, and other
variables.

Boehm suggested three stages for estimating software costs:

1. Basic model

rs
2. Intermediate model
3. Detailed model
Basic COCOMO Model:It calculates the exact size of the project parameters. It’s
similar to a static model for quickly estimating software development efforts. It primarily

ve
deals with programming languages, and the precision of the calculation is lower
because we don’t include all software, hardware, and operations that are part of the
project.

The expression for this model is:

ni
Effort = a1 * (KLOC) a2 PM

Tdev = b1 * (efforts)b2 Months

Where,
U
KLOC = size of the software product

A1, a2, b1, b2 = constants for each group of software product

Tv = estimated time to develop the software, expressed in months

Effort = total effort to develop the software product, it is denoting as person-months


ity

(PMs)

Estimation of development effort:

The formula for estimating the development effort based on the code size is shown
below for the 3 classes of software product:
m

Organic: Effort = 2.4 (KLOC) 1.05PM

Semi-detached: Effort = 3.0(KLOC) 1.12 PM

Embedded: Effort = 3.6(KLOC) 1.02 PM


)A

Estimation of development TIME:

The formula for estimating the development time based on the code size is shown
below for the 3 classes of software product:

Organic: Tdev = 2.5(Effort) 0.38 Months


(c

Semi-detached: Tdev = 2.5(Effort) 0.35 Months

Embedded: Tdev = 2.5(Effort) 0.32 Months

Amity Directorate of Distance & Online Education


154 Software Engineering and Modeling

1. Intermediate model: this model considers that the effort is only a function of the
Notes number of lines of code and constant is calculated according to the software system.

ity
It refines the initial estimates obtained through the COCOMO model.
By using a set of 15 cost drivers we use the intermediate model.

Cost drivers and their attributes:

i. Product attributes: it required software reliability, size of the database, hard

rs
product.
ii. Hardware attributes run-time performance constraints, memory constraints, the
volatility of the virtual machine environment.
iii. Personnel attributes analyst capability, software engineering capability,

ve
application experience.
iv. Project attributes: use of software tools, required development schedule.

Intermediate COCOMO equation:

E = ai0l(KLOC) bi * EAF

2.
D = ci(E)di

ni
Detailed COCOMO Model: Every software engineering method employs this model.
For each cost driver land, it employs a different effort multiplier. The entire software
U
is used in different modules, and then we use this model to estimate effort in various
types of modules. The comprehensive COCOMO model is divided into six phases:
1. Planning
2. System structure
ity

3. Complete structure
4. Module code and test
5. Integration and test
6. Cost constructive model
Boehm proposed COCOMO in 1981. It is one of the most used software estimation
m

models in the industry. COCOMO’s task is to predict the efforts and schedule of a
software product based on the size of the software.

Advantages and Disadvantages of COCOMO Model


)A

There are some advantages and disadvantages of the COCOMO model.

Advantages
1) Easy to estimate the total cost of the project.
2) Easy to implement with various factors.
3) It Provides ideas about old projects.
(c

Disadvantages
1) It ignores client requirements, customer skills, and hardware defects.
Amity Directorate of Distance & Online Education
Software Engineering and Modeling 155

2) Sometimes it limits the accuracy of the software costs.


Notes

ity
3) Mostly it depends on time factors.

Conclusion
In this article, we discuss the project estimation model COCOMO, which describes
the effort and development time of the software project. It also defines the different
projects with an estimate of the effort and scheduled time by considering multiple

rs
factors.

// C++ program to implement basic COCOMO

#include<bits/stdc++.h>

ve
using namespace std;

// Function for rounding off float to int

int fround(float x)

int a;

x=x+0.5;

a=x;
ni
U
return(a);

}
ity

// Function to calculate parameters of Basic COCOMO

void calculate(float table[][4], int n,char mode[][15], int size)

float effort,time,staff;
m

int model;
)A

// Check the model according to size

if(size>=2 && size<=50)

model=0; //organic

else if(size>50 && size<=300)

model=1; //semi-detached
(c

else if(size>300)

Amity Directorate of Distance & Online Education


156 Software Engineering and Modeling

model=2; //embedded
Notes

ity
cout<<”The mode is “<<mode[model];

// Calculate Effort

effort = table[model][0]*pow(size,table[model][1]);

// Calculate Time

rs
time = table[model][2]*pow(effort,table[model][3]);

//Calculate Persons Required

staff = effort/time;

ve
// Output the values calculated

cout<<”\nEffort = “<<effort<<” Person-Month”;

cout<<”\nDevelopment Time = “<<time<<” Months”;

cout<<”\nAverage Staff Required = “<<fround(staff)<<” Persons”;

int main()

{
ni
U
float table[3][4]={2.4,1.05,2.5,0.38,3.0,1.12,2.5,0.35,3.6,1.20,2.5,0.32};

char mode[][15]={“Organic”,”Semi-Detached”,”Embedded”};

int size = 4;
ity

calculate(table,3,mode,size);

return 0;

The mode is Organic


m

Effort = 10.289 Person-Month

Development Time = 6.06237 Months

Average Staff Required = 2 Persons


)A

5.4 Configuration Management


Computer configuration management, which is part of the broader cross-
disciplinary area of configuration management, is used in software engineering to
monitor and control changes in the software. It defines the starting point. If something
isn’t quite right, SCM will figure out what was changed and who did it. If a configuration
is effective, software configuration management may assist in determining how to
(c

replicate it over a large number of hosts.

The goals of Software configuration management are:

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 157

●● Configuration identification
●● Configuration control
Notes

ity
●● Configuration status accounting
●● Configuration auditing
●● Build management
●● Process management

rs
●● Environment management
●● Teamwork
●● Defect tracking

ve
ni
U
ity

Figure: software configuration management

We must manage changes as we begin to build any program because it will need
several changes during its maintenance process.

As a result, several projects cooperate to accomplish the objectives.


m

Software configuration refers to the key components that make up much of the
knowledge relief that happens during the software development process. Software
Configuration Management (SCM) is a procedure used in software engineering to
systematically handle, coordinate, and monitor changes in records, files, codes, and
other data during the Software Development Life Cycle.
)A

The primary goal is to increase productivity with very few mistakes or no mistakes.

The software development progresses, the number of software configuration


elements grows more rapidly.

Software configuration management does:


(c

●● Identify the changes


●● This monitor and control the changes
●● Proper implementation of change made to the item.

Amity Directorate of Distance & Online Education


158 Software Engineering and Modeling

It’s a method of defining, arranging, and managing the software that a


Notes programming team is creating. It’s used to improve productivity by reducing errors and

ity
bugs.

Multiple branches are in the bulge in a software project, and the groups are
separated, according to configuration management.

It restricts and maintains access in a variety of fields by prohibiting at least two


members of a team from simultaneously identifying the same component for any

rs
changes. It ensures that the changes are applied correctly. It’s capable of describing
and storing the different components of the software.

Tasks in Software Configuration Management process:

ve
●● Configuration Identification
●● Baselines
●● Change Control
●● Configuration Status Accounting
●● Configuration Audits and Reviews

●● Configurational manger ni
Who participates in software configuration management?
U
●● Developer
●● User
●● Auditor
●● Project manager
ity
m

Many changes occur during the maintenance process of software/product


)A

development; we must carefully manage these changes.

Many people (programs) cooperate to accomplish these shared objectives. This


person creates a variety of work items, such as middle-level versions of modules or test
data for debugging, as well as parts of the final product.

A software configuration is a set of elements that collect all information created


(c

during the software development process.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 159

History
Notes

ity
Software configuration management has a long background in computing, dating
back to the 1950s when it was first used for hardware creation and production control
before being extended to software development. Cards, tapes, pictures, music,
and other media all had a physical footprint in early apps. In the beginning, every
system’s software configuration management was performed manually. Increasing
the sophistication and development of language, software engineering, configuration

rs
management, and other methods. Price, schedule, budget, and quality all become
major concerns.

5.5 Software Maintenance and Types of Maintenance

ve
The act of fine-tuning software is known as software maintenance. It fixes and
optimizes applications in all kinds of environments. Acting software maintenance
involves making some improvements to current software products. Some updates are
not visible to users. Within days, the software is ready to be delivered to end-users, and
bug reports are routed back to software engineering organizations. After a few months,
another corporate team decides they don’t want anything to do with the app because

ni
it brought them an unexpected profit. To make things work in their world, they need to
make a few changes.
U
ity
m

The process of software maintenance has started. You had a range of bug fixes,
adaptation requests, and enhancements to prepare and schedule. The queue has
gotten so long that the amount of work it entails threatens to exceed the available
)A

resources. After some time has passed, the company discovers that maintaining current
systems takes a lot more time and resources than developing new software. It’s not
uncommon for a tech company to devote up to 70% to 80% of its resources to software
maintenance. Why is so much upkeep needed, and why is so much effort required?
Explained by Osborne and Chikofsky:

Nowadays, there is so much tech in the world that we rely on it for 10 to 15 years
(c

on average.

When this software is in high demand, the design and coding techniques used
were recognized at a period when program size and storage space were important

Amity Directorate of Distance & Online Education


160 Software Engineering and Modeling

considerations. They were converted into modern architectures, updated to meet new
Notes client requirements, and modified for improvements in machine and operating system

ity
technology—all without paying enough attention to the overall architecture. The result
is haphazardly constructed architectures, shoddy coding, shoddy logic, and shoddy
documentation in the software systems we’re all expected to keep going forward with.

Your software’s existence does not begin when programming languages are
introduced and ends when it is released. The start of its lifecycle, as well as a significant

rs
portion of the job, occurs at launch.

Technology is continuously modified, and it must be adequately managed and


maintained as long as it is in operation. It’s even more critical because technology is
continually developing and improving.

ve
Your program will likely need to be modified. It continues to run to add new
functionality, rework the framework in preparation for potential changes, such as a shift
to the cloud or other changes. Whatever your inspiration for software maintenance is, it
is vital to your company’s success.

As a result, software maintenance encompasses more than just finding and

ni
correcting errors. It’s about keeping the core of the company up to date and going.

There are four types of software maintenance, each of which is critical for users.
There are many forms of software repair, in addition to bug fixing. We’ll look at the
different forms of software maintenance and how they affect users:
U
There are 4 categories of software maintenance:

1. Preventive maintenance
2. Corrective maintenance
ity

3. Adaptive maintenance
4. Perfective maintenance
These 4 categories explain all the full scope of changes in a software product.
m
)A
(c

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 161

1. Preventive software maintenance: It refers to the software improvements made to


your product to make it future-proof. This makes it easier to maintain and manage Notes

ity
the text in the code. Behind the scenes, it focuses on prevention. Later on, they have
a positive impact. It simplifies the execution of more drastic changes.
Changes made to make the software more effective and understandable to improve
its consistency are referred to as preventive changes. It reduces the rate at which
your software deteriorates. Some common improvements include code optimization

rs
and documentation updates. It makes software scalable, reliable, understandable,
and maintainable by reducing the number of unexpected effects it can have in the
long run.
2. Corrective software maintenance: It fixes the software’s bugs, weaknesses,
and defects. This maintenance assists in a smoother and more dependable user

ve
experience. It is important to act rapidly and often. That way, you can avoid any
possible user issues and keep the product in good shape.
The most significant change related to certain maintenance activities is corrective
change, also known as “bugs.” It displays any errors or flaws in your application that
could affect your software. Bug reports from users are the most common source of

3.
these updates.

ni
Adaptive software maintenance: Every day, technological advances are made.
Stuff would easily become redundant. This problem is addressed in it. It primarily
focuses on the software’s infrastructure. To keep the software convenient, they’re
U
updated in response to new operating systems, hardware, and platforms. Changes
have a low impact on consumers because they deal with the software’s internal
workings. When adaptive maintenance isn’t done, users are more conscious. It’s
likely, for example, that software on their most recent devices stops running.
Changes in the world in which your program runs set it off. Changes to the operating
ity

system, hardware, software, and organizational business rules and policies may
also trigger it. These environmental changes can cause changes in other parts of
your software. Updates to the server, compilers, and shipping carriers, for example,
may all affect the software’s functionality.
4. Perfective software maintenance: The last group, software maintenance, is the
m

most significant. It focuses on the software’s accessibility and usability. It entails


refining, upgrading, and removing current product features. Perfective software
maintenance includes updates to the way a product functions, redesigns, and
in-app user journey changes. It’s very obvious. Users are more likely to notice
improvements in the front-end code than in the back-end code. The perfective shift
)A

is identical to user-to-server communication. As a consequence, ensure that it is


properly preserved.
The evolution of specifications and functionality in your current framework is
referred to as perfective transition.

Users will think of innovative ways to expand the system or propose new
(c

functionality that they would like to see as part of the app once it is introduced to
them, which will become the system’s future improvements. It also involves removing
ineffective and non-functional features from a system to achieve the system’s aim.

Amity Directorate of Distance & Online Education


162 Software Engineering and Modeling

Notes

ity
rs
ve
Figure: proportional cost per maintenance type

Cost of Maintenance
According to estimates, the cost of maintenance is extremely high. According to a
report on calculating software maintenance costs, maintenance accounts for 67 percent

ni
of the total cost of the software process period.
U
ity
m

On average, the cost of software maintenance is more than 60% of all SDLC
stages. There are various factors, whose maintenance cost go high, such as:

Real-world example affecting Maintenance Cost


)A

●● The standard age of any software is considered up to 10 to 15 years.


●● Historical software, which works on slow machines with less memory and less
storage capacity cannot keep themselves challenging against newly coming
enhanced software on modern hardware.
●● As technology grows, it becomes costly to maintain old software.
(c

●● Software maintenance engineers are a newbie and use trial and error method to
solve the problem.
●● Sometimes changes are ignored which may cause more conflicts in the future.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 163

●● Software-end factors affecting Maintenance Cost


Notes

ity
●● The Structure of Software Program
●● Complex Programming Language
●● Its Dependence on the external environment
●● Staff reliability and availability

rs
Conclusion
The maintenance of software is an important aspect of the software development
life cycle (SDLC). Computer maintenance is key to the project’s progress and evolution.
Updating software, preventing it from degrading over time, and upgrading functionality
to meet consumer needs are all examples of software maintenance work.

ve
Why software requires maintenance?
1. To fix bugs: this is a priority to run the software without buy, so bug fixing is very
important. In this process, we remove the code error and corrects them. The
issued can occur in hardware, software, or operating system.
2.

ni
Capability enhancement: this helps to improve features and functions to make
solutions compatible with the different market needs. It upgrades the software
platforms, work patterns, and hardware. It also helps to boost your business
using technically updated solutions applying software maintenance services on
U
a regular day.
3. Addition of updated functions: the updated functions are useful. In this removal
of outdated functions works. Using some methods and procedures, such as UI
and coding elements are removed and replaced with new development with the
help of some tools and technologies.
ity

4. Upgrade: to improve the performance, developers find out the issues using
some testing. it helps to develop to stop harmful activities like hacking.

Managing the maintenance:


It is important to maintain the program for it to operate properly. As a consequence,
m

it’s important to keep an eye on the software’s impact and what adjustments you want
to make the user more relaxed.
)A
(c

Figure: maintain Activities


Amity Directorate of Distance & Online Education
164 Software Engineering and Modeling

The management spectrum


Notes

ity
The four Ps of effective software project management are individuals, product,
method, and project. A project manager who does not keep track of the project will
never be successful. Stakeholders and other people should always be encouraged by a
boss. To reduce project risk and bugs, a manager must interact with others. The project
manager who starts without a strong project plan jeopardizes the project’s progress.

The people

rs
The human factor is so critical that the software engineering institute created
a people capability maturity model (people-CMM), based on the fact that “any
company must continually strengthen its ability to attract, grow, inspire, and organize
the workforce necessary to achieve its business strategy objectives.” Organizations

ve
that reach high levels of people-CMM maturity have a better chance of implementing
successful software project management techniques.

The product
Before beginning a project, we should define plans, product goals, and project

ni
scope, as well as technical management. It is difficult to determine fair cost estimates
without this knowledge. As a software developer, you and your partners need to be
mindful of the product’s priorities and scope.
U
ity
m

This is achieved in the first stage of software specifications engineering ordevice


engineering or business process engineering. Without considering how the target can
)A

be identified, objectives define the product’s key goals. The project’s reach defines
the most important details, roles, and behaviors that make the product simple to
comprehend. After understanding the product’s goals and reach, a variety of options are
considered. As a result, managers and clinicians choose the best solution, which is then
given a time limit.

The process
(c

Many detailed software development plans can be developed using the structure
provided by a software process. Just a few application operations are used in software
projects.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 165

The project
Notes

ity
This is achieved in the first stage of software specifications engineering or device
engineering or business process engineering. Without considering how the target can
be identified, objectives define the product’s key goals. The project’s reach defines
the most important details, roles, and behaviors that make the product simple to
comprehend. After understanding the product’s goals and reach, a variety of options are
considered. As a result, managers and clinicians choose the best solution, which is then

rs
given a time limit.

Activity
1. Define project management?

ve
2. Explain the software management.
3. What are the benefits of management?
4. Define the work of stakeholders.
5. Explain the difference between an error and a defect.

ni
6. Can a program be correct and still not be reliable?
7. What are the uses of the software maintenance process?
8. Explain two real-life situations in which the client and the end-user are the same.
Explain any two situations in which they are different.
U
9. You have appointed a project manager for a major software products company. Your
task is to manage the development of the next-generation version of its widely used
word-processing software. Because competition is very high, tight deadlines for the
project. Explain what team structure would you choose and why? What software
models would you choose and how?
ity

10. Describe the difference between process and project metrics in your own words.
11. Why software maintenance is so much important? Give two real-world examples.
12. Describe the following terms:
a. Vision and scope document
m

b. SPM framework
c. Management spectrum
d. Decision process
)A

13. What do you mean by software review?


14. Write a short note on the following terms with an example:
a. Code review
b. Error tracking
15. What are testing automation and testing tools?
(c

16. What do you understand by software configuration management? What are the
different tasks and items? Explain with example.

Amity Directorate of Distance & Online Education


166 Software Engineering and Modeling

17. Describe any software management tool with a detailed example. What do you
Notes understand by a software management tool?

ity
18. Write a short note on:
a. Risk monitoring
b. Case tools.
c. Configuration model

rs
d. Decision table
19. Discuss the COCOMO hierarchy of estimation models in detail.
20. Explain the relationship between:

ve
a. Productivity and difficulty
b. Time and cost
21. Explain the types of COCOMO models and give phase-wise distribution effort.
22. Which specification language can be used in SRS? What is the main advantage of
using this specific language of SRS?

ni
23. Explain the development phases of the detailed COCOMO model.
24. List any four reasons why it is difficult to improve the software process.
25. Write the important issues that an SRS must address.
U
26. Explain the COCOMO model using one example.
27. What are the types of software maintenance?
28. What is a software project scope?
ity

29. What is software project estimation?


30. Explain functional points.
31. Mention few project management tools.
32. What is cohesion?
33. What is coupling?
m

Exercise:
Check Your Understanding:

1. Project managers have to assess the risks that may affect a project.
)A

a. True
b. False
2. A 66.6% risk is considered as?
a. High
(c

b. Moderate
c. Very low
d. None of the above

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 167

3. Quality planning is the procedure of developing a quality plan for?


Notes

ity
a. Team
b. Projects
c. None of the above
d. Project manager
4. Which one of the following [Kiran] is not a project manager’s activity?

rs
a. Project design
b. Project management
c. Project planning

ve
d. None of the above
5. Which stage is referred to the support phase of software development?
a. Maintenance
b. Testing

6.
c.
d.
Acceptance
None of the above
Full form of PERTstands for? [Kiran]
ni
U
a. Program evolution & review technique
b. Process evolution & review tool
c. All of the above
d. None of the above
ity

7. Doesproject managers have a right to assess the risks that may affect a project?
a. True
b. False
c. Can’t say
m

d. None of the above


8. Which of the following is not considered a risk in project management?
a. Testing
)A

b. Development
c. All above
d. None of these
9. What is the sub-process of process improvement?
a. Process analysis
(c

b. Decomposition
c. Process
d. Process introduction
Amity Directorate of Distance & Online Education
168 Software Engineering and Modeling

10. Which one of the following [Kiran] is related to the full functionality of the delivered
Notes software?

ity
a. Size-related metrics
b. Product-related metrics
c. Function-related metrics
d. None of the above

rs
11. What does modifying the software to match changes in the ever-changing
environment is known as? [Kiran]
a. Adaptive maintenance
b. Corrective maintenance

ve
c. Perfective maintenance
d. Preventive maintenance
12. What does changes that are made to the system to reduce the future system failure
chance is known as?
a.
b.
c.
Preventive maintenance
Adaptive maintenance
Corrective maintenance
ni
U
d. Perfective maintenance
13. Which of the following are parameters involved in the computer impactsthe total cost
of a software development project?
a. Hardware
ity

b. Software
c. Travel and training costs
d. All of the above
14. Is it difficult to estimate cost and size at a very early stage in a project with an
available specification
m

a. True
b. False
15. The COCOMO model takes into account different approaches to software
)A

development, reuse, etc.


a. True
b. False
16. Which of the statement is not related agility to the software process?
a. Eliminate the use of project planning and project.
(c

b. Only necessary works items are originating.


c. Uses an incremental item delivery strategy.

Amity Directorate of Distance & Online Education


Software Engineering and Modeling 169

d. Process permit team to streamline tasks.


Notes

ity
17. All agile process models adapt to a maximum or minimum degree to the principal
argued in the “ manifesto for agile software development”.
a. True
b. False
18. Which of the following software task in [Kiran] Agile modeling gives guidance to the

rs
practitioner?
a. Coding
b. Testing
c. Design

ve
d. Analytic
e. Both c and d

Answer keys (Exercise):

ni
1. a
2. a
3. b
U
4. a
5. a
6. a
7. b
ity

8. a
9. a
10. c
11. a
m

12. a
13. d
14. a
15. b
)A

16. a
17. a
18. e

Lab Exercise
(c

1. To test programming skills & case study for a static website


2. To test aspects of online marketing, payment mechanisms and try to Redefine SRS
of previously made projects.

Amity Directorate of Distance & Online Education


170 Software Engineering and Modeling

3. Derive FP using Size-Oriented metrics


Notes

ity
4. Derive LOC based estimation for size-oriented metrics
5. DFD and ERD diagram
6. Class Diagram in UML
7. Use Case Diagram in UML
8. State Diagram in UML

rs
9. Object Diagram in UML
10. Activity Diagram in UML
11. Sequence Diagram in UML

ve
12. Collaboration Diagram in UML
13. Component Diagram in UML
14. Deployment Diagram in UML

Text & References:


Text Books:

ni
An Integrated Approach to Software Engineering, Pankaj Jalote,2015

Software Engineering Concepts, RichardFairley.2016.


U
K. K. Aggarwal and Yogesh Singh, “Software Engineering”, New Age International,
3rd Ed., 20017.

Reference Books:
ity

Software Engineering, A Practitioner’s Approach – Roger S.Pressman.2015


m
)A
(c

Amity Directorate of Distance & Online Education

You might also like