Software development project managers should apply techniques and skills to drive the project through the initial requirements to the final deliverables certified by a “delighted” customer. Some of those techniques and skills are “soft,” and they are used to manage and influence expectation and perception. But the best project managers (PM) should also use “hard” tools to control the evolution of the project results. That means to assure that the technical progress is in the direction of acceptable final results.
The usage of Requirement Traceability concepts is a totally different approach. This approach is based on the completeness of the “evolution” that every project “workstation” has to incorporate in the path to a final acceptable product. The foundation for this control method is a complete collection of customer requirements, mutually agreed between the customer and the supplier who is conducting the project.
In information technology projects, due to the intangibility of the involved matters, it is not easy to implement a set of “hard” tools to manage project results evolution. The absence of this sort of tools is one of the root causes of the failure in several IT projects. There is something “classic” in IT projects: 90% of the project progress is achieved almost on time and budget, but the remaining 10% of the progress demands much more than the remaining time and budget. This situation is the logical result of the control method based on percent complete of intangible project results.
Whether you develop using an Agile or more traditional process there are larger challenges in product development such as ensuring that what you develop matches your most current requirements. It does not matter if the product is for manufacturing, a software product or more complex products with hardware, or firmware, ensuring that your final design matches the finished product requires a well-defined process.
When you are working on software development this is linked to hardware, firmware it is especially challenging because of the wide range of requirements and multiple dependencies that are present even in the simplest of applications. It is for this reason that a well-designed Requirements Traceability process is critical to delivering a quality product.
Step 1: Development and Testing is Linked to Requirements
Ensuring that the released product delivers what was intended is the basic and overall focus of a software product development company. The underlying requirements to the planning, development and testing process should be linked. It is very important to realize that these requirements can take many form including:
- Customer Requirements
- Internal Requirements
- Marketing Requirements
- Performance Requirements
- Compatibility Requirements
Some requirements may be optional, others such as compatibility, regulatory, and customer requests may be critical to the products success. You must decide which of the categories are key when designing a comprehensive Requirements Traceability process.
After defining the types of requirements you must understand the various development artifacts you will be tracking during the process.
Every project has specific artifacts to track. Depending on what development methodology you use (Agile, Waterfall, hybrid) you may include a few or all of the following:
- Design Specifications
- Product Backlog Items
- Release/ Sprint Backlog Items
- Interim Releases/ Builds
- Development Tasks
- Source Code
- Code Reviews
- Product Documentation
Ensuring that the artifacts are up to date is important because many times the underlying requirements evolve and change from the start of the project to the final release.
Step 2: Defining the Traceabilty Requirements Process
Requirements Traceability refers to the mapping of the product requirements to the key artifacts created throughout the development process. Once this mapping is complete, and the requirements and artifacts are linked, it becomes easy to validate the design, implementation, testing, and bug fixing for each individual requirement. This will ultimately ensure comprehensive product quality and market success.
It is critical to connect the requirements to each phase of the development process. This not only ensures that each requirement will be implemented correctly, but it also allows changes to the underlying requirements to flag linked design docs, implementation tasks, test cases templates, testing tasks, pending bug fixes, etcs. A well designed Requirements Traceability process helps make these complex relationships manageable.
Step 3: Implementing Requirements Traceablity Process (RTP)
When planning the implementation of a RTP is important to first evaluate your various development artifacts and decide which of them should be linked to the supporting requirements.
If requirements and artifacts are managed in several different systems, the process of linking them can be quite time consuming and difficult. The use of APIs or custom integration may be required when dealing with multiple systems. Using an integrated product development lifecycle platform to link requirements to artifacts is often a built in capability. It is rare that the requirements for any product development project remain unchanged from kickoff to release, and only with dynamic traceabilty links can you ensure that these changes are fully reflected in the final released product.
Step 4: Reporting Traceabilty
Dynamic Traceablity links allow teams to keep up to date with evolving requirements, but they also provide key data for one of the most important aspect of any product development project the Traceabilty Report.
Step 5: Agile Development and Traceabilty process
Agile development does not typically have a formal management process, but the benefits of requirements traceabilty are still important.
By applying the above RTP and structure to an agile product backlog and sprint backlogs, and linking those backlog items to test cases, similar results can be achieved while preserving the flexibility and dynamic nature of Agile Development.