ABSTRACT
In object-oriented programs, we often need to set some restrictions on the temporal orders of the message receiving for objects, which forms a class of safety requirements. In this paper, we use UML state machine diagrams as design specifications, and present an approach to runtime verification of Java programs, which is focused on the temporal order of message receiving based consistency verification between the behavior of state machine diagrams and the program execution traces. In the approach, we first instrument the program under verification so as to gather the program execution traces related to a given state machine diagram. Then we drive the instrumented program by random test cases so as to generate the program execution traces. Finally we check if the collected program execution traces are consistent with the behavior of the state machine diagram, which means that the temporal orders of the message receiving occurring in the program traces are consistent with the ones occurring in the state machine diagram. Our approach can be used to detect not only the program bugs resulting from the wrong temporal orders of message receiving, but also the imperfect state machine models constructed in reverse engineering for legacy systems, and leads to a testing tool which may proceed in a fully automatic fashion.
- J. Rumbaugh and I. Jacobson and G. Booch. The Unified Modeling Language Reference Manual, Addison-Wesley, 1999. Google ScholarDigital Library
- OMG. UML2.0 Superstructure Specification, 2004. www.uml.org.Google Scholar
- Havelund, K. and G. Rosu, editors, Proceedings of First Workshop on Runtime Verification, Electronic Notes in Theoretical Computer Science, Vol.65, Issue 7, Elsevier, 2001.Google ScholarCross Ref
- Bernd Finkbeiner, Sriram Sankaranarayanan, Henny Sipma. Collecting Statistics over Runtime Executions. In Electronic Notes in Theoretical Computer Science, Vol.55, Issue 2, Elsevier, 2001.Google Scholar
- Russell C. Bjork. The Simulation of an Automated Teller Machine. http://www.math-cs.gordon.edu/local/courses/cs211/ATMExample/Links.html.Google Scholar
- Detlef Bartetzko, Clemens Fischer, Michael Moller, and Heike Wehrheim. Jass - Java with Assertions. In Electronic Notes in Theoretical Computer Science, Vol.55, Issue 2, Elsevier, 2001.Google Scholar
- Klaus Havelund and Grigore Rou. Monitoring Java Programs with Java PathExplorer. In Electronic Notes in Theoretical Computer Science, Vol.55, Issue 2, Elsevier, 2001.Google Scholar
- M. Kim, S. Kannan, I. Lee, O. Sokolsky and M. Viswanathan. Java-MaC: A Run-time Assurance Tool for Java Programs. In Electronic Notes in Theoretical Computer Science, Vol.55, Issue 2, Elsevier, 2001.Google Scholar
- Marcelo d'Amorim, Klaus Havelund. Event-Based Runtime Verification of Java Programs. In Proceedings of Third International Workshop on Dynamic Analysis (WODA2005), ACM Press, 2005. Google ScholarDigital Library
- David Y. W. Park, Ulrich Stern, Jens U. Skakebak, and David L. Dill. Java Model Checking. In Proceedings of the First International Workshop on Automated Program Analysis, Testing, and Verification, 2000.Google ScholarCross Ref
- Klaus Havelund and Thomas Pressburger. Model checking JAVA programs using JAVA PathFinder. In International Journal on Software Tools for Technology Transfer, (2000) 2: 366--381.Google ScholarCross Ref
- Rajeev Alur. Trends and Challenges in Algorithmic Software Verification. In Proceedings of IFIP Working Conference on Verified Software: Theories, Tools, Experiments, 2005, http://vstte.ethz.ch/speakers.html.Google Scholar
- Rajeev Alur, Pavol Cerny, P. Madhusudan, Wonhong Nam. Synthesis of Interface Specifications for Java Classes. In Proceedings of POPL2005, ACM Press, 2005, pp.98--109. Google ScholarDigital Library
- Thomas A. Henzinger, Ranjit Jhala, Rupak Majumadar. Permissive Interfaces. In Proceedings of ESEC-FSE2005, ACM Press, 2005, Google ScholarDigital Library
- Stefania Gnesi, Diego Latella, and Mieke Massink. Formal Test Case Generation for UML Statecharts. In Proceedings of Ninth IEEE International Conference on Engineering Complex Computer Systems (ICECCS'04), IEEE Computer Society Press, 2004, pp. 75--84. Google ScholarDigital Library
- Diego Latella and Mieke Massink. On Testing and Comformance Relations for UML Statechart Diagram Behaviors. In Proceedings of the ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA2002), ACM Sofyware Engineering Notes 27(4). Google ScholarDigital Library
- P. Chevalley and P. Thevenod-Fosse. Automated Generation of Statistical Test Cases from UML State Diagrams. In Proceedings of International Computer Software and Applications Conference, 2001, pp.205--214. Google ScholarDigital Library
- Y. G. Kim, H. S. Hong, S. M. Cho, D. H. Bae, and S. D. Cha. Test Case Generation from UML State Diagrams. In IEEE Proceedings - Software, 146(4), 1999, pp.187--192.Google ScholarCross Ref
- Li Xuandong, Wang Linzhang, Qiu Xiaokang, Lei Bin, Yuan Jiesong, Zhao Jianhua, Zheng Guoliang. Runtime Verification of Java Programs for Scenario-Based Specifications. In Proceedings of the 11th International Conference on Reliable Software Technologies (AE2006), LNCS 4006, Springer, 2006, pp.94--106. Google ScholarDigital Library
Index Terms
- UML state machine diagram driven runtime verification of Java programs for message interaction consistency
Recommendations
An MDE-based approach to the verification of SysML state machine diagram
Internetware '12: Proceedings of the Fourth Asia-Pacific Symposium on InternetwareState Machine Diagram (SMD) is one of the SysML behavior diagrams, but it is a kind of semi-formal model language. As a consequence, models can not be verified conveniently and efficiently, especially in real-time embedded system (RTES) field as there ...
Formal Verification of UML State Machine Diagrams Using Petri Nets
Networked SystemsAbstractUML State Machine diagrams are widely used for behavioral modeling. They describe all of the possible states of a system and show its lifetime behavior. Nevertheless, they lack of semantics. A State Machine diagram may be interpreted in different ...
Runtime verification of statechart implementations
Architecting Dependable Systems IIIOur paper introduces a runtime verification framework for concurrent monitoring of applications specified by UML statecharts. The approach offers a considerable degree of granularity by (i) enabling the modeler to focus on specific key dependability ...
Comments