Use Mathematical Logic to evaluate Uniqueness of Requirement Set (2 of 3 part series)

Last post I presented a method to test a requirement set for Completeness, now I present a method to test for Consistency. According to INCOSE’ Guideline to Writing Requirements, **Consistency** of a set include a number of different characteristics: requirements shall be **unique** (i.e. not overlap), shall **not conflict**, shall have **homogenous use of units**, shall **not have two terms for the same thing**.

Use of a dictionary or glossary can help with homogenous units and not having two terms for the same thing. It is the test for uniqueness that I turn my attention to (next week I will investigate testing for the presence of conflict).

However, what does it mean that an individual requirement is unique? First, we need to realize that we can only test the uniqueness of a requirement in the context of the set. Before determining a set is completeness first I’m going to test for Uniqueness.

Let say:

- Req1: When [Left_Input_Device is active], then the SOI shall activate Middle_Output_Device.
- Req2: When [Left_Input_Device is inactive] OR [Right_Input_Device is inactive], then the SOI shall de-activate Middle_Output_Device.

Here’s how to test for Uniqueness :

- Abstract the requirement with symbols of operands and operators. R1 becomes L → M and R2 becomes ¬L ∨ ¬R → ¬M
Create a truth table for the antecedents of the requirements. Let’s say A(1) is the antecedent of R1, A(2) for R2 and A(x) for the antecedent of requirement x.

Test the set of antecedents for exactly one antecedent. The mathematical expression for this is

**(∃x A(x)) ∧ (∀x (∀y ((A(x) ∧ A(y)) → (x = y))))**which can be read as ‘There exists a requirement x such that antecedent of requirement x (A(x) is true, and for all x and y, if antecedent of requirement x and antecedent of requirement y are true, then x is equal to y.’ Basically you are testing if, only if, there is exactly one antecedent which is true for a given combination in a truth table. If this is evaluated to true then that combination in a truth table has exactly one requirement, hence it is unique.Now test whether the mathematical expression for uniqueness applied to your set is a tautology, i.e. each row has exactly one antecedent which is true. If it is then your set is

**Unique**!

See the document that comes with this post for 4 worked examples.

The test for uniqueness is interesting because it shows that there is a uni-directional relationship between Completeness and Uniqueness. If a set is not Complete, then the set can not be Unique as there are some combinations which don’t have any solutions. However, a set may be Complete but not Unique.

This shows that testing (and fixing for) Completeness must come before testing for Uniqueness.

## One response to “Checking Uniqueness of a Requirement Set”

[…] be Unique and without Conflict. This post explores a method to test for Conflict – see previous post for a test for Uniqueness. What does it mean for two requirements to be in conflict? Let’s first […]