A Software Requirements Specification (SRS) document typically includes both functional and non-functional requirements. Functional requirements define what the system is supposed to do, while non-functional requirements define how the system is supposed to be.
Non-functional requirements in an SRS document can cover a wide range of topics, and may include, but are not limited to, the following:
- Performance Requirements: These specify the performance levels the system needs to adhere to, such as the response time for user requests, throughput rates, and data processing times.
- Security Requirements: These specify the measures that must be in place to protect the software and its data from unauthorized access or corruption. It could include things like user authentication, data encryption, and compliance with relevant standards or regulations.
- Usability Requirements: These specify the factors that contribute to a positive user experience, such as an intuitive user interface, clear error messages, and user documentation.
- Availability Requirements: These specify the desired uptime for the system, which can be particularly important for systems that need to be accessible 24/7.
- Scalability Requirements: These specify how well the system should be able to increase its capacity to meet growing user demand.
- Reliability Requirements: These specify the ability of the system to perform its intended functions without failure for a specified period of time in a specified environment.
- Maintainability Requirements: These specify how easy it will be to maintain the system, including fixing bugs, adding new features, and making other changes.
- Disaster Recovery Requirements: These specify how the system should handle data backups, system crashes, and other unexpected events to ensure minimal data loss and downtime.
- Compliance Requirements: These specify any laws, regulations, or standards the system must comply with. Examples could include GDPR for data privacy, or ISO 9001 for quality management.
When writing the SRS, it’s important to clearly and unambiguously specify these non-functional requirements to ensure everyone involved in the project has the same understanding of how the system should behave.