Functional and non-functional requirements



In order to define requirements, users’ “functional requirements” and “non-functional requirements” of the system must be extracted first.

Functional requirements

Functional requirements refer to “what do you want to do through the system”. For example, “if you want to scan the barcode of a commodity, the price will be displayed on the terminal” and “if you want to count yesterday’s sales per hour” are functional requirements. Because functional requirements are directly related to the daily work of customers, they are easy to define.

Non-functional requirements

The so-called non-functional requirements, as the name implies, refer to non-functional requirements, that is, all requirements except functional requirements. When building the system, it is not enough to reach a consensus with relevant personnel only on “what do you want to do through the system”. Requirements such as the operating period of the system (the period during which the system provides services) and the policies to protect the system from illegal attacks (security policies) are very important to the system although they are not functional requirements.


Taking the ticketing reservation system for large-scale international sports events as an example, the tasks to be completed through the ticketing reservation system, such as “tickets can be reserved for competitions”, “seats cannot be repeatedly reserved” and “seats cannot be wasted when allocating reserved seats”, are functional requirements. However, system characteristic requirements other than functional requirements such as “24-hour reservation is allowed (24-hour service period for ticketing reservation system)”, “identification of users to prevent malicious reservation” and “response time for reservation processing (time from the time when the reservation button is pressed to the time when the reservation processing is completed) cannot exceed 10 seconds” are all non-functional requirements.


In the system, functional requirements are mainly realized by application programs and non-functional requirements are realized by infrastructure. Therefore, it can also be considered that non-functional requirements are the guarantee of efficient and stable applications.