The Relationship Between Code Smells and Traceable Patterns - Are They Measuring the Same Thing?

It is important to maintain software quality as a software system evolves. Managing code smells in source code contributes towards quality software. While metrics have been used to pinpoint code smells in source code, we present an empirical study on the correlation of code smells with class-level (micro pattern) and method-level (nano-pattern) traceable code patterns. This study explores the relationship between code smells and class-level and method-level structural code constructs. We extracted micro patterns at the class level and nano-patterns at the method level from three versions of Apache Tomcat, three versions of Apache CXF and two J2EE web applications namely PersonalBlog and Roller from Stanford SecuriBench and then compared their distributions in code smell versus noncode smell classes and methods. We found that Immutable and Sink micro patterns are more frequent in classes having code smells compared to the noncode smell classes in the applications we analyzed. On the other hand, LocalReader...

[1]  Kazi Zakia Sultana,et al.  The Relationship between Traceable Code Patterns and Code Smells , 2017, SEKE.

[2]  Francesca Arcelli Fontana,et al.  On experimenting refactoring tools to remove code smells , 2015, XP Workshops.

[3]  Bartosz Walter,et al.  Leveraging Code Smell Detection with Inter-smell Relations , 2006, XP.

[4]  Mohammad Zulkernine,et al.  Security metrics for source code structures , 2008, SESS '08.

[5]  Aiko Fallas Yamashita,et al.  To what extent can maintenance problems be predicted by code smell detection? - An empirical study , 2013, Inf. Softw. Technol..

[6]  Gavin Brown,et al.  Fundamental Nano-Patterns to Characterize and Classify Java Methods , 2010, LDTA.

[7]  Minhaz Fahim Zibran,et al.  A Comparative Study on Vulnerabilities in Categories of Clones and Non-cloned Code , 2016, 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[8]  Foutse Khomh,et al.  An Exploratory Study of the Impact of Code Smells on Software Change-proneness , 2009, 2009 16th Working Conference on Reverse Engineering.

[9]  Francesca Arcelli Fontana,et al.  On Investigating Code Smells Correlations , 2011, 2011 IEEE Fourth International Conference on Software Testing, Verification and Validation Workshops.

[10]  Yi Sun,et al.  Some Code Smells Have a Significant but Small Effect on Faults , 2014, TSEM.

[11]  Raed Shatnawi,et al.  An empirical study of the bad smells and class error probability in the post-release object-oriented system evolution , 2007, J. Syst. Softw..

[12]  Kazi Zakia Sultana,et al.  Correlation Analysis among Java Nano-Patterns and Software Vulnerabilities , 2017, 2017 IEEE 18th International Symposium on High Assurance Systems Engineering (HASE).

[13]  Michaela Bunke,et al.  Software-security patterns: degree of maturity , 2015, EuroPLoP.

[14]  Itay Maman,et al.  Micro patterns in Java code , 2005, OOPSLA '05.

[15]  Radu Marinescu,et al.  Continuous quality assessment with inCode , 2017, Sci. Comput. Program..

[16]  Feras Batarseh,et al.  Java nano patterns: a set of reusable objects , 2010, ACM SE '10.

[17]  Laurie A. Williams,et al.  Evaluating Complexity, Code Churn, and Developer Activity Metrics as Indicators of Software Vulnerabilities , 2011, IEEE Transactions on Software Engineering.

[18]  Marco Zanoni,et al.  Code Smells and Micro Patterns Correlations , 2013 .

[19]  Mohammad Zulkernine,et al.  Using complexity, coupling, and cohesion metrics as early indicators of vulnerabilities , 2011, J. Syst. Archit..

[20]  Audris Mockus,et al.  Quantifying the Effect of Code Smells on Maintenance Effort , 2013, IEEE Transactions on Software Engineering.

[21]  Marco Tulio Valente,et al.  Extracting relative thresholds for source code metrics , 2014, 2014 Software Evolution Week - IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE).

[22]  Sunghun Kim,et al.  Micro pattern evolution , 2006, MSR '06.

[23]  Hironori Washizaki,et al.  A survey on security patterns , 2008 .

[24]  Joseph W. Yoder,et al.  Architectural Patterns for Enabling Application Security , 1998 .

[25]  Francesca Arcelli Fontana,et al.  Towards Assessing Software Architecture Quality by Exploiting Code Smell Relations , 2015, 2015 IEEE/ACM 2nd International Workshop on Software Architecture and Metrics.

[26]  Aiko Yamashita,et al.  Assessing the capability of code smells to explain maintenance problems: an empirical study combining quantitative and qualitative data , 2013, Empirical Software Engineering.

[27]  Kazi Zakia Sultana,et al.  A Preliminary Study Examining Relationships Between Nano-Patterns and Software Security Vulnerabilities , 2016, 2016 IEEE 40th Annual Computer Software and Applications Conference (COMPSAC).

[28]  Tiago L. Alves,et al.  Deriving metric thresholds from benchmark data , 2010, 2010 IEEE International Conference on Software Maintenance.

[29]  Forrest Shull,et al.  Investigating the impact of design debt on software quality , 2011, MTD '11.

[30]  Radu Marinescu,et al.  InCode: Continuous Quality Assessment and Improvement , 2010, 2010 14th European Conference on Software Maintenance and Reengineering.