Non Functional Requirements – Characteristics of Software

The Non-functional requirements tell you how the system will run or work properly.

c++ palindrome program without arrays
software requirements
types of Non functional requirements
types of Nonfunctional requirements

Comparison of Functional vs Non Functional Requirements

Functional Requirements Non-Functional Requirements
What is it? Verb Attributes
End-result Describe Product feature Describe Product properties
Requirement Compulsory Not compulsory
Capturing Captured in the use case. Captured as a quality attribute.
Easy to capture Hard to capture
What is the focus? Focus on user requirement Focus on the user’s expectations.
Objectives Assists us to verify the functionality of the software. Assists us to verify the performance of the software.
Type of Testing Functional Testing

  • System testing,
  • Integration testing
  • API testing, etc.
Non-Functional Testing

  • Performance testing
  • Stress testing
  • Usability testing
  • Security testing, etc.
Test Execution Testing is done before non-functional testing. Testing after the functional testing
Documentation Describe what the product does? Describes how the product works?

A. Product Requirements

Bad examples of the Usability of software or website

B. Organizational Requirements

C. External Requirements

Interoperability Requirements

Ethical Requirements

Legislative Requirements

    1. Privacy Requirements
    2. Safety Requirements

The Non-functional requirements are the limitations on the functions available by the system which are limitations on timing, limitations on the development process and standards. On the whole system, Non-functional requirements are applied. These requirements are not applied individually to each function.

There are many nonfunctional requirements of the software depends on the kind of software. However, four examples of Non-functional requirements we are discussing here are usability, reliability, performance, supportability, and scalability.

challenges of Non Functional Requirements

Usability means that how easy the software performs the specific other words, it shows the ability of the software to perform tasks.  In usability, the software is used by specific consumers to achieve the specific objective with effectiveness, efficiency, and satisfaction.

The system should be so reliable that it would work for a long time without any problem and we can easily trust the system.


Fault means a defect in the software like a bug in the code which can cause failure in the software.

  • Failure means that when the behavior of the software is not same as the specified one.

The system response time towards any task. In other words, performance is the speed or how effectively the software response to the given task. Performance can be tested by MIPS(millions of instructions per second).


Supportability (also known as serviceability) is the ability to install, configure and monitor the software. It is also used to identify the faults and debug the faults. It helps in the maintenance of the software by solving the problems and restoring it.

It’s about the capability of software such as if an application run in 2 seconds for 100 users would it be run also in 2 seconds with 200 users basically it’s called scalability. Suppose we have 3 servers and it serves 1000 users if we double the number of servers would we able to have 2000 user on it.

1. Horizontal Scalability

Horizontal Scalability

In horizontal scalability, we can increase performance for our work by connecting different software and hardware entities on a single unit. It is not expansive as vertical Scalability

 In vertical scaling, additional resources are added to a single node. The node can then handle more work and provides additional capacities. Additional resources include more or faster CPUs, more memory or in case of virtualized instances, more physical shares of the underlying machine. Vertical scaling almost directly speeds up and expensive.

It’s about code quality how easy for someone else to read the code and maintain application by someone else and the code quality is not good it cannot maintain by someone other so during the process must keep in mind the application must be read or maintained by someone else instead of application maker.

It is one of the most important steps in which we must see the security by seeing which farm work we are using, application security infrastructure security, is the network we are using us secure is it behind the firewall.

Challenges of Non- functional requirements:

It is difficult to make a model of Non-functional requirements. It is also a difficult task to make a measurable requirement that we can measure how well it is meeting with what we want. It is not an easy task to put during development.

Software maintainability means that the software should remain in the original state as it was made and you can remove the error and update it easily. In maintainability, we learn from the past and improve the ability of the system this is also known as updating software.

The software maintainability is used to understand, repair or enhance. 75% of our cost is spending on maintainability of software so it is a very important step in software development. It also helps to identify the updating point in the software.

The developer makes a maximum effort on the maintainability of the software. There is four type of maintenance performed for enhancements which are correcting, adapting, perfecting and preventing the software.

If the quality of code is not good.

  • If there is too much Technical Complexity
  • If the documentation is not done properly.


The software maintainability measurement is used to measure the effect done. There are many Programmed solutions that offer an accurate, objective way to measure each program. They supply measurement for reducing application complexity, improving quality, and moderating risk as an application is created, enhanced, or maintained. It determines which actions should be taken to decrease programming efforts or costs.

Non-functional requirements(NFRs), Software Engineering SE