What is Non-Functional Requirement in Software Engineering?

What is Non-Functional Requirement?

Non-Functional Requirement (NFR) specifies the quality attribute of a software system. They judge the software system based on Responsiveness, Usability, Security, Portability and other non-functional standards that are critical to the success of the software system. Example of nonfunctional requirement, “how fast does the website load?” Failing to meet non-functional requirements can result in systems that fail to satisfy user needs.

Non Functional requirements in Software Engineering allows you to impose constraints or restrictions on the design of the system across the various agile backlogs. Example, the site should load in 3 seconds when the number of simultaneous users are > 10000. Description of non-functional requirements is just as critical as a functional requirement.

Types of Non-functional Requirement

Below are the main types of non functional requirements:

Types of Non Functional Requirements
Types of Non Functional Requirements
  • Usability requirement
  • Serviceability requirement
  • Manageability requirement
  • Recoverability requirement
  • Security requirement
  • Data Integrity requirement
  • Capacity requirement
  • Availability requirement
  • Scalability requirement
  • Interoperability requirement
  • Reliability requirement
  • Maintainability requirement
  • Regulatory requirement
  • Environmental requirement

Examples of Non-functional requirements

Here, are some examples of Non functional requirements:

  1. Users must change the initially assigned login password immediately after the first successful login. Moreover, the initial should never be reused.
  2. Employees never allowed to update their salary information. Such attempt should be reported to the security administrator.
  3. Every unsuccessful attempt by a user to access an item of data shall be recorded on an audit trail.
  4. A website should be capable enough to handle 20 million users with affecting its performance
  5. The software should be portable. So moving from one OS to other OS does not create any problem.
  6. Privacy of information, the export of restricted technologies, intellectual property rights, etc. should be audited.

Functional vs Non Functional Requirements

Following is the main difference between Functional and Non functional requirements:

Parameters Functional Requirement Non-Functional Requirement
What is it? Verb Attributes
Requirement It is mandatory It is non-mandatory
Capturing type It is captured in use case. It is captured as a quality attribute.
End-result Product feature Product properties
Capturing Easy to capture Hard to capture
Objective Helps you verify the functionality of the software. Helps you to verify the performance of the software.
Area of focus Focus on user requirement Concentrates on the user’s expectation.
Documentation Describe what the product does Describes how the product works
Type of Testing Functional Testing like System, Integration, End to End, API testing, etc. Non-Functional Testing like Performance, Stress, Usability, Security testing, etc.
Test Execution Test Execution is done before non-functional testing. After the functional testing
Product Info Product Features Product Properties

Advantages of Non-Functional Requirement

Benefits/pros of Non-functional testing are:

  • The nonfunctional requirements ensure the software system follow legal and compliance rules.
  • They ensure the reliability, availability, and performance of the software system
  • They ensure good user experience and ease of operating the software.
  • They help in formulating security policy of the software system.

Disadvantages of Non-functional requirement

Cons/drawbacks of Non-function requirement are:

  • None functional requirement may affect the various high-level software subsystem
  • They require special consideration during the software architecture/high-level design phase which increases costs.
  • Their implementation does not usually map to the specific software sub-system,
  • It is tough to modify non-functional once you pass the architecture phase.

KEY LEARNING

  • NFR means: A non-functional requirement defines the performance attribute of a software system.
  • What are the types of non functional behaviour: Scalability Capacity, Availability, Reliability, Recoverability, Data Integrity, etc.
  • One of the NFR examples is Employees never allowed to update their salary information. Such attempt should be reported to the security administrator.
  • Functional Requirement is a verb while Non-Functional Requirement is an attribute
  • The advantage of Non-functional requirement is that it helps you to ensure good user experience and ease of operating the software
  • The biggest disadvantage of Non-functional requirement is that it may affect the various high-level software subsystems.