Know Your Goals
A Way to Get Better Systems
Ian Alexander
Some requirements people talk about Goals only in the sense of 'vague, unachievable, high-level aspirations'; others seem to mean almost the same as requirements, while scenario and Use Case people say that every scenario has a Goal. So it's understandable that newcomers often get confused and avoid the whole subject. But a Goal has a definite meaning to footballers, engineers, biologists, and psychologists, and it is a meaning that is very useful in systems development.
The most obvious popular use of Goal is in the game of Soccer (Association Football), where it means variously the wooden-framed net that strikers shoot at, the score you get if you manage to get the ball into the net, and more helpfully for our purposes, its basic meaning of 'what the team is trying to achieve'. A Goal is something you are trying to reach.
To the psychologist, you have personal goals like getting married, or growing rich, or owning a nice house. You make plans and behave in ways that you believe will help you reach your goals.
To the biologist, all this psychological stuff is just window-dressing; what you are really trying to do is to survive and to reproduce: you want the money and the house and the wedding so that you can make copies of your genes with a suitable partner. The biologist has an interesting word for the physiological mechanism that implements all this goal-seeking: it is called homeostasis.
Homeostasis means simply 'keeping (more or less) static', which doesn't sound very exciting until you consider that there are any number of factors and influences in the world to prevent a living thing from staying the same. One thing that you need to keep about the same all the time is your body temperature – too hot and you collapse; too cold and you go into torpor or die of exposure.
So how do we stay at a safe and comfortable temperature? When we get too hot we start to sweat (and we also realize the fact, and take off surplus clothes, seek shade, and find cool drinks, but that's another story). The sweat evaporates from our skin, cooling us down. When we get too cold we start to shiver. The shivering muscles generate heat, warming us up. Homeostasis means active control.
To the control engineer, all this messy biological talk is just window-dressing. What is really happening is that temperature sensors are detecting the temperature, and a processor is comparing the Actual temperature A with the Desired temperature D. If A-D is greater than a Threshold value T, then the processor switches on a suitable actuator, in this case a cooling device; and similarly if A is below D, heating may be applied. The temperature goes up and down but always stays close to D. This is a classic control system whose output always counters the disturbances from the environment (and in the engineer's precise sense, this is 'negative feedback' – another widely misunderstood phrase).
A Homeostatic Control System's Goal-Seeking Behaviour
To the requirements engineer or analyst, wanting to keep a system at a constant temperature is a functional goal. It's a function because it is something the system will have to do; it will be tested by putting the system somewhere hot (or cold) and seeing that it can keep itself within the specified temperature range.
A useful trick for telling whether something can sensibly be thought of as a goal is to try to phrase it as a Mission. An army commander may explain to his troops 'your goal is to capture that hill'. Anything that you can phrase like that –
To <active verb phrase> <target object>;
e.g. To control system temperature;
is a goal of some kind; you must judge whether it is relevant to your system.
But won't this go on for ever, into ever smaller and smaller details? You may have noticed that keeping the system temperature constant isn't the only goal-like phrase we've mentioned. What about 'To cool the system' and 'To heat the system' – aren't those goals too? Well, they could be. They are certainly functions (and will become functional requirements, at least if the system in fact needs protection against both overheating and overcooling). But if the cooling mechanism consists simply in switching a fan on, it isn't worth describing cooling as a goal – it doesn't buy us anything we wouldn't get just by calling it a function. If, on the other hand, cooling might consist of looking around for a shady tree, or thinking out which clothes to take off, or where to find a drink, or picking up a magazine to fan ourselves with, then it is certainly complex enough to be worth thinking about in terms of goal-seeking behaviours. Keeping humans cool is a multi-billion dollar business.
System goals can therefore form a hierarchy, with higher-level strategic goals containing lower-level operational goals. In fact, even strategic system goals themselves may be subgoals from the point of view of the business. Businesses think in terms of maintaining not temperature but market share and so on. From such a lofty perspective, even quite 'strategic' system goals may be down among the business' sub-sub-sub-goals.
A Business and System Goal Hierarchy
Some sub-goals are alternatives to each other, so the tree is in general made up of a combination of AND and OR branch nodes. If you have a lot of ANDed and ORed goals to consider for your system or business, you may find it helpful to use a tool to document and display the goal hierarchy.
A special situation arises in safety-critical systems where regulators rightly demand detailed safety cases, basically arguments made up of ANDed and ORed goals that together go to proving that the systems in question will be safe. Several different notations have been devised by safety specialists to illustrate such arguments; all are simple to diagram.
A fragment of a Goal-Structuring Notation (GSN) Safety Case
A goal, then, is something that people interpret differently, depending on their training and the job they are doing. But it is a powerful and well-formed concept with a useful meaning.
If we are constructing a tree of system functions, then the leaves of that tree are functional requirements, and the branch nodes of that tree are functional goals.
If we are analyzing a business, the leaves of the tree are probably departmental functions, or development projects – they needn't be anything to do with requirements. The branch nodes are the goals that drive the business; at the highest level, they are an analysis of the business' vision and purpose.
But goals are not necessarily functional. People want businesses to operate fairly, openly, ethically, legally, respecting the environment, and so on. Businesses want systems to operate safely, economically, reliably, and the like. These non-functional goals are important because they are what the customers and regulators and general public see of the business, but they are often hard to control.
For instance, an engineer devising a pump must first control its output (in litres per second) – that's the pump's primary job. Then he must control its temperature, or it will overheat and fail; that's a crucial but secondary consideration. Then he must think about controlling its noise output, and power consumption, and reliability, and lifetime, and so on. These are probably third-order considerations! But unfortunately for the pump's manufacturers, they are the qualities (along with price) that determine whether it will be a success in the marketplace. The design engineer will justifiably argue that he can't design a pump to be "quiet" – he needs to know how many deciBels are allowed, so he can test that.
Translating unmeasurable market goals into precise system requirements is part of the work of requirements analysis. In this case, it is easy to see why goals are thought to be vague – but the vagueness is only from the point of view of the system solution. From the point of view of the person purchasing or using the pump, qualities like quietness and reliability are not vague at all.
In summary, a goal is something that a business or system strives to achieve, generally by devising ways of controlling the desired value. Thinking out the goals of a system or business is powerful, because it gives a coherent picture of the purpose being undertaken, which helps people to align their efforts. It also helps people to think out possible ways of attaining those goals. Often, that will mean thinking out scenarios – where the order in which subgoals are reached is important. In other cases, it may lead directly to new requirements or business processes.
© Ian Alexander 2002 Books you may like: