Types of non-functional requirements
External constraint
Digital solutions do not exist in a vacuum. There are many external factors that influence or constrain a product. I call these external constraints. Here are some general groupings to consider.
- Boundaries Enforced by Nature
- Legal and regulatory requirements
- Organizational policies and regulations
- IT security: access and data security
- Geolocation of features and data
performance requirements
Performance categories limit the overall speed and efficiency of applications and business solutions. The main issue with performance is cost, not difficulty of achievement. Modern applications can achieve incredible levels of performance when needed. Businesses are willing to pay for it.
- Frequency: How often is the feature used?
- Urgency: response time and update time.
- Data volume of information
- Accuracy and timeliness of information
User experience requirements
User experience is a non-functional aspect that has become even more important with the advent of the Internet. This is where technology meets real humans, and like touchpoints between people in conflict, it can be tricky.
Many non-functional requirements come from this category. Find user experience requirements related to user skills, environment (where the application will be used), training needs, or cultural needs and desires.
- level of interaction
- Corporate culture and personal culture
architecture features
If your application is web-based, does it need to work on any device your users use: smartphones, tablets, PCs, laptops? Again, the answer is simply money. The more devices your application needs to support, the higher the cost.
Non-functional requirements, which define the required architectural capacity, deal with application responsiveness to changes in the business and technical environment. These include changes in hardware features, software, competitive environment, or a combination of these factors.
- Maintainability defines how quickly a function or application must respond when the business environment changes.
- Portability is how quickly an application can be moved from one hardware platform or software framework to another.
- Scalability defines how easy it should be for an application to grow over time.
- Availability is when users can access your application.
- Reliability specifies how reliable the application should be compared to the cost of potential failure.
Properly defining and implementing non-functional requirements is a headache. Too narrow a specification can result in a solution that is too costly to be viable. Failure to sufficiently specify them may result in the system failing for its intended purpose.