Path-Sensitive Inference of Function Precedence Protocols
Source: Purdue University
Program specifications form an important aspect of the software development process. The lack of proper specifications has two significant negative consequences: Interfaces may be used incorrectly as programs evolve; and confidence in the correctness of programs and absence of bugs is reduced. Indeed, absence of precise specifications often leads to incompletely validated software, and compromises software dependability and reliability. Many of these errors occur because program implementations do not adhere to implicitly-assumed precedence protocols, which dictate how different program components may be ordered.