Systemic Requirements

The artist formerly known as non-functional requirements

By Julian Browne on November 1, 2008. Filed Under architecture, requirements

Update of the original article from August 1, 2007. First Published in July 2007.

I've noticed this is getting a lot more hits recently, presumably because Google is ranking it higher. On the assumption it's proving useful, I thought it deserved a 2008 update.

What's in a Name?

Let's get some terminology out of the way. I've called this "Systemic Requirements" because I prefer that to the two other commonly used titles: system qualities and constraints, which to me sounds too dry and academic and lacking the kind of visceral relevance you need to get the right level of business attention and non-functional requirements which I find misleading, as I outlined in a previous article called The Analysis Business - i.e. user needs around things like availability are very functional indeed and calling them non-functional might reduce the prominence given to them. Some people just call them the ilities, which allows you to do the joke "You'll be ill at ease without your ilities" and make your business sponsor want to punch you. I'm not fussy, as long as you think about them, then you can call them what you want. If you're interested I took the term from an EBay presentation (slide 5) though it's been in use for quite a while.

Application

When last I looked, Wikipedia listed 61 systemic requirements so I recommend a visit there too, but I have to say some of them felt to me a bit like splitting hairs. Good to have a grasp of perhaps, but a list that long would be pretty impractical to implement on a project. I've opted for 15 and even these can get a bit subtle, so I would suggest you go into this with the idea that not all will apply in all circumstances. Like much in life, you'll have to use a bit of common
sense.

Format

Think of it this as a check list. Each requirement is followed by a broad definition, an example and notes on its use. There's even a handy downloadable option available in Excel (Download) or CSV (Download) format. We aim to please.

Use

Analysts, developers and architects should collate, question, and prioritise each requirement for each logical component or sub-system in the solution as they apply. Many requirements are interdependent - for example, you can't set high expectations around availability if you completely neglect reliability. These kind of requirements, moreso than functional requirements, are a vehicle for the operational characteristics of a solution to be defined and discussed, none of them mean very much in isolation. If there are symptoms of incomprehension on the business side I find it best to illustrate how the solution would operate (or not) if a requirement isn't met, based on the idea that it's quite hard to describe something like security but not hard to describe what might happen if you didn't have some.