For the sake of this discussion requirements = user-stories (since I'm not differentiating any process per se and would like to get rid of any ambiguities).
It's quite common to have a set of about 100-500 requirements for small-medium systems. It's but natural that it takes a while for one to figure out which requirements are conflicting (more so when >1 stakeholder is involved). Either they are capture using Excel or index cards/post-its or maybe in some project management tool.
So just how does one go about conflict identification within requirements? What are the practices that you have employed and found useful (w.r.t. time/effort expended and conflicts identified).
Is conflict identification even worth it or is it preferable to resolve it 'when you get there' since it could lead to an expectation mismanagement if resolved later?
I'm NOT talking about -ility conflicts. Those are but obvious and should be clarified earlier IMO. I'm talking about conflicts between various functional requirements along with functional vs. non-functional clashes.
Some examples are:
- Terminology conflicts - i.e. different terms used to refer to the same concept
- Structure conflicts - classic one being 'Date' - referred to as MM/DD/YY and as DD/MM/YYYY somewhere else
- Direct conflicts - giving one requirement will be known to not satisfy another e.g. for a calendar app participants time slots will be private vs the meeting organizer should be able to see the meeting time of all participants before deciding on a meeting slot
The latter (direct one) may or may not be negotiable, but identifying it early on will be quite worthwhile IMO.
It's quite cumbersome to go through each requirement at a time to identify conflicts. The best is to divide the effort and speed it up. Another strategy is to analyze the requirements hierarchically, but that may hide certain conflicts which would occur in the lower 'nodes' (and those are the ones that come to bite you later IMHO :)
I'm not aware of any tools/techniques/best practices that would help one identify conflicts with minimal time/effort overhead and hence the question. The above manual step is the best I know of. Yes, in an ideal world it'd be great to have the tool spew out potential conflicts but I don't know if any tool does it (or even a reasonably good job. Help?)
So in an ideal world (without natural language capable machines :) what's the best technique to apply for conflict identification (assuming it's human intensive) and what's been your experience in doing so? If it's not worth it, please elaborate on that too.