Program Behavior Discovery and Verification: A Graph Grammar Approach

Discovering program behaviors and functionalities can ease program comprehension and verification. Existing program analysis approaches have used text mining algorithms to infer behavior patterns or formal models from program execution. When one tries to identify the hierarchical composition of a program behavior at different abstraction levels, textual descriptions are not informative and expressive enough. To address this, we present a semi-automatic graph grammar approach to retrieving the hierarchical structure of the program behavior. The hierarchical structure is built on recurring substructures in a bottom-up fashion. We formulate the behavior discovery and verification problem as a graph grammar induction and parsing problem, i.e., automatically iteratively mining qualified patterns and then constructing graph rewriting rules. Furthermore, using the induced grammar to parse the behavioral structure of a new program could verify if the program has the same behavioral properties specified by the grammar.

[1]  Jun Kong,et al.  Discovering Program's Behavioral Patterns by Inferring Graph-Grammars from Execution Traces , 2008, 2008 20th IEEE International Conference on Tools with Artificial Intelligence.

[2]  Zhenmin Li,et al.  PR-Miner: automatically extracting implicit programming rules and detecting violations in large software code , 2005, ESEC/FSE-13.

[3]  Abdelwahab Hamou-Lhadj,et al.  Compression techniques to simplify the analysis of large execution traces , 2002, Proceedings 10th International Workshop on Program Comprehension.

[4]  Tevfik Bultan,et al.  Interface Grammars for Modular Software Model Checking , 2007, IEEE Transactions on Software Engineering.

[5]  Thomas A. Standish An Essay on Software Reuse , 1984, IEEE Transactions on Software Engineering.

[6]  Yu Lei,et al.  Abstraction of multiple executions of object-oriented programs , 2009, SAC '09.

[7]  Yuanyuan Zhou,et al.  CP-Miner: finding copy-paste and related bugs in large-scale software code , 2006, IEEE Transactions on Software Engineering.

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

[9]  Jiawei Han,et al.  gSpan: graph-based substructure pattern mining , 2002, 2002 IEEE International Conference on Data Mining, 2002. Proceedings..

[10]  Lionel C. Briand,et al.  Toward the Reverse Engineering of UML Sequence Diagrams for Distributed Java Software , 2006, IEEE Transactions on Software Engineering.

[11]  Michele Risi,et al.  Using Grammar-Based Recognizers for Symbol Completion in Diagrammatic Sketches , 2007, Ninth International Conference on Document Analysis and Recognition (ICDAR 2007).

[12]  Jun Kong,et al.  Spatial graph grammars for graphical user interfaces , 2006, TCHI.

[13]  Luciano Baresi,et al.  Modeling and validation of service-oriented architectures: application vs. style , 2003, ESEC/FSE-11.

[14]  Luciano Baresi,et al.  Tutorial Introduction to Graph Transformation: A Software Engineering Perspective , 2002, ICGT.

[15]  Neil Walkinshaw,et al.  Reverse Engineering State Machines by Interactive Grammar Inference , 2007, 14th Working Conference on Reverse Engineering (WCRE 2007).

[16]  Somesh Jha,et al.  Mining specifications of malicious behavior , 2008, ISEC '08.

[17]  Giuliano Antoniol,et al.  Scenario-driven dynamic analysis for comprehending large software systems , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[18]  Tao Xie,et al.  Mining software engineering data , 2007, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[19]  Michele Risi,et al.  Design pattern recovery by visual language parsing , 2005, Ninth European Conference on Software Maintenance and Reengineering.

[20]  Filomena Ferrucci,et al.  Constructing meta-CASE workbenches by exploiting visual language generators , 2006, IEEE Transactions on Software Engineering.

[21]  Lawrence B. Holder,et al.  Inference of Node Replacement Recursive Graph Grammars , 2006, SDM.

[22]  Xiangyu Zhang,et al.  Matching execution histories of program versions , 2005, ESEC/FSE-13.

[23]  C. Murray Woodside,et al.  Logical Clock Requirements for Reverse Engineering Scenarios from a Distributed System , 2002, IEEE Trans. Software Eng..

[24]  Edward A. Lee,et al.  The ptolemy II framework for visual languages , 2001, Proceedings IEEE Symposia on Human-Centric Computing Languages and Environments (Cat. No.01TH8587).

