System Requirements
System Requirements
Functional Requirements (FRs)
They specify WHAT the system should do.
Defining the behaviors or functionalities that the system must exhibit to fullfil it's purpose. (Kind of like usecases
or user stories
)
They are verified through functional testing methods like system, integration and e2e testing.
Examples
When a route is registered for income calculation, create all necessary support data for calculating it.
Add a customer to the database.
Print an invoice after a sale if completed.
Non Functional Requirements (NFRs)
They specify HOW the system should perform it's functions.
They define QUALITY attributes of the system:
Like performance.
Security.
Usability.
These requirements ensure the system meets user expectations regarding performance, reliability and usability.
They are usually more challenging to define, and are applied to the system as a whole.
Are specified by technical personnel.
Are verified with performance, stress, usability and security testing.
Examples
Webpages must load within 3 seconds when the number of simultaneous users exceeds 10.000.
Modified data in a database should be updated for all users accessing it within 2 seconds.
Emails should be sent with a latency of no greater than 12 hours from given activity.
When user uploads files like
jpg
, reduce the files size before saving it in the server.
Tracking the requirements
Some tools for tracking requirements throughout the development:
TraceCloud
Xebrio
Asana
How to not overlook them
Early requirement gathering
Engage with all relevant stakeholders, like users, developers, operations teams, to gather comprehensive requirements from the start.
Implement checklists for both FRs and NFRs, to make it a easier gathering them. This helps identifying all necessary aspects, including performance, security and usability before moving foward with the design.
Prioritize requirements
Establish importance, this helps in prioritizing requirements based on their impact on the system's performance and user expirience.
Incorporate NFRs into System Design
Design with NFRs in mind, when choosing technologies, architectures and patterns that support the required performance, security and scalability.
Iterative design process: adopt an iterative design process where NFRs are continuously evaluated and refined throughout the project.
Regular reviews and testing
Regular audits of the system against the defined NFRs. This helps in identifying gaps an ensuring that the system continyes to meet the specified standards.
Comprehensive testing strategies that cover NFRs. This includes performance testing, security testing and usability testing to ensure that the system meets the required standards.
Documentation and communication
Maintain documentation of all requirements, up to date.
Foster open communication channels where concerns about NFRs can be raised and discussed.
Last updated