If you wondered what requirements are, here is what Zave and Jackson say in a classical paper :
“From this perspective, all statements made in the course of requirements engineering are statements about the environment. The primary distinction necessary for requirements engineering is captured by two grammatical moods. Statements in the “indicative” mood describe the environment as it is in the absence of the machine or regardless of the actions of the machine; these statements are often called ‘assumptions’ or ‘domain knowledge.’ Statements in the ‘optative’ mood describe the environment as we would like it to be and as we hope it will be when the machine is connected to the environment. Optative statements are commonly called ‘requirements.’ The ability to describe the environment in the optative mood makes it unnecessary to describe the machine.”
This is a quote from a broader discussion they do, where their emphasis is on requirements being about the environment of the system-to-be, not the system-to-be itself .
It is important to realize that requirements are about conditions which may or may not hold in the future. We can have requirements which are satisfied today, such as “I want my car to use electricity, rather than petrol” in case your current car indeed uses electricity over petrol. But the whole point of a requirement is that it needs to be, or remain satisfied in the future.
Why cannot we have a requirement that is only about the present?
This is because of why we do requirements engineering in the first place. We do it in order to design new, or make changes to existing systems. If this was not the case, then any statement about the present is merely a description of the present or past, in case its future status as satisfied or not, or true or false, does not matter.
Since requirements are about the future, they must be predictions. This is important to keep in mind, because it also means that requirements are not knowledge. It does not matter if the requirement is about a condition which is true today, and if we can know that this condition indeed holds. If requirements are only interesting in light of changes that we want to make to present conditions, then even those requirements which are about presently true statements must be predictions in order to count as requirements: they are predictions of conditions which should be satisfied after the change we want to make – be it with a new system, or changes to existing ones.
References and notes
- Zave, Pamela, and Michael Jackson. “Four dark corners of requirements engineering.” ACM transactions on Software Engineering and Methodology (TOSEM) 6.1 (1997): 1-30.