An empirical study of integration activities in distributions of open source software

Reuse of software components, either closed or open source, is considered to be one of the most important best practices in software engineering, since it reduces development cost and improves software quality. However, since reused components are (by definition) generic, they need to be customized and integrated into a specific system before they can be useful. Since this integration is system-specific, the integration effort is non-negligible and increases maintenance costs, especially if more than one component needs to be integrated. This paper performs an empirical study of multi-component integration in the context of three successful open source distributions (Debian, Ubuntu and FreeBSD). Such distributions integrate thousands of open source components with an operating system kernel to deliver a coherent software product to millions of users worldwide. We empirically identified seven major integration activities performed by the maintainers of these distributions, documented how these activities are being performed by the maintainers, then evaluated and refined the identified activities with input from six maintainers of the three studied distributions. The documented activities provide a common vocabulary for component integration in open source distributions and outline a roadmap for future research on software integration.

[1]  F. V. Linden Applying Open Source Software Principles in Product Lines , 2009 .

[2]  Brian Fitzgerald,et al.  Understanding Free/Open Source Software Development Processes , 2006, Softw. Process. Improv. Pract..

[3]  Stefano Zacchiroli,et al.  Enforcing Type-Safe Linking using Inter-Package Relationships , 2011, Stud. Inform. Univ..

[4]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[5]  Christian Bird,et al.  The effect of branching strategies on software quality , 2012, Proceedings of the 2012 ACM-IEEE International Symposium on Empirical Software Engineering and Measurement.

[6]  Marco Torchiano,et al.  An Empirical Study on Off-the-Shelf Component Usage in Industrial Projects , 2005, PROFES.

[7]  Daniel M. Germán,et al.  Lawful software engineering , 2010, FoSER '10.

[8]  Muhammad Ali Babar,et al.  A comparative study of challenges in integrating Open Source Software and Inner Source Software , 2011, Inf. Softw. Technol..

[9]  Ivica Crnkovic,et al.  Challenges of component-based development , 2002, J. Syst. Softw..

[10]  André van der Hoek,et al.  Collaborative Software Engineering: Challenges and Prospects , 2010, Collaborative Software Engineering.

[11]  Daniel Hoffman,et al.  Commonality and Variability in Software Engineering , 1998, IEEE Softw..

[12]  David Lorge Parnas,et al.  On the Design and Development of Program Families , 2001, IEEE Transactions on Software Engineering.

[13]  Feng Zhu,et al.  Software Internationalization and Localization: An Industrial Experience , 2013, 2013 18th International Conference on Engineering of Complex Computer Systems.

[14]  Daniel M. Germán,et al.  Macro-level software evolution: a case study of a large software compilation , 2009, Empirical Software Engineering.

[15]  Michael W. Godfrey,et al.  The build-time software architecture view , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[16]  William B. Frakes,et al.  Software reuse research: status and future , 2005, IEEE Transactions on Software Engineering.

[17]  Reidar Conradi,et al.  Adoption of open source software in software-intensive organizations - A systematic literature review , 2010, Inf. Softw. Technol..

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

[19]  William B. Frakes,et al.  Software reuse: metrics and models , 1996, CSUR.

[20]  David F. Redmiles,et al.  An empirical study of software developers' management of dependencies and changes , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[21]  Maurizio Morisio,et al.  COTS-based software development: Processes and open issues , 2002, J. Syst. Softw..

[22]  Stephen McCamant,et al.  Predicting problems caused by component upgrades , 2003, ESEC/FSE-11.

[23]  Marc H. Meyer,et al.  The Power of Product Platforms , 1997 .

[24]  Inês Lynce,et al.  Apt-pbo: solving the software dependency problem using pseudo-boolean optimization , 2010, ASE.

[25]  J. E. Gaffney,et al.  Software reuse—key to enhanced productivity: some quantitative models , 1989 .

[26]  Sigi Goode,et al.  Something for nothing: management rejection of open source software in Australia's top firms , 2005, Inf. Manag..

[27]  Shane McIntosh,et al.  An empirical study of build maintenance effort , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[28]  Ari Jaaksi,et al.  Experiences on Product Development with Open Source Software , 2007, OSS.

[29]  Clemens A. Szyperski,et al.  Component software - beyond object-oriented programming , 2002 .

[30]  Victor R. Basili,et al.  How reuse influences productivity in object-oriented systems , 1996, CACM.

[31]  Piergiorgio Di Giacomo,et al.  COTS and Open Source Software Components: Are They Really Different on the Battlefield? , 2005, ICCBSS.

[32]  Daniel M. Germán,et al.  License integration patterns: Addressing license mismatches in component-based development , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[33]  Kris Ven,et al.  Challenges and strategies in the use of Open Source Software by Independent Software Vendors , 2008, Inf. Softw. Technol..

[34]  Lisa Brownsword,et al.  Developing New Processes for COTS-Based Systems , 2000, IEEE Softw..

[35]  Klaus Pohl,et al.  Software Product Line Engineering - Foundations, Principles, and Techniques , 2005 .

[36]  James A. Whittaker,et al.  How Google tests software , 2012, CSIIRW '10.

