Abstract
Software Reverse Engineering is the process of extracting (usually more abstract) information from software artifacts. Graph-based engineering tools work on fact repositories that keep all artifacts as graphs. Hence, information extraction can be viewed as querying this repository. This paper describes the graph query language GReQL and its use in reverse engineering tools.
GReQL is an expression language based on set theory and predicate logics including regular path expressions (RPEs) as first class values. The GReQL evaluator is described in some detail with an emphasis on the efficient evaluation of RPEs for reachability and path-finding queries. Applications for reverse engineering Java software are added as sample use cases.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Aho, A., Sethi, R., Ullmann, J.: Compilers - Principles, Techniques and Tools. Addison-Wesley, Reading (1987)
Alves, T.L., Hage, J., Rademaker, P.: Comparative study of code query technologies (2009), Online PDF (04.06.2010), wiki.di.uminho.pt/twiki/pub/Personal/Tiago/Publications/Alves09b-draft.pdf
Amann, B., Scholl, M.: Gram: A graph data model and query language. In: European Conference on Hypertext (1992)
Berglund, A., et al.(eds.): XML Path Language (XPath) 2.0, W3C Recommendation (January 2007)
Beyer, D.: Relational programming with crocopat. In: ICSE 2006: Proceedings of the 28th International Conference on Software Engineering, pp. 807–810. ACM, New York (2006)
Beyer, D., Noack, A., Lewerentz, C.: Efficient relational calculation for software analysis. IEEE Trans. Softw. Eng. 31(2), 137–149 (2005)
Bildhauer, D.: Entwurf und Implementation eines Auswerters für die TGraphanfragesprache GReQL 2. VDM Verlag (2008)
Boag, S., et al. (eds.): XQuery 1.0: An XML Query Language, W3C Recommendation (January 2007)
Böhlen, B.: Ein parametrisierbares Graph-Datenbanksystem für Entwicklungswerkzeuge. Shaker Verlag, Aachen (December 2006)
Chidamber, S.R., Kemerer, C.F.: Towards a metrics suite for object oriented design. In: OOPSLA 1991: Conference Proceedings on Object-Oriented Programming Systems, Languages, and Applications, pp. 197–211. ACM, New York (1991)
Consens, M.P., Mendelzon, A.O.: Graphlog: a visual formalism for real life recursion. In: PODS 1990: Proceedings of the Ninth ACM SIGACT-SIGMOD-SIGART Symposium on Principles of Database Systems, pp. 404–416. ACM, New York (1990)
Ebert, J.: A Versatile Data Structure For Edge-Oriented Graph Algorithms. Communications ACM 30(6), 513–519 (1987)
Ebert, J., Bildhauer, D., Riediger, V., Schwarz, H.: Using the TGraph Approach for Model Fact Repositories. In: Proceedings of the International Workshop on Model Reuse Strategies (MoRSe 2008) (May 2008)
Ebert, J., Kullbach, B., Riediger, V., Winter, A.: GUPRO. Generic Understanding of Programs - An Overview. Electronic Notes in Theoretical Computer Science 72(2) (2002), http://www.elsevier.nl/locate/entcs/volume72.html
Ebert, J., Riediger, V., Winter, A.: Graph Technology in Reverse Engineering, the TGraph Approach. In: Gimnich, R., et al. (eds.) 10th Workshop Software Reengineering (WSR 2008), Bonn. GI Lecture Notes in Informatics, vol. 126, pp. 67–81. GI (2008)
Ebert, J., Süttenbach, R., Uhe, I.: JKogge: a Component-Based Approach for Tools in the Internet. In: Proceedings STJA 1999, Erfurt (1999)
He, H., Singh, A.K.: Graphs-at-a-time: query language and access methods for graph databases. In: SIGMOD 2008: Proceedings of the 2008 ACM SIGMOD International Conference on Management of Data, pp. 405–418. ACM, New York (2008)
Holt, R.C.: Wcre 1998 most influential paper: Grokking software architecture. In: WCRE, pp. 5–14 (2008)
Holt, R.C., Schürr, A., Sim, S.E., Winter, A.: GXL: a graph-based standard exchange format for reengineering. Science of Computer Programming 60(2), 149–170 (2006)
Hopcroft, J.E., Ullmann, J.D.: Introduction to Automata Theory, Languages, and Computation. Addison-Wesley, Reading (1979)
Horn, T.: Ein Optimierer für GReQL2. GRIN Verlag GmbH (2009)
Kiesel, N., Schürr, A., Westfechtel, B.: GRAS, a graph oriented (software) engineering database system. Information Systems 20(1), 21–51 (1995)
Klint, P.: Using Rscript for software analysis. In: Working Session on Query Technologies and Applications for Program Comprehension (QTAPC) (2008)
Kullbach, B., Winter, A.: Querying as an Enabling Technology in Software Reengineering. In: Verhoef, C., Nesi, P. (eds.) Proceedings of the 3rd Euromicro Conference on Software Maintenance & Reengineering, pp. 42–50. IEEE Computer Society, Los Alamitos (1999)
Marchewka, K.: GReQL 2. Master’s thesis, Universität Koblenz-Landau, Institut für Softwaretechnik (2006)
Mehlhorn, K., Näher, S., Uhrig, C.: The leda platform of combinatorial and geometric computing. In: Degano, P., Gorrieri, R., Marchetti-Spaccamela, A. (eds.) ICALP 1997. LNCS, vol. 1256, pp. 7–16. Springer, Heidelberg (1997)
Mendelzon, A.O., Wood, P.T.: Finding regular simple paths in graph databases. SIAM Journal on Computing 24(6), 1235–1258 (1989)
Myhill, J.R.: Finite automata and the representation of events. Technical Report 57-624, Wright Patterson AFB, Ohio (1957)
Nagl, M.: An incremental compiler as component of a system for software generation. In: Programmiersprachen und Programmentwicklung. Fachtagung des Fachausschusses Programmiersprachen der GI, vol. 6, pp. 29–44. Springer, London (1980)
Object Management Group: Meta Object Facility (MOF) Core Specification, OMG Availiable Specification, Version 2.0 (2006)
Prud’hommeaux, E., Seaborne, A. (eds.): SPARQL Query Language for RDF, W3C Recommendation (January 2008)
Ranger, U., Weinell, E.: The graph rewriting language and environment PROGRES. In: Schürr, A., Nagl, M., Zündorf, A. (eds.) AGTIVE 2007. LNCS, vol. 5088, pp. 575–576. Springer, Heidelberg (2008)
Siek, J.G., Lee, L., Lumsdaine, A.: The Boost Graph Library: User Guide and Reference Manual. Addison-Wesley, Reading (2001)
Steffens, T.: Kontextfreie Suche auf Graphen. VDM Verlag (2008)
Thompson, K.: Regular expression search algorithms. Communications of the ACM 11(6), 419–422 (1968)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2010 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Ebert, J., Bildhauer, D. (2010). Reverse Engineering Using Graph Queries. In: Engels, G., Lewerentz, C., Schäfer, W., Schürr, A., Westfechtel, B. (eds) Graph Transformations and Model-Driven Engineering. Lecture Notes in Computer Science, vol 5765. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-17322-6_15
Download citation
DOI: https://doi.org/10.1007/978-3-642-17322-6_15
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-17321-9
Online ISBN: 978-3-642-17322-6
eBook Packages: Computer ScienceComputer Science (R0)