The effect of multiple developers on structural attributes: A Study based on java software

Abstract Context Long-term software projects employ different software developers who collaborate on shared artifacts. The accumulation of changes pushed by different developers leave traces on the underlying code, that have an effect on its future maintainability, and even reuse. Objective This study focuses on the how the changes by different developers might have an impact on the code: we investigate whether the work of multiple developers, and their experience, have a visible effect on the structural metrics of the underlying code. Method We consider nine object-oriented (OO) attributes and we measure them in a GitHub sample containing the top 200 ‘forked’ projects. For each of their classes, we evaluated the number of distinct developers contributing to its source code, and their experience in the project. Results We show that the presence of multiple developers working on the same class has a visible effect on the chosen OO metrics, and often in the opposite direction to what the guidelines for each attribute suggest. We also show how the relative experience of developers in a project plays an important role in the distribution of those metrics, and the future maintenance of the Java classes. Conclusions Our results show how distributed development has an effect on the structural attributes of a software system and how the experience of developers plays a fundamental role in that effect. We also discover workarounds and best practices in 4 applied case studies.

[1]  Victor R. Basili,et al.  The influence of organizational structure on software quality , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[2]  Steve Counsell,et al.  Class movement and re-location: An empirical study of Java inheritance evolution , 2010, J. Syst. Softw..

[3]  Lionel C. Briand,et al.  Exploring the relationships between design measures and software quality in object-oriented systems , 2000, J. Syst. Softw..

[4]  Hausi A. Müller,et al.  Analyzing Java software by combining metrics and program visualization , 2000, Proceedings of the Fourth European Conference on Software Maintenance and Reengineering.

[5]  Letha H. Etzkorn,et al.  Empirical Validation of Three Software Metrics Suites to Predict Fault-Proneness of Object-Oriented Classes Developed Using Highly Iterative or Agile Software Development Processes , 2007, IEEE Transactions on Software Engineering.

[6]  Jason Crampton,et al.  The interpretation and utility of three cohesion metrics for object-oriented design , 2006, TSEM.

[7]  Audris Mockus,et al.  Predicting risk of software changes , 2000, Bell Labs Technical Journal.

[8]  Christian Bird,et al.  Characteristics of Useful Code Reviews: An Empirical Study at Microsoft , 2015, 2015 IEEE/ACM 12th Working Conference on Mining Software Repositories.

[9]  James D. Herbsleb,et al.  Guest Editors' Introduction: Global Software Development , 2001, IEEE Softw..

[10]  William G. Axinn,et al.  The Microdemographic Community-Study Approach , 1991 .

[11]  Audris Mockus,et al.  Challenges of global software development , 2001, Proceedings Seventh International Software Metrics Symposium.

[12]  Chiara Francalanci,et al.  An Empirical Study on the Relationship among Software Design Quality , Development Effort , and Governance in Open Source Projects , 2008 .

[13]  Jana Polgar,et al.  Object-Oriented Software Metrics , 2005, Encyclopedia of Information Science and Technology.

[14]  Endaylalu Defere,et al.  PREVALENCE AND ASSOCIATED FACTORS OF INTERNALIZED STIGMA AMONG PATIENTS WITH SEVERE MENTAL DISORDER: THE CASE OF AMANUEL SPECIALIZED MENTAL HEALTH HOSPITAL , 2017 .

[15]  Liguo Yu,et al.  Understanding component co-evolution with a study on Linux , 2007, Empirical Software Engineering.

[16]  Jr. Frederick P. Brooks,et al.  The mythical man-month (anniversary ed.) , 1995 .

[17]  Robert L. Nord,et al.  Technical Debt: From Metaphor to Theory and Practice , 2012, IEEE Software.

[18]  C. van Koten,et al.  An application of Bayesian network for predicting object-oriented software maintainability , 2006, Inf. Softw. Technol..

