The Community for Technology Leaders
RSS Icon
Subscribe
Issue No.03 - May-June (2012 vol.38)
pp: 642-657
Raffi Khatchadourian , Ohio State University, Columbus
Phil Greenwood , Lancaster University, Lancaster
Awais Rashid , Lancaster University, Lancaster
Guoqing Xu , Ohio State University, Columbus
ABSTRACT
Pointcut fragility is a well-documented problem in Aspect-Oriented Programming; changes to the base code can lead to join points incorrectly falling in or out of the scope of pointcuts. In this paper, we present an automated approach that limits fragility problems by providing mechanical assistance in pointcut maintenance. The approach is based on harnessing arbitrarily deep structural commonalities between program elements corresponding to join points selected by a pointcut. The extracted patterns are then applied to later versions to offer suggestions of new join points that may require inclusion. To illustrate that the motivation behind our proposal is well founded, we first empirically establish that join points captured by a single pointcut typically portray a significant amount of unique structural commonality by analyzing patterns extracted from 23 AspectJ programs. Then, we demonstrate the usefulness of our technique by rejuvenating pointcuts in multiple versions of three of these programs. The results show that our parameterized heuristic algorithm was able to accurately and automatically infer the majority of new join points in subsequent software versions that were not captured by the original pointcuts.
INDEX TERMS
Software development environments, software maintenance, software tools.
CITATION
Raffi Khatchadourian, Phil Greenwood, Awais Rashid, Guoqing Xu, "Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Oriented Software", IEEE Transactions on Software Engineering, vol.38, no. 3, pp. 642-657, May-June 2012, doi:10.1109/TSE.2011.21
REFERENCES
[1] P. Anbalagan and T. Xie, "Automated Inference of Pointcuts in Aspect-Oriented Refactoring," Proc. Int'l Conf. Software Eng., pp. 127-136, 2007.
[2] S. Apel, "How AspectJ Is Used: An Analysis of Eleven AspectJ Programs," J. Object Technology, vol. 9, no. 1, pp. 117-142, Jan. 2010.
[3] P. Avgustinov, A. Christensen, L. Hendren, S. Kuzins, J. Lhoták, O. Lhoták, O. de Moor, D. Sereni, G. Sittampalam, and J. Tibble, "ABC: An Extensible AspectJ Compiler," Trans. Aspect-Oriented Software Development I, pp. 293-334, 2006.
[4] D.F. Bacon and P.F. Sweeney, "Fast Static Analysis of C++ Virtual Function Calls," Proc. ACM SIGPLAN Conf. Object-Oriented Programming, Systems, Languages, and Applications, pp. 324-341, 1996.
[5] M. Braem, K. Gybels, A. Kellens, and W. Vanderperren, "Automated Pattern-Based Pointcut Generation," Proc. Int'l Symp. Software Composition, pp. 66-81, Mar. 2006.
[6] W. Cazzola, S. Pini, and M. Ancona, "Design-Based Pointcuts Robustness against Software Evolution," Proc. Workshop Reflection, AOP, and Meta-Data for Software Evolution, W. Cazzola, S. Chiba, Y. Coady, and G. Saake, eds., Fakultät für Informatik, Universität Magdeburg, pp. 35-45, July 2006.
[7] B. Dagenais, S. Breu, F.W. Warr, and M.P. Robillard, "Inferring Structural Patterns for Concern Traceability in Evolving Software," Proc. IEEE/ACM Int'l Conf. Automated Software Eng., pp. 254-263, Nov. 2007.
[8] J. Dean, D. Grove, and C. Chambers, "Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis," Proc. European Conf. Object-Oriented Programming, pp. 77-101, Aug. 1995.
[9] M. Eichberg, M. Mezini, and K. Ostermann, "Pointcuts as Functional Queries," Proc. Programming Languages and Systems: Second Asian Symp., pp. 366-381, Nov. 2004.
[10] R. Filman and D. Friedman, "Aspect-Oriented Programming Is Quantification and Obliviousness," Proc. Workshop Advanced Separation of Concerns, Oct. 2000.
[11] C.L. Forgy, "Rete: A Fast Algorithm for the Many Pattern/Many Object Pattern Match Problem," Artificial Intelligence, vol. 19, pp. 324-341, 1982.
[12] E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Mar. 1995.
[13] W.G. Griswold, K. Sullivan, Y. Song, M. Shonle, N. Tewari, Y. Cai, and H. Rajan, "Modular Software Design with Crosscutting Interfaces," IEEE Software, vol. 23, no. 1, pp. 51-60, Jan./Feb. 2006.
[14] S. Gudmundson and G. Kiczales, "Addressing Practical Software Development Issues in AspectJ with a Pointcut Interface," Proc. Workshop Advanced Separation of Concerns, Oct. 2001.
[15] K. Gybels and J. Brichau, "Arranging Language Features for More Robust Pattern-Based Crosscuts," Proc. Int'l Conf. Aspect-Oriented Software Development, pp. 60-69, Mar. 2003.
[16] E. Hilsdale and J. Hugunin, "Advice Weaving in AspectJ," Proc. Int'l Conf. Aspect-Oriented Software Development, pp. 26-35, Mar. 2004.
[17] K. Hoffman and P. Eugster, "Bridging Java and AspectJ through Explicit Join Points," Proc. Int'l Symp. Principles and Practice of Programming in Java, pp. 63-72, Sept. 2007.
[18] A. Kellens, K. Mens, J. Brichau, and K. Gybels, "Managing the Evolution of Aspect-Oriented Software with Model-Based Pointcuts," Proc. European Conf. Object-Oriented Programming, pp. 501-525, July 2006.
[19] R. Khatchadourian, J. Dovland, and N. Soundarajan, "Enforcing Behavioral Constraints in Evolving Aspect-Oriented Programs," Proc. Seventh Workshop Foundations of Aspect-Oriented Languages, pp. 19-28, Apr. 2008.
[20] R. Khatchadourian, P. Greenwood, A. Rashid, and G. Xu, "Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Oriented Software," Proc. IEEE/ACM Int'l Conf. Automated Software Eng., pp. 575-579, Nov. 2009.
[21] R. Khatchadourian and A. Rashid, "Rejuvenate Pointcut: A Tool for Pointcut Expression Recovery in Evolving Aspect-Oriented Software," Proc. IEEE Int'l Working Conf. Source Code Analysis and Manipulation, pp. 261-262, Sept. 2008.
[22] G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, and W.G. Griswold, "An Overview of AspectJ," Proc. European Conf. Object-Oriented Programming, pp. 327-354, June 2001.
[23] G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. Lopes, J. Loingtier, and J. Irwin, "Aspect-Oriented Programming," Proc. European Conf. Object-Oriented Programming, pp. 220-242, June 1997.
[24] K. Klose and K. Ostermann, "Back to the Future: Pointcuts as Predicates over Traces," Proc. Workshop Foundations of Aspect-Oriented Languages, C. Clifton, R. Lämmel, and G.T. Leavens, eds., Mar. 2005.
[25] C. Koppen and M. Stoerzer, "PCDiff: Attacking the Fragile Pointcut Problem," Proc. European Interactive Workshop Aspects in Software, K. Gybels, S. Hanenberg, S. Herrmann, and J. Wloka, eds., Sept. 2004.
[26] R. Laddad, AspectJ in Action. Manning, 2003.
[27] M. Lippert and C. Lopes, "A Study on Exception Detection and Handling Using AOP," Proc. Int'l Conf. Software Eng., pp. 418-427, May 2002.
[28] C.D. Manning, P. Raghavan, and H. Schütze, Introduction to Information Retrieval. Cambridge Univ. Press, 2008.
[29] H. Masuhara, G. Kiczales, and C. Dutchyn, "A Compilation and Optimization Model for Aspect-Oriented Programs," Proc. Int'l Conf. Compiler Construction, pp. 46-60, Apr. 2003.
[30] B. Meyer, "Applying 'Design by Contract'," Computer, vol. 25, no. 10, pp. 40-51, Oct. 1992.
[31] K. Ostermann, M. Mezini, and C. Bockisch, "Expressive Pointcuts for Increased Modularity," Proc. European Conf. Object-Oriented Programming, pp. 214-240, July 2005.
[32] M.A. Perez-Toledano, A. Navasa, J.M. Murillo, and C. Canal, "Titan: A Framework for Aspect-Oriented System Evolution," Proc. Int'l Conf. Software Eng. Advances, p. 4, 2007.
[33] H. Rajan and G. Leavens, "Ptolemy: A Language with Quantified, Typed Events," Proc. European Conf. Object-Oriented Programming, pp. 155-179, July 2008.
[34] M.P. Robillard, "Tracking Concerns in Evolving Source Code: An Empirical Study," Proc. IEEE Int'l Conf. Software Maintenance, pp. 479-482, Sept. 2006.
[35] M.P. Robillard and G.C. Murphy, "Concern Graphs: Finding and Describing Concerns Using Structural Program Dependencies," Proc. Int'l Conf. Software Eng., pp. 406-416, May 2002.
[36] K. Sakurai and H. Masuhara, "Test-Based Pointcuts for Robust and Fine-Grained Join Point Specification," Proc. Int'l Conf. Aspect-Oriented Software Development, pp. 96-107, Mar. 2008.
[37] L.M. Seiter, "Role Annotations and Adaptive Aspect Frameworks," Proc. Int'l Workshop Linking Aspect Technology and Evolution, p. 3, 2007.
[38] J. Sillito, C. Dutchyn, A.D. Eisenberg, and K.D. Volder, "Use Case Level Pointcuts," Proc. European Conf. Object-Oriented Programming, pp. 246-268, June 2004.
[39] M. Stoerzer and J. Graf, "Using Pointcut Delta Analysis to Support Evolution of Aspect-Oriented Software," Proc. IEEE Int'l Conf. Software Maintenance, pp. 653-656, 2005.
[40] K. Sullivan, W.G. Griswold, Y. Song, Y. Cai, M. Shonle, N. Tewari, and H. Rajan, "Information Hiding Interfaces for Aspect-Oriented Design," Proc. Int'l Symp. Foundations of Software Eng., pp. 166-175, Sept. 2005.
[41] The Eclipse Foundation, "JDT Weaving Features," Mar. 2009, http://wiki.eclipse.orgJDT_weaving_features , July 2010.
[42] J. Wloka, R. Hirschfeld, and J. Hänsel, "Tool-Supported Refactoring of Aspect-Oriented Programs," Proc. Int'l Conf. Aspect-Oriented Software Development, pp. 132-143, Mar. 2008.
[43] L. Ye and K.D. Volder, "Tool Support for Understanding and Diagnosing Pointcut Expressions," Proc. Int'l Conf. Aspect-Oriented Software Development, pp. 144-155, Mar. 2008.
48 ms
(Ver 2.0)

Marketing Automation Platform Marketing Automation Tool