A CASE tool platform using an XML representation of Java source code

Recent IDEs have become more extensible tool platforms but do not concern themselves with how other tools running on them collaborate with each other. They compel developers to use proprietary representations or the classical abstract syntax tree (AST) to build source code tools. Although these representations contain sufficient information, they are neither portable nor extensible. This paper proposes a tool platform that manages commonly used, fined-grained, information about Java source code by using an XML representation. Our representation is suitable for developing tools which browse and manipulate actual source code since the original code is annotated with tags based on its structure and retained within the tags. Additionally, it exposes information resulting from global semantic analysis, which is never provided by the typical AST. Our proposed platform allows the developers to extend the representation for the purpose of sharing or exchanging various kinds of information about the source code, and also enables them to build new tools by using existing XML utilities

[1]  Christian S. Collberg,et al.  A Taxonomy of Obfuscating Transformations , 1997 .

[2]  Somesh Jha,et al.  Static Analysis of Executables to Detect Malicious Patterns , 2003, USENIX Security Symposium.

[3]  Gregory R. Andrews,et al.  Disassembly of executable code revisited , 2002, Ninth Working Conference on Reverse Engineering, 2002. Proceedings..

[4]  Amit Sahai,et al.  On the (im)possibility of obfuscating programs , 2001, JACM.

[5]  Christian S. Collberg,et al.  Watermarking, Tamper-Proofing, and Obfuscation-Tools for Software Protection , 2002, IEEE Trans. Software Eng..

[6]  Susan L. Graham,et al.  Designing an XML-based exchange format for Harmonia , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[7]  Arun Lakhotia,et al.  CHALLENGES IN GETTING ‘FORMAL’ WITH VIRUSES , 2003 .

[8]  Kostas Kontogiannis,et al.  Towards portable source code representations using XML , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[9]  Saumya K. Debray,et al.  Obfuscation of executable code to improve resistance to static disassembly , 2003, CCS '03.

[10]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[11]  Thomas Ball,et al.  Slicing Programs with Arbitrary Control-flow , 1993, AADEBUG.

[12]  John Mylopoulos,et al.  An extensible tool for source code representation using XML , 2002, Ninth Working Conference on Reverse Engineering, 2002. Proceedings..

[13]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[14]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1984, TOPL.

[15]  Peter Szor,et al.  HUNTING FOR METAMORPHIC , 2001 .

[16]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[17]  Andy Schürr,et al.  GXL: toward a standard exchange format , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[18]  Cristina Cifuentes,et al.  Decompilation of binary programs , 1995, Softw. Pract. Exp..

[19]  Andrian Marcus,et al.  Source code files as structured documents , 2002, Proceedings 10th International Workshop on Program Comprehension.

[20]  Christopher Krügel,et al.  Static Disassembly of Obfuscated Binaries , 2004, USENIX Security Symposium.

[21]  Linda M. Wills,et al.  An experimentation framework for evaluating disassembly and decompilation tools for C++ and java , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[22]  Thomas W. Reps,et al.  Analyzing Memory Accesses in x86 Executables , 2004, CC.

[23]  Brian A. Malloy,et al.  Program annotation in XML: a parse-tree based approach , 2002, Ninth Working Conference on Reverse Engineering, 2002. Proceedings..

[24]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1990, TOPL.

[25]  Robert Richards,et al.  Document Object Model (DOM) , 2006 .

[26]  Jürgen Ebert,et al.  GraX-an interchange format for reengineering tools , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

[27]  Soo Mee Foo,et al.  Simple API for XML (SAX) , 2002 .

[28]  Jonathan I. Maletic Leveraging XML technologies in developing program analysis tools , 2004, ICSE 2004.

[29]  Greg J. Badros JavaML: a markup language for Java source code , 2000, Comput. Networks.

[30]  James R. Cordy Generalized Selective XML Markup of Source Code Using Agile Parsing , 2003, IWPC.

[31]  Alessandro Orso,et al.  Regression test selection for Java software , 2001, OOPSLA '01.

[32]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.

[33]  Flemming Nielson,et al.  Abstract interpretation: a semantics-based tool for program analysis , 1995, LICS 1995.