Role-based refactoring of crosscutting concerns

Improving the structure of code can help developers work with a software system more efficiently and more consistently. To aid developers in re-structuring the implementation of crosscutting concerns using aspect-oriented programming, we introduce a role-based refactoring approach and tool. Crosscutting concerns (CCCs) are described in terms of abstract roles, and instructions for refactoring crosscutting concerns are written in terms of those roles. To apply a refactoring, a developer maps a subset of the roles to concrete program elements; a tool can then help complete the mapping of roles to the existing program. Refactoring instructors are then applied to manipulate and modularize the concrete elements corresponding to the crosscutting concern. Evaluation of the prototype tool on a graphical editing framework suggests that the approach helps planning and executing complex CCC refactorings.

[1]  Frank Tip,et al.  Efficiently Refactoring Java Applications to Use Generic Libraries , 2005, ECOOP.

[2]  Hidehiko Masuhara,et al.  Modeling Crosscutting in Aspect-Oriented Mechanisms , 2003, ECOOP.

[3]  Stefan Hanenberg,et al.  Roles and Aspects: Similarities, Differences, and Synergetic Potential , 2002, OOIS.

[4]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[5]  Jörgen Hansson,et al.  Empowering configurable QoS management in real-time systems , 2005, AOSD '05.

[6]  Karl J. Lieberherr,et al.  Aspectual Collaborations: Combining Modules and Aspects , 2003, Comput. J..

[7]  Kim Mens,et al.  Mining aspectual views using formal concept analysis , 2004, Source Code Analysis and Manipulation, Fourth IEEE International Workshop on.

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

[9]  Timothy A. Budd,et al.  An introduction to object-oriented programming , 1991 .

[10]  William G. Griswold,et al.  Automated assistance for program restructuring , 1993, TSEM.

[11]  John M. Vlissides,et al.  Automatic Code Generation from Design Patterns , 1996, IBM Syst. J..

[12]  Gregory T. Sullivan Advanced Programming Language Features for Executable Design Patterns "Better Patterns Through Reflection" , 2002 .

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

[14]  Frank Tip,et al.  Refactoring support for class library migration , 2005, OOPSLA '05.

[15]  Günter Kniesel,et al.  Static composition of refactorings , 2004, Sci. Comput. Program..

[16]  James O. Coplien Software design patterns: common questions and answers , 1998 .

[17]  Ellen Agerbo,et al.  How to preserve the benefits of design patterns , 1998, OOPSLA '98.

[18]  Edsger W. Dijkstra,et al.  Structured programming , 1972, A.P.I.C. Studies in data processing.

[19]  C. M. Sperberg-McQueen,et al.  Extensible Markup Language (XML) , 1997, World Wide Web J..

[20]  Lori Pollock,et al.  Ophir: A Framework for Automatic Mining and Refactoring of Aspects , 2003 .

[21]  Stephen G. Eick,et al.  Seesoft-A Tool For Visualizing Line Oriented Software Statistics , 1992, IEEE Trans. Software Eng..

[22]  Tomoji Kishi,et al.  Implementing Design Patterns Using Advanced Separation of Concerns , 2001 .

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

[24]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

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

[26]  Zhao Jianjun,et al.  Refactoring Aspect - Oriented Programs , 2004 .

[27]  Paolo Tonella,et al.  Migrating interface implementations to aspects , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[28]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[29]  Thomas Fritz,et al.  Refactoring to aspects: an interactive approach , 2003, eclipse '03.

[30]  João M. Fernandes,et al.  Towards a catalog of aspect-oriented refactorings , 2005, AOSD '05.

[31]  William G. Griswold Program restructuring as an aid to software maintenance , 1992 .

[32]  Meir M. Lehman,et al.  A Model of Large Program Development , 1976, IBM Syst. J..

[33]  James Coplien,et al.  Idioms And Patterns As Architectural Literature , 1997, IEEE Softw..

[34]  Martin P. Robillard,et al.  Concern graphs: finding and describing concerns using structural program dependencies , 2002, Proceedings of the 24th International Conference on Software Engineering. ICSE 2002.

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

[36]  Ruzanna Chitchyan,et al.  Persistence as an aspect , 2003, AOSD '03.

[37]  Edsger W. Dijkstra,et al.  The structure of the “THE”-multiprogramming system , 1968, CACM.

