Software Engineering and Modeling
Software Engineering and Modeling
ity
Unit Outcomes:
At the end of this unit, you will be able to:
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
Computer systems software controlled the programs that include computing utilities and
operations systems.
●● 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.
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
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
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.
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.
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.
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.
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>
</body>
</html>
)A
Program output:
My First Heading
My first paragraph
CSS Basics
(c
<!DOCTYPE html>
<html>
<head>
Notes
ity
<style>
p{
color: red;
text-align: center;
rs
}
</style>
</head>
ve
<body>
<p>Hello World!</p>
</body>
</html>
Program output:
Hello World!
ni
U
These paragraphs are styled
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
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.
●● Ethical hacking
●● Computer operating system
●● Network architecture
●● Computer forensics
m
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
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.”
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 id=”demo”></p>
<script>
)A
</script>
</body>
</html>
(c
Program output:
JavaScript Strings
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:
ni
program output
●● 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
#include<string.h>
(c
struct Courses
char WebSite[50];
Notes
ity
char Subject[50];
int Price;
};
void main( )
rs
{
struct Courses C;
//Initialization
ve
strcpy( C.WebSite, “w3schools.in”);
C.Price = 0;
Program output
WebSite : w3schools.in
ity
How C works?
m
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.
other.
A software engineer should be skilled in:
- Programming language
- Debugging software
- Testing software
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.
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.
rs
ve
Causes of Software Crisis:
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
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,
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
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.
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
●● 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
●● Maintainability:
(c
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].
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
Notes
ity
rs
1.5 Kinds of Software Life-Cycle Models and Case Study
ve
ni
U
ity
We may think of SDLC models as tools that help us deliver your software project
more effectively.
)A
●● Waterfall model
●● V-Shaped model
●● Evolutionary prototyping model
●● Spiral method (SDM)
(c
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.
is stable
●● There are so many resources are available and trained
Advantages of Waterfall Model:
)A
●● Specific deliverables.
Disadvantages of waterfall model
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
●● 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
●● Not flexible
●● Expensive and difficult adjusting scope
)A
Prototyping Model
(c
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.
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
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:
ve
●● Incremental prototype
●● Extreme prototype
●●
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
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
●● Insufficient analysis.
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.
ity
●● When requirements are not clear
●● When changes may require at any time of the development.
rs
●● Good involvement of developers.
●● Manage risk in the system into several stages.
ve
●● Have high costs and time taken to complete the final software.
●● High risk to evaluate.
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
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.
rs
When to use Incremental models?
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.
●● 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
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
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.
●● Scalability
●●
●●
●●
Documentation is at the last stages
Usability of components is less
Skills must be good ni
U
ity
m
)A
Activity:
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
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
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:
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
a. Iterative model
b. Incremental model
c. Incremental and iterative model
d. None of the above
(c
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
b. Licensing
c. Memory utilization
d. Processing time
)A
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
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
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
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
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
The process to collect the software requirements lists from the client, then analyze
the list, and document them is known as requirement engineering.
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.
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.
●●
•
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
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
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
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.
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:
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)
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.
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.
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
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
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.
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
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.
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.
DFDs (data flow diagrams) are graphical representations of data processes and
movements within an organisation.
ity
●● 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
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
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.
arrow is an arrow into files, which means data is written, and the second type is an
arrow out, which means data is read.
●● 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:
●●
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
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.
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.
●● With the help of ERD, the database designer gains a relational understanding of
the information to be contained in the database.
ity
A environment may be either living or non-living, which is easily distinguishable.
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.
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
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
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
Example: 1. single student sits one seat and one seat is assigned to only one
student.
One professor, for example, can teach a variety of subjects, but one subject can
only be taught by one professor.
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
●● 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
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
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.
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.
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
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
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.
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
Your organization has different approaches to make the SRD. The IEEE standards
(c
●● Functional capabilities
●● Performance level
●● 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:
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.
●● High-level requirements are checked on the side of the client. And lower-level
requirements need more detailed specifications.
●● 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
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
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.
7. Maintenance
8. Explain all the needs not only design
9. Proper testing tools
2. Multiple-use of functions
3. Negative outlines
4. Not user-friendly
Notes
ity
5. Used unappropriated words
“Don’t design the system first design a great requirements document.”
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:
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
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.
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.
Each phase has its concept for carrying out specific tasks during the SDLC phase.
Winston Royce first launched it in 1970.
have checked and validated the previous process should one move on to the next.
Phases do not overlap in the waterfall model.
(c
Notes
ity
rs
Figure: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.
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.
rs
during the project’s software development lifecycle. Both development and testing
practises are concurrent in the Agile model.
ve
evolve through collaboration between self-organizing, cross-functional teams.”
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
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
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.
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.
ni
●● Usability of components is less
●● Skills must be good
U
ity
m
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.
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.
rs
ve
ni
U
ity
m
)A
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:
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
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
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.
ni
U
ity
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
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.
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
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.
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.
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
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
Advantages:
●● In the top-down approach, Fault Localization is easy.
)A
Disadvantages:
●● In top-down Modules at a lower level are not tested properly.
Bottom-Up Approach
(c
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
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.
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.
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.
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.
Notes
ity
rs
ve
Figure: Code block is structured
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
must prosper so that the entry point is met, and then the exit conditions must be met.
It’s well-organized.
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
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
3. Third View
Notes
ity
rs
ve
ni
U
ity
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
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
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
up to date.
)A
(c
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.
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.
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.
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;
getch();
(c
return 0;
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
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
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.
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
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.
It’s the most effective tool we have in the battle against technological debt in our
(c
applications.
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.
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
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
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.
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.
ni
Adopting an Agile software development technique over an ancient waterfall task
management strategy can be a difficult transformation for many software companies.
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
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.
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.
of the time.
The Ugly
Notes
ity
There is an ugly side of pairing in an organisation, in addition to the good and poor.
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
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
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.
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.
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
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:
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
name and the bank has a branch. A customer has several accounts of different types
and balances.
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:
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
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
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
1. D
2. B
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
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.
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
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
It is the most critical step of the software development methodology, as well as the
(c
For practical designs, the following concepts are used. They aid in the
development of a positive user experience and customer loyalty.
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
1. Interviews
)A
2. Focus groups
3. Survey is important
Stage 3: Proper Design
1. Wireframing
2. Creating client stories
(c
5. User interface
Notes
ity
Stage 4: prototyping
rs
ve
ni
U
ity
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.
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
●● Data structures
●● Coding
●● Data flow diagram
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
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
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.
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.
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:
as the design evolves, with frequent backtracking to fix earlier, less formal designs. This
diagram will assist you in comprehending the transformation:
)A
(c
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.
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
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.
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
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.
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
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.”.
ni
U
ity
m
)A
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
rs
a problem in the Software Requirement Specification text. The Software Design
Document is the outcome of the design process.
ve
which enables device builders to understand hardware and software problems to solve
the customer’s problem.
ni
U
ity
• 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
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
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.
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
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.
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
Coupling Cohesion
It is also called inter-module binding. It is also called intra-module binding.
m
arranged in a ladder.
The control hierarchy determines how data flows. The control hierarchy depicts
decomposition.
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.
rs
the business’s organisational structure as it becomes more complex.
ve
features, but the inner details are not specified in the Structure Chart. The black boxes
are given inputs and appropriate outputs are generated.
ni
parameters and obtaining results.
U
ity
m
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
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
Lable 1
ity
• It is the unit of execution
rs
Lable 1
• It is very useful
ve
Structured charts – Invocation
ni
U
• It is a connector element
ity
rs
ve
• It is defined in the specification of the super-ordinate module.
ni
U
ity
ity
rs
ve
• It defines the flow of information
ni
U
ity
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.
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.
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
2. Transition characteristics
Notes
ity
3. Revision characteristics
rs
Figure: Software Quality triangle
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
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
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
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:
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
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
b. Data flow
c. Foreign key
d. System testing
)A
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
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
ity
Unit Outcomes:
At the end of this unit, you will be able to:
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
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.
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.
rs
ve
ni
U
ity
Testing
m
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.
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
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.
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
●● 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:
Notes
ity
rs
ve
ni
U
ity
m
)A
Manual Testing
Manual testing is described as checking functionality without the use of automation
software.
(c
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.
ve
2. black-box testing
3. gray box testing
●●
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
●● TestLink
●● Quality Center(ALM)
Automation testing
)A
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
ity
Why automation testing?
rs
ve
ni
U
Process of automation testing:
Benefits of Automation Testing
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.
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
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
●● Tasks are difficult to perform manually. It may require additional time for the
software testing phase.
Pros:
(c
●● 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
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:
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.
●● requirement papers,
●● test case formation, and
●● running test cases
●● bug reporting and re-testing
)A
●● QA Analyst (Fresher)
(c
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.
ve
large organizations, you’ll have a leg up on the market.
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
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.
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.
●● 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
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.
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.
3. System testing:
Device testing is the next phase of testing. All of the functions are checked to
(c
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.
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
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
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
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:
4. Curiosity:
●● This skill is very critical to determine the area of a problem where no one can
find it.
(c
5. Passionate:
ity
6. Domain knowledge:
rs
7. Quick learner:
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:
●● May know the use of their testing skills to fulfill the client’s needs while
delivering the project.
ity
14. Time management:
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.
●● 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
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.
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
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.”
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.
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
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.
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.
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.
●● ParasoftJtest
●● EclEmma
●● NUnit
●● PyUnit
●● HTMLUnit
m
●● CppUnit
ity
code.
rs
Difference between black box testing and 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
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
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.
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
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.
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
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.
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:
●● Test cases
●● Execution
m
Activity
)A
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?
Exercise:
Check Your Understanding:
d. Testing phase
3. What does Functional testing mean?
a. Test design
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
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
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
ity
Unit Outcomes:
At the end of this unit, you will be able to:
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.
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.
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.
●● Review the project plan and implements the process to complete the cycle.
ity
●● 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.
ity
The software project plan has some purpose, which is in various categories, that
are project objectives and business objectives.
rs
●● Budget-friendly
●● Produce quality deliverables
ve
●● Evaluate the processes
●● Project scheduled and up to date
●● Policies and processes
●● Improve the software
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.
management team. As a result, all team members are aware of the user requirements
and are developing applications following them.
It involves a set of activities to implement the user requirements in software and the
activity of individuals for performing.
Notes
ity
rs
ve
ni
U
ity
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.
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
ity
its ideal mileage recommended by the manufacturer is an example of metrics to
understand.
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.
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
All three variables that have a significant impact on software quality and
)A
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.
Product metricsare used to know all the quality of the software product.
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
ity
rs
ve
The analysis is for the identification of metrics
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 −
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:
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:
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
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:
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:
ity
Measurement parameter Count
Number of external inputs _ * 3 4 6 –
rs
Number of external _ * 5 7 10 –
interfaces
ve
Now, Function point is calculated using formula:
= count-total * CAF
i = 1 to 14
∑(Fi)= 0 to 70,
ity
When ∑(Fi) = 70 then CAF = 0.65 + (0.01 * 70) = 0.65 + 0.7 = 1.35
m
●● 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.
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
ve
When TDI = 0, VAF = 0.65
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.
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.
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.
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
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
Banking software, traffic light control software, ATMs, and air traffic control are only
a few examples.
ity
takes into account efficiency loss due to holidays, weekly off, coffee breaks, and other
variables.
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.
ni
Effort = a1 * (KLOC) a2 PM
Where,
U
KLOC = size of the software product
(PMs)
The formula for estimating the development effort based on the code size is shown
below for the 3 classes of software product:
m
The formula for estimating the development time based on the code size is shown
below for the 3 classes of software product:
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.
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.
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
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
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.
#include<bits/stdc++.h>
ve
using namespace std;
int fround(float x)
int a;
x=x+0.5;
a=x;
ni
U
return(a);
}
ity
float effort,time,staff;
m
int model;
)A
model=0; //organic
model=1; //semi-detached
(c
else if(size>300)
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]);
staff = effort/time;
ve
// Output the values calculated
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;
●● 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
We must manage changes as we begin to build any program because it will need
several changes during its maintenance process.
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.
ity
bugs.
Multiple branches are in the bulge in a software project, and the groups are
separated, according to configuration management.
rs
changes. It ensures that the changes are applied correctly. It’s capable of describing
and storing the different components of the software.
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
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.
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
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.
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.
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
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
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.
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:
●● 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.
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.
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
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
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.
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
16. What do you understand by software configuration management? What are the
different tasks and items? Explain with example.
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
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
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
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
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
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
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
ni
An Integrated Approach to Software Engineering, Pankaj Jalote,2015
Reference Books:
ity