Understand the state of your development by establishing and regularly evaluating consistency criteria
Also Known as
Typically, product development takes place in a dedicated tool that uses an underlying data model. There is a lot of useful information in the model. Make sure that you use it. Coverage is a simple example: If you want to make sure that every stakeholder requirement is tested, then your consistency criteria would be: "every stakeholder requirement has at least one test".
Make sure that you don't over-engineer these criteria, and then monitor them.
Always use this pattern when you have a data model. The larger the team, the higher the benefit.
Here are a few criteria that you may want to extract
- Coverage - an item must have at least x related items of a certain type
- Orphan - an item should have a parent
- Incomplete - certain attributes should be set, but they are not (note that tracking incomplete is much more effective than making attributes mandatory: making them mandatory risks that they get filled with garbage content)
- Suspect - the parent item has changed, the children should be checked for consistency
- Weak Word Detection - make sure that certain words are not being used
The pattern has the following benefits and liabilities:
- Actionable information - what to do next?
- Risk that the team gets obsessed with metrics, forgetting about the quality of the content
Most tools have the ability to define named filters. This allows you to define filters that create a list of items that violate the defined criteria.
It is even better if the summaries can be made available in a prominent place, like a dashboard.
And even better if the information is actionable. For instance, Jama points out suspect items and missing coverage at many places in the user interface, with the ability to fix the problem with a few clicks.
One step further would be to use a formal language for your system description, like SysML. The modeling tool will already perform basic consistency checking, and new rules can be formulated with filters or formally, e.g. with Object Constraint Language (OCL).