I'm wondering about functional or non-functional requirements. I have found lot of different definitions for those terms and I can't assign some of my requirement to proper category.
I'm wondering about requirements that aren't connected with some action or have some additional conditions, for example:
- On the list of selected devices, device can be repeated.
- Database must contain at least 100 items
- Currency of some value must be in USD dollar.
- Device must have a name and power consumption value in Watts.
are those requirements functional or non-functional ?
Best Answer
Functional requirements define what the system or application will do - specifically in the context of an external interaction (with a user, or with another system).
When placing a new order, the system shall display the total cost and require confirmation from the user. That is a functional requirement; it describes a function of the system.
Refer to Wikipedia: Functional Requirement for more details.
Non-functional requirements are any requirements that don't describe the system's input/output behaviour. Note that we are still talking about requirements, not implementation details, so just because we're using the phrase "non-functional" doesn't mean that anything is fair game to put in that section.
The most common types of non-functional requirements you'll see relate to system operation (availability, continuity, DR), performance (throughput, latency, storage capacity), and security (authentication, authorization, auditing, privacy).
These are all cross-cutting concerns that impact every "feature" yet aren't really features themselves; they're more like feature metadata, helping describe not just whether the system does what it's supposed to but also how well it does it. Don't take that analogy too far, though - it's just an analogy.
Non-functional requirements are not subjective or hand-wavey, contrary to what some people here seem to be suggesting. In fact, they should actually have a hard metric attached to them (i.e. response time of no more than 100 ms). NF requirements are also not implementation details or tasks like "upgrade the ORM framework" - no clue where anyone would get that idea.
More details at Wikipedia: Non-Functional Requirement.
To specifically address the examples in the question:
On the list of selected devices, device can be repeated.
Database must contain at least 100 items
Currency of some value must be in USD dollar.
Device must have a name and power consumption value in Watts.