Techniques for analyzing sequential programs in order to improve their reliability have been widely studied in the past. Among the most interesting analysis techniques, we consider symbolic execution. However, analysis techniques for concurrent programs, and in particular symbolic execution, are still an open research area. In this paper, we define a method for symbolic execution of concurrent systems, based on an extension of the Petri net formalism, called EF nets. EF nets are a powerful, highly expressive and general formalism. Depending on the level of abstraction of actions and predicates that one associates to the transitions of the net, EF nets can be used as a high-level specification formalism for concurrent systems, or as a lower level internal representation of concurrent programs. Thus, the model is not dependent on a particular concurrent programming language, but it is flexible enough to be the kernel model for the representation of a wide set of systems and programming languages. In the paper, in order to support the analysis of a concurrent system or program, at first a general algorithm for symbolically executing an EF net is defined. Then, a more efficient algorithm is given for the particular, though important, subclass of EF nets, defined as safe EF nets. Such algorithm is proved to significantly help in reducing the amount of information needed to characterize a symbolic execution. Both the modelling power of the EF nets and the usefulness of the concurrent symbolic execution algorithms defined are illustrated by means of a case study.
|Data di pubblicazione:||1989|
|Titolo:||Symbolic Execution of concurrent systems using Petri nets|
|Digital Object Identifier (DOI):||10.1016/0096-0551(89)90023-4|
|Codice identificativo ISI:||WOS:A1989CE20600004|
|Codice identificativo Scopus:||2-s2.0-0024877125|
|Parole Chiave:||Concurrency; Symbolic execution; Petri nets; Software analysis; Testing|
|Appare nelle tipologie:||Articolo su Rivista|