As an architect, one of my objectives is to collect, often to define, both the functional and non-functional requirements of a project. That seems so obvious, right!?
As a former VMware employee, I was educated and trained to follow Zachman Framework along with Thomas Andrews‘s Functional versus Non-Functional Requirements and Testing principles. Those who are VCDX’s or on their way to defend a VCDX design know exactly what I’m talking about.
Back to the title and the importance of the non-functional requirements. Let me illustrate this statement with the following short story and a picture. As you know a picture is worth a thousand words.
Once upon a time, there was this proud Hummer owner. After wearing out his tires he wanted a new set of wheels for his monster 4×4 truck. He got the nearest garage and requested four wheels, nothing more but nothing less. Illico presto the garage front desk clerk sold the guy four wheels and got them mounted on the SUV… And voila!
Good laugh isn’t it 🙂
Did the garage front desk clerk sell the appropriate wheels… Well probably YES he did!
Those things ARE wheels and the main function of a wheel IS to rotate. This is WHAT a wheel must be able to do or perform.
Beyond the fun and the buzz, we cannot imagine this truck winning the Dakar Rally with such wheels, can we!?
That’s where the importance of the non-functional requirements come in the picture.
A non-functional requirement states HOW a functional requirement should behave on top on what the function should do.
Additionally non-functional requirements help you to measure the quality of the function.
If only either the garage front desk clerk or the Hummer owner have defined the non-functional requirements we probably wouldn’t have these wooden wheels mounted on the SUV (and we wouldn’t have this funny picture either).
Many times I’ve seen and reviewed architecture design documentations where only functional requirements were defined. Such designs have a common behaviour… They used to fail to address the overall objectives of the project.