Abstract
A promising way of software reuse is Component-Based Software Development (CBSD). There is an increasing number of OSS products available that can be freely used in product development. However, OSS communities themselves have not yet taken full advantage of the “reuse mechanism”. Many OSS projects duplicate effort and code, even when sharing the same application domain and topic. One successful counter-example is the FFMpeg multimedia project, since several of its components are widely and consistently reused into other OSS projects. This paper documents the history of the libavcodec library of components from the FFMpeg project, which at present is reused in more than 140 OSS projects. Most of the recipients use it as a black-box component, although a number of OSS projects keep a copy of it in their repositories, and modify it as such. In both cases, we argue that libavcodec is a successful example of reusable OSS library of components.
Chapter PDF
Similar content being viewed by others
References
Abi-Antoun, M., Aldrich, J., Coelho, W.: A case study in re-engineering to enforce architectural control flow and data sharing. Journal of Systems and Software 80(2), 240–264 (2007)
Arief, B., Gacek, C., Lawrie, T.: Software architectures and open source software – Where can research leverage the most? In: Proceedings of Making Sense of the Bazaar: 1st Workshop on Open Source Software Engineering, Toronto, Canada (May 2001)
Arisholm, E., Briand, L.C., Foyen, A.: Dynamic coupling measurement for object-oriented software. IEEE Transactions on Software Engineering 30(8), 491–506 (2004)
Avgeriou, P., Guelfi, N.: Resolving architectural mismatches of COTS through architectural reconciliation. In: Franch, X., Port, D. (eds.) ICCBSS 2005. LNCS, vol. 3412, pp. 248–257. Springer, Heidelberg (2005)
Basili, V., Rombach, H.D.: Support for comprehensive reuse. IEEE Software Engineering Journal 6(5), 303–316 (1991)
Bowman, I.T., Holt, R.C., Brewster, N.V.: Linux as a case study: its extracted software architecture. In: Proceedings of the 21st International Conference on Software engineering (ICSE), pp. 555–563. IEEE Computer Society Press, Los Alamitos (1999)
Capiluppi, A., Boldyreff, C.: Identifying and improving reusability based on coupling patterns. In: Mei, H. (ed.) ICSR 2008. LNCS, vol. 5030, pp. 282–293. Springer, Heidelberg (2008)
Capiluppi, A., Knowles, T.: Software engineering in practice: Design and architectures of FLOSS systems. In: Boldyreff, C., Crowston, K., Lundell, B., Wasserman, A.I. (eds.) OSS 2009. IFIP AICT, vol. 299, pp. 34–46. Springer, Heidelberg (2009)
Capiluppi, A., Morisio, M., Ramil, J.F.: The evolution of source folder structure in actively evolved open source systems. In: Proceedings of the 10th International Symposium on Software Metrics (METRICS), pp. 2–13. IEEE Computer Society, Washington, DC, USA (2004)
de Jonge, M.: Source tree composition. In: Gacek, C. (ed.) ICSR 2002. LNCS, vol. 2319, pp. 17–32. Springer, Heidelberg (2002)
de Jonge, M.: Build-level components. IEEE Transactions on Software Engineering 31(7), 588–600 (2005)
Dueñas, J.C., de Oliveira, W.L., de la Puente, J.A.: Architecture recovery for software evolution. In: Proceedings of the 2nd Euromicro Conference On Software Maintenance And Reengineering (CSMR), pp. 113–120 (1998)
Eick, S.G., Graves, T.L., Karr, A.F., Marron, J.S., Mockus, A.: Does code decay? assessing the evidence from change management data. IEEE Transactions on Software Engineering 27, 1–12 (2001)
Fenton, N.E., Pfleeger, S.L.: Software metrics: a practical and rigorous approach. Thomson (1996)
German, D.M., Gonzalez-Barahona, J.M., Robles, G.: A model to understand the building and running inter-dependencies of software. In: Proceedings of the 14th Working Conference on Reverse Engineering (WCRE), pp. 140–149. IEEE Computer Society, Washington, DC, USA (2007)
German, D.M., Hassan, A.E.: License integration patterns: Addressing license mismatches in component-based development. In: Proceedings of the 2009 IEEE 31st International Conference on Software Engineering (ICSE), pp. 188–198. IEEE Computer Society, Washington, DC, USA (2009)
Godfrey, M., Eric, H.: Secrets from the monster: Extracting mozilla’s software architecture. In: Proceedings of the 2nd Symposium on Constructing Software Engineering Tools, CoSET (2000)
Hauge, Ø., Østerlie, T., Sørensen, C.-F., Gerea, M.: An Empirical Study on Selection of Open Source Software - Preliminary Results. In: Capiluppi, A., Robles, G. (eds.) Proceedings of the 2009 ICSE Workshop on Emerging Trends in Free/Libre/Open Source Software Research and Development (FLOSS), Vancouver, Canada, May 18, pp. 42–47. IEEE Computer Society Press, Los Alamitos (2009)
Hofmeister, C., Nord, R., Soni, D.: Applied Software Architecture. Addison-Wesley, Reading (2000)
Krikhaar, R., Postma, A., Sellink, A., Stroucken, M., Verhoef, C.: A two-phase process for software architecture improvement. In: Proceedings of the IEEE International Conference on Software Maintenance (ICSM), p. 371. IEEE Computer Society, Washington, DC, USA (1999)
Kruchten, P.: The 4+1 view model of architecture. IEEE Software 12(5), 88–93 (1995)
Lang, B., Abramatic, J.-F., González-Barahona, J.M., Gómez, P., Pedersen, M.K.: Free and Proprietary Software in COTS-Based Software Development. In: Franch, X., Port, D. (eds.) ICCBSS 2005. LNCS, vol. 3412, p. 2. Springer, Heidelberg (2005)
Lehman, M.M.: Programs, cities, students, limits to growth? Programming Methodology, 42–62 (1978); Inaugural Lecture
Lehman, M.M.: Programs, life cycles, and laws of software evolution. Proc. IEEE 68(9), 1060–1076 (1980)
Li, J., Conradi, R., Bunse, C., Torchiano, M., Slyngstad, O.P.N., Morisio, M.: Development with off-the-shelf components: 10 facts. IEEE Software 26(2), 80–87 (2009)
Li, W., Henry, S.: Object-oriented metrics that predict maintainability. J. Syst. Softw. 23(2), 111–122 (1993)
Majchrowski, A., Deprez, J.-C.: An operational approach for selecting open source components in a software development project. In: O’Connor, R., Baddoo, N., Smolander, K., Messnarz, R. (eds.) EuroSPI. CCIS, vol. 16, pp. 176–188. Springer, Heidelberg (2008)
Mockus, A.: Large-scale code reuse in open source software. In: Proceedings of the First International Workshop on Emerging Trends in FLOSS Research and Development (FLOSS), p. 7. IEEE Computer Society, Washington, DC, USA (2007)
Orsila, H., Geldenhuys, J., Ruokonen, A., Hammouda, I.: Update propagation practices in highly reusable open source components. In: Russo, B., Damiani, E., Hissam, S.A., Lundell, B., Succi, G. (eds.) Open Source Development, Communities and Quality. IFIP, vol. 275, pp. 159–170. Springer, Boston (2008)
Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Communications of the ACM 15(12), 1053–1058 (1972)
Sametinger, J.: Software engineering with reusable components. Springer, New York (1997)
Sartipi, K., Kontogiannis, K., Mavaddat, F.: A pattern matching framework for software architecture recovery and restructuring. In: Proceedings of the 8th International Workshop on Program Comprehension (IWPC), pp. 37–47 (2000)
Schmerl, B., Aldrich, J., Garlan, D., Kazman, R., Yan, H.: Discovering architectures from running systems. IEEE Transactions on Software Engineering 32(7), 454–466 (2006)
Senyard, A., Michlmayr, M.: How to have a successful free software project. In: Proceedings of the 11th Asia-Pacific Software Engineering Conference, pp. 84–91. IEEE Computer Society, Busan (2004)
Sommerville, I.: Software Engineering, 7th edn. International Computer Science Series. Addison Wesley, Reading (2004)
Torchiano, M., Morisio, M.: Overlooked aspects of cots-based development. IEEE Software 21(2), 88–93 (2004)
Tran, J.B., Godfrey, M.W., Lee, E.H.S., Holt, R.C.: Architectural repair of open source software. In: Proceedings of the 8th International Workshop on Program Comprehension (IWPC), pp. 48–59. IEEE Computer Society, Washington, DC, USA (2000)
Tu, Q., Godfrey, W.M.: The build-time software architecture view. In: Proceedings of 2001 International Conference on Software Maintenance, pp. 65–74. IEEE, Florence (2001)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 IFIP International Federation for Information Processing
About this paper
Cite this paper
Capiluppi, A., Boldyreff, C., Stol, KJ. (2011). Successful Reuse of Software Components: A Report from the Open Source Perspective. In: Hissam, S.A., Russo, B., de Mendonça Neto, M.G., Kon, F. (eds) Open Source Systems: Grounding Research. OSS 2011. IFIP Advances in Information and Communication Technology, vol 365. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-24418-6_11
Download citation
DOI: https://doi.org/10.1007/978-3-642-24418-6_11
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-24417-9
Online ISBN: 978-3-642-24418-6
eBook Packages: Computer ScienceComputer Science (R0)