The requirements gathering process calls for a method of addressing incomplete, ambiguous, or conflicting requirements. The general term for this is Requirements Analysis. This process helps to ensure that requirements are correct, consistent, complete, and testable. This document describes the process and how it fits into the overall Software Development Life Cycle (SDLC).
Degrees Of Uncertainty
The tolerance for uncertainty depends on where the product is in its product life cycle. Uncertainty is inherent in the early phases of product development, where we know what functions a product should perform, but not specifically how it will perform its functions. During product development, we actively work to reduce and minimize the uncertainty. Requirements Analysis is a development process that works to reduce uncertainty in requirements, and has strong ties with testing, where the uncertainty is reduced to a minimum.
Vagueness is unavoidable in the early stages of product development, and is reduced as the product specifications take form. Ambiguity, by contrast, can result in the wrong functions being developed. Therefore:
Software development begins with a high degree of uncertainty and ends with a low degree of uncertainty. At the outset, only the general functionality will be known. By project completion, the software will be a specific set of bits, whose performance and operation is well characterized.
The following Entity-Relation diagram shows the relation between steps and uncertainty in the requirements analysis process.
Only prescriptive testing is suited to finding software defects; therefore, all further discussion in this document will relate only to prescriptive testing. The intent is that: a) test steps are derived from test objectives, and b) test steps should contain only enough descriptive detail to allow a trained operator to run the tests.
NOTE: the use of descriptive testing alone is deprecated by the FDA, ISO-9000, and the Software Engineering Institute (SEI). Some form of prescriptive testing must be used, either solely, or in conjunction with descriptive testing. It is permissible for descriptive tests to evolve from prescriptive tests.