On the Support and Application of Macro-Refactorings for Crosscutting Concerns
Resumo
Crosscutting concerns hinder software stability and reuse and, hence, refactorings have been proposed to modularise them using aspect-oriented programming technology. However, refactoring of crosscutting concerns is challenging and time-consuming because it involves many inter-dependent micro-refactorings. It may also be a repetitive task as recent studies have pointed out that most crosscutting concerns share a limited number of recurring shape patterns. This paper presents a family of macro-refactorings for modularising crosscutting concerns which share similar forms and patterns. It also proposes a complementary set of change impact algorithms which support designers on the decision whether to apply concern refactoring. We evaluate our technique by measuring the impact of refactoring 22 crosscutting concerns in two applications from different domains.
Referências
Eaddy, M. et al. (2008). Do Crosscutting Concerns Cause Defects? IEEE Transactions on Software Engineering, 34(4), pp. 497-515.
Figueiredo, E. et al. (2008). "Evolving Software Product Lines with Aspects: An Empirical Study on Design Stability". In: Proc. of the 30th ICSE, pp. 261-270. Leipzig, Germany, 10-18 May.
Figueiredo, E. et al.. (2009). "Crosscutting Patterns and Design Stability: an Exploratory Analysis". In: Proc. of the 17th ICPC, Vancouver, Canada.
Filho, F. et al. (2006). "Exceptions and Aspects: the Devil is in the Details". In: Proc. of the 14th FSE, New York, USA. ACM, p.152-162.
Fowler, M.; Beck, K.; Brant, J.; Opdyke, W. and Roberts, D. (1999). Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional.
Gamma, E. et al. (1995). Design Patterns: Elements of Reusable Object-Oriented Software. Boston, MA, USA: Addison-Wesley Longman Publishing.
Garcia, V. et al. (2004). "Manipulating crosscutting concerns". In: Latin American Conference on Patterns Languages of Programming (SugarLoafPlop'04).
Garcia, A. et al. (2005). "Modularizing Design Patterns with Aspects: A Quantitative Study". In: 4th AOSD, Chicago, USA, 14-18 March 2005.
Greenwood, P. et al. (2007). "On the Impact of Aspectual Decompositions on Design Stability: An Empirical Study". Proc. ECOOP. Berlin, Germany.
Hanenberg, S.; Oberschulte, C. and Unland, R. (2003). "Refactoring of Aspect-Oriented Software". In: Net.ObjectDays Conference (NODE'03).
Hannemann, J.; Murphy, G.; Kiczales, G. (2005). "Role-based refactoring of crosscutting concerns". In: 4th AOSD, New York, USA. ACM, p.135-146.
Iwamoto, M. and Zhao, J. (2003). "Refactoring Aspect-Oriented Programs". In: Int'l. Workshop on Aspect-Oriented Modeling at UML'03.
Kiczales, G. et al. (1997). "Aspect-Oriented Programming". Proc. of the European Conference on Object-Oriented Programming (ECOOP), pp. 220-242.
Marin, M.; Moonen, L. and Deursen, A. (2005). An Approach to Aspect Refactoring Based on Crosscutting Concern Types. Software Engineering Notes, v.30, n.4, p.1-5.
Mens, T.; Tourwé, T. (2004). A Survey of Software Refactoring. IEEE Transactions on Software Engineering, Piscataway, NJ, USA, v.30, n.2, p.126-139.
Monteiro, M. and Fernandes, J. (2006). Towards a Catalogue of Refactorings and Code Smells for Aspectj. Transactions on Aspect Oriented Software Development (TAOSD), Lecture Notes in Computer Science, n.3880, p.214-258.
Murphy-Hill, E.; Parnin, C. and Black, A. P. (2009). "How We Refactor, and How We Know It". In Proc. of the 14th Int'l Conf. on Software Engineering, New York, USA.
Robillard, M. and Murphy, G. (2007). Representing Concerns in Source Code. Transactions on Software Engineering and Methodology (TOSEM), v. 16.
Sant'anna, C.; Garcia, A.; Chavez, C.; Lucena, C. and Staa, A. (2003). "On the Reuse and Maintenance of Aspect-Oriented Software: an assessment framework". In: XVII Brazilian Symposium on Software Engineering.
Silva, B.; Figueiredo, E.; Garcia, A. and Nunes, D. (2009). Refactoring of Crosscutting Concerns with Metaphor-Based Heuristics. Electronic Notes on Theoretical Computer Science, v.233, p.105-125.
Silva, B.; Figueiredo, E.; Garcia, A. and Nunes, D. (2009). Macro-Refactorings: Evaluation. Jun/2009. [link]