Title
An empirical evaluation of OSGi dependencies best practices in the eclipse IDE.
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.
Year
DOI
Venue
2018
10.1145/3196398.3196416
MSR
Keywords
Field
DocType
empirical evaluation,OSGi,dependencies,best practices,smells
Best practice,Software engineering,Computer science,Software,Eclipse,Modular design,Software maintenance,Software evolution,Java,Bundle,Database
Conference
Volume
ISSN
ISBN
2
2160-1852
978-1-4503-5716-6
Citations 
PageRank 
References 
0
0.34
16
Authors
3
Name
Order
Citations
PageRank
Lina Ochoa170.77
Thomas Degueule2183.05
Jurgen J. Vinju384358.95