ABSTRACT
Although aspect-oriented programming (AOP) aims to improve software maintainability, developers can unwittingly introduce code smells in their programs. A code smell is any symptom in the source code that possibly indicates a deeper maintainability problem. Even though a few code smells for AOP have been reported in the literature, there is no evidence if and how they occur in evolving software projects. There is also little knowledge on their actual impact on maintenance effort, such as required refactorings or corrective changes in later software releases. This paper presents an exploratory analysis of code smells recurrently observed in a set of evolving aspect-oriented systems. We analyzed instances of code smells previously reported in the literature and newly-revealed ones. Our study involved in total 18 releases of 3 evolving aspect-oriented systems from different domains. The outcome of our evaluation suggests that previously-documented AOP smells might not occur as often as claimed. Our analysis also revealed that: (1) newly-discovered code smells might occur more often than well-known ones, and (2) the former ones seemed to be consistently associated with non-trivial refactorings and corrective changes.
- Code smells in AOP: evaluation, April 2010. http://www.inf.puc-rio.br/~ibertran/codesmells.Google Scholar
- Fabiano, F. et al. An exploratory study of error-proneness in evolving Aspect-Oriented Programs. In: Proc. of 25th OOPSLA, USA, 2009.Google Scholar
- Figueiredo, E et al. Evolving software product lines with aspects: An empirical study on design stability. In Proc. of 30th ICSE, 2008. Google ScholarDigital Library
- Figueiredo, E. et al. Crosscutting patterns and design stability: An exploratory analysis. In: Proc. of 17th ICPC, Canada. 2009.Google Scholar
- Garcia, A. et al. Modularizing design patterns with aspects: A quantitative study. In Proc. of 4th AOSD, 2005. Google ScholarDigital Library
- Fowler, M. et al. Refactoring: Improving the design of existing code. Addison-Wesley, 1999. Google ScholarDigital Library
- Girba, T. et al. Identifying Entities That Change Together. In Proc. of the 9th WESS, 2004.Google Scholar
- Greenwood, P. et al. On the impact of aspectual decompositions on design stability: An empirical study. In Proc. 21st ECOOP, 2007. Google ScholarDigital Library
- Hannemann, J., Murphy, G. and Kiczales, G. Role- based refactoring of crosscutting concerns. In Proc. of 4th AOSD, pp. 135--146, 2005. Google ScholarDigital Library
- Hohenstein, U. Improving the performance of database applications with Aspect-Oriented Programming. In Proc. of 5th AOSD, 2006.Google Scholar
- HW http://www.comp.lancs.ac.uk/~greenwop/tao (01/06/2009).Google Scholar
- iBATIS: Data Mapper - http://ibatis.apache.org/ (08/06/2009).Google Scholar
- Iwamoto, M.; Zhao, J. Refactoring aspect-oriented programs. In Proc. of 4th AOSD Modeling with UML Workshop, USA, 2003.Google Scholar
- JBoss: http://www.jboss.org/ (06/01/2010).Google Scholar
- Khomh, F et al.. An exploratory study of the impact of code smells on software change-proneness. Proc 16th WCRE, 2009. Google ScholarDigital Library
- Kiczales, G., et al. Aspect-oriented programming. In Proc. of 11th ECOOP. LNCS, vol. 1241. Springer, Heidelberg. pp. 220--242, 1997.Google Scholar
- Kuleshov, E. Using ASM framework to implement common bytecode transformation patterns. In Proc. of 6th AOSD, ACM Press, 2007.Google Scholar
- Lanza, M.; Marinescu, R. Object-oriented metrics in practice. Springer- Verlag Berlin, Germany, 2006. Google ScholarDigital Library
- Macia, I.; Garcia, A.; Staa, A. Defining and applying detection strategies for aspect-oriented code smells. Proc. of 25th SBES, 2010. Google ScholarDigital Library
- Marinescu, R. Detection strategies: metrics-based rules for detecting design flaws. In Proc. of 20th ICSM, pp. 350--359, USA, 2004. Google ScholarDigital Library
- Monteiro, M. P.; Fernandez, J. M. Towards a catalog of aspect-oriented refactorings. In Proc. of 4th AOSD, USA, 2005. Google ScholarDigital Library
- MuLATo, http://sourceforge.net/projects/mulato/ (3/08/2009)Google Scholar
- Murphy-Hill, E., Parnin, C., and Black A. How we refactor, and how we know it. In Proc. of 31st ICSE, USA, 2009. Google ScholarDigital Library
- Narayanan, S et al. Use of AOP in J2EE application performance monitoring. In Proc. of 5th AOSD, ACM Press, Germany, 2006.Google Scholar
- Nechypurenko, A. et al. Application of aspect-based modeling and weaving for complexity reduction in development of automotive realtime embedded system. In Proc. of 6th AOSD, Canada, 2007.Google Scholar
- Piveta, E. K. et al. Detecting bad smells in AspectJ. Journal of Universal Computer Science, vol. 12, 2006.Google Scholar
- Ratiu, R. et al. Evolution-Enriched Detection of God Classes. In Proc. of the 2nd CAVIS. pp. 3--7. 2004.Google Scholar
- Sant'anna, C. et al. On the modularity of software architectures: A Concern-Driven measurement framework. In Proc. of ECSA, 2007. Google ScholarDigital Library
- Sheskin, D. Handbook of Parametric and Nonparametric Statistical Procedures (fourth edition). Chapman & All, 2007. Google ScholarDigital Library
- Soares, S.; Laureano, E.; Borba, P. Implementing distribution and persistence aspects with AspectJ. In Proc. of 17th OOPSLA. 2002 Google ScholarDigital Library
- Spring: http://www.springsource.org/ (08/01/2010).Google Scholar
- Srivist, K.; Muenchaisri, P. Bad-smell metrics for aspect-oriented software. In Proc. 6th ICIS, Canada, 2007.Google ScholarCross Ref
Index Terms
- An exploratory study of code smells in evolving aspect-oriented systems
Recommendations
An interactive ambient visualization for code smells
SOFTVIS '10: Proceedings of the 5th international symposium on Software visualizationCode smells are characteristics of software that indicate that code may have a design problem. Code smells have been proposed as a way for programmers to recognize the need for restructuring their software. Because code smells can go unnoticed while ...
On the Impact of Aspect-Oriented Code Smells on Architecture Modularity: An Exploratory Study
SBCARS '11: Proceedings of the 2011 Fifth Brazilian Symposium on Software Components, Architectures and ReuseAspect-oriented programming (AOP) aims to improve software modularity, although developers can unwittingly intro-duce code smells in their programs. A code smell is any symptom in the source code that possibly indicates a deeper modularity problem. ...
Are architectural smells independent from code smells? An empirical study
Highlights- Case study analyzing the correlations among code smells, groups of code smells and architectural smells.
AbstractBackground. Architectural smells and code smells are symptoms of bad code or design that can cause different quality problems, such as faults, technical debt, or difficulties with maintenance and evolution. Some studies ...
Comments