May be because NFRs (Non-Functional Requirements) are always considered neglected (let me call it as Neglected Fundamental Requirements), alternative name EFRs (Extra-Functional Requirements) came into picture long back, though not prevalent. In recent few years, digital revolution has brought lot of importance to User Experience (UX) which can be addressed via NFRs / EFRs.
Nowadays, we see more awareness on this as everyone now understand the underlying fact –
“UX cannot be an optional quality for my digital product? So are the EFRs.”
What are Extra Functional Requirements (EFRs)?
A Functional Requirement (FR) specifies what a system needs to do whereas an Extra Functional Requirement (EFR) describes how the system will do it. Usually EFRs specifies the quality attributes of a digital product describing the user experience of the system. It is applicable to system as a whole & cannot be categorized to individual features.
News about losing credibility, competitor wins, etc becoming headlines often, nowadays every digital product owner shows lot of importance in User Experience (UX) & thereby to EFRs. Everyone now understands the mantra “Success or failure of the digital product is mainly decided by the EFRs”.
EFRs usually exist with interrelationships, sometimes making it very challenging to measure the quality of an EFR in isolation where interrelationship exists. For example, Performance EFR is related to Scalability, Availability & Capacity. Hence certifying the system for Performance EFR often seem incomplete without accounting EFR related to Scalability, Availability & Capacity.
EFRs are grouped considering its relevance to type of users. As an end user, Performance & Security are essential EFRs whereas for a developer maintainability & reusability will be of more relevance.
- EFRs relevant for End Users (for improving User Experience):
Performance, Security, Usability, UX, Accessibility, Reliability, Scalability, Availability, Capacity, Flexibility, Interoperability, Compatibility, etc.
- EFRs relevant for Developers / Testers during SDLC:
Maintainability, Reusability, Testability, Portability, Supportability, Packaging requirements, etc.
EFRs can also be grouped based on the type of quality characteristics it imposes on the system. In this model, EFRs are classified into 3 categories:
- Product EFRs that describes the desired quality characteristics of the system. Example : Performance, Security, Usability, Reliability, Capacity, etc.
- Organizational / Process EFRs that describes the desired quality characteristics to be exhibited during the development process of the system. Example: Standards (ISO 9000) & CASE tool implementation requirements, management reporting requirements, delivery requirements, etc.
- External EFRs that describes the environmental requirements of the system & its legal requirements placed both on product & process. Example : Legal requirements, Health & safety requirements, Interoperability requirements, privacy requirements,etc.
Direct Mapping of User Concerns to EFRs:
As EFRs represent the quality characteristics of the systems, it can be easily mapped to end user concerns related to user experience. Few examples provided below.
- Speed & Resource utilization – Performance & Capacity
- Unauthorized Access – Security
- Ease of Use – Usability
- Likelihood of Failure – Reliability
- Ease of Change & Repair – Maintainability / Flexibility
EFRs in nutshell:
Performance (Scalability & Capacity included) is concerned with the speed of operation of the system. It deals with measuring various metrics like Response Time, System Throughout, Workload, Hardware resource utilization %, # concurrent users supported during peak time, etc.
Security is concerned with ensuring Confidentiality, Integrity, Authorization, Authentication & Non-Repudiation. It deals with verification against OWASP /SANS guidelines.
Usability is concerned with testing the system for its ease with which user can learn, understand & use the system. It deals with Understandability, Learnability, Personalization, Consistency, Errors, Navigation friendliness, satisfaction rate, Documentation effectiveness, etc
Compatibility is concerned with performability of the system across platforms. It deals with testing across Operating Systems, Browsers, Databases, mobile devices, etc.
Accessibility is concerned with the ability of the system to provide ease to the people with disabilities. It deals with testing against WCAG (Web Content Accessibility Guidelines). It includes testing the system for facilitating its support for people against visual disability, hearing disability, Cognitive disability, etc.
Reliability is concerned with exercising an application to identify failure frequency & recoverability before deploying the system. It deals with identifying frequency/severity of failure, MTBF, MTTF, MTTR, etc.
Availability is concerned with testing the application against percentage of time that a system is capable of serving its intended function. The continuity of operation requirement is usually represented in percentage. The popular term ‘five nines’ (99.999% availability) refers to downtime of 5.25 minutes in a year (including planned for unplanned maintenance windows).
Portability is concerned with testing the ease with which the system or its components can be moved across environments. It deals with number of target environments (hardware, software, OS, versions, etc.), mean time to port , etc.
Internationalization is concerned with testing ease of adaptability of the system to support various languages and regions without any changes.
Localization is concerned with the testing the ease of adaptability of internationalized software for a specific region or language by adding local specific components and translating text.
Supportability is concerned with the ease of changes to the system after deployment. It deals with no of portable environments, rate of change requests, time requirement, etc.
Yes, EFRs are generally informally stated, often contradictory, difficult to enforce during development and evaluate for the customer prior to delivery. But now in the recent days, this trend is changing exponentially as user experience (UX) is being thought as a prime factor for digital product success.
It is our responsibility to educate our team & sometimes our customer about the importance of NFRs / EFRs. Do not regret for missing NFRs anymore. Be a catalyst to bring this change in the projects where you are involved.
“To measure is to know. If you cannot measure it, you cannot improve it.”
Thrive UX by bringing life to EFRs.
Happy EFR Testing!!!