A comparison of logic-based infrastructures for concern detection and extraction

In this paper we evaluate logic code analysis and transformation frameworks for their suitability as basic infrastructures for fast detection and extraction of (crosscutting) concerns. Using design patterns as example concerns, we identify desirable properties that an infrastructure should fulfill. We then report our initial results of evaluating candidate systems with respect to these properties. We show how high precision design pattern detectors can be easily formulated as predicates that are evaluated in mere seconds even on the sources of large software systems, such as the Eclipse IDE. Although details still remain to be analyzed further, our current results suggest that the pair JTransformer & CTC is a good candidate for a general infrastructure, combining very good querying performance, scalability and short turn-around times with a seamless integration of querying and transformation capabilities.

[1]  Günter Kniesel,et al.  JMangler – A Powerful Back-End for Aspect-Oriented Programming , 2003 .

[2]  Claudia Raibulet,et al.  Design Pattern Detection for Reverse Engineering , 2006, 2006 13th Working Conference on Reverse Engineering.

[3]  Kris De Volder,et al.  Navigating and querying code without getting lost , 2003, AOSD '03.

[4]  Marek Vokác An efficient tool for recovering Design Patterns from C++ Code , 2006, J. Object Technol..

[5]  Claudia Raibulet,et al.  Workshop on Design Pattern Detection for Reverse Engineering -- DPD4RE 2006 -- , 2006 .

[6]  Gregor Kiczales,et al.  Design pattern implementation in Java and aspectJ , 2002, OOPSLA '02.

[7]  Günter Kniesel,et al.  JMangler - a framework for load-time transformation of Java class files , 2001, Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation.

[8]  Günter Kniesel A Logic Foundation for Program Transformations , 2006 .

[9]  Günter Kniesel,et al.  Detection and Resolution of Weaving Interactions , 2009, LNCS Trans. Aspect Oriented Softw. Dev..

[10]  Andreas Ludwig,et al.  Metaprogramming in the Large , 2000, GCSE.

[11]  Ladan Tahvildari,et al.  On the role of design patterns in quality-driven re-engineering , 2002, Proceedings of the Sixth European Conference on Software Maintenance and Reengineering.

[12]  Elnar Hajiyev,et al.  CodeQuest: querying source code with datalog , 2005, OOPSLA '05.

[13]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[14]  Elnar Hajiyev,et al.  codeQuest: Scalable Source Code Queries with Datalog , 2006, ECOOP.

[15]  Günter Kniesel,et al.  An Analysis of the Correctness and Completeness of Aspect Weaving , 2006, 2006 13th Working Conference on Reverse Engineering.

[16]  Gregor Kiczales,et al.  Role-based refactoring of crosscutting concerns , 2005, AOSD '05.

[17]  Kim Mens,et al.  Supporting software development through declaratively codified programming patterns , 2002, Expert Syst. Appl..

[18]  Jim des Rivières,et al.  Eclipse: A platform for integrating development tools , 2004, IBM Syst. J..

[19]  Vítor Santos Costa,et al.  Prolog Performance on Larger Datasets , 2007, PADL.

[20]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[21]  Welf Löwe,et al.  Automatic design pattern detection , 2003, 11th IEEE International Workshop on Program Comprehension, 2003..

[22]  Arie van Deursen,et al.  Identifying aspects using fan-in analysis , 2004, 11th Working Conference on Reverse Engineering.

[23]  Markus Dahm Byte Code Engineering with the BCEL API , 2007 .

[24]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[25]  Alexander Chatzigeorgiou,et al.  Design Pattern Detection Using Similarity Scoring , 2006, IEEE Transactions on Software Engineering.