Professional Documents
Culture Documents
Software Requirements
According to IEEE standard 729, a requirement is defined as follows:
• 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
• A documented representation of a condition or capability as in 1 and 2.
Main types of software requirement can be of 3 types:
• Functional requirements
• Non-functional requirements
• Domain requirements
Functional Requirements: These are the requirements that the end user specifically demands as
basic facilities that the system should offer. It can be a calculation, data manipulation, business
process, user interaction, or any other specific functionality which defines what function a system is
likely to perform. All these functionalities need to be necessarily incorporated into the system as a
part of the contract. These are represented or stated in the form of input to be given to the system,
the operation performed and the output expected. They are basically the requirements stated by the
user which one can see directly in the final product, unlike the non-functional requirements. For
example, in a hospital management system, a doctor should be able to retrieve the information of his
patients. Each high-level functional requirement may involve several interactions or dialogues
between the system and the outside world. In order to accurately describe the functional
requirements, all scenarios must be enumerated. There are many ways of expressing functional
requirements e.g., natural language, a structured or formatted language with no rigorous syntax and
formal specification language with proper syntax. Functional Requirements in Software Engineering
are also called Functional Specification.
Non-functional requirements: These are basically the quality constraints that the system must
satisfy according to the project contract.Nonfunctional requirements, not related to the system
functionality, rather define how the system should perform The priority or extent to which these
factors are implemented varies from one project to other. They are also called non-behavioral
requirements. They basically deal with issues like:
• Portability
• Security
Page 1 of 17
SE M-3
• Maintainability
• Reliability
• Scalability
• Performance
• Reusability
• Flexibility
Domain requirements: Domain requirements are the requirements which are characteristic of a
particular category or domain of projects. Domain requirements can be functional or nonfunctional.
Domain requirements engineering is a continuous process of proactively defining the requirements
for all foreseeable applications to be developed in the software product line. The basic functions that
a system of a specific domain must necessarily exhibit come under this category. For instance, in an
academic software that maintains records of a school or college, the functionality of being able to
access the list of faculty and list of students of each grade is a domain requirement. These
requirements are therefore identified from that domain model and are not user specific.
Other common classifications of software requirements can be:
1. User requirements: These requirements describe what the end-user wants from the
software system. User requirements are usually expressed in natural language and are
typically gathered through interviews, surveys, or user feedback.
2. System requirements: These requirements specify the technical characteristics of the
software system, such as its architecture, hardware requirements, software components,
and interfaces. System requirements are typically expressed in technical terms and are
often used as a basis for system design.
3. Business requirements: These requirements describe the business goals and objectives
that the software system is expected to achieve. Business requirements are usually
expressed in terms of revenue, market share, customer satisfaction, or other business
metrics.
4. Regulatory requirements: These requirements specify the legal or regulatory standards
that the software system must meet. Regulatory requirements may include data privacy,
security, accessibility, or other legal compliance requirements.
5. Interface requirements: These requirements specify the interactions between the
software system and external systems or components, such as databases, web services, or
other software applications.
6. Design requirements: These requirements describe the technical design of the software
system. They include information about the software architecture, data structures,
algorithms, and other technical aspects of the software.
Page 2 of 17
SE M-3
By classifying software requirements, it becomes easier to manage, prioritize, and document them
effectively. It also helps ensure that all important aspects of the system are considered during the
development process.
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.
Page 3 of 17
SE M-3
Helps you verify the functionality of the Helps you to verify the performance of the
software. software.
Example Example
1) Authentication of user whenever he/she 1) Emails should be sent with a latency of no
logs into the system. greater than 12 hours from such an activity.
2) System shutdown in case of a cyber attack. 2) The processing of each request should be
3) A Verification email is sent to user done within 10 seconds
whenever he/she registers for the first time on 3) The site should load in 3 seconds when the
some software system. number of simultaneous users are > 10000
Page 4 of 17
SE M-3
2. Interface Design
The goal of this phase is to define the set of interface objects and actions i.e., control mechanisms
that enable the user to perform desired tasks. Indicate how these control mechanisms affect the
system. Specify the action sequence of tasks and subtasks, also called a user scenario. Indicate the
state of the system when the user performs a particular task. Always follow the three golden rules
stated by Theo Mandel. Design issues such as response time, command and action structure, error
handling, and help facilities are considered as the design model is refined. This phase serves as the
foundation for the implementation phase.
Page 5 of 17
SE M-3
4. Interface Validation
This phase focuses on testing the interface. The interface should be in such a way that it should be
able to perform tasks correctly, and it should be able to handle a variety of tasks. It should achieve
all the user’s requirements. It should be easy to use and easy to learn. Users should accept the
interface as a useful one in their work.
Page 6 of 17
SE M-3
Page 7 of 17
SE M-3
While the SRD capacities as an outline for dealing with the extent of a project, it eventually
characterizes the functional and non-functional requirements of the system. The document doesn't
layout design or technology solutions. These decisions will be taken by the developers later.
According to the IEEE standards, SRDs must cover the following important topics.
o Quality
o Security/Privacy
o Functional capabilities
o Safety
o Performance levels
o Constraints and Limitations
o Data Structure/Elements
o Reliability
o Interfaces
Based on the procedure employed (Waterfall vs. agile), the degree of convention and detail in the
SRS will differ, however in general, system requirement document or system requirement
specification contains a description of the system requirements, functional requirements, technical
requirements, acceptance criteria, assumptions and constraints. We have explained each of these in
more detail below:
Page 8 of 17
SE M-3
The constraints and assumption section will underline the lack of any design imposed by the client
on the system design, resulting in removing some options from being considered by the developers.
This section also comprises assumptions which are made by the team of requirement engineering at
the time of requirements gathering and analysis. If there is an incorrect assumption, it is needed to
re-evaluate the system requirements specification in order to ensure that the documented
requirements are still valid.
Mostly in the form of statements, the requirements are written like "System requires the capability
to do x," with supporting information comprised as required.
Technical Requirements
This part is utilized to list any of the non-functional requirements, which basically personifies the
technical environment that the product requires to work in and incorporate the technical limitations
that it requires to work under. These technical requirements are important in deciding how high-
level functional requirements can decompose into more definite system requirements.
Page 9 of 17
SE M-3
Business Drivers
This part depicts the reasons why the client is hoping to build the system. The new system's
rationale is significant because it will manage the choices made by business experts, engineers, and
system architects. Another convincing purpose behind recording the business logic and behind the
system is that during the project, client can change the staff. Documentation that absolutely
recognizes the business explanations for the system will help to continue support the project if the
original sponsor proceeds onward.
The drivers may comprise issues as well as opportunities. Generally, a mix of issues and
opportunities are required to give inspiration to a new system.
System Qualities
The system qualities are the non-functional requirements which are used to define the system's
quality. These qualities are frequently known as "ilities," and the reason behind that is many of these
qualities end with "ility". They are comprised of items like availability, maintainability, security,
reliability, and scalability.
Unlike functional requirements, the quality of the system generally contains tables of particular
metrics that the system should meet to be acknowledged.
Business Models
This part portrays the fundamental business model of the client that the system will require to
support. This contains current-state, future-state and organizational context state diagrams, key
business functions, business context and process flow diagrams. This part is generally made during
the functional analysis phase.
Acceptance Criteria
This part will portray the measures by which the client will "sign-off" the final system. Based on the
procedure, this may occur toward the end of the testing and quality assurance stage, or in agile
methodology, toward the finish of every iteration.
Usually, this measure refers to the requirement in order to complete all user acceptance tests and fix
all bugs/defects which meet a pre-defined priority or severity limits.
This segment ordinarily comprises a UML use case diagram, which shows the main external entities
that will collaborate with the system along with diverse use cases that should be met. There will be a
formal definition of the steps for every use case which is required to fulfill the purpose of the
business, along with the essential pre-conditions and post-conditions.
Generally, the system use cases are derived from the system requirements and the business use case
is derived from the functional requirements. By using the flowchart, the steps of use cases are
represented.
Page 10 of 17
SE M-3
1. Completeness
2. Correctness
3. Modifiability
4. Consistency
5. Testability
6. Design independence
7. Understandable by the customer
8. Traceability
9. Verifiability
10. Unambiguousness
1. Completeness
The completeness of the system requirements specification or system requirements document shows
each meaning of completion, together with the number of pages, that properly covers all the
functional and non-functional requirements as well as resolving parts to the extent possible.
2. Correctness
The reviews of the users are used to make sure the accuracy of the requirements states in the system
requirements document. The system requirements document is called true if it contains all the
requirements which are really anticipated from the system.
3. Modifiability
The system requirements document should be modified as well as able to adapt changes to the
system. Modifications must be appropriately indexed and cross-referenced.
Page 11 of 17
SE M-3
4. Consistency
In the system requirements document, requirements are called consistent if in between any
requirements, there is no conflict. Examples of conflicts: logical conflicts such as time period of the
report generation, terminologies which are used at separate places, etc.
5. Testability
A system requirement document must be written in a manner which is simple to create test plans
and test cases from the document.
6. Design Independence
For the final system, it must be an option to select from the different design alternatives. In
particular, the system requirement document should not include any details regarding
implementation.
8. Traceability
One must be capable to design a component in a program and then to detect a requirement for a
code fragment. Similarly, one needs to be able to detect the need for related test cases.
9. Verifiability
A system requirements document is validated if, in the system requirements document, a particular
technique is present in order to quantifiably measure the degree to which the system meets each
requirement. For instance, a requirement expressing that the system should be easy to use isn't
verifiable and listing such requirements must be dodged.
10. Unambiguousness
If each requirement in the system requirements document has only a single interpretation, then the
system requirement document is unambiguous. If we want to avoid unambiguousness, we have to
use some modeling techniques such as proper reviews, ER diagrams, buddy checks, etc.
Page 12 of 17
SE M-3
Requirements Elicitation
This is the process of gathering information about the needs and expectations of stakeholders for the
software system. This step involves interviews, surveys, focus groups, and other techniques to
gather information from stakeholders.
i. Requirements Analysis
This step involves analyzing the information gathered in the requirements elicitation step to identify
the high-level goals and objectives of the software system. It also involves identifying any
constraints or limitations that may affect the development of the software system.
v. Requirement Engineering
The Requirements Engineering process is a critical step in the software development life cycle as it
helps to ensure that the software system being developed meets the needs and expectations of
stakeholders, and that it is developed on time, within budget, and to the required quality.
Requirement Engineering is the process of defining, documenting and maintaining the requirements.
It is a process of gathering and defining service provided by the system. it is the disciplined
application of proven principle , methods ,tools and notations to describe a proposed system’s
intended behaviour and its associated constraints.
Page 13 of 17
SE M-3
1. Requirements Elicitation
It is related to the various ways used to gain knowledge about the project domain and requirements.
The various sources of domain knowledge include customers, business manuals, the existing
software of same type, standards and other stakeholders of the project. The techniques used for
requirements elicitation include interviews, brainstorming, task analysis, Delphi technique,
prototyping, etc. Some of these are discussed here. Elicitation does not produce formal models of
the requirements understood. Instead, it widens the domain knowledge of the analyst and thus helps
in providing input to the next stage.
Requirements elicitation is the process of gathering information about the needs and expectations of
stakeholders for a software system. This is the first step in the requirements engineering process and
it is critical to the success of the software development project. The goal of this step is to understand
the problem that the software system is intended to solve, and the needs and expectations of the
stakeholders who will use the system.
There are several techniques that can be used to elicit requirements, including:
• Interviews: These are one-on-one conversations with stakeholders to gather information
about their needs and expectations.
• Surveys: These are questionnaires that are distributed to stakeholders to gather
information about their needs and expectations.
• Focus Groups: These are small groups of stakeholders who are brought together to
discuss their needs and expectations for the software system.
• Observation: This technique involves observing the stakeholders in their work
environment to gather information about their needs and expectations.
• Prototyping: This technique involves creating a working model of the software system,
which can be used to gather feedback from stakeholders and to validate requirements.
It’s important to document, organize and prioritize the requirements obtained from all these
techniques to ensure that they are complete, consistent and accurate.
2. Requirements Specification
This activity is used to produce formal software requirement models. All the requirements including
the functional as well as the non-functional requirements and the constraints are specified by these
models in totality. During specification, more knowledge about the problem may be required which
can again trigger the elicitation process. The models used at this stage include ER diagrams, data
flow diagrams(DFDs), function decomposition diagrams(FDDs), data dictionaries, etc.
Requirements specification is the process of documenting the requirements identified in the analysis
step in a clear, consistent, and unambiguous manner. This step also involves prioritizing and
grouping the requirements into manageable chunks.
The goal of this step is to create a clear and comprehensive document that describes the
requirements for the software system. This document should be understandable by both the
development team and the stakeholders.
Page 14 of 17
SE M-3
There are several types of requirements that are commonly specified in this step, including
1. Functional Requirements: These describe what the software system should do. They
specify the functionality that the system must provide, such as input validation, data
storage, and user interface.
2. Non-Functional Requirements: These describe how well the software system should do
it. They specify the quality attributes of the system, such as performance, reliability,
usability, and security.
3. Constraints: These describe any limitations or restrictions that must be considered when
developing the software system.
4. Acceptance Criteria: These describe the conditions that must be met for the software
system to be considered complete and ready for release.
In order to make the requirements specification clear, the requirements should be written in a
natural language and use simple terms, avoiding technical jargon, and using a consistent format
throughout the document. It is also important to use diagrams, models, and other visual aids to help
communicate the requirements effectively.
Once the requirements are specified, they must be reviewed and validated by the stakeholders and
development team to ensure that they are complete, consistent, and accurate.
Verification: It refers to the set of tasks that ensures that the software correctly implements a
specific function.
Validation: It refers to a different set of tasks that ensures that the software that has been built is
traceable to customer requirements. If requirements are not validated, errors in the requirement
definitions would propagate to the successive stages resulting in a lot of modification and rework.
Reviews, buddy checks, making test cases, etc. are some of the methods used for this.
Requirements verification and validation (V&V) is the process of checking that the requirements for
a software system are complete, consistent, and accurate, and that they meet the needs and
expectations of the stakeholders. The goal of V&V is to ensure that the software system being
developed meets the requirements and that it is developed on time, within budget, and to the
required quality.
1. Verification is the process of checking that the requirements are complete, consistent, and
accurate. It involves reviewing the requirements to ensure that they are clear, testable, and
free of errors and inconsistencies. This can include reviewing the requirements document,
models, and diagrams, and holding meetings and walkthroughs with stakeholders.
2. Validation is the process of checking that the requirements meet the needs and
expectations of the stakeholders. It involves testing the requirements to ensure that they
are valid and that the software system being developed will meet the needs of the
stakeholders. This can include testing the software system through simulation, testing
with prototypes, and testing with the final version of the software.
3. V&V is an iterative process that occurs throughout the software development life cycle. It
is important to involve stakeholders and the development team in the V&V process to
ensure that the requirements are thoroughly reviewed and tested.
Page 15 of 17
SE M-3
It’s important to note that V&V is not a one-time process, but it should be integrated and continue
throughout the software development process and even in the maintenance stage.
4. Requirements Management
Requirement management is the process of analyzing, documenting, tracking, prioritizing and
agreeing on the requirement and controlling the communication to relevant stakeholders. This stage
takes care of the changing nature of requirements. It should be ensured that the SRS is as modifiable
as possible so as to incorporate changes in requirements specified by the end users at later stages
too. Being able to modify the software as per requirements in a systematic and controlled manner is
an extremely important part of the requirements engineering process.
Requirements management is the process of managing the requirements throughout the software
development life cycle, including tracking and controlling changes, and ensuring that the
requirements are still valid and relevant. The goal of requirements management is to ensure that the
software system being developed meets the needs and expectations of the stakeholders and that it is
developed on time, within budget, and to the required quality.
There are several key activities that are involved in requirements management, including:
1. Tracking and controlling changes: This involves monitoring and controlling changes to
the requirements throughout the development process, including identifying the source of
the change, assessing the impact of the change, and approving or rejecting the change.
2. Version control: This involves keeping track of different versions of the requirements
document and other related artifacts.
3. Traceability: This involves linking the requirements to other elements of the
development process, such as design, testing, and validation.
4. Communication: This involves ensuring that the requirements are communicated
effectively to all stakeholders and that any changes or issues are addressed in a timely
manner.
5. Monitoring and reporting: This involves monitoring the progress of the development
process and reporting on the status of the requirements.
Requirements management is a critical step in the software development life cycle as it helps to
ensure that the software system being developed meets the needs and expectations of stakeholders,
and that it is developed on time, within budget, and to the required quality. It also helps to prevent
scope creep and to ensure that the requirements are aligned with the project goals.
Page 16 of 17
SE M-3
• Helps to ensure that the software system is delivered on time, within budget, and to the
required quality standards.
• Provides a solid foundation for the development process, which helps to reduce the risk of
failure.
Disadvantages
• Can be time-consuming and costly, particularly if the requirements gathering process is
not well-managed
• Can be difficult to ensure that all stakeholders’ needs and expectations are taken into
account
• Can be challenging to ensure that the requirements are clear, consistent, and complete
• Changes in requirements can lead to delays and increased costs in the development
process.
• As a best practice, Requirements engineering should be flexible, adaptable, and should be
aligned with the overall project goals.
• It can be time-consuming and expensive, especially if the requirements are complex.
• It can be difficult to elicit requirements from stakeholders who have different needs and
priorities.
• Requirements may change over time, which can result in delays and additional costs.
• There may be conflicts between stakeholders, which can be difficult to resolve.
• It may be challenging to ensure that all stakeholders understand and agree on the
requirements.
Conclusion
As the project develops and new information becomes available, the iterative requirements
engineering process may involve going back and reviewing earlier phases. Throughout the process,
stakeholders in the project must effectively communicate and collaborate in order to guarantee that
the software system satisfies user needs and is in line with the company’s overall goals.
Page 17 of 17