[38]  Jiri Soukup,et al.  Implementing patterns , 1995 .

[39]  Michael D. Ernst,et al.  Converting java programs to use generic libraries , 2004, OOPSLA '04.

[40]  John Grundy,et al.  Design pattern modelling and instantiation using DPML , 2002 .

[41]  Kim B. Clark,et al.  Design Rules: The Power of Modularity Volume 1 , 1999 .

[42]  Jens Krinke,et al.  Aspect mining using event traces , 2004 .

[43]  Carlos José Pereira de Lucena,et al.  Modularizing design patterns with aspects: a quantitative study , 2005, AOSD '05.

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

[45]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

[46]  Akira Tanaka,et al.  Difference-Based Modules: A Class-Independent Module Mechanism , 2002, ECOOP.

[47]  Tom Mens,et al.  Formalising Behaviour Preserving Program Transformations , 2002, ICGT.

[48]  Mariano Ceccato,et al.  A qualitative comparison of three aspect mining techniques , 2005, 13th International Workshop on Program Comprehension (IWPC'05).

[49]  Gail C. Murphy,et al.  Design pattern rationale graphs: linking design to source , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[50]  Giuliano Antoniol,et al.  Using metrics to identify design patterns in object-oriented software , 1998, Proceedings Fifth International Software Metrics Symposium. Metrics (Cat. No.98TB100262).

[51]  Mark Harman,et al.  Automated refactoring of object oriented code into aspects , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[52]  Arie van Deursen,et al.  An evaluation of clone detection techniques for crosscutting concerns , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[53]  Elizabeth A. Kendall,et al.  Role model designs and implementations with aspect-oriented programming , 1999, OOPSLA '99.

[54]  Tommi Mikkonen,et al.  Formalizing design patterns , 1998, Proceedings of the 20th International Conference on Software Engineering.

[55]  Niklaus Wirth,et al.  On the Composition of Well-Structured Programs , 1974, CSUR.

[56]  T. Tamai,et al.  An adaptive object model with dynamic role binding , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[57]  Russell Miles Aspectj Cookbook , 2004 .

[58]  Joseph D. Gradecki,et al.  Mastering AspectJ: Aspect-Oriented Programming in Java , 2003 .

[59]  Mira Mezini,et al.  Programming with Aspectual Components , 1999 .

[60]  Gregor Kiczales,et al.  Using aspectC to improve the modularity of path-specific customization in operating system code , 2001, ESEC/FSE-9.

[61]  Arie van Deursen,et al.  Aspect Mining and Refactoring , 2003 .

[62]  Jim Hugunin,et al.  Advice weaving in AspectJ , 2004, AOSD '04.

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

[64]  Rudolf Ferenc,et al.  Mining design patterns from C++ source code , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[65]  Mariano Ceccato,et al.  Aspect mining through the formal concept analysis of execution traces , 2004, 11th Working Conference on Reverse Engineering.

[66]  Marco Meijers,et al.  Tool Support for Object-Oriented Patterns , 1997, ECOOP.

[67]  Ivar Jacobson,et al.  The unified modeling language reference manual , 2010 .

[68]  Miguel Pessoa Monteiro Object-to-Aspect Refactorings for Feature Extraction , 2004 .

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

[70]  Joshua Kerievsky,et al.  Refactoring to Patterns , 2004, XP/Agile Universe.

[71]  Kim Mens,et al.  Mining aspectual views using formal concept analysis , 2004 .

[72]  Stanley M. Sutton,et al.  Modeling of software concerns in Cosmos , 2002, AOSD '02.

[73]  Ralph E. Johnson,et al.  A Refactoring Tool for Smalltalk , 1997, Theory Pract. Object Syst..

[74]  Stefan Hanenberg,et al.  Refactoring of Aspect-Oriented Software , 2003 .

[75]  Stefan Hanenberg,et al.  Evolvable Pattern Implementations Need Generic Aspects , 2004, RAM-SE.

[76]  Jens Palsberg,et al.  Object-oriented type systems , 1994, Wiley professional computing.

[77]  Frank Tip,et al.  Refactoring for generalization using type constraints , 2003, OOPSLA 2003.

[78]  Ramnivas Laddad,et al.  Aspectj in Action: Practical Aspect-Oriented Programming , 2003 .