Home
About Us
Site Map
Products
Services
PMP® Certification
PM Tips & Tricks
PM Tools & Techniques
Links
Contact Us
BLOG

 

 

Requirements Traceability

As the PMBOK ® and your PMP ® Exam Preparation training tell you, the ability to trace your requirements is key to your ability to verify that the software system you’ve produced is the one that your customer has requested. This holds true whether your customer is internal or external, with or without a contract and Statement of Work. Traceability works hand in hand with sign off to ensure that: A ) that correct and complete requirements are captured, and B) the final product satisfies all the requirements that were approved. Not only will it be difficult to verify that requirements have been met without this element, your stakeholders will have a more difficult time understanding and approving system designs.

Traceability starts with the first document that captures the goals of the project in detail. The goals and objectives captured in the project charter are usually stated in terms which are too broad. You should begin with the contract, if you’re doing the work for an external customer. If the contract contains a Statement of Work (SOW), it may have unique identifiers associated with the requirements captured there already. These should form the base for all subsequent unique identifiers. If you’re doing the project for an internal customer, you should begin with a Scope Statement which will state how the project will meet the goals and objectives set forth in the Project Charter. The Scope Statement actually serves 2 purposes: it states what work will be included in the project and excludes any work not specifically mentioned. There will typically be work in the scope statement that doesn’t pertain to the system under development, project status reporting for example. This work doesn’t require identifiers; it’s under your direct control and you shouldn’t need the help of identifiers to know whether you’re doing the work or not. The unique identifiers you choose to assign to the system related work should be brief enough so that they can be captured in subsequent design documents without placing too much strain on the designers or design tools. If possible, you should use a system that will tell the reader what area of the system the requirement belongs too. For example, if you were developing an equipment order capture and configuration system you would identify the system with the acronym EOC (in case you need to distinguish the requirements for this system from others), the reporting area with RPT (EOC.RPT), and the report with either a number, or another acronym such as MRSR (monthly regional sales report). The resultant identifier would be EOC.RPT.MRSR. The means of relating the identifier to the requirement in this document will be straight forward: each requirement has one, and only one identifier. Identifiers should appear with the requirement they identify.

 

The software development methodology chosen for the project and the nature of the project will determine what types of design documents will be used, so we’ll use a project which has decided to use a "superset” of design documents and start with a Commercial Specification, or Business Requirements document. By the way, the Commercial Specification is more likely to be used if the system you’re building is being built for sale externally. The business requirements document is more likely if you’re building it for internal customers. These documents will define the attributes of the system in business terms so taking our example above, we might require a monthly regional sales report to be generated dynamically (EOC.RPT.MRSR.1) by only regional sales managers (EOC.RPT.MRSR.2). It might need to include a breakdown of sales by salesperson (EOC.RPT.MRSR.3) and product (EOC.RPT.MRSR.4). Once again, no requirement should be captured here that isn’t supported by your contract’s SOW, or your project’s Scope Statement. The means of relating these identifiers to the requirements must now support tracibility. The identifiers in this document must tie back to the previous document. You should be able to achieve this fairly simply by choosing a naming convention that supports a one to many relationship (such as the one in the examples). The requirements in this document should support one, and only one element in the SOW or Scope Statement. The identifiers should appear next to the requirements they identify and will tie back to the preceding document without further information (e.g. requirements EOC.RPT.MRSR.1, EOC.RPT.MRSR.2, EOC.RPT.MRSR.3, and EOC.RPT.MRSR.4 all support EOC.RPT.MRSR). Collectively, all the requirements for all the reports support the business need for reporting (EOC.RPT).

 

The document developed in the step described above will now be turned over to the project’s business analysts, or systems analysts. These are the people who will convert the business requirements, or commercial specifications into system features and functions. If you’ve followed our advise in the section describing the approval of requirements, these people will already have been engaged and there will be no requirement captured that can’t be built. The business analysts (or systems analysts) will now produce a Functional Specification which describes how the system must function to meet the business requirements. For example, the Functional Specification might describe a graphical interface with a reports main menu page to facilitate reporting from the order capture system (EOC.RPT.MM). It might describe how the system should check the privileges assigned to the user who attempts to run the monthly regional sales (EOC.RPT.MSRS.2.1). Relating the functional features and functions back to the business requirements is a little more tricky now because we’ve introduced the concept of a many to many relationship to the process. Each business requirement may be supported by many features or functions and a single feature can support several business requirements. For example, the ability to generate reports dynamically may apply to more than one report, but may be handled by a single feature (checking the users privileges). Embedding identifiers in the feature/function description will be useful for downstream users, but will not support relating the feature to the preceding document well. To accomplish this, you’ll need to include 2 matrices with your Functional Specification: Business Requirement to Feature/Function and Feature/Function to Business Requirement. In this way, a reader can identify all the features which will support an individual business requirement and by reading only those specification elements that describe those features get a clear picture of how the system will function to meet the requirement.

 

The final element in the process of designing your system will be the Detail Design Document. The programmer/analysts responsible for actually building the system will be responsible for producing these documents and the identifying the software components described in them with the requirements in the preceding document. Identification should be done in a similar fashion to the Functional Specification. Let’s take the user privilege check described in the previous paragraph and identified as EOC.RPT.MSRS.2.1, as an example. The programmer/analyst may decide to take a 2 step approach to the check. First capture the users privileges with a query (EOC.RPT.MSRS.2.1.1) , and then check the resultant privilege set against the regional sales manager privilege (EOC.RPT.MSRS.2.1.2) enabling the report for those with the privilege and disabling it for those without it. Functions, modules, and screens may have the ability to support more than 1 feature or requirement in the preceding document, but each feature or requirement may require more than one function, module, or screen so the relationship is many to many. Again, it’s important to embed the identifier in the segment describing the function, module, or screen. There may be a need to embed multiple identifiers in each screen if the screen is broken down into different elements (e.g. a login screen userid window and a login screen password window) so find a way to do this that doesn’t compromise the integrity of the graphic. Matrices will be necessary to support the many to many relationship between the elements in the Detail Design Document and those in the previous document. Implement these matrices the way we’ve described in the preceding paragraph.

 

Approvals should occur at each design step. These approvals should serve to verify the coverage of the approved requirements in the approved document. Since the business stakeholders may not necessarily be able to understand the language in the Functional Specification, including the 2 matrices described will be very helpful to the business readers of the document. They may not necessarily understand the language used to describe a function, but they can see that each requirement in the Business Requirement to Feature/Function matrix has one or more features or functions supporting it and should be able to get a sense that the function described will completely satisfy the requirement. The approval process verifies the requirements have been met and also trigger the next step in the development process.

 

The final step in the verification process is to relate test cases to the requirements. This should be done at the Quality Assurance (QA) level; each requirement in the Business Requirements document or Commercial Specification should be covered by one or more test cases. The test case to requirements relationship is many to many so matrices will come in handy again. Approval of the test cases should be dependent on each requirement being supported by one or more test cases. Where a requirement is not supported by a test case, there should be an alternate plan to perform the necessary testing. Unit, function, and system testing can also benefit from the identification of test cases to features/functions the functions, modules, and screens they support. This identification is not essential to the requirements verification process. User Acceptance Testing (UAT) does not need to identify test cases with requirements as there is no implied requirement for the project to verify the completeness of UAT. Should this be requirement of your project, you should approach it using the same methods as you used to verify the completeness of the QA test cases.

 

This section is meant to describe briefly all the actions you could be required to take in order to adequately verify your project’s requirements have been met. You should choose the actions your project needs based on the software development methodology chosen, the size, and complexity of your project. The concepts this article is based on are described in the Scope Management knowledge area of the PMBOK®. You can learn more about AceIt©and how to become certified by checking out that the AceIt Features area of our website.