There are many definitions of non-functional requirements.
According to IIBA’s BABOK guide:
Non-functional Requirements capture conditions that do not directly relate to the behavior or functionality of the solution, but rather describe environmental conditions under which the solution must remain effective or qualities that the systems must have. They are also known as quality or supplementary requirements. These can include requirements related to capacity, speed, security, availability and the information architecture and presentation of the user interface.
According to Wikipedia:
In systems engineering and requirements engineering, a non-functional requirement is a requirement that specifies criteria that can be used to judge the operation of a system, rather than specific behaviors. This should be contrasted with functional requirements that define specific behavior or functions.
According to SAFe:
Nonfunctional requirements describe system attributes such as security, reliability, maintainability, scalability and usability (often referred to as the “ilities”). They can also be constraints or restrictions on the design of the system (in which they may be called design constraints).
Within Non-functional requirements there are some distinct groups. I refer to these as quality requirements and constraints, much like IREB does. In fact, IREB defines Non-functional requirement as:
A quality requirement or a constraint.
My favourite book on Non-functional requirements is Tom Gilb’s “Competitive Engineering“.