Though many people may not have even heard of an NFR (Non-Functional Requirement), NFRs are among the most important things to define when building the specification for an e-commerce platform, as most have a direct impact on the experience and satisfaction of your users.
We are all used to defining functional requirements, such as what will happen when a user clicks the “add to basket button” or when they input a search term. These are tangible, easy to quantify and understand, and typically define the behaviour of a system based on user interactions.
A non-functional requirement is one which is a little less tangible, or does not specifically define system behaviour, but is no less important.
Non-functional requirements dictate page speed
There are many types of NFRs, but one of the most recognisable is page speed. You may think that it’s obvious that your e-commerce platform should be fast, but defining page speed is actually a lot more complex than it sounds.
Different pages throughout an e-commerce platform will always load at different speeds due to the differences in byte size and complexity, as well as the operating system, browser, and network having a big impact on page load times.
A typical page speed NFR will define the device, operating system, browser, network and actual page that the speed relates to such as: PDP should load in less than 4 seconds on Apple iPhone 6s and above, iOS 10+, Safari on 4G. You do not need to specify the speed on all combinations of devices or networks, but you should at least set a speed benchmark. It is advisable that this is done for mobile devices, as it is likely that mobile traffic will account for the majority of visits to your e-commerce website.
Types of non-functional requirements
There are many other types of NFRs, all of which can have a critical impact on the performance, scalability, and usability of your e-commerce platform. These include:
- Security – it is important to specify the level of security that should be met such as the OWASP top 10
- Privacy – meeting basic requirements for GDPR
- Scalability and performance – ensuring that the system can scale to meet expected traffic and order volume at normal and peak times
- Speed of key user journeys – defining how long each step with key user journeys will take
- Speed of web services – defining how long web services will take to provide a response
- Accessibility – ensuring that the platform meets the basic accessibility standards throughout
- Documentation – ensuring that the platform is sufficiently documented
- Quality – even the best e-commerce platforms can be used badly so you should insist that code is developed to a good quality standard
- Extensibility – ensuring that the platform is extended in such a way to make future development feasible
- Data integrity and retention – defining how long data should be stored and how the integrity of data is maintained
- Testing – defining how unit testing will be built into the solution
- Compatibility – ensuring that the platform can be easily integrated with 3rd party systems
- Search – defining how quickly the system will return search results
- Availability – defining the agreed uptime of the platform under normal conditions
- Infrastructure – defining the infrastructure performance thresholds (CPU and memory usage)
Although this list is not exhaustive, it demonstrates the wide range of NFRs that can – and should – be defined when building out the list of requirements for, and specification of, an e-commerce platform.
Why NFRs are so important
NFRs essentially define the quality of your platform. A functional requirement will define its behaviour, but the NFR will define how well it will exhibit that behaviour.
A well-defined set of NFRs will have the following benefits:
- Better code quality
- Better security
- Reduced total cost of ownership
- Better user experience
- Less bugs
- Better speed and performance
- Better uptime
Without correctly defining them, your developer may meet all of your functional requirements, but still deliver an unsatisfactory product. However, if you have not specifically defined the NFRs, they cannot really be held responsible for that.
Many e-commerce projects in the past have failed or become much more costly than expected due to a lack of well-defined NFRs. Without good NFRs you could end up with an e-commerce platform that meets its functional requirements but is slow, insecure, hard to manage, costly to maintain, of a poor quality, and provides a poor experience to your users.