Quality requirements are the most important category in the NFR world. Quality is the totality of characteristics of an entity that bear on its ability to satisfy stated and implied needs (ISO12601). System quality is an essential and distinguishing attribute of the final product. Typical quality requirements include safety, privacy, reliability, usability, and maintainability requirements. Generally, any software quality or attribute that ends in an “ility” is a nonfunctional requirement. These so-called ilities derive from many sources including laws and regulations, standards, environmental constraints, and elsewhere.
Design/Implementation Constraints: Constraints are not usually subject to negotiation and, once agreed upon, are off-limits during design trade-offs. Constraints are defined as restrictions on the design of the system, or the process by which a system is developed, that do not affect the external behavior of the system but that must be fulfilled to meet technical, business, or contractual obligations (Leffingwell and Widrig 2003). A key property of a constraint is that a penalty or loss of some kind applies if the constraint is not respected. An example of design/implementation constraints includes the restrictions on using certain architectural patterns or specific programming languages.
Economic Constraints: These are constraints which include the immediate and/or long-term development cost.
Operating Constraints: These are constraints which include physical constraints, personnel availability, skill-level considerations, system accessibility for maintenance, etc.
Political/Cultural Constraints: These are constraints which include policy and legal issues (e.g., what laws and standards apply to the product).