ABSTRACT

In this chapter, we address issues pertaining to improving software reliability by exploring static program analysis methodologies that permit the efficient mining of useful and pertinent specifications. Our techniques help answer the following two important questions: (1) What are the specifications and invariants a program execution is expected to follow? (2) When specifications are not followed, what are the root causes for failure?