In order to build a good software system it's usually recommended a good understanding of its requirements. These requirements can be divided into two groups: functional requirements and non-functional requirements.
Functional requirements
Functional requirements describe how the product must behave. For example: "the system sends a confirmation email when a new user account is created".
Non-functional requirements
Non-functional requirements specify the quality attributes of the system, that's why they are also called quality attributes. The key types of non-functional requirements are:
- performance and scalability - How fast does the system return results? How much will this performance change with higher workloads?
- portability and compatibility - Which hardware, operating systems, and browsers, along with their versions does the software run on? Does it conflict with other applications and processes within these environments?
- reliability, maintainability, availability - How often does the system experience critical failures? How much time does it take to fix the issue when it arises? And how is user availability time compared to downtime?
- security - How well are the system and its data protected against attacks?
These requirements are part of a format that is called SRS a.k.a. Software Requirement Specification.
Top comments (0)