Classification of Requirements
Functional: A requirement that specifies an action that a system MUST be able to perform, without
considering physical constraints. A requirement that specifies input/output behavior of the system
Non-Functional: A requirement that specifies system PROPERTIES, such as environmental and
implementation constraints, performance, dependencies, maintainability, extensibility and reliability. Often
classified as: Performance Requirements External interface requirements Design constraints Quality
attributes Advanced Software Requirements Engineering:
Requirements
General:
What is the overall scope of the project from a requirements perspective?
Example: A solution is required that allows users to maintain customers and contact with those
customers by salespeople.
Business:
What specific capabilities must the whole solution deliver to the Business?
Example: Users must be able to create a record of contact with a customer by a salesperson.
Functional:
What specific capabilities must the computerized part of the solution deliver?
Example: The system will provide the ability to record details of contacts with a customer by a
salesperson
Requirements
Detailed:
What business rules are to be enforced by the solution?
Example: A customer can not be deleted if they have had any contact with salespeople in the last 6
years.
Non-Functional:
What requirements exist that do not fall in to any of the other categories?
Example: The system must support up to 150 concurrent users.
Data:
What rules must the data enforce?
Example: A customer can have many contacts by a salesperson.
Requirements
Technical:
What technical constraints must the solution abide by? Often documented as a constraint rather than
requirement…
Example: The system will be developed using object orientated standards.
Requirements Overview
A requirement is a statement of one of the following:
What a system must do
A known limitation or constraint on resources or design
How well the system must do what it does
The first definition is for Functional Requirements
The second and third definitions are for Non- Functional Requirements (NFRs)
Functional Requirements
A Functional Requirement:
is a statement of what a system must do (#1)
is measured in “yes” or “no” terms
usually employs the word “shall”
Examples:
Add Participant“
The software shall display an option to add a participant”
Invite/prompt Operator“
The software shall invite/prompt the operator if the participant clicks the Operator
Help icon.”
Functional requirements
Functional requirements define the required behavior of the system to be built.
Statements of services the system should provide
Customers and developers usually focus all their attention on functional requirements
Functionality of the system
Abnormal behavior is also documented as functional requirements in the form of
exception handling
Functional requirements should be complete, unambiguous and consistent
Functional Requirements:
These are the requirements that the end user specifically demands as basic facilities that
the system should offer.
All these functionalities need to be necessarily incorporated into the system as a part of the
contract.
They are basically the requirements stated by the user which one can see directly in the
final product, unlike the non-functional requirements.
Non Functional Requirements
Non-functional requirements specify additional properties of the system to be
built, other than functionality.
Most non-functional requirements relate to the system as a whole.
They include constraints on timing, performance, reliability, security, maintainability,
accuracy, the development process, standards, etc.
Non-functional requirements
External interface requirements, performance requirements, design constraints, logical
database requirements, and “characteristics” can be subcategorized such as:
Non-functional requirements:
These are basically the quality constraints that the system must satisfy according to
the project contract. The priority or extent to which these factors are implemented
varies from one project to other. They are also called non-behavioral requirements.
Types of Non-functional requirements
13 non-functional requirements to be included in a Software Requirements Document.
Performance requirements
Interface requirements
Operational requirements
Resource requirements
Verification requirements
Acceptance requirements
Documentation requirements
Security requirements
Portability requirements
Quality requirements
Reliability requirements
Maintainability requirements
Safety requirements
Differences between Functional and Non Functional Requirements
Functional Requirements Non Functional Requirements
A functional requirement defines a system or its A non-functional requirement defines the quality
component. attribute of a software system.
It places constraints on “How should the software
It specifies “What should the software system do?”
system fulfill the functional requirements?”
Non-functional requirement is specified by technical
Functional requirement is specified by User. peoples e.g. Architect, Technical leaders and software
developers.
It is mandatory. It is not mandatory.
It is captured in use case. It is captured as a quality attribute.
Defined at a component level. Applied to a system as a whole.
Differences between Functional and Non Functional Requirements
Functional Requirements Non Functional Requirements
Helps you verify the functionality of the software. Helps you to verify the performance of the software.
Functional Testing like System, Integration, End to End, Non-Functional Testing like Performance, Stress,
API testing, etc are done. Usability, Security testing, etc are done.
Usually easy to define. Usually more difficult to define.
Example Example
1) Authentication of user whenever he/she logs into 1) Emails should be sent with a latency of no
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 done
3) A Verification email is sent to user whenever within 10 seconds
he/she registers for the first time on some software 3) The site should load in 3 seconds when the
system. number of simultaneous users are > 10000
How to write functional and non-functional requirements?
There are different ways to write functional and non-functional requirements.
The most common way to write functional and non-functional requirements is through a Requirements
Specification Document. It is a written description of the required functionality.
It states the project objective and includes an overview of the project to provide context, along with any
constraints and assumptions. The requirements specification document is should include visual representations
of the requirements to help non-technical stakeholders understand the scope.
Closely related to a requirements specification document is a Work Breakdown Structure or WBS. This breaks
down the entire process into its components by “decomposing” the requirements into their elements until they
cannot be broken down any further.
Another approach is User Stories. They describe the functionality from the perspective of the end-user and states
exactly what they want the system to do.
It effectively states “As a <type of user>, I want <goal> so that <reason>”. One benefit of user stories is that they
do not require much technical knowledge to write. User stories can also be used as a precursor to a requirements
specification document by helping define user needs.
Use Cases are similar to user stories in that no technical knowledge is necessary. Use cases simply describe in
detail what a user is doing as they execute a task. A use case might be “purchase product”, and describes from
the standpoint of the user each step in the process of making the purchase.