Monday, May 23, 2011

What are requirements - anyway? Virtual Reality

Systems Enginnering is infatuated with requirements - requirements elicitation, requirements analysis, requirement management, requirement flowdown, requirements verification etc etc etc... But what are requirements anyway?

According to Wikipedia, "In engineering, a requirement is a singular documented need of what a particular product or service should be or perform. It is most commonly used in a formal sense in systems engineering, software engineering, or enterprise engineering. It is a statement that identifies a necessary attribute, capability, characteristic, or quality of a system in order for it to have value and utility to a user". So that it is - a statement. Simply - statement. The whole complexity of the systems, their use, structure and behavior is supposed to be based on the list of statements. Sounds rather counterintuitive, doesn't it?

The fact is that the requirement are vitual reality. The only real things are how the system is built and how the system interacts with its environment. One may say that a requirement may be worded as "The system shall interact with the user in such and such way" or "The system shall be build of such and such subsystems interacting in such and such way" but it will not escribe the system the system but only its relations with other entities that depend on both the system (under control) and other entities (out of control).

The requiremnents are just like "Now" - the infinitesimal point wedged between the infinite "Past" of system internal structure and the infinite "Future" of all possible uses and interactions during the system's lifecycle. But just like "Now" it has a meaning for us humans - just like we're bound to live in eternal "Now", in SE we're bound to live in the world of requirements because they are the only thing that may be "verified" - falsified or demonstrated (never proved) - and so give us an illusion of control because the number of requirements is always finite.

The system may be "validated" against possible uses - but there is an infinite number of those interactions. The system may be "integrated" from its parts but there is (abstractions aside) an infinite number of internal interactions.

Conclusion - we're doomed to live in the virtual reality of the requirements just like we're bound to live in internal "Now" - remember the past, dreaming about the future but still stuck in the "Now"!




No comments: