0% found this document useful (0 votes)
12 views12 pages

Software Engineering Notes

The document outlines software requirements, categorizing them into functional, non-functional, and domain requirements, each with definitions and examples. It discusses the advantages and disadvantages of classifying software requirements, as well as different approaches to software development such as top-down and bottom-up. Additionally, it covers verification and validation processes in software testing, detailing various testing methods including manual and automation testing, along with their types.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views12 pages

Software Engineering Notes

The document outlines software requirements, categorizing them into functional, non-functional, and domain requirements, each with definitions and examples. It discusses the advantages and disadvantages of classifying software requirements, as well as different approaches to software development such as top-down and bottom-up. Additionally, it covers verification and validation processes in software testing, detailing various testing methods including manual and automation testing, along with their types.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Software Requirements

●​ A condition or capability needed by a user to solve a problem or

achieve an objective

●​ A condition or capability that must be met or possessed by a system

or system component to satisfy a contract, standard, specification or

other formally imposed documents

Types of Software Requirements


Software Requirements are mainly classified into three types:

●​ Functional requirements

●​ Non-functional requirements

●​ Domain requirements

1. Functional Requirements

Definition: Functional requirements describe what the software should do.


They define the functions or features that the system must have.

Examples:

●​ User Authentication: The system must allow users to log in using a

username and password.

●​ Search Functionality: The software should enable users to search

for products by name or category.

●​ Report Generation: The system should be able to generate sales

reports for a specified date range.


Explanation: Functional requirements specify the actions that the software
needs to perform. These are the basic features and functionalities that users
expect from the software.

2. Non-functional Requirements

Definition: Non-functional requirements describe how the software performs


a task rather than what it should do. They define the quality attributes,
performance criteria, and constraints.

Examples:

●​ Performance: The system should process 1,000 transactions per

second.

●​ Usability: The software should be easy to use and have a

user-friendly interface.

●​ Reliability: The system must have 99.9% uptime.

●​ Security: Data must be encrypted during transmission and storage.

Explanation: Non-functional requirements are about the system’s behavior,


quality, and constraints. They ensure that the software meets certain
standards of performance, usability, reliability, and security.

3. Domain Requirements

Definition: Domain requirements are specific to the domain or industry in


which the software operates. They include terminology, rules, and standards
relevant to that particular domain.

Examples:
●​ Healthcare: The software must comply with HIPAA regulations for

handling patient data.

●​ Finance: The system should adhere to GAAP standards for financial

reporting.

●​ E-commerce: The software should support various payment

gateways like PayPal, Stripe, and credit cards.

Explanation: Domain requirements reflect the unique needs and constraints


of a particular industry. They ensure that the software is relevant and
compliant with industry-specific regulations and standards.

Advantages of classifying software requirements include:

1.​ Better organization: Classifying software requirements helps

organize them into groups that are easier to manage, prioritize, and

track throughout the development process.

2.​ Improved communication: Clear classification of requirements

makes it easier to communicate them to stakeholders, developers,

and other team members. It also ensures that everyone is on the

same page about what is required.

3.​ Increased quality: By classifying requirements, potential conflicts or

gaps can be identified early in the development process. This

reduces the risk of errors, omissions, or misunderstandings, leading

to higher-quality software.
4.​ Improved traceability: Classifying requirements helps establish

traceability, which is essential for demonstrating compliance with

regulatory or quality standards.

Disadvantages of classifying software requirements


Disadvantages of classifying software requirements include:

1.​ Complexity: Classifying software requirements can be complex,

especially if there are many stakeholders with different needs or

requirements. It can also be time-consuming to identify and classify

all the requirements.

2.​ Rigid structure: A rigid classification structure may limit the ability

to accommodate changes or evolving needs during the development

process. It can also lead to a siloed approach that prevents the

integration of new ideas or insights.

3.​ Misclassification: Misclassifying requirements can lead to errors or

misunderstandings that can be costly to correct later in the

development process.
Basis Top-Down Approach Bottom-Up Approach

Approach Top-Down Approach is Bottom-Up Approach is


Theory-driven. Data-Driven.
Significance Emphasis is on doing things Emphasis is on data rather than
(algorithms). procedure.
Focus Large programs are divided Programs are divided into what
into smaller programs which is are known as objects is called
known as decomposition. Composition.
Interaction Communication is less among Communication is a key among
the modules. the modules.
Areas Widely used in debugging, Widely used in testing.
module documentation, etc.
Language The top-down approach is The bottom-up approach is used
mainly used by Structured by Object-Oriented programming
programming languages like languages like C++, C#, Java,
C, Fortran, etc. etc.
Redundancy May contains redundancy as This approach contains less
we break up the problem into redundancy if the data
smaller fragments, then build encapsulation and data hiding
that section separately. are being used.

Solves smaller problems and


1 focus on breaking the problem into
integrates them into a complete
. smaller, more manageable parts
system

Mainly used in Structured Mainly used in Object Oriented


2
programming languages like COBOL, Programming languages like C++,
.
Fortran, C, etc. C#, Python.
3 Each part is programmed separately Redundancy is minimized by using
. therefore contains redundancy. data encapsulation and data hiding.

4 communication is less among Modules must communicate to


. modules. integrate the system.

5 It is used for debugging and module


It is basically used in testing.
. documentation

Composition of the system happens


6 Decomposition of the system occurs, by combining low-level
. breaking it into smaller components. components into a higher-level
structure.

In this sometimes we can not build


7 The top function of system might be
a program from the piece we have
. hard to identify.
started.

Building a program can be difficult


8 implementation details can vary
if modules are not assembled in a
. throughout the process
logical order
Validation
Verification

Validation refers to the set of


Verification refers to the set of
activities that ensure that the
activities that ensure software
Definition software that has been built is
correctly implements the
traceable to customer
specific function
requirements.

It includes checking documents, It includes testing and


Focus
designs, codes, and programs. validating the actual product.

Verification is the Static


Type of Testing Validation is Dynamic testing.
testing.

It does not include the It includes the execution of the


Execution
execution of the code. code.

Methods used in validation are


Methods used in verification are
Black Box Testing, White Box
Methods Used reviews, walkthroughs,
Testing and Non-Functional
inspections and desk-checking.
testing.

It checks whether the software


It checks whether the software
meets the requirements and
Purpose conforms to specifications or
expectations of a customer or
not.
not.
It can only find the bugs that
It can find the Bugs in the early
Bug could not be found by the
stage of the development.
verification process.

The goal of verification is


The goal of validation is an
Goal application and software
actual product.
architecture and specification.

Verification is typically
Validation is performed by the
performed by the quality
testing team, which executes
assurance (QA) team, focusing
the software in real
Responsibility on reviewing documents,
environments to ensure it
designs, and code to ensure
meets user expectations and
compliance with specified
requirements.
requirements.

Timing It comes before validation. It comes after verification.

It consists of checking of It consists of execution of


Human or
documents/files and is program and is performed by
Computer
performed by human. computer.

After a valid and complete


Validation begins as soon as
Lifecycle specification the verification
project starts.
starts.

Verification is for prevention of Validation is for detection of


Error Focus
errors. errors.
Verification is also termed as Validation can be termed as
Another white box testing or static black box testing or dynamic
Terminology testing as work product goes testing as work product is
through reviews. executed.

Verification finds about 50 to Validation finds about 20 to


Performance
60% of the defects. 30% of the defects.

Verification is based on the


Validation is based on the fact
Stability opinion of reviewer and may
and is often stable.
change from person to person.
1. Manual Testing

Manual Testing is a technique to test the software that is carried out using
the functions and features of an application. Which means manual testing
will check the defect manually with trying one by one function is working as
expected.

2. Automation Testing

Automation Testing It is a technique where the Tester writes scripts


independently and uses suitable Software or Automation Tools to test the
software. It is an Automation Process of a Manual Process. It allows for
executing repetitive tasks without the use of a Manual Tester.

Types of Manual Testing


Manual testing will be divided into further types which is following:

1. White Box Testing

White Box Testing is a software testing technique that involves testing the
internal structure and workings of a software application. The tester has
access to the source code and uses this knowledge to design test cases that
can verify the correctness of the software at the code level.

2. Black Box Testing

Black-Box Testing is a type of software testing in which the tester is not


concerned with the internal knowledge or implementation details of the
software but rather focuses on validating the functionality based on the
provided specifications or requirements.

3. Gray Box Testing


Gray Box Testing is a software testing technique that is a combination of the
Black Box Testing technique and the White Box Testing technique. In the
Black Box Testing technique, the tester is unaware of the internal structure of
the item being tested and in White Box Testing the internal structure is
known to the tester.

Types of Black Box Testing


Black Box Testing will be divided into further types which is following:

1. Functional Testing

Functional Testing is a type of Software Testing in which the system is


tested against the functional requirements and specifications. Functional
testing ensures that the requirements or specifications are properly satisfied
by the application.

2. Non-Functional Testing

Non-Functional Testing is a type of Software Testing that is performed to


verify the non-functional requirements of the application. It verifies whether
the behavior of the system is as per the requirement or not. It tests all the
aspects that are not tested in functional testing.

Types of Functional Testing


Functional Testing will be divided into further types which is following:

1. Unit Testing

Unit Testing is a method of testing individual units or components of a


software application. It is typically done by developers and is used to ensure
that the individual units of the software are working as intended.
2. Integration Testing

Integration Testing is a method of testing how different units or components


of a software application interact with each other. It is used to identify and
resolve any issues that may arise when different units of the software are
combined.

3. System Testing

System Testing is a type of software testing that evaluates the overall


functionality and performance of a complete and fully integrated software
solution. It tests if the system meets the specified requirements and if it is
suitable for delivery to the end-users.

You might also like