[25]  Jiannong Cao,et al.  Design, Construction, and Application of a Generic Visual Language Generation Environment , 2001, IEEE Trans. Software Eng..

[26]  John Domingue,et al.  Software visualization : programming as a multimedia experience , 1998 .

[27]  Kang Zhang,et al.  Constructing VEGGIE: Machine Learning for Context-Sensitive Graph Grammars , 2007, 19th IEEE International Conference on Tools with Artificial Intelligence(ICTAI 2007).

[28]  Kang Zhang,et al.  Constructing VEGGIE: Machine Learning for Context-Sensitive Graph Grammars , 2007 .

[29]  Stan Jarzabek,et al.  Detecting higher-level similarity patterns in programs , 2005, ESEC/FSE-13.

[30]  Toon Calders,et al.  Applying Webmining techniques to execution traces to support the program comprehension process , 2005, Ninth European Conference on Software Maintenance and Reengineering.

[31]  Giuseppe Scanniello,et al.  Visual Languages for defining Adaptive and collaborative e-learning activities , 2004 .

[32]  Albert Zündorf,et al.  The PROGRES approach: language and environment , 1999 .

[33]  Abdelwahab Hamou-Lhadj,et al.  Summarizing the Content of Large Traces to Facilitate the Understanding of the Behaviour of a Software System , 2006, 14th IEEE International Conference on Program Comprehension (ICPC'06).

[34]  Lawrence B. Holder,et al.  Graph Grammar Induction on Structural Data for Visual Programming , 2006, 2006 18th IEEE International Conference on Tools with Artificial Intelligence (ICTAI'06).

[35]  Pierre Dupont,et al.  THE QSM ALGORITHM AND ITS APPLICATION TO SOFTWARE BEHAVIOR MODEL INDUCTION , 2008, Appl. Artif. Intell..

[36]  James Bailey,et al.  Mining Minimal Contrast Subgraph Patterns , 2006, SDM.

[37]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

[38]  Alexander L. Wolf,et al.  Discovering models of software processes from event-based data , 1998, TSEM.

[39]  Jiannong Cao,et al.  A Context-sensitive Graph Grammar Formalism for the Specification of Visual Languages , 2001, Comput. J..

[40]  Kamran Sartipi,et al.  Application of Execution Pattern Mining and Concept Lattice Analysis on Software Structure Evaluation , 2006, SEKE.

[41]  Madeline Diep,et al.  Reducing irrelevant trace variations , 2007, ASE '07.

[42]  Hartmut Ehrig,et al.  Handbook of graph grammars and computing by graph transformation: vol. 2: applications, languages, and tools , 1999 .

[43]  Chunying Zhao,et al.  A Grammar-Based Reverse Engineering Framework for Behavior Verification , 2008, 2008 11th IEEE High Assurance Systems Engineering Symposium.

[44]  Lawrence B. Holder,et al.  Substructure Discovery Using Minimum Description Length and Background Knowledge , 1993, J. Artif. Intell. Res..

[45]  Kamran Sartipi,et al.  Dynamic Analysis of Software Systems using Execution Pattern Mining , 2006, 14th IEEE International Conference on Program Comprehension (ICPC'06).

[46]  George C. Necula,et al.  Mining Temporal Specifications for Error Detection , 2005, TACAS.

[47]  Mana Taghdiri,et al.  Lightweight extraction of syntactic specifications , 2006, SIGSOFT '06/FSE-14.

[48]  Yann-Gaël Guéhéneuc Automated Reverse-engineering of UML v 2 . 0 Dynamic Models , 2005 .

[49]  Gennaro Costagliola,et al.  A framework for modeling and implementing visual notations with applications to software engineering , 2004, TSEM.

[50]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[51]  Srinivasan Parthasarathy,et al.  Discovering frequent topological structures from graph datasets , 2005, KDD '05.

[52]  Yannis Smaragdakis,et al.  DSD-Crasher: A hybrid analysis tool for bug finding , 2006, TSEM.

[53]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[54]  Mark Minas,et al.  Concepts and realization of a diagram editor generator based on hypergraph transformation , 2002, Sci. Comput. Program..

[55]  Hartmut Ehrig,et al.  Handbook of graph grammars and computing by graph transformation: vol. 3: concurrency, parallelism, and distribution , 1999 .