Software Reuse in Open Source: A Case Study

A promising way to support software reuse is based on Component-Based Software Development CBSD. Open Source Software OSS products are increasingly available that can be freely used in product development. However, OSS communities still face several challenges before taking full advantage of the "reuse mechanism": many OSS projects duplicate effort, for instance when many projects implement a similar system in the same application domain and in the same topic. One successful counter-example is the FFmpeg multimedia project; several of its components are widely and consistently reused in other OSS projects. Documented is the evolutionary history of the various libraries of components within the FFmpeg project, which presently are reused in more than 140 OSS projects. Most use them as black-box components; although a number of OSS projects keep a localized copy in their repositories, eventually modifying them as needed white-box reuse. In both cases, the authors argue that FFmpeg is a successful project that provides an excellent exemplar of a reusable library of OSS components.

[1]  Merijn de Jonge,et al.  Build-level components , 2005, IEEE Transactions on Software Engineering.

[2]  David Garlan,et al.  Documenting software architectures: views and beyond , 2002, 25th International Conference on Software Engineering, 2003. Proceedings..

[3]  Neil B. Harrison,et al.  Pattern-Based Architecture Reviews , 2011, IEEE Software.

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

[5]  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.

[6]  Daniel M. Germán,et al.  An Empirical Study of the Reuse of Software Licensed under the GNU General Public License , 2009, OSS.

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

[8]  Mario Gleirscher,et al.  On the Extent and Nature of Software Reuse in Open Source Java Projects , 2011, ICSR.

[9]  Andrea Capiluppi,et al.  Software Engineering in Practice: Design and Architectures of FLOSS Systems , 2009, OSS.

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

[11]  Cornelia Boldyreff,et al.  Identifying and Improving Reusability Based on Coupling Patterns , 2008, ICSR.

[12]  Per Runeson,et al.  Guidelines for conducting and reporting case study research in software engineering , 2009, Empirical Software Engineering.

[13]  Brian Fitzgerald,et al.  The Transformation of Open Source Software , 2006, MIS Q..

[14]  Timothy C. Lethbridge,et al.  Object-oriented Software Engineering , 2001 .

[15]  René L. Krikhaar,et al.  A two-phase process for software architecture improvement , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[16]  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).

[17]  Venkataraman Ramesh,et al.  RESRES: The story behind the paper "Research in software engineering: An analysis of the literature" , 2009, Inf. Softw. Technol..

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

[19]  Nicolas Guelfi,et al.  Resolving Architectural Mismatches of COTS Through Architectural Reconciliation , 2005, ICCBSS.

[20]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

[21]  A. Mockus,et al.  Large-Scale Code Reuse in Open Source Software , 2007, First International Workshop on Emerging Trends in FLOSS Research and Development (FLOSS'07: ICSE Workshops 2007).

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

[23]  Norman E. Fenton,et al.  Software Metrics: A Rigorous Approach , 1991 .

[24]  Reidar Conradi,et al.  Open Source Collaboration for Fostering Off-The-Shelf Components Selection , 2007, OSS.

[25]  K. Amant,et al.  Handbook of Research on Open Source Software: Technological, Economic, and Social Perspectives , 2007 .

[26]  Martin Michlmayr,et al.  How to have a successful free software project , 2004, 11th Asia-Pacific Software Engineering Conference.

[27]  Patrice-Emmanuel Schmitz,et al.  Evaluating Open Source in Government: Methodological Considerations in Strategizing the Use of Open Source in the Public Sector , 2008 .

[28]  Merijn de Jonge Source Tree Composition , 2002, ICSR.

[29]  Hong Yan,et al.  Discovering Architectures from Running Systems , 2006, IEEE Transactions on Software Engineering.

[30]  Victor R. Basili,et al.  Support for comprehensive reuse , 1991, Softw. Eng. J..

[31]  Daniela E. Damian,et al.  Selecting Empirical Methods for Software Engineering Research , 2008, Guide to Advanced Empirical Software Engineering.

[32]  Michael W. Godfrey,et al.  Architectural repair of open source software , 2000, Proceedings IWPC 2000. 8th International Workshop on Program Comprehension.

[33]  Michele Lanza,et al.  Package patterns for visual architecture recovery , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[34]  Alexander L. Wolf,et al.  Acm Sigsoft Software Engineering Notes Vol 17 No 4 Foundations for the Study of Software Architecture , 2022 .

[35]  Sebastian Spaeth,et al.  Code Reuse in Open Source Software , 2008, Manag. Sci..

[36]  Farhad Mavaddat,et al.  A pattern matching framework for software architecture recovery and restructuring , 2000, Proceedings IWPC 2000. 8th International Workshop on Program Comprehension.

[37]  Johannes Sametinger,et al.  Software Engineering with Reusable Components , 1997, Springer Berlin Heidelberg.

[38]  Marwan Abi-Antoun,et al.  A case study in re-engineering to enforce architectural control flow and data sharing , 2007, J. Syst. Softw..

[39]  Ian Sommerville,et al.  Software Engineering (7th Edition) , 2004 .

[40]  Philippe Kruchten,et al.  The 4+1 View Model of Architecture , 1995, IEEE Softw..

[41]  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).

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

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

[44]  E. Guba Criteria for assessing the trustworthiness of naturalistic inquiries , 1981 .

[45]  Meir M. Lehman Programs, Cities, Students— Limits to Growth? , 1978 .

[46]  Venkataraman Ramesh,et al.  Research in software engineering: an analysis of the literature , 2002, Inf. Softw. Technol..

[47]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[48]  Marco Torchiano,et al.  Overlooked aspects of COTS-based development , 2004, IEEE Software.

[49]  E. Burton Swanson,et al.  The dimensions of maintenance , 1976, ICSE '76.

[50]  Oyvind Hauge,et al.  An empirical study on selection of Open Source Software - Preliminary results , 2009, 2009 ICSE Workshop on Emerging Trends in Free/Libre/Open Source Software Research and Development.

[51]  Stuart H. Zweben,et al.  Measuring the quality of structured designs , 1981, J. Syst. Softw..

[52]  Carl-Fredrik Sørensen,et al.  Surveying Industrial Roles in Open Source Software Development , 2007, OSS.

[53]  J.A. de la Puente,et al.  Architecture recovery for software evolution , 1998, Proceedings of the Second Euromicro Conference on Software Maintenance and Reengineering.

[54]  Ambjörn Naeve,et al.  Open source for knowledge and learning management : strategies beyond tools , 2007 .

[55]  John N. Buxton,et al.  Craft of software engineering , 1987, International computer science series.

[56]  Meir M. Lehman Programs, life cycles, and laws of software evolution , 1980 .

[57]  Bernard Lang,et al.  Free and Proprietary Software in COTS-Based Software Development , 2005, ICCBSS.

[58]  Richard C. Holt,et al.  Forward and reverse repair of software architecture , 1999, CASCON.

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