@article{Soleimanifard2015, title = "Algorithmic verification of procedural programs in the presence of code variability ", journal = "Science of Computer Programming ", volume = "", number = "", pages = " - ", year = "2015", note = "", issn = "0167-6423", doi = "http://dx.doi.org/10.1016/j.scico.2015.08.010", url = "http://www.sciencedirect.com/science/article/pii/S0167642315002592", author = "Siavash Soleimanifard and Dilian Gurov", keywords = "Compositional verification", keywords = "Model checking", keywords = "Maximal models ", abstract = "Abstract We present a generic framework for verifying temporal safety properties of procedural programs that are dynamically or statically configured by replacing, adapting, or adding new components. To deal with such a variability of a program, we require programmers to provide local specifications for its variable components, and verify the global properties by replacing these specifications with maximal models. Our framework is a generalization of a previously developed framework that fully abstracts from program data. In this work, we recapture program data and thus significantly increase the range of properties that can be verified. Our framework is generic by being parametric on the set of observed program events and their semantics. We separate program structure from the behaviour it induces to facilitate independent component specification and verification. To exemplify the use of the framework, we develop three concrete instantiations; in particular, we derive a compositional verification technique for programs written in a procedural language with pointers as the only datatype. " }