Establishing who is qualified to change Requirements
--By TobinHarris
Note - bear with me on this one, it's not quite there yet!
Problem
Our development projects require us to talk to more than one person to establish the software product. These may be stakeholders who are interested in the high-level benefits the product should offer, or technical experts (domain experts) who are knowledgeable of a certain area of the problem domain. Quite often, different people will provide requirements that directly contradict ones that have been provided earlier. For example:
Consequences
If measures aren't taken to determine which requirements are correct, and which aren't, then problems will most certainly arise later in the project. The most visible time for realising incorrect requirements is unfortunately after the product is developed, which is also the most expensive time to correct them. Investors may not be willing to pay for re-work to be done, so the product developers may have to fund this themselves. In an ideal world, the client would accept responsibility for thier domain experts giving incorrect information, but this is seldom the case. Either way, it is better to prevent such problems than suffer the consequences of them.
Solution
Clearly establish who is allowed to submit requirements for each area of functionality - I call these 'feature experts'. It is likely that there will only be certain people on the project can specify how things should be for a given feature or use-case of the product. You could maintain a simple table in your project documentation indicating which people are responsible for which use-cases or features. Alternatively, you could record this information against each use-case. Either way, it is important that all project participants have access to this information, and are aware of the related processes surrounding it.
In the event of contradicting requirements, for example, one person says that orders should be arrive via email, and someone else says they should arrive via fax - then make all feature experts aware of the contradiction and ask for a resolution (be sure to give a time-scale for when this should be resolved). This prevents burdening the requirements gatherers with responsibility yet ensures a definitive outcome is agreed.
So what happens if a non-feature-expert provides requirements on a given area of functionality? These should always treated as 'suggestions' and submitted back to the relevant feature-experts for approval.
Resultant Context
A mechanism is in place for managing who can formally contribute to what. Also, you have a pre-determined reaction for contradicting requirements.
Dismissed Solutions
TODO:
Examples, How to spot contradictory requirements, develop on resultant context
Any suggestions of feedback would be appreciated!