Object-Based Dynamic Protocol Recovery for Multi-Threading Programs

A protocol defines the sequencing constraints for the operations that can be applied to an object. Quante introduced a protocol recovery technique that is able to extract protocols from existing software by means of dynamic analysis. This approach represents the behavior as object process graphs (OPG). OPGs are a projection of the control flow graph reduced to the operations relevant to an individual object. The protocol is inferred from a set of OPGs. The extraction was designed to handle sequential programs only. As multi-core architectures and, hence, multi-threading becomes more and more common in nowadays programming, it is necessary to extend reverse engineering techniques for multi-threaded programs. In this paper, we extend Quante's approach to protocol reconstruction for programs with multiple threads. We are formalizing this process using concepts from automata theory, namely, product and shuffle automata. We present a naive approach to combine these concepts and a combined approach. Our evaluation for realistic Java programs demonstrates the scalability of the combined approach and the combinatorial explosion of the naive approach.

[1]  Dawson R. Engler,et al.  Checking system rules using system-specific, programmer-written compiler extensions , 2000, OSDI.

[2]  Carlo Ghezzi,et al.  Synthesizing intensional behavior models by graph transformation , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[3]  Zhendong Su,et al.  Javert: fully automatic mining of general temporal properties from dynamic traces , 2008, SIGSOFT '08/FSE-16.

[4]  Steven P. Reiss,et al.  Encoding program executions , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[5]  Anand Raman,et al.  The sk-strings method for inferring PFSA , 1997 .

[6]  Siau-Cheng Khoo,et al.  SMArTIC: towards building an accurate, robust and scalable specification miner , 2006, SIGSOFT '06/FSE-14.

[7]  Rainer Koschke,et al.  Dynamic object process graphs , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[8]  Rainer Koschke,et al.  Dynamic Protocol Recovery , 2007, 14th Working Conference on Reverse Engineering (WCRE 2007).

[9]  Tao Xie,et al.  Automatic Extraction of Sliced Object State Machines for Component Interfaces , 2004 .

[10]  Jochen Quante,et al.  Do Dynamic Object Process Graphs Support Program Understanding? - A Controlled Experiment. , 2008, 2008 16th IEEE International Conference on Program Comprehension.

[11]  Leon J. Osterweil,et al.  Interprocedural static analysis of sequencing constraints , 1992, TSEM.

[12]  Pavol Cerný,et al.  Synthesis of interface specifications for Java classes , 2005, POPL '05.

[13]  Jochen Quante Online Construction of Dynamic Object Process Graphs , 2007, 11th European Conference on Software Maintenance and Reengineering (CSMR'07).

[14]  Andreas Zeller,et al.  Generating test cases for specification mining , 2010, ISSTA '10.

[15]  Monica S. Lam,et al.  Automatic extraction of object-oriented component interfaces , 2002, ISSTA '02.

[16]  James R. Larus,et al.  Mining specifications , 2002, POPL '02.

[17]  Valentin Dallmeier Mining and checking object behavior , 2010 .

[18]  Thomas R. Gross,et al.  Automatic Generation of Object Usage Specifications from Large Method Traces , 2009, 2009 IEEE/ACM International Conference on Automated Software Engineering.

[19]  R. Sekar,et al.  A fast automaton-based method for detecting anomalous program behaviors , 2001, Proceedings 2001 IEEE Symposium on Security and Privacy. S&P 2001.

[20]  Ali Shokoufandeh,et al.  Scenariographer: a tool for reverse engineering class usage scenarios from method invocation sequences , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[21]  Rainer Koschke,et al.  Static object trace extraction for programs with pointers , 2005, J. Syst. Softw..

[22]  Manuvir Das,et al.  Perracotta: mining temporal API rules from imperfect traces , 2006, ICSE.

[23]  Jerome A. Feldman,et al.  On the Synthesis of Finite-State Machines from Samples of Their Behavior , 1972, IEEE Transactions on Computers.