An Empirical Study of Bugs in Eclipse Stable Internal Interfaces

Main Article Content

Simon Kawuma
Evarist Nabaasa
David Bamutura Sabiiti
Vincent Mabirizi

Abstract

The Eclipse framework is a popular and widely used framework that has been evolving for over a decade. The framework provides both stable interfaces (APIs) and unstable interfaces (non-APIs). Despite being discouraged by Eclipse, application developers often use non-APIs which cause their systems to fail when ported to new framework releases. Previous studies showed that applications using relatively old non-APIs are more likely to be compatible with new releases compared to the ones that used newly introduced non-APIs. Furthermore, from our previous study about the stability of Eclipse internal interfaces, we discovered that there exist 327K stable non-API methods as the Eclipse framework evolves. In the same study, we recommended that 327K stable non-API methods can be used by Eclipse interface providers as possible candidates for promotion to stable interfaces. However, since non-APIs are unsupported and considered to be immature i.e., can contain bugs, to this end there exist a need to first investigate the stable non-APIs for possible bugs before they can be promoted to APIs. In this study, we empirically investigated the stable non-API for possible bugs using Sonarqube software quality tool. We discovered that over 79.8% classes containing old stable non-APIs methods have zero bugs. Results from this study can be used by both interface providers and users as a starting point to analyze which interfaces are well tested and also estimate how much work could be involved when performing bug fixing for a given eclipse release.

Downloads

Download data is not yet available.

Article Details

How to Cite
[1]
Simon Kawuma, Evarist Nabaasa, David Bamutura Sabiiti, and Vincent Mabirizi , Trans., “An Empirical Study of Bugs in Eclipse Stable Internal Interfaces”, IJSEPM, vol. 2, no. 2, pp. 4–10, Feb. 2024, doi: 10.54105/ijsepm.D9015.072222.
Section
Articles

How to Cite

[1]
Simon Kawuma, Evarist Nabaasa, David Bamutura Sabiiti, and Vincent Mabirizi , Trans., “An Empirical Study of Bugs in Eclipse Stable Internal Interfaces”, IJSEPM, vol. 2, no. 2, pp. 4–10, Feb. 2024, doi: 10.54105/ijsepm.D9015.072222.
Share |

References

T. Tourwe, T. Mens, Automated support for framework-based software, in: International Conference on Software Maintenance,

ICSM 2003. Proceedings., 2003, pp. 148–157. doi:10.1109/ICSM.2003.1235416. https://doi.org/10.1109/ICSM.2003.1235416

D. Konstantopoulos, J. Marien, M. Pinkerton, E. Braude, Best principles in the design of shared software, in: Proceedings of the

33rd Annual IEEE International Computer Software and Applications Conference - Volume 02, COMPSAC ’09, IEEE Computer Society, Washington, DC, USA, 2009, pp. 287–292. doi:10.1109/COMPSAC.2009.151. URL http://dx.doi.org/10.1109/COMPSAC.2009.151

S. Moser, O. Nierstrasz, The effect of object-oriented frame¬works on developer productivity, Computer 29 (9) (1996) 45–51.

doi:10.1109/2.536783. https://doi.org/10.1109/2.536783

J. des Rivie`res, How to use the Eclipse API, http://www.eclipse.org/articles/article.php?file=Article-API-Use/ index.html, consulted January, 2018.

Oracle, Why developers should not write programs that call ’sun’ packages, https://www.oracle.com/technetwork/java/

faq-sun-packages-142232.html, consulted October, 2018.

T. jBPM Team, The jbpm api, http://docs.jboss.org/jbpm/v5. 0/userguide/ch05.html#d0e2099, consulted October, 2018.

S. Bechtold, S. Brannen, J. Link, M. Merdes, M. Philipp, Stein, Junit 5 user guide, https://junit.org/junit5/docs/ current/user-guide/#api-evolution, consulted October, 2018.

B. Dagenais, M. P. Robillard, Recommending adaptive changes for framework evolution, in: Proceedings of the 30th International

Conference on Software Engineering, ICSE ’08, ACM, New York, NY, USA, 2008, pp. 481–490. doi:10.1145/1368088.1368154. URL http://doi.acm.org/10.1145/1368088.1368154

J. Businge, A. Serebrenik, M. G. J. van den Brand, Survival of Eclipse third-party plug-ins, in: ICSM, 2012, pp. 368–377. https://doi.org/10.1109/ICSM.2012.6405295

J. Businge, A. Serebrenik, M. G. J. v. Brand, Compatibility prediction of Eclipse third-party plug-ins in new Eclipse releases, in: 12th IEEE

International Working Conference on Source Code Analysis and Manipulation, 2012, pp. 164–173. https://doi.org/10.1109/SCAM.2012.10

J. Businge, M. van den, A. Serebrenik, Eclipse API usage: The good and the bad, Software Quality Journal 23 (2013) 107–141.

https://doi.org/10.1007/s11219-013-9221-3

J. Businge, A. Serebrenik, M. G. J. van den Brand, Eclipse API usage: the good and the bad, in: SQM, 2012, pp. 54–62.

J. Businge, A. Serebrenik, M. G. J. v. Brand, Analyzing the Eclipse API usage: Putting the developer in the loop, in: 17th European

Conference on Software Maintenance and Reengineering (CSMR’13), 2013, pp. 37–46. https://doi.org/10.1109/CSMR.2013.14

S. Kawuma, J. Businge, E. Bainomugisha, Can we find stable alternatives for unstable eclipse interfaces?, in: Program

Com-prehension (ICPC), 2016 IEEE 24th International Conference on, IEEE, 2016, pp. 1–10. https://doi.org/10.1109/ICPC.2016.7503716

A. Hora, M. T. Valente, R. Robbes, N. Anquetil, When should internal interfaces be promoted to public?, in: Proceedings of the 2016 24th

ACM SIGSOFT International Symposium on Foundations of Software Engineering, ACM, 2016, pp. 278–289. https://doi.org/10.1145/2950290.2950306

S. Kawuma, E. Nabaasa, Identification of promoted eclipse unstable interfaces using clone detection technique, Inter¬national Journal of

Software Engineering and Application (2018). https://doi.org/10.5121/ijsea.2018.9502

J. Businge, S. Kawuma, M. Openja, E. Bainomugisha, A. Serebrenik, How stable are eclipse application framework internal interfaces?, in:

IEEE 26th International Con¬ference on Software Analysis, Evolution and Reengineering (SANER), IEEE, 2019, pp. 117–127.

https://doi.org/10.1109/SANER.2019.8668018.

A. Campbell, Metric definitions - sonarqube documentation, https://docs.sonarqube.org/display/SONAR/Metric+ Definitions,

consulted July, 2018.

J. des Rivie`res, Evolving Java-based APIs, http://wiki.eclipseorg/Evolving Java-based APIs, consulted January, 2018.

ProfessionalQA.com, Difference between error, mistake, fault, bug, failure, defect., https://www.professionalqa.com/

difference-between-error-bug-mistake-fault-bug-failure-defect, consulted December, 2019.

V. Lenarduzzi, A. Sillitti, D. Taibi, Analyzing forty years of software maintenance models, in: 2017 IEEE/ACM 39th In¬ternational

Conference on Software Engineering Companion (ICSE-C), IEEE, 2017, pp. 146–148. https://doi.org/10.1109/ICSE-C.2017.122

V. Lenarduzzi, A. Sillitti, D. Taibi, A survey on code analysis tools for software maintenance prediction, in: International Conference in

Software Engineering for Defence Applica¬tions, Springer, 2018, pp. 165–175. https://doi.org/10.1007/978-3-030-14687-0_15

C. Vassallo, S. Panichella, F. Palomba, S. Proksch, H. C. Gall, A. Zaidman, How developers engage with static analysis tools in

different contexts, Empirical Software Engineering 25 (2) (2020) 1419–1457. https://doi.org/10.1007/s10664-019-09750-5

V. Lenarduzzi, F. Lomio, H. Huttunen, D. Taibi, Are sonar¬qube rules inducing bugs?, in: 2020 IEEE 27th International Conference on

Software Analysis, Evolution and Reengineer¬ing (SANER), IEEE, 2020, pp. 501–511. https://doi.org/10.1109/SANER48275.2020.9054821

E. Foundation, Eclipse project archived download,

http://archive.eclipse.org/eclipse/downloads/index.php, consulted January, 2018.

E. Project, Eclipse ide for java developers, https://www.eclipse.org/downloads/packages/release/2020-03/r, consulted July,

D. Marcilio, R. Bonifa´cio, E. Monteiro, E. Canedo, W. Luz, G. Pinto, Are static analysis violations really fixed? a closer look at realistic

usage of sonarqube, in: 2019 IEEE/ACM 27th International Conference on Program Comprehension (ICPC), IEEE, 2019, pp. 209–219. https://doi.org/10.1109/ICPC.2019.00040

ggraham412, Using internal interfaces while preserving encapsulation, https://www.codeproject.com/Articles/43156/Using-Internal-Interfaces-While-Preserving-Encapsu, consulted April, 2018. https://doi.org/10.1145/1862372.1862389

J. Businge, A. Serebrenik, M. G. J. van den Brand, An empirical study of the evolution of Eclipse third-party plug-ins, in: EVOL-IWPSE’10,

ACM, 2010, pp. 63–72.

J. Businge, S. Kawuma, E. Bainomugisha, F. Khomh, E. Nabaasa, Code authorship and fault-proneness of open-source android

applications: An empirical study, in: Pro¬ceedings of the 13th International Conference on Predictive Models and Data Analytics in

Software Engineering, ACM, 2017, pp. 33–42. https://doi.org/10.1145/3127005.3127009

C. Bird, N. Nagappan, B. Murphy, H. Gall, P. Devanbu, Don’t touch my code!: examining the effects of ownership on software quality, in:

Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering, ACM,

, pp. 4–14. https://doi.org/10.1145/2025113.2025119

L. Guerrouj, Z. Kermansaravi, V. Arnaoudova, B. C. Fung, F. Khomh, G. Antoniol, Y.-G. Gue´he´neuc, Investigating the relation

between lexical smells and change-and fault-proneness: an empirical study, Software Quality Journal 25 (3) (2017) 641–670.

https://doi.org/10.1007/s11219-016-9318-6

G. Bavota, M. Linares-Vasquez, C. E. Bernal-Cardenas,M. Di Penta, R. Oliveto, D. Poshyvanyk, The impact of api change-and

fault-proneness on the user ratings of android apps, IEEE Transactions on Software Engineering 41 (4) (2015) 384–407.

https://doi.org/10.1109/TSE.2014.2367027

M. Asaduzzaman, M. C. Bullock, C. K. Roy, K. A. Schneider, Bug introducing changes: A case study with android, in: Min¬ing Software

Repositories (MSR), 2012 9th IEEE Working Conference on, IEEE, 2012, pp. 116–119. https://doi.org/10.1109/MSR.2012.6224267

K. Jezek, J. Dietrich, P. Brada, How java apis break–an empirical study, Information and Software Technology 65 (2015) 129–146.

https://doi.org/10.1016/j.infsof.2015.02.014

A. Hora, R. Robbes, N. Anquetil, A. Etien, S. Ducasse, M. T. Valente, How do developers react to api evolution? the pharo ecosystem case,

in: Software Maintenance and Evolution (ICSME), 2015 IEEE International Conference on, IEEE, 2015, pp. 251–260.

https://doi.org/10.1109/ICSM.2015.7332471

D. Hou, X. Yao, Exploring the intent behind api evolution: A case study, in: 2011 18th Working Conference on Reverse En-gineering,

, pp. 131–140. doi:10.1109/WCRE.2011.24. https://doi.org/10.1109/WCRE.2011.24

Nagaraju, T., & Suneetha, Dr. Ch. (2019). Distributed Framework for Processing High Resolution Remote Sensing Images. In International

Journal of Engineering and Advanced Technology (Vol. 9, Issue 1, pp. 4287–4292). https://doi.org/10.35940/ijeat.j9976.109119

Mustapha, I., Ashfaq, M., & Qureshi, M. I. (2019). A New Integrated Framework for ISO 9001 Quality Management System Maintenance in Malaysia. In International Journal of Innovative Technology and Exploring Engineering (Vol. 9, Issue 2, pp. 4519–4527). https://doi.org/10.35940/ijitee.b9019.129219

Razia, Dr. S., Reddy, M. V. D., Mohan, K. J. S., & Teja, D. S. (2019). Image Classification using Deep Learning Framework. In

International Journal of Recent Technology and Engineering (IJRTE) (Vol. 8, Issue 4, pp. 10253–10258). https://doi.org/10.35940/ijrte.d4462.118419

Most read articles by the same author(s)