[37]  A. Winsor Sampling techniques. , 2000, Nursing times.

[38]  Bill Curtis,et al.  A field study of the software design process for large systems , 1988, CACM.

[39]  Jan Bosch,et al.  Framework integration problems, causes, solutions , 1999, CACM.

[40]  Alexander L. Wolf,et al.  Software release management for component‐based software , 2003, Softw. Pract. Exp..

[41]  Janne Merilinna,et al.  State of the Art and Practice of OpenSource Component Integration , 2006, 32nd EUROMICRO Conference on Software Engineering and Advanced Applications (EUROMICRO'06).

[42]  Richard C. Holt,et al.  Linux as a case study: its extracted software architecture , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[43]  Barry W. Boehm,et al.  COTS Integration: Plug and Pray? , 1999, Computer.

[44]  Daniel M. Germán,et al.  A Model to Understand the Building and Running Inter-Dependencies of Software , 2007, 14th Working Conference on Reverse Engineering (WCRE 2007).

[45]  Foutse Khomh,et al.  Do faster releases improve software quality? An empirical case study of Mozilla Firefox , 2012, 2012 9th IEEE Working Conference on Mining Software Repositories (MSR).

[46]  Bert M. Sadowski,et al.  Transition of governance in a mature open software source community: Evidence from the Debian case , 2008, Inf. Econ. Policy.

[47]  Wolfgang De Meuter,et al.  Design recovery and maintenance of build systems , 2007, 2007 IEEE International Conference on Software Maintenance.

[48]  Marco Torchiano,et al.  A State-of-the-Practice Survey of Risk Management in Development with Off-the-Shelf Software Components , 2008, IEEE Transactions on Software Engineering.

[49]  BrownswordLisa,et al.  Developing New Processes for COTS-Based Systems , 2000 .

[50]  James M. Bieman,et al.  Software architecture classification for estimating the cost of COTS integration , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[51]  Carolyn B. Seaman Communication costs in code and design reviews: an empirical study , 1996, CASCON.

[52]  Martin P. Robillard,et al.  Recommending adaptive changes for framework evolution , 2011, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[53]  Roberto Di Cosmo,et al.  Supporting software evolution in component-based FOSS systems , 2011, Sci. Comput. Program..

[54]  D. Spinellis,et al.  How is open source affecting software development? , 2004, IEEE Software.

[55]  Reidar Conradi,et al.  Adoption of Open Source in the Software Industry , 2008, OSS.

[56]  Xavier Franch,et al.  How agile COTS selection methods are (and can be) , 2005 .

[57]  Marco Torchiano,et al.  Development with Off-the-Shelf Components: 10 Facts , 2009, IEEE Software.

[58]  Klaus Pohl,et al.  Software Product Line Engineering , 2005 .

[59]  Barry W. Boehm,et al.  A Framework for the Assessment and Selection of Software Components and Connectors in COTS-Based Architectures , 2007, 2007 Working IEEE/IFIP Conference on Software Architecture (WICSA'07).

[60]  Olivier Berger,et al.  Why and how to contribute to libre software when you integrate them into an in-house application ? , 2005 .

[61]  David Probert,et al.  Release Management in Free Software Projects: Practices and Problems , 2007, OSS.

[62]  Armin Eberlein,et al.  Optimized mismatch resolution for COTS selection , 2008, Softw. Process. Improv. Pract..

[63]  L WolfAlexander,et al.  Software release management for component-based software , 2003 .

[64]  Austen Rainer,et al.  Open-source software in an occupational health application: the case of Heales Medical Ltd , 2005 .

[65]  Li-Te Cheng,et al.  Sometimes you need to see through walls: a field study of application programming interfaces , 2004, CSCW.

[66]  Christof Ebert,et al.  Using open source software in product development: a primer , 2004, IEEE Software.

[67]  Imed Hammouda,et al.  Update Propagation Practices in Highly Reusable Open Source Components , 2008, OSS.

[68]  Robert DeLine,et al.  Avoiding packaging mismatch with flexible packaging , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[69]  James D. Herbsleb,et al.  Splitting the organization and integrating the code: Conway's law revisited , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[70]  Xavier Franch,et al.  How agile COTS selection methods are (and can be)? , 2005, 31st EUROMICRO Conference on Software Engineering and Advanced Applications.

[71]  Lucas Layman,et al.  Coordination in large-scale software teams , 2009, 2009 ICSE Workshop on Cooperative and Human Aspects on Software Engineering.

[72]  Klaus Schmid,et al.  Software product lines in action - the best industrial practice in product line engineering , 2007 .

[73]  Yuriy Brun,et al.  Proactive detection of collaboration conflicts , 2011, ESEC/FSE '11.

[74]  Audris Mockus,et al.  An empirical study of global software development: distance and speed , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[75]  Reidar Conradi,et al.  An empirical study on software development with open source components in the chinese software industry , 2008, Softw. Process. Improv. Pract..

[76]  Joachim Henkel,et al.  Code Reuse in Open Source Software Development: Quantitative Evidence, Drivers, and Impediments , 2010, J. Assoc. Inf. Syst..