Modern software systems are designed and implemented in a modular fashion by composing individual components. Early validation of individual module designs and implementations offers the potential to detect and correct defects that might otherwise go undetected until system-level validation. This is particularly true for errors related to interactions between system components. In this paper, we describe a static analysis approach that allows validation of components, or groups of components, of sequential or concurrent software systems. This work builds off of an existing approach, FLAVERS, that uses program flow analysis to verify explicitly stated correctness properties of software systems. We illustrate our modular analysis approach and some of its benefits by describing part of a case-study with a realistic concurrent multi-component system.
Matthew B. Dwyer