During a project life cycle everybody tries their best to keep the final implementation in line with the initial user requirements. But very often, the actual implementation fits only partly with the user requirements. A simple but effective tool to avoid this scenario is the Traceability Matrix.
Common challenges managing user requirements
IT projects often start with the definition of the requirements (user, functional, others):
- A business analyst talks to the end-users and gathers their requirements. Afterwards the functional requirements based on the user requirements are specified.
In a next stage of the project the system design specification is created:
- A solution architect creates the design specification for the application to fulfill the functional requirements. He will make some interpretation how to functionality should be implemented, most likely not knowing the original user requirements.
In the implementation phase, chances are high that the developer does not know the user or functional requirements. Therefore he will mainly focus on the technology aspect and not so much on end-user expectations. This is even more pronouncedly the case when the developer belongs to a different team or even company than the business analyst who gathered the user requirements.
At some point the test cases are created and since it is difficult to know which part of the application matches which requirements, often just the functionality of the implementation is tested and not the user requirements.
To make things worse, in the course of the project, there will be changes from different sides:
- The user might have new ideas and the developers could face some technical difficulties. The changes most likely will be communicated to the other parties in the project, but usually it is not very clear which parts are affected. Therefore implementation starts diverging more and more over time impacting the initial user requirements.
What is a Traceability Matrix
The Traceability Matrix keeps track of the connection between user requirements, functional specification, design specification, test cases and potentially use cases. In each phase of the project the appropriate person fills out the one part of the matrix which belongs to his topic. Each element is linked with the element it is based on, starting with the user requirements.
A Traceability Matrix document owner ensures that any change of an item is also reflected in all the linked items. Therefore, if a user requirement changes, the linked functional requirements, design specifications and test cases have to be checked and adapted if necessary.
How does the Traceability Matrix work
In your spread sheet tool you create a table with columns for the topics you want to track in your Traceability Matrix. Normally you start with the user requirement, but in special cases you could also start with the uses cases.
- State the reference numbers of the user requirements. One for each row.
- In the next step add the functional specifications reference numbers belonging to the user requirements per row. The same functional requirement can appear in several rows.
- Then you go on the same way with the design specification and the test cases.
If you like you can improve your spread sheet with mechanism to highlight if an element in the chain is missing.
What do you need to keep in mind while using the Traceability Matrix
The Traceability Matrix is a very helpful tool, but as with any tools, it needs to be used properly to really be effective. Here some tips, what you should keep in mind, when using the Traceability Matrix in your project:
- Get people to feel responsible for their part: They will fill it out properly and also be interested that the rest of the document is filled out, so they can work with it.
- Fill it out while you are writing your document: This saves a lot of time, because afterwards it is a hassle to link all the elements. In addition it helps to ensure that you don't forget anything.
- Always keep things up-to-date: Maybe the key for a successful use is to always update the Traceability Matrix and all the other documents. Only then you can easily check something and make adjustments where needed.
- Do your test cases early on: Thanks to the Traceability Matrix it is even easier to do so. Like that you can ensure that they are really based on the user requirements and the developers can easily check which test case their implementation has to pass.