The relationship of code churn and architectural violations in the open source software JabRef

The open source application JabRef has existed since 2003. In 2015, the developers decided to make an architectural refactoring as continued development was deemed too demanding. The developers also introduced Static Architecture Conformance Checking (SACC) to prevent violations to the intended architecture. Measurements mined from source code repositories such as code churn and code ownership has been linked to several problems, for example fault proneness, security vulnerabilities, code smells, and degraded maintainability. The root cause of such problems can be architectural. To determine the impact of the refactoring of JabRef, we measure the code churn and code ownership before and after the refactoring and find that large files with violations had a significantly higher code churn than large files without violations before the refactoring. After the refactoring, the files that had violations show a more normal code churn. We find no such effect on code ownership. We conclude that files that contain violations detectable by SACC methods are connected to higher than normal code churn.

[1]  Oscar Nierstrasz,et al.  Comparative analysis of evolving software systems using the Gini coefficient , 2009, 2009 IEEE International Conference on Software Maintenance.

[2]  K. Rangarajan,et al.  Modularization of a Large-Scale Business Application: A Case Study , 2009, IEEE Software.

[3]  Sjaak Brinkkemper,et al.  Design Erosion in Evolving Software Products , 2003 .

[4]  Sebastian Herold,et al.  Real-Time Reflexion Modelling in architecture reconciliation: A multi case study , 2015, Inf. Softw. Technol..

[5]  Ricardo Terra,et al.  Static Architecture-Conformance Checking: An Illustrative Overview , 2010, IEEE Software.

[6]  Dharini Balasubramaniam,et al.  Controlling software architecture erosion: A survey , 2012, J. Syst. Softw..

[7]  Ricardo Terra,et al.  A dependency constraint language to manage object-oriented software architectures , 2009 .

[8]  Lorin Hochstein,et al.  Combating architectural degeneration: a survey , 2005, Inf. Softw. Technol..

[9]  Rainer Koschke,et al.  Hierarchical reflexion models , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[10]  A.E. Hassan,et al.  The road ahead for Mining Software Repositories , 2008, 2008 Frontiers of Software Maintenance.

[11]  Markus Lumpe,et al.  On the Application of Inequality Indices in Comparative Software Analysis , 2013, 2013 22nd Australian Software Engineering Conference.

[12]  Sebastian Herold,et al.  Feature-Oriented Reflexion Modelling , 2015, ECSA Workshops.

[13]  Sjaak Brinkkemper,et al.  Architecture Compliance Checking of Semantically Rich Modular Architectures: A Comparative Study of Tool Support , 2013, 2013 IEEE International Conference on Software Maintenance.

[14]  Jens Knodel,et al.  Sustainable structures in software implementations by live compliance checking , 2011 .

[15]  Jan Bosch,et al.  Design erosion: problems and causes , 2002, J. Syst. Softw..

[16]  Harald C. Gall,et al.  Don't touch my code!: examining the effects of ownership on software quality , 2011, ESEC/FSE '11.

[17]  Rudolf Ferenc,et al.  Code Ownership: Impact on Maintainability , 2015, ICCSA.

[18]  Rudolf Ferenc,et al.  Cumulative code churn: Impact on maintainability , 2015, 2015 IEEE 15th International Working Conference on Source Code Analysis and Manipulation (SCAM).

[19]  Rudolf K. Keller,et al.  High-impact Refactoring Based on Architecture Violations , 2007, 11th European Conference on Software Maintenance and Reengineering (CSMR'07).

[20]  John C. Munson,et al.  Software evolution: code delta and code churn , 2000, J. Syst. Softw..

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

[22]  Jens Knodel,et al.  A Comparison of Static Architecture Compliance Checking Approaches , 2007, 2007 Working IEEE/IFIP Conference on Software Architecture (WICSA'07).

[23]  Michael W. Godfrey,et al.  Secrets from the Monster: Extracting Mozilla’s Software Architecture , 2000 .

[24]  Sebastian Herold,et al.  Evidence in architecture degradation and consistency checking research: preliminary results from a literature review , 2016, ECSA Workshops.

[25]  André Postma A method for module architecture verification and its application on a large component-based system , 2003, Inf. Softw. Technol..

[26]  Chao Liu,et al.  Data Mining for Software Engineering , 2009, Computer.

[27]  Muhammad Ali Babar,et al.  Assessing architectural drift in commercial software development: a case study , 2011, Softw. Pract. Exp..

[28]  Audris Mockus,et al.  Does Code Decay? Assessing the Evidence from Change Management Data , 2001, IEEE Trans. Software Eng..

[29]  Douglas C. Schmidt,et al.  Pattern Oriented Software Architecture: On Patterns and Pattern Languages (Wiley Software Patterns Series) , 2007 .

[30]  Rainer Koschke Incremental reflexion analysis , 2013, J. Softw. Evol. Process..

[31]  Morgan Ericsson,et al.  Evaluation of a static architectural conformance checking method in a line of computer games , 2014, QoSA '14.

[32]  Sebastian Herold,et al.  Architecture consistency: State of the practice, challenges and requirements , 2017, Empirical Software Engineering.

[33]  Nachiappan Nagappan,et al.  Using Software Dependencies and Churn Metrics to Predict Field Failures: An Empirical Case Study , 2007, First International Symposium on Empirical Software Engineering and Measurement (ESEM 2007).

[34]  Alan MacCormack,et al.  Exploring the Structure of Complex Software Designs: An Empirical Study of Open Source and Proprietary Code , 2006, Manag. Sci..

[35]  Jens Knodel,et al.  Static evaluation of software architectures , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[36]  Yuanyuan Song,et al.  Automatic modularity conformance checking , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[37]  Audris Mockus,et al.  A case study of open source software development: the Apache server , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[38]  Daniela E. Damian,et al.  The promises and perils of mining GitHub , 2009, MSR 2014.

[39]  Rudolf Ferenc,et al.  Impact of Version History Metrics on Maintainability , 2015, 2015 8th International Conference on Advanced Software Engineering & Its Applications (ASEA).