There are two sides to requirements-
One is Functional like “what are the features to be built to fulfill the user’s need?“ – This part is usually defined on all projects and lies in the product owner’s domain.
Another is the Non-functional requirements like “The feature must not compromise security” or “Performance metrics can’t fall below X”. These non-functional requirements usually fall under the quality domain.
Developing the product follows functional requirements but developing it the right way covers the non-functional requirements. Of course, for any requirement to work, they need to be well defined and clear. Requirements like “The system must be secure.”, “The system must not go down.”, or “The system must not have performance issues” do not clarify the right measurement as well as the right action to be taken. Hence, the whole purpose of non-functional requirements are lost. We usually divide quality into separate areas of focus and then define the NFRs for each.
If defined well, NFRs can be a great checklist for quality and performance for any software.
UI is crisp and consistent across all major devices, standard and non-standard accepted viewports and resolutions are a standard requirement.
Browsers for compatibility: Internet Explorer 10 and above. Google Chrome V19.0.1084 and above. Safari 5.1.10 and above. Firefox 10 and above.
Devices: iPhone 6 and above. Android KitKat and above including Android One. Device Sizes: iPhone 6 and above. Xiaomi Redmi 4 and above. One Plus 3 and above. Samsung Galaxy S7 and above.
The range of supported devices depends on app features, especially if we are developing an IoT app.
Display a pre-defined simple error image in case the device/browser/very low resolution is not supported
Testing should be done on multiple devices and test reports shall be produced.
Screen should seamlessly render and work across all the popular and possible device viewports without loss of data (in vision) or loss of functionality in the landscape as well as portrait mode on mobile devices.
Landscape mode support depends on the requirement. Landscape mode may also have a different UI than portrait mode
UI Response time calculates how long it takes to completely load pages and extends lazy loading techniques for large data sets. The focus is on improving the page load speed, especially on slow network connections.
Complete Page loads can be expected in under 7 seconds. A page that has lots of data/tabulation/chart also can initially part load in under 2 seconds and rest later using lazy loading.
After the page loads, it should be responsive to user interaction in under 1 second. If there’s an animation or transition running, or the user is scrolling the pages, the browser needs to match the device’s refresh rate.
Proper Navigation helps users find their way on the platform. Users should be able to get through different features based on their cognitive knowledge.
The navigation has to be smooth without halts or glitches and follow standard navigation guidelines:
At Mindbowser, we use Codegrip to maintain the code quality. Codegrip is a cloud-based SaaS tool for code review and software analytics. It helps programmers to improve their code quality by identifying issues and bugs of their code that may affect the project’s performance, efficiency, etc. It also detects security vulnerabilities as early as possible in the software development life cycle with just one click.
Other recommendations include
The standard code review process that we recommend is as follows
Testing should be done on different networks for speed and behavior.
Testing on impaired NWs (impairment conditions of real-world IP networks such as network latency, network delay variation (jitter), bandwidth, congestion, packet loss, packet FCS errors, packet bit errors shall be tested).
Recommended checks are:
We recommend following the Google guidelines to online and offline mode UX.
Read more here
Follow standards laid down by platforms to avoid rework and make the most out of platform offerings.
At Mindbowser, my CTO and I teamed up to build an agency that can bring the best of tech and knowledge to founders.
In case you would like to discuss your options further, feel free to get in touch at ayush@mindbowser.com or book a 30 minutes free consultation call!
Get Free ConsultationHere are the basics for building a secure software application:
Crash Reporting helps to identify bugs and errors as they happen.
The software should have the ability to access the report/logs in case of issues. Tools like Crashlytics should be integrated.
Read more on 20 Tools That Any Non-Tech Founder Can Use To Manage Their Tech Product Development
One should also be able to track the progress of the project. The timely status report should be shared. Any red flags should be reported proactively.
To summarize, Non Functional requirements enable you to understand the performance and health of your ongoing development so that you can make critical adjustments in your execution to achieve your goals. By defining non-functional requirements as above, you bring your team on board with the right development practices and the right way to do things. Happy Reading!
Master Epic Integration with SMART on FHIR in Just 60 Minutes
Register Here