Non-functional requirements (NFRs) may not be visible to users and customers directly, but their absence may impact the overall user experience in a negative way and hamper the business. NFRs include critical aspects of the system, such as performance, latency, scalability, high availability, and disaster recovery. The most common NFRs are shown in the following diagram:
The preceding diagram shows the following NFRs for consideration:
- Performance:
- What will be the application load time for users?
- How can we handle network latency?
- Security and compliance:
- How can we secure an application from unauthorized access?
- How can we protect an application from malicious attacks?
- How can we meet local laws and audit requirements?
- Recoverability:
- How can we recover an application from an outage?
- How can we minimize recovery time in the event of an outage?
- How can we recover lost data?
- Maintainability:
- How can we ensure application monitoring and alerts?
- How can we ensure application support?
- Reliability:
- How can we make sure the application performs consistently?
- How can we inspect and correct glitches?
- Availability:
- How can we ensure the high availability of an application?
- How can we make an application fault-tolerant?
- Scalability:
- How can we meet the increasing demand for resources?
- How can we achieve a good scale for a sudden spike in utilization?
- Usability:
- How can we simplify an application's use?
- How can we achieve a seamless user experience?
However, depending on the nature of the project, there may be an NFR that is suitable for that project only (for example, voice clarity for a call center solution). You will learn more about these attributes in Chapter 3, Attributes of the Solution Architecture.
The solution architect becomes engaged in a project from a very early stage, which means they need to design a solution by gauging requirements across groups in an organization. The solution architect needs to ensure consistency in solution design across system components and requirements. The solution architect is responsible for defining NFR across groups and different components since they make sure that the desired usability of a solution is achieved across the board.
NFRs are an integral and essential aspect of solution design, which tends to slip when teams are too focused on business requirements, and this can impact the user experience. A good solution architect has the primary responsibility of conveying the importance of NFR and making sure they are implemented as part of solution delivery.