Published December 30, 2023 | Version CC BY-NC-ND 4.0
Journal article Open

An Empirical Study of Bugs in Eclipse Stable Internal Interfaces

  • 1. Department of Software Engineering, Mbarara University of Science and Technology, Mbarara, Uganda.
  • 1. Department of Software Engineering, Mbarara University of Science and Technology, Mbarara, Uganda.
  • 2. Department of Computer Science, Mbarara University of Science and Technology, Mbarara, Uganda.
  • 3. Department of Information Technology and Computer Science, Kabale University, Kabale, Uganda.

Description

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.

Files

D9015071422.pdf

Files (537.6 kB)

Name Size Download all
md5:0e04964e6e827e11349285d4a0eb4975
537.6 kB Preview Download

Additional details

Identifiers

DOI
10.54105/ijsepm.D9015.072222
EISSN
2582-8339

Dates

Accepted
2022-07-15
Manuscript received on 27 June 2022 | Revised Manuscript received on 05 July 2022 | Manuscript Accepted on 15 July 2022 | Manuscript published on 30 December 2023

References

  • T. Tourwe, T. Mens, Automated support for framework-based software, in: International Conference on Software Maintenance, 2003. 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 2009 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: 2019 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.eclipse. org/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, 2020.
  • 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, 2011, 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, 2011, 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