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.
- Scalability
- Reliability
- Regulatory
- Maintainability
- Serviceability
- Utility
- Security
- Manageability
- Data integrity
- Capacity
- Regulatory
- Availability
- Usability
- Interoperability
- Environmental
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.