[19]  Robert L. Nord,et al.  Managing technical debt in software-reliant systems , 2010, FoSER '10.

[20]  Sandro Morasca,et al.  Property-Based Software Engineering Measurement , 1996, IEEE Trans. Software Eng..

[21]  Akito Monden,et al.  An analysis of developer metrics for fault prediction , 2010, PROMISE '10.

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

[23]  Umesh L. Kulkarni,et al.  Validation of CK Metrics for Object Oriented Design Measurement , 2010, 2010 3rd International Conference on Emerging Trends in Engineering and Technology.

[24]  Hridesh Rajan,et al.  A study of repetitiveness of code changes in software evolution , 2013, 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[25]  Emilia Mendes,et al.  Comprehension of object-oriented software cohesion: the empirical quagmire , 2002, Proceedings 10th International Workshop on Program Comprehension.

[26]  Amos Njuguna,et al.  Sexual initiation and factors related with it among female youths in west Shoa, Ambo town, Ethiopia: Community based Cross sectional study , 2016 .

[27]  Richard Torkar,et al.  Software fault prediction metrics: A systematic literature review , 2013, Inf. Softw. Technol..

[28]  Sallie M. Henry,et al.  Object-oriented metrics that predict maintainability , 1993, J. Syst. Softw..

[29]  Marco Aurélio Gerosa,et al.  How to Support Newcomers Onboarding to Open Source Software Projects , 2014, OSS.

[30]  Bjørnar Tessem,et al.  Individual empowerment of agile and non-agile software developers in small teams , 2014, Inf. Softw. Technol..

[31]  R. Pagano Understanding Statistics in the Behavioral Sciences , 1981 .

[32]  Elaine J. Weyuker,et al.  Programmer-based fault prediction , 2010, PROMISE '10.

[33]  Denys Poshyvanyk,et al.  The conceptual cohesion of classes , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

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

[35]  James F. Power,et al.  On the application of software metrics to UML models , 2006, MoDELS'06.

[36]  Elaine J. Weyuker,et al.  Evaluating Software Complexity Measures , 2010, IEEE Trans. Software Eng..

[37]  Rudolf Ferenc,et al.  Using the Conceptual Cohesion of Classes for Fault Prediction in Object-Oriented Systems , 2008, IEEE Transactions on Software Engineering.

[38]  Gabriele Bavota,et al.  Identifying Extract Class refactoring opportunities using structural and semantic cohesion measures , 2011, J. Syst. Softw..

[39]  Andy Field,et al.  Discovering statistics using SPSS: and sex and drugs and rock 'n' roll, 3rd Edition , 2009 .

[40]  Michele Lanza,et al.  An extensive comparison of bug prediction approaches , 2010, 2010 7th IEEE Working Conference on Mining Software Repositories (MSR 2010).

[41]  Gregorio Robles,et al.  Developer Turnover in Global, Industrial Open Source Projects: Insights from Applying Survival Analysis , 2017, 2017 IEEE 12th International Conference on Global Software Engineering (ICGSE).

[42]  Jing Liu,et al.  A Hybrid Set of Complexity Metrics for Large-Scale Object-Oriented Software Systems , 2010, Journal of Computer Science and Technology.

[43]  Clemente Izurieta,et al.  Effects of the number of developers on code quality in open source software: a case study , 2010, ESEM '10.

[44]  Javam C. Machado,et al.  The prediction of faulty classes using object-oriented design metrics , 2001, J. Syst. Softw..

[45]  Barbara Kitchenham,et al.  What's up with software metrics? - A preliminary mapping study , 2010, J. Syst. Softw..

[46]  Andrea Capiluppi,et al.  The relevance of application domains in empirical findings , 2019, SoHeal@ICSE.

[47]  Emerson R. Murphy-Hill,et al.  Java generics adoption: how new features are introduced, championed, or ignored , 2011, MSR '11.

[48]  Michael A. Cusumano,et al.  How Microsoft Makes Large Teams Work Like Small Teams , 1997 .

[49]  Fahim Arif,et al.  Analysis of object oriented complexity and testability using object oriented design metrics , 2010, NSEC '10.

[50]  Marco Aurélio Gerosa,et al.  On the Interplay between Structural and Logical Dependencies in Open-Source Software , 2011, 2011 25th Brazilian Symposium on Software Engineering.

[51]  Audris Mockus,et al.  How Does Context Affect the Distribution of Software Maintainability Metrics? , 2013, 2013 IEEE International Conference on Software Maintenance.

[52]  Steve Counsell,et al.  Managing Hidden Dependencies in OO Software: A Study Based on Open Source Projects , 2017, 2017 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM).

[53]  Ayush Singh,et al.  Classification of Technical and Management Metrics in Object Oriented Software Engineering , 2017 .

[54]  Tibor Gyimóthy,et al.  Empirical validation of object-oriented metrics on open source software for fault prediction , 2005, IEEE Transactions on Software Engineering.

[55]  Mario Piattini,et al.  A Survey of Metrics for UML Class Diagrams , 2005, J. Object Technol..

[56]  James D. Herbsleb,et al.  Global Software Engineering: The Future of Socio-technical Coordination , 2007, Future of Software Engineering (FOSE '07).

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

[58]  Giulio Concas,et al.  Software Metrics in Agile Software: An Empirical Study , 2014, XP.

[59]  Harald C. Gall,et al.  Do Code and Comments Co-Evolve? On the Relation between Source Code and Comment Changes , 2007, 14th Working Conference on Reverse Engineering (WCRE 2007).

[60]  Ramanath Subramanyam,et al.  Empirical Analysis of CK Metrics for Object-Oriented Design Complexity: Implications for Software Defects , 2003, IEEE Trans. Software Eng..

[61]  Danny Ho,et al.  An Empirical Validation of Object-Oriented Design Metrics for Fault Prediction , 2008 .

[62]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..

[63]  Yuming Zhou,et al.  Empirical Analysis of Object-Oriented Design Metrics for Predicting High and Low Severity Faults , 2006, IEEE Transactions on Software Engineering.

[64]  Carl H. Smith,et al.  On Weyuker's Axioms For Software Complexity Measures , 1991, IEEE Trans. Software Eng..

[65]  Victor R. Basili,et al.  A Validation of Object-Oriented Design Metrics as Quality Indicators , 1996, IEEE Trans. Software Eng..

[66]  Meir M. Lehman,et al.  On understanding laws, evolution, and conservation in the large-program life cycle , 1984, J. Syst. Softw..

[67]  Pradeep Kumar Bhatia,et al.  Analysis of Reusability of Object-Oriented System using CK Metrics , 2012 .

[68]  Xavier Blanc,et al.  Code ownership in open-source software , 2014, EASE '14.

[69]  Rachel Harrison,et al.  Experimental assessment of the effect of inheritance on the maintainability of object-oriented systems , 2000, J. Syst. Softw..

[70]  John W. Daly,et al.  Evaluating inheritance depth on the maintainability of object-oriented software , 2004, Empirical Software Engineering.

[71]  Sonali K. Shah Motivation, Governance, and the Viability of Hybrid Forms in Open Source Software Development , 2006, Manag. Sci..

[72]  Lionel C. Briand,et al.  A Unified Framework for Coupling Measurement in Object-Oriented Systems , 1999, IEEE Trans. Software Eng..

[73]  Michelle Cartwright,et al.  An Empirical Investigation of an Object-Oriented Software System , 2000, IEEE Trans. Software Eng..

[74]  Arvinder Kaur,et al.  Empirical analysis for investigating the effect of object-oriented metrics on fault proneness: a replicated case study , 2009 .

[75]  Nachiappan Nagappan,et al.  Predicting defects using network analysis on dependency graphs , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.