For the most part, I am able to distinguish between functional and non-functional requirements, but at times it is not clear for me.

For example, the following are non-functional but they seem functional to me:

The software must use SSL encryption for transmissions

Or

The software must store the configurations in an XML file

Could you please help me with a rule of thumb that helps me make the distinction? Many thanks!

有帮助吗?

解决方案

Functional requirements describe the functionality that a system must offer to its users. All the other requirements are non-functional requirements.

With that in mind, you can ask yourself, if, for example, the requirement for storing configurations in an XML file is not satisfied (for example, the configurations are stored in a different format, like an .ini file), is there any functionality that is not available to any user of the system. If the answer to that question is yes, then you are dealing with a functional requirement. Otherwise, you are dealing with a non-functional requirement.
In this consideration, any person or external system interacting with the system you are building is a user.

其他提示

A common heuristic is if they end in -ility: Availability, flexibility, changeability, maintainability, adaptability etc.,

It’s a “non-functional” requirement (NFRs) - your system will still function without it but not as effectively.

Think scalability: Twitter still provides functionality if it’s running on a single machine but it can’t effectively cater that to billions of tweets.

NFRs are typically architectural requirements (rule of thumb) but do not directly support the “functional” requirements per se.

In theory you can deliver a piece of software without regards to NFRs but it’ll probably be of poor quality.

Functional: “how” NFRs: “how well

许可以下: CC-BY-SA归因
scroll top