Skip to main content

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 5765))

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 84.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 109.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Aho, A., Sethi, R., Ullmann, J.: Compilers - Principles, Techniques and Tools. Addison-Wesley, Reading (1987)

    Google Scholar 

  2. 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

  3. Amann, B., Scholl, M.: Gram: A graph data model and query language. In: European Conference on Hypertext (1992)

    Google Scholar 

  4. Berglund, A., et al.(eds.): XML Path Language (XPath) 2.0, W3C Recommendation (January 2007)

    Google Scholar 

  5. 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)

    Google Scholar 

  6. Beyer, D., Noack, A., Lewerentz, C.: Efficient relational calculation for software analysis. IEEE Trans. Softw. Eng. 31(2), 137–149 (2005)

    Article  Google Scholar 

  7. Bildhauer, D.: Entwurf und Implementation eines Auswerters für die TGraphanfragesprache GReQL 2. VDM Verlag (2008)

    Google Scholar 

  8. Boag, S., et al. (eds.): XQuery 1.0: An XML Query Language, W3C Recommendation (January 2007)

    Google Scholar 

  9. Böhlen, B.: Ein parametrisierbares Graph-Datenbanksystem für Entwicklungswerkzeuge. Shaker Verlag, Aachen (December 2006)

    Google Scholar 

  10. 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)

    Google Scholar 

  11. 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)

    Chapter  Google Scholar 

  12. Ebert, J.: A Versatile Data Structure For Edge-Oriented Graph Algorithms. Communications ACM 30(6), 513–519 (1987)

    Article  Google Scholar 

  13. 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)

    Google Scholar 

  14. 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

  15. 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)

    Google Scholar 

  16. Ebert, J., Süttenbach, R., Uhe, I.: JKogge: a Component-Based Approach for Tools in the Internet. In: Proceedings STJA 1999, Erfurt (1999)

    Google Scholar 

  17. 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)

    Chapter  Google Scholar 

  18. Holt, R.C.: Wcre 1998 most influential paper: Grokking software architecture. In: WCRE, pp. 5–14 (2008)

    Google Scholar 

  19. 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)

    Article  MathSciNet  MATH  Google Scholar 

  20. Hopcroft, J.E., Ullmann, J.D.: Introduction to Automata Theory, Languages, and Computation. Addison-Wesley, Reading (1979)

    Google Scholar 

  21. Horn, T.: Ein Optimierer für GReQL2. GRIN Verlag GmbH (2009)

    Google Scholar 

  22. Kiesel, N., Schürr, A., Westfechtel, B.: GRAS, a graph oriented (software) engineering database system. Information Systems 20(1), 21–51 (1995)

    Article  Google Scholar 

  23. Klint, P.: Using Rscript for software analysis. In: Working Session on Query Technologies and Applications for Program Comprehension (QTAPC) (2008)

    Google Scholar 

  24. 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)

    Google Scholar 

  25. Marchewka, K.: GReQL 2. Master’s thesis, Universität Koblenz-Landau, Institut für Softwaretechnik (2006)

    Google Scholar 

  26. 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)

    Chapter  Google Scholar 

  27. Mendelzon, A.O., Wood, P.T.: Finding regular simple paths in graph databases. SIAM Journal on Computing 24(6), 1235–1258 (1989)

    Article  MathSciNet  MATH  Google Scholar 

  28. Myhill, J.R.: Finite automata and the representation of events. Technical Report 57-624, Wright Patterson AFB, Ohio (1957)

    Google Scholar 

  29. 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)

    Chapter  Google Scholar 

  30. Object Management Group: Meta Object Facility (MOF) Core Specification, OMG Availiable Specification, Version 2.0 (2006)

    Google Scholar 

  31. Prud’hommeaux, E., Seaborne, A. (eds.): SPARQL Query Language for RDF, W3C Recommendation (January 2008)

    Google Scholar 

  32. 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)

    Chapter  Google Scholar 

  33. Siek, J.G., Lee, L., Lumsdaine, A.: The Boost Graph Library: User Guide and Reference Manual. Addison-Wesley, Reading (2001)

    Google Scholar 

  34. Steffens, T.: Kontextfreie Suche auf Graphen. VDM Verlag (2008)

    Google Scholar 

  35. Thompson, K.: Regular expression search algorithms. Communications of the ACM 11(6), 419–422 (1968)

    Article  MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics