the transitions from its actual state. These transitions are obtained from the automaton
associated to the process. The second phase of the algorithm executes each transition
generated, appropriately updating the state vector variables and producing the corre-
sponding LTS label. In order to execute the transition in the LTS, we need to execute the
associated code in the process graph. Recall that this code is the result of the previous
analysis described in Section 2.1. Thus, the successor state is generated automatically
while executing the transition. It is worth noting that the transformed code works di-
rectly with the variables in the vector state.
The graph interface includes an initialization primitive CAESAR INIT GRAPH,
which has to be called before using any operation with the graph. This method in-
volves the allocation in memory of the process graphs (described in Section 2.2) of the
different processes forming the system to be analyzed.
3 Conclusions and Future Work
Originally, OPEN/CÆSAR were designed as an open environment extending the func-
tionality of CAESAR that is used for verifying a LOTOS specification. In this paper, we
propose to use this framework for analyzing C programs that make use of well defined
APIs. Most existing software model checkers are well suited to verifying distributed
systems. Some of them, such as JPF or Bandera, analyze systems described in JAVA.
Others are designed to analyze specific kinds of software. For instance, SLAM [1] ver-
ifies whether the behavior of a driver is secure wrt the uses of the API that it offers.
Actually, this proposal is its final stage of implementation, and the final version
will be available in http://www.lcc.uma.es/gisum/fmse/tools . Future work could follow
several lines. On the one hand, we could compare the results provided by our previous
tool SOCKETMC, and by the current proposal. This comparison should take into ac-
count not only the numerical results, but also the easiness for obtaining the models. On
the other, we also propose to extend our approach by considering different APIs or by
implementing abstraction techniques.
References
1. Thomas Ball, Byron Cook, Vladimir Levin, and Sriram K. Rajamani. Slam and static driver
verifier: Technology transfer of formal methods inside microsoft. In IFM, pages 1–20, 2004.
2. M. Camara, M.M. Gallardo, P. Merino, and D. Sanan. Model checking software with well-
defined apis: The socket case. In (FMICS05), pages 17–26. ACM SIGSOFT, 2005.
3. H. Garavel. OPEN/CAESAR: An open software architecture for verification, simulation, and
testing. In TACAS’98, volume 1384, pages 68–84, 1998.
4. K. Havelund and T. Pressburger. Model checking java programs using java pathfinder, 1999.
5. Gerard J. Holzmann. The model checker SPIN. Software Engineering, 23(5):279–295, 1997.
6. J. -C. Fernandez, H. Garavel, A. Kerbrat, L. Mounier, R. Mateescu, and M. Sighireanu.
CADP: a protocol validation and verification toolbox. In Rajeev Alur and Thomas A. Hen-
zinger, editors, Proceedings of the Eighth International Conference on Computer Aided Ver-
ification CAV, volume 1102, pages 437–440, New Brunswick, NJ, USA, / 1996. Springer
Verlag.
201