Non-Functional Requirements are the constraints or the requirements imposed on the system. They specify the quality attribute of the software. Non-Functional Requirements deal with issues like scalability, maintainability, performance, portability, security, reliability, and many more. Non-Functional Requirements address vital issues of quality for software systems. If NFRs not addressed properly, the results can include:
- Users, clients, and developers are unsatisfied.
- Inconsistent software.
- Time and cost overrun to fix the software which was prepared without keeping NFRs in mind.
- Data integrity
These can can be classified as :
- Performance constraints –
Reliability, security, response time, etc.
- Operating constraints –
These include physical constraints (size, weight), personnel availability, skill level considerations, system accessibility for maintenance, etc.
- Interface constraints –
These describe how the system is to interface with its environment, users, and other systems. For example, user interfaces and their qualities (e.g., user-friendliness).
- Economic constraints –
Immediate and/or long-term costs.
- Lifecycle requirements – Quality of the design:
These measured in terms such as maintainability, enhance ability, portability.
Advantages of Non-Functional Requirement :
- They ensure the software system follows legal and adherence rules.
- They specify the quality attribute of the software.
- They ensure the reliability, availability, performance, and scalability of the software system
- They help in constructing the security policy of the software system.
- They ensure good user experience, ease of operating the software, and minimize the cost factor.
Disadvantages of Non-functional requirement :
- The nonfunctional requirement may affect the various high-level software subsystem.
- They generally increase the cost as they require special consideration during the software architecture/high-level design phase.
- It is difficult to change or alter non-functional requirements once you pass them to the architecture phase.
Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a student-friendly price and become industry ready.
- Software Engineering | Requirements Engineering Process
- Software Engineering | Classification of Software Requirements
- Software Engineering | Requirements Elicitation
- Software Engineering | Challenges in eliciting requirements
- Software Engineering | Requirements Validation Techniques
- Different Sources of Understanding Software Requirements
- Software Engineering | Introduction to Software Engineering
- Requirements and feature of Good Prototyping CASE tool
- Functional vs Non Functional Requirements
- Software Engineering | Re-engineering
- Software Engineering | Reverse Engineering
- Difference between Software Engineering process and Conventional Engineering Processs
- Difference between Forward Engineering and Reverse Engineering
- Software Engineering | Halstead’s Software Metrics
- Software Engineering | Classification of Software
- Software Engineering | Software Project Management Complexities
- Software Engineering | Role and Responsibilities of a software Project Manager
- Software Engineering | Seven Principles of software testing
- Software Engineering | Agile Software Development
- Software Engineering | Software Maintenance
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.