ABSTRACT
As software systems are maintained, their architecture modularity often degrades through architectural erosion and drift. More directly, however, the modularity of software implementations degrades through the introduction of code anomalies, informally known as code smells. A number of strategies have been developed for supporting the automatic identification of implementation anomalies when only the source code is available. However, it is still unknown how reliable these strategies are when revealing code anomalies related to erosion and drift processes. In this paper, we present an exploratory analysis that investigates to what extent the automatically-detected code anomalies are related to problems that occur with an evolving system's architecture. We analyzed code anomaly occurrences in 38 versions of 5 applications using existing detection strategies. The outcome of our evaluation suggests that many of the code anomalies detected by the employed strategies were not related to architectural problems. Even worse, over 50% of the anomalies not observed by the employed techniques (false negatives) were found to be correlated with architectural problems.
- Aldrich, J. ArchJava: Connecting Software Architecture to Implementation. In Proc of the 24th ICSE, pp. 187--197, 2002. Google ScholarDigital Library
- Alikacem, E.H and Sahraoui, H. Generic metric extraction framework. In Proc. of the 16th IWSM/MetriKon, 2006, pp. 383--390.Google Scholar
- Bieman, J.M. and Kang, B.K. Cohesion and Reuse in an Object Oriented System. In Proc of the ISSR, pp 259--262, 1995. Google ScholarDigital Library
- Clements, P et al. Documenting Software Architectures: Views and Beyond. Addison-Wesley, 2nd Edition, 2010 Google ScholarDigital Library
- Code smells study: http://www.inf.puc-rio.br/~ibertran/aosd12.Google Scholar
- D'Ambros, M. et al. the Impact of Design Flaws on Software Defects. In Proc. of the 10th QSIC, pp. 23 - 31, 2010. Google ScholarDigital Library
- Dhambri et al. Visual Detection of Design Anomalies. In Proc. of the 12th CSMR, pp. 279--283, 2008. Google ScholarDigital Library
- Eichberg, M. et al. Defining and Continuous Checking of Structural Program Dependencies. In Proc. of the 30th ICSE, 2008. Google ScholarDigital Library
- Emden, E. and Moonen, L. Java quality assurance by detecting code smells. In Proceedings of the 9th ICRE, 2002.Google ScholarCross Ref
- FEAT tool, http://www.cs.mcgill.ca/~swevo/feat/Google Scholar
- Ferrari, F. et al. An exploratory study of error-proneness in evolving Aspect-Oriented Programs. In: Proc. of the 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 the 30th ICSE, 2008. Google ScholarDigital Library
- Fowler, M. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999. Google ScholarDigital Library
- Garcia, J. et al. Identifying architectural bad smells. In Proc of the. 13th CSMR, pp 255--258, 2009. Google ScholarDigital Library
- Greenwood, P. et al. On the impact of aspectual decompositions on design stability: An empirical study. In Proc. of the 21st ECOOP, 2007. Google ScholarDigital Library
- Hochstein, L. and Lindvall, M. Combating architectural degeneration: A survey. Info. & Soft. Technology July, 2005. Google ScholarDigital Library
- Hosmer, D. and Lemeshow, S. Applied Logistic Regression (2nd Edition). Wiley, 2000.Google ScholarCross Ref
- Khomh, K. et al. An exploratory study of the impact of code smells on software change-proneness. In Proc of the 16th WCRE, 2009. Google ScholarDigital Library
- Kiczales, G.,et al. Aspect-oriented programming. In Proc. of the 11th ECOOP. LNCS, vol. 1241. Springer, Heidelberg. pp. 220--242, 1997.Google ScholarCross Ref
- Kitchenham, B. et al. Evaluating guidelines for empirical software engineering studies. ISESE pp 38--47, 2006 Google ScholarDigital Library
- Lanza, M. and Marinescu, R. Object-Oriented Metrics in Practice. Springer, 2006. Google ScholarDigital Library
- Lippert, M. and Roock, S. Refactoring in Large Software Projects: Performing Complex Restructurings Successfully. Wiley. 2006.Google Scholar
- Macia, I. et al. A. An Exploratory Study of Code Smells in Evolving Aspect-Oriented Systems. In Proc of the 10th AOSD, 2011. Google ScholarDigital Library
- Malek, S. et al. Reconceptualizing a family of heterogeneous embedded systems via explicit architectural support. In Proc. of the 29th ICSE. 2007. Google ScholarDigital Library
- Mantyla, M.V. and Lassenius, C. Subjective evaluation of software evolvability using code smells: An empirical study. Empirical Software Enggineering, vol. 11, no. 3, pp. 395--431, 2006. Google ScholarDigital Library
- Mara, L. et al. Hist-Inspect: A Tool for History-Sensitive Detection of Code Smells. In Proc. of the 10th AOSD, 2011 Google ScholarDigital Library
- Marinescu, R. Detection strategies: Metrics-based rules for detecting design flaws. In Proc. of the 20th ICSM, pp 350--359, 2004. Google ScholarDigital Library
- Marinescu,R.; Ganea, G. and Veredi, I. inCode: Continuous Quality Assessment and Improvement. In Proc of the 14th CSMR, 2010. Google ScholarDigital Library
- Martin, R. Agile Principles, Patterns, and Practices. Prentice Hall, 2002. Google ScholarDigital Library
- McCabe, T.J. A Software Complexity Measure. IEEE Transactions on Software Engineering, 2 (4), pp 308--320, 1976. Google ScholarDigital Library
- Meyer, B. Object-Oriented Software Construction. Prentice Hall Professional Technical 2nd edition, 2000. Google ScholarDigital Library
- Moha, N. et al. DECOR: A Method for the Specification and Detection of Code and Design Smells. IEEE TSE, 2010. Google ScholarDigital Library
- Munro, MJ. Product metrics for automatic identification of bad smell design problems in java source-code. In Proc of 11th METRICS, 2005 Google ScholarDigital Library
- MuLATo tool, http://sourceforge.net/projects/mulato/ (3/08/2009)Google Scholar
- Murphy, G.C., et al.. Software Reflexion Models: Bridging the Gap between Design and Implementation. IEEE TSE, pp 364--380, 2001. Google ScholarDigital Library
- Murphy-Hill, E. Scalable, expressive, and context-sensitive code smell display. In Proc of the 23rd OPSLA, 2008. Google ScholarDigital Library
- Olbrich, S.M. et al. Are all code smells harmful? A study of God Classes and Brain Classes in the evolution of three open source systems. In Proc of the 26th ICSM pp 1--10, 2010. Google ScholarDigital Library
- Olbrich, S.M. et al. The evolution and impact of code smells: A case study of two open source systems. In Proc of the 3rd ESEM, 2009. Google ScholarDigital Library
- Perry, D.E. and Wolf, A.L. Foundations for the study of software architecture, ACM Software. Eng. Notes 17 (4) pp 40--52, 1992. Google ScholarDigital Library
- Ratiu, D. et al. Using History Information to Improve Design Flaws Detection. In Proc of the 8th CSMR, 2004. Google ScholarDigital Library
- Ratzinger, J. et al. Improving evolvability through refactoring. In Proc of the 5th IEEE MSR, 2005. Google ScholarDigital Library
- Sant'anna, C. et al. On the modularity of software architectures: A Concern-Driven measurement framework. In Proc. of ECSA, 2007. Google ScholarDigital Library
- Sonar: http://docs.codehaus.org/display/SONAR/Google Scholar
- Srivisut, K. and Muenchaisri, P. Bad-smell Metrics for Aspect-Oriented Software. In Proc of the 6th ICIS, 2007.Google ScholarCross Ref
- Together: http://www.borland.com/us/products/together/Google Scholar
- Tsantalis, N. and Chatzigeorgiou, A. Identification of move method refactoring opportunities. IEEE TSE, 35(3), pp 347--367, 2009. Google ScholarDigital Library
- Understand: http://www.scitools.com/Google Scholar
- Wake, W.C. Refactoring Workbook. Boston, MA, USA: Addison-Wesley Longman Publishing Co., Inc., 2003. Google ScholarDigital Library
- Wettel, R. and Lanza, M. Visually localizing design problems with disharmony maps. In Proc. of the 4th Softvis pp. 155--164, 2008. Google ScholarDigital Library
Index Terms
- Are automatically-detected code anomalies relevant to architectural modularity?: an exploratory analysis of evolving systems
Recommendations
Automatically detecting architecturally-relevant code anomalies
RSSE '12: Proceedings of the Third International Workshop on Recommendation Systems for Software EngineeringSoftware architecture degradation is a long-standing problem in software engineering. Previous studies have shown that certain code anomalies - or patterns of code anomalies - are likely to be harmful to architecture design, although their ...
Architecture-sensitive heuristics for prioritizing critical code anomalies
MODULARITY 2015: Proceedings of the 14th International Conference on ModularityThe progressive insertion of code anomalies in evolving software systems might lead to architecture degradation symptoms. Code anomalies are particularly harmful when they contribute to the architecture degradation. Although several approaches have ...
Prioritization of Code Anomalies Based on Architecture Sensitiveness
SBES '13: Proceedings of the 2013 27th Brazilian Symposium on Software EngineeringCode anomalies are symptoms of software maintainability problems, particularly harmful when contributing to architectural degradation. Despite the existence of many automated techniques for code anomaly detection, identifying the code anomalies that are ...
Comments