What is a requirement?
Hang on; I don’t want to start another war on what the best definition of “requirement” is. We have too many of those already.
I just want to reflect on something that has been bugging me the last few months (sorry). That is: why do so many people talk about requirements as if they are something completely separate?
“A requirement must be solution independent.” or “That’s architecture, not requirements”, and also “Those are goals, we don’t need to capture them.”
To me requirements are not an island, to be kept well away from the dangerous influences of other landmasses. Please, no! Requirements are just one kind of information in a universe full of related and relevant other kinds of information: goals, stakeholders, architectural principles, designs, test cases, business rules, processes, object models… the list is endless.
Requirements on their own are meaningless. Documents with only a long list of requirements are useless and should be forbidden! Requirements derive meaning from their context, the information surrounding it. Relating a set of requirements to a process step helps understand the requirements, and helps us check if the set is correct and complete.
Mind you, that doesn’t mean that the requirements discipline should take on the modelling of all this information so they can relate it to requirements. Preferably not – each to their own. But in the requirements discipline there is nothing splendid about “splendid isolation”. I’m all for the Bazaar approach to requirements, not the meticulously crafted requirements Cathedral (see Eric Raymond’s “The Cathedral and the Bazaar“).