skip to main content
10.1145/3196398.3196416acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article

An empirical evaluation of OSGi dependencies best practices in the eclipse IDE

Published: 28 May 2018 Publication History

Abstract

OSGi is a module system and service framework that aims to fill Java's lack of support for modular development. Using OSGi, developers divide software into multiple bundles that declare constrained dependencies towards other bundles. However, there are various ways of declaring and managing such dependencies, and it can be confusing for developers to choose one over another. Over the course of time, experts and practitioners have defined "best practices" related to dependency management in OSGi. The underlying assumptions are that these best practices (i) are indeed relevant and (ii) help to keep OSGi systems manageable and efficient. In this paper, we investigate these assumptions by first conducting a systematic review of the best practices related to dependency management issued by the OSGi Alliance and OSGi-endorsed organizations. Using a large corpus of OSGi bundles (1,124 core plug-ins of the Eclipse IDE), we then analyze the use and impact of 6 selected best practices. Our results show that the selected best practices are not widely followed in practice. Besides, we observe that following them strictly reduces classpath size of individual bundles by up to 23% and results in up to ±13% impact on performance at bundle resolution time. In summary, this paper contributes an initial empirical validation of industry-standard OSGi best practices. Our results should influence practitioners especially, by providing evidence of the impact of these best practices in real-world systems.

References

[1]
Pietro Abate, Roberto Di Cosmo, Louis Gesbert, Fabrice Le Fessant, Ralf Treinen, and Stefano Zacchiroli. 2015. Mining component repositories for installabil-ity issues. In 12th Working Conference on Mining Software Repositories. IEEE, Piscataway, 24--33.
[2]
OSGi Alliance. n.d. Guidelines. https://goo.gl/kT4FU6. (n.d.).
[3]
OSGi Alliance. n.d. OSGi developer certification - Professional. https://goo.gl/TftHFF. (n.d.).
[4]
Roland Barcia, Tim deBoer, Jeremy Hughes, and Alasdair Nottingham. 2010. Developing OSGi enterprise applications. https://goo.gl/5fbom7. (2010).
[5]
Neil Bartlett and Peter Kriens. 2010. bndtools: mostly painless tools for OSGi.https://goo.gl/FpmhJR. (2010).
[6]
Veronika Bauer and Lars Heinemann. 2012. Understanding API usage to support informed decision making in software maintenance. In 16th European Conference on Software Maintenance and Reengineering. IEEE, Washington, 435--440.
[7]
Stephen M Blackburn, Kathryn S McKinley, Robin Garner, Chris Hoffmann, Asjad M Khan, Rotem Bentzur, Amer Diwan, Daniel Feinberg, Daniel Frampton, Samuel Z Guyer, et al. 2008. Wake up and smell the coffee: evaluation methodology for the 21st century. Commun. ACM 51, 8 (2008), 83--89.
[8]
Bradley E. Cossette and Robert J. Walker. 2012. Seeking the ground truth: A retroactive study on the evolution and migration of software libraries. In 20th International Symposium on the Foundations of Software Engineering. ACM, New York, 55:1--55:11.
[9]
A. Decan, T. Mens, and M. Claes. 2017. An empirical comparison of dependency issues in OSS packaging ecosystems. In 24th International Conference on Software Analysis, Evolution and Reengineering. IEEE, Piscataway, 2--12.
[10]
Bernhard Dorninger. 2010. Experiences with OSGi in industrial applications. https://goo.gl/hPokNX. (2010).
[11]
Apache Felix. 2013. OSGi frequently asked questions. https://goo.gl/g2Luqy. (2013).
[12]
Apache Felix. 2015. Dependency manager - Background. https://goo.gl/758FPJ. (2015).
[13]
Ulf Fildebrandt. 2011. Structuring software systems with OSGi. https://goo.gl/T9ywmA. (2011).
[14]
Thomas Forster, Thorsten Keuler, Jens Knodel, and Michael-Christian Becker. 2013. Recovering component dependencies hidden by frameworks - Experiences from analyzing OSGi and Qt. In 17th European Conference on Software Maintenance and Reengineering. IEEE, Washington, 295--304.
[15]
Alexander Grzesik. 2013. TRESOR: the modular cloud - Building a domain specific cloud platform with OSGi. https://goo.gl/dfaV6m. (2013).
[16]
Brett Hackleman and James Branigan. 2009. OSGi: the best tool in your embedded systems toolbox. https://goo.gl/CDNuWo. (2009).
[17]
B. J Hargrave and Peter Kriens. 2007. OSGi best practices! https://goo.gl/pFQjeV. (2007).
[18]
B. J. Hargrave and Jeff McAffer. 2006. Best practices for programming Eclipse and OSGi. https://goo.gl/Wp6KfW. (2006).
[19]
Dileepa Jayakody. 2012. Building a modular server platform with OSGi. https://goo.gl/9tg1ok. (2012).
[20]
K. Jezek, L. Holy, A. Slezacek, and P. Brada. 2013. Software components compatibility verification based on static byte-code analysis. In 39th Euromicro Conference on Software Engineering and Advanced Applications. IEEE, Piscataway, 145--152.
[21]
Ajay Kumar Jha, Sunghee Lee, and Woo Jin Lee. 2017. Developer mistakes in writing Android manifests: An empirical study of configuration errors. In 14th International Conference on Mining Software Repositories. IEEE, Piscataway, 25--36.
[22]
Emily Jiang. 2012. OSGi application best practices. https://goo.gl/qTDxqM. (2012).
[23]
Gerd Kachel, Stefan Kachel, and Ksenija Nitsche-Brodnjan. 2010. Migration from Java EE application server to server-side OSGi for process management and event handling. https://goo.gl/9zKb2y. (2010).
[24]
Vassilios Karakoidas, Dimitris Mitropoulos, Panos Louridas, Georgios Gousios, and Diomidis Spinellis. 2015. Generating the blueprints of the Java ecosystem. In 12th Working Conference on Mining Software Repositories. IEEE, Piscataway, 510--513.
[25]
Riivo Kikas, Georgios Gousios, Marlon Dumas, and Dietmar Pfahl. 2017. Structure and evolution of package dependency networks. In 14th International Conference on Mining Software Repositories. IEEE, Piscataway, 102--112.
[26]
Barbara Kitchenham, O. Pearl Brereton, David Budgen, Mark Turner, John Bailey, and Stephen Linkman. 2009. Systematic literature reviews in software engineering - A systematic literature review. Inf. Softw. Technol. 51, 1 (2009), 7--15.
[27]
Paul Klint, Tijs van der Storm, and Jurgen Vinju. 2011. EASY meta-programming with Rascal. In 3rd International Summer School Conference on Generative and Transformational Techniques in Software Engineering III. Springer, Berlin, Heidelberg, 222--289.
[28]
Raula Gaikovina Kula, Coen De Roover, Daniel M German, Takashi Ishio, and Katsuro Inoue. 2017. Modeling Library Dependencies and Updates in Large Software Repository Universes. arXiv preprint arXiv:1709.04626 (2017).
[29]
Dimitris Mitropoulos, Vassilios Karakoidas, Panos Louridas, Georgios Gousios, and Diomidis Spinellis. 2014. The bug catalog of the Maven ecosystem. In 11th Working Conference on Mining Software Repositories. ACM, New York, 372--375.
[30]
Jerome Moliere. 2011. 10 Things to know you are doing OSGi in the wrong way. https://goo.gl/TdRh2e. (2011).
[31]
Marcel Offermans. 2005. Automatically managing service dependencies in OSGi. https://goo.gl/BFT8x2. (2005).
[32]
Marcel Offermans. 2006. Using Apache Felix: OSGi best practices. https://goo.gl/jmZsYD. (2006).
[33]
D. L. Parnas. 1972. On the criteria to be used in decomposing systems into modules. Commun. ACM 15, 12 (1972), 1053--1058.
[34]
Ricardo Pérez-Castillo, Ignacio Garcáa-Rodráguez de Guzmán, and Mario Piattini. 2011. Knowledge discovery metamodel-ISO/IEC 19506: A standard to modernize legacy systems. Comput. Stand. Interfaces 33, 6 (2011), 519--532.
[35]
Steven Raemaekers, Arie van Deursen, and Joost Visser. 2014. Semantic versioning versus breaking changes: A study of the Maven repository. In 14th International Working Conference on Source Code Analysis and Manipulation. IEEE, Washington, 215--224.
[36]
Roman Roelofsen. 2009. Very important bundles. https://goo.gl/jznk62. (2009).
[37]
Doreen Seider, Andreas Schreiber, Tobias Marquardt, and Marlene Brüggemann. 2016. Visualizing modules and dependencies of OSGi-based applications. In IEEE Working Conference on Software Visualization. IEEE, Piscataway, 96--100.
[38]
Tushar Sharma, Marios Fragkoulis, and Diomidis Spinellis. 2016. Does Your Configuration Code Smell?. In 13th International Conference on Mining Software Repositories. ACM, New York, 189--200.
[39]
Anas Shatnawi, Hafedh Mili, Ghizlane El Boussaidi, Anis Boubaker, Yann-Gaël Guéhéneuc, Naouel Moha, Jean Privat, and Manel Abdellatif. 2017. Analyzing Program Dependencies in Java EE Applications. In 14th International Conference on Mining Software Repositories. IEEE, Piscataway, 64--74.
[40]
Jim Shore. 2004. Fail fast {software debugging}. IEEE Software 21, 5 (2004), 21--25.
[41]
Rok Strniša, Peter Sewell, and Matthew Parkinson. 2007. The Java module system: core design and semantic definition. In 22nd Annual ACM SIGPLAN Conference on Object-oriented Programming Systems and Applications. ACM, New York, 499--514.
[42]
The OSGi Alliance. 2014. OSGi Core Release 6 Specification. (Jun 2014).
[43]
Michele Tufano, Fabio Palomba, Gabriele Bavota, Massimiliano Di Penta, Rocco Oliveto, Andrea De Lucia, and Denys Poshyvanyk. 2017. There and back again: Can you compile that snapshot? Journal of Software: Evolution and Process 29, 4 (2017).
[44]
Tim Ward. 2012. Best practices for (enterprise) OSGi applications. https://goo.gl/wmmNaR. (2012).
[45]
Thomas Watson and Peter Kriens. 2006. OSGi component programming. https://goo.gl/eR5Tmo. (2006).
[46]
James R. Williams, Davide Di Ruscio, Nicholas Matragkas, Juri Di Rocco, and Dimitris S. Kolovos. 2014. Models of OSS project meta-information: A dataset of three forges. In 11th Working Conference on Mining Software Repositories. ACM, New York, 408--411.

Cited By

View all
  • (2024)A Catalog of Unintended Software Dependencies in Multi-Lingual Systems at ASMLProceedings of the 46th International Conference on Software Engineering: Software Engineering in Practice10.1145/3639477.3639725(240-251)Online publication date: 14-Apr-2024

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
MSR '18: Proceedings of the 15th International Conference on Mining Software Repositories
May 2018
627 pages
ISBN:9781450357166
DOI:10.1145/3196398
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 28 May 2018

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Research-article

Conference

ICSE '18
Sponsor:

Upcoming Conference

ICSE 2025

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)11
  • Downloads (Last 6 weeks)0
Reflects downloads up to 06 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2024)A Catalog of Unintended Software Dependencies in Multi-Lingual Systems at ASMLProceedings of the 46th International Conference on Software Engineering: Software Engineering in Practice10.1145/3639477.3639725(240-251)Online publication date: 14-Apr-2024

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media