Chapter 2.1
Chapter 2.1
1
Unit II
Software Requirements
In software engineering, software requirements are descriptions of the functionalities and constraints of
a software system. They represent the needs that the software must fulfill to solve a particular problem
or to achieve specific objectives. Software requirements serve as a foundation for software design,
development, testing, and maintenance processes. Here are some key aspects of software requirements:
1. Functional Requirements: These describe the specific functionalities or features that the
software system must provide. Functional requirements outline what the software should do in
terms of input, processing, and output. They typically include use cases, user stories, and
functional specifications.
3. User Requirements: User requirements capture the needs and expectations of the stakeholders
who will interact with the software system. These stakeholders may include end-users,
administrators, managers, and other relevant parties. User requirements are often expressed in
natural language and may be supplemented with mockups, prototypes, or user interface designs.
4. System Requirements: System requirements define the capabilities and constraints of the entire
software system, including hardware, software, network, and other infrastructure components.
System requirements may include specifications for compatibility with other systems, integration
with existing infrastructure, and performance characteristics.
5. Business Requirements: Business requirements describe the objectives and constraints of the
organization or business that is commissioning the software project. These requirements help
align the software development efforts with the strategic goals of the organization. Business
requirements may include factors such as cost, schedule, regulatory compliance, and market
demands.
6. Constraints: Constraints are limitations or restrictions that impact the design and
implementation of the software system. Constraints may include technical constraints (e.g.,
compatibility with legacy systems), budgetary constraints, time constraints, regulatory
constraints, and resource constraints.
7. Traceability: Traceability refers to the ability to trace requirements throughout the software
development lifecycle. This involves linking requirements to design elements, code modules, test
cases, and other artifacts to ensure that each requirement is adequately addressed and
validated.
9. Validation and Verification: Validation ensures that the software system meets the intended
needs and expectations of the stakeholders, while verification confirms that the software system
adheres to its specified requirements. Validation and verification activities include reviews,
inspections, walkthroughs, testing, and acceptance criteria.
1. Functional Requirements:
a. What the system should do: Functional requirements define the specific behaviors or
functions that the software system must perform to meet the needs of its users.
b. Actions and Inputs: They typically describe the interactions between the system and its
users or other systems, including inputs, processing, and outputs.
c. Use Cases and User Stories: Functional requirements are often expressed in the form of
use cases or user stories, which describe specific interactions or scenarios involving the
system.
d. Example: For a social media platform, functional requirements might include features
such as user registration, posting updates, commenting on posts, and sending messages.
2. Non-Functional Requirements:
a. How the system should perform: Non-functional requirements specify the quality
attributes or characteristics of the software system, such as performance, reliability,
usability, security, and scalability.
b. Quality Attributes: They focus on aspects of the system beyond its specific
functionalities and address qualities that affect the overall user experience and system
behavior.
c. Constraints and Limits: Non-functional requirements may also include constraints and
limitations, such as compatibility with certain platforms or adherence to regulatory
standards.
d. Example: Non-functional requirements for a banking application might include
requirements for response time (e.g., transactions must be processed within 3 seconds),
security (e.g., encryption of sensitive data), and availability (e.g., system uptime of
99.99%).
Here's a breakdown of some key differences between functional and non-functional requirements:
• Focus: Functional requirements focus on what the system should do, while non-functional
requirements focus on how the system should perform.
• Tangibility: Functional requirements are often more tangible and concrete, describing specific
features and behaviors, while non-functional requirements are more abstract and describe
qualities or attributes of the system.
• Measurability: Functional requirements are typically easier to measure and validate directly
through testing, while non-functional requirements may require more specialized testing and
evaluation techniques to assess qualities such as performance and security.
1. Requirement Elicitation:
b. Stakeholder Identification: Identify and engage with stakeholders who have a vested
interest in the software project, including end-users, customers, managers, domain
experts, and other relevant parties.
e. Validation: Validate the elicited requirements with stakeholders to ensure that they are
complete, consistent, and relevant to the objectives of the software project.
f. Iterative Process: Requirement elicitation is often an iterative process, involving multiple
rounds of gathering, refining, and validating requirements to achieve a comprehensive
understanding of the stakeholders' needs.
2. Requirement Analysis:
a. Definition: Requirement analysis is the process of analyzing and organizing the elicited
requirements to understand their implications, dependencies, and priorities.
SRS document
A Software Requirements Specification (SRS) document is a comprehensive description of the intended
behavior and functionality of a software system. It serves as a formal agreement between the
stakeholders (such as customers, users, and developers) regarding what the software product should do.
The SRS document acts as a blueprint for the development team and provides a basis for estimating
costs, planning schedules, and performing system validation and verification.
It serves as a formal agreement between the stakeholders (such as customers, users, and developers)
regarding what the software product should do.
1. Introduction:
2. Overall Description:
a. Product perspective: Describes how the software fits into the larger system or
environment, including interfaces with other systems.
b. Product functions: Provides a high-level description of the main functions and features
of the software system.
c. User characteristics: Describes the intended users of the software and their
characteristics.
d. Constraints: Specifies any constraints that may impact the development or use of the
software, such as hardware limitations, regulatory requirements, or organizational
policies.
3. Specific Requirements:
c. External interface requirements: Describes the interfaces between the software system
and external entities, such as users, hardware devices, or other software systems.
d. System features: Provides a detailed breakdown of the features and components of the
software system, often accompanied by diagrams or other visual aids.
e. Data requirements: Describes the data inputs, outputs, storage, and processing
requirements of the software system.
4. Appendices: