Defining and analyzing requirements is fundamental in all forms of business development. Sometimes you see the requirements as implicit and go straight to the solution, but in order to understand why you chose a specific solution, it is important to have traceability to the underlying requirement.
In Prime Arch, there are two meta-objects that denote requirements:
Functional requirements are about functionality, and non-functional requirements are everything else? Obviously, right?
Many people find it difficult to tell them apart, so we've come up with a simple but powerful example: the red button.
Imagine that you are monitoring production in a factory and that if something happens, it is your job to stop the belt, for example to prevent something from breaking or someone getting hurt. A classic emergency stop!
You set the following requirements:
I must be able to emergency stop the machine.
The button must be red.
The underlying idea is of course that the red color should indicate "stop".
Of these two requirements, one is functional and one is non-functional.
Being able to emergency stop the machine is about functionality, and therefore the requirement is functional. You can also identify this by the fact that there is a verb in the statement (emergency stop).
That the button should be red is about a property, in this case a color. Properties lead to it being non-functional. The "verb test" works here too - no verb, so non-functional. You can also identify this by the fact that there is an adjective in the statement (red), something that describes the noun.
For the grammatically inclined, it can also be an adverb, something that describes the verb (eg that it should be "easy to press the button"). Here, one should not fall into the trap of thinking that it is about "pressing", but the key word in the requirement is "easy", which is an adverb.
Ready for a test?
It should feel physically when you press the button.
Answer: Non-functional, as it describes a property of the button.
Next requirement:
It must be impossible to press the button by mistake.
Answer: Non-functional, as it describes a property of the environment where the solution may be to place it under a transparent cover that must be lifted off.
Not so hard anymore? Good!