Types of Non-Functional Requirements
Digital solutions do not exist in a vacuum. There are many external factors that can influence or constrain your product. I call these external constraints. Here are some general groupings to think about.
- Boundaries Enforced by Nature
- Laws and Regulatory Requirements
- Organizational Policies and Rules
- IT Security: Access and Data Security
- Geographic location of Functions and Data
In the Performance category, there are limits to the speed and efficiency of the application and the overall business solution. The main issue with performance is not the difficulty of achieving it, but the cost. Modern applications can achieve amazing levels of performance if they are necessary – and the business is willing to pay for it.
- Frequency: how often is a feature used?
- Urgency: response time vs. update time.
- Data volume of information
- Precision and timeliness of information
User Experience Requirements
User experience is a non-functional dimension that has become increasingly critical with the advent of the Internet. This is where technology meets real people and, like any touchpoint between opposites, can be tricky.
Many of your non-functional requirements will come from this category. You might discover user experience requirements related to your users’ skills, their environment (where will they use the application), their training needs, or perhaps their cultural needs and desires.
- Level of interaction
- Corporate and personal cultures
If the application is web-based, is it necessary for it to work on any device a user might use, such as a smartphone, tablet, PC, laptop, etc.? Again, the answer is simply a matter of money because the more devices your application needs to support, the more it will cost.
Non-functional requirements, which define required architectural capacities, deal with the responsiveness of the application to changes in its business and technological environment. These include changes in hardware capabilities, software, the competitive environment, or a combination of these factors.
- Maintainability defines how quickly your function or application should respond when the business environment changes.
- Portability is about how quickly you can migrate the application from one hardware platform or software framework to another.
- Scalability defines how easy it must be for the application to deal with growth over time.
- Availability is about when the application is accessible to its users.
- Reliability specifies how reliable the application must be compared to the potential cost of failure.
Properly defining and implementing Non-Functional Requirements can be a pain in the neck. If you specify them too narrowly, the solution might be too costly to be viable; if you don not specify them well enough, the system may will fall short of its intended purpose.