Issue No. 11 - November (1998 vol. 24)
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/32.730543
<p><b>Abstract</b>—Exposing inconsistencies can uncover many defects in software specifications. One approach to exposing inconsistencies analyzes two redundant specifications, one operational and the other property-based, and reports discrepancies. This paper describes a "practical" formal method, based on this approach and the SCR (Software Cost Reduction) tabular notation, that can expose inconsistencies in software requirements specifications. Because users of the method do not need advanced mathematical training or theorem proving skills, most software developers should be able to apply the method without extraordinary effort. This paper also describes an application of the method which exposed a safety violation in the contractor-produced software requirements specification of a sizable, safety-critical control system. Because the enormous state space of specifications of practical software usually renders direct analysis impractical, a common approach is to apply abstraction to the specification. To reduce the state space of the control system specification, two "pushbutton" abstraction methods were applied, one which automatically removes irrelevant variables and a second which replaces the large, possibly infinite, type sets of certain variables with smaller type sets. Analyzing the reduced specification with the model checker Spin uncovered a possible safety violation. Simulation demonstrated that the safety violation was not spurious but an actual defect in the original specification.</p>
Requirements, specification, abstraction, model checking, formal methods, verification, safety analysis, simulation, consistency checking, SCR.
Bruce Labaw, James Kirby, Jr., Ramesh Bharadwaj, Constance Heitmeyer, Myla Archer, "Using Abstraction and Model Checking to Detect Safety Violations in Requirements Specifications", IEEE Transactions on Software Engineering, vol. 24, no. , pp. 927-948, November 1998, doi:10.1109/32.730543