IDG Contributor Network: Nonsense non-functional requirements
Suppose you're a dairy farmer. You keep cows for the milk they produce. One of the systems you use is a milking machine. The functionality of that system is getting the milk out of your cows. The farmer's cows need to be milked twice a day, if not they can even die. Suppose milking your cows with this machine once takes a whole day. Question: can this machine fulfill the function that it is meant for?
The answer of course is no, but in IT, strangely enough, people argue that the answer is yes. They argue that the function is milking and how fast it is done is an NFR (non-functional requirement).
In the early days of IT, when users were confronted with — for instance — unacceptably slow behavior of IT systems, the software engineers called these requirements "non-functional." After all, they had written perfect milking logic, hence "it is not the fault of the logic that we produced that the infrastructure is not fast enough." Logic is logic; you can't blame it for anything. For the software engineers this had the added benefit of shifting blame, of course. Ironically, the software engineers have always been the main originators of these kind of problems and throwing more hardware at badly written software is a major anti-pattern.
To read this article in full or to leave a comment, please click here
