Requirements traceability, defined as “the ability to follow the life of a requirement, in both a backward and forward direction” [Gotel and Finkelstein, 2006] is a critical element of any rigorous software development process.
For example, the U.S. Food and Drug Administration (FDA) states that traceability analysis must be used to verify that the software design implements all of the specified software requirements, that all aspects of the design are traceable to software requirements, and that all code is linked to established specifications and test procedures. Similarly, the Federal Aviation Administration (FAA) has established DO-178B as the accepted means of certifying all new aviation software, and this standard specifies that at each and every stage of development “software developers must be able to demonstrate traceability of designs against requirements.”
Furthermore, standard software process initiatives adopted by many organizations, such as CMMI, require similar traceability practices. Traceability is therefore broadly recognized as an important factor in building rigorous software systems. These software systems permeate our society and we must entrust them with lives of everyday people on a daily basis. For example, a commuter on a train is trusting that the switching software correctly routes the trains; an airline passenger trusts that developers of air traffic control software and aviation flight control software have built the system correctly; and a banking customer trusts that his financial transactions will be accurately maintained.