Is Performance a "functional" requirement?


We had an internal thread on this yesterday, maybe I was a little too glib but here is what I had to say about the topic [edited so it can be read standalone]


The original question, “Is performance a functional requirement” is highly unexciting for me.  However the revised question, “What is the best way to capture performance requirements” is profoundly interesting.  It is precisely the (anti-)correlations between attainable functionality and level of responsiveness that sometimes makes for the very best engineering work.  How do you capture all this?  Sometimes pervasively. I would argue that pervasively is in fact the only answer that works in non-trivial cases.  And this is not limited to performance as the quality metric of interest – it applies to any quality that is not going to be trivially achieved.


The nomenclature to me is uninteresting except to the extent that it assists designers and implementers in capturing  and understanding the various kinds of requirements – i.e. I know where to put them, I know where to find them, I know that I got them all, because I am, literally, on a first name basis with all the requirement types. 


I don’t want to trivialize that aspect, but, beyond that, meh, whatever… functional schmuntional, I don’t care what you call it, just do it 🙂

Comments (3)

  1. JM says:

    "Performance" is not a functional requirement. "It has to do this in such-and-such time at most" is. Almost all projects have an implicit requirement that things cannot be "too slow", but this only becomes a requirement if you spell out what "too slow" means.

    Everybody feels comfortable writing down "performance is important" on their requirements sheet, but when you start asking the hard questions they’ll quickly admit they have no idea what the real numbers should be or are going to be. The result is either that performance is completely ignored or that premature optimization ruins the entire effort.

  2. Greg D says:

    JM- Could you come define some requirements at my company?  I run into the same thing all the time.  "Performance is important in this application.  Let’s make all our network I/O (such as to/from web services) synchronous."

  3. Of course performance can be a functional requirement. Most commonly the people who deny this are the ones who have been taught a list of what is functional and what isn’t, and therefore don’t ever have to think about it any more.

    "The web server must serve a complete and correct response no later than 17.392 seconds after receiving the request", could easily be construed as a technical requirement. OTOH, if you write it like this, it becomes a functional requirement:

    "The web page will be displayed to the user no later than 23.762 seconds after clicking on the hyperlink."

    OK – between the two descriptions, there’s also a bunch of discussion about network latency and what-have-you, but I’m sure you catch my drift.