John BusingeAlexander SerebrenikMark G. J. van den Brand

Today, when constructing software systems, many developers build their systems on top of frameworks. Eclipse is such a framework that has been in existence for over a decade. Like many other evolving software systems, the Eclipse platform has both stable and supported interfaces (''good'') and unstable, discouraged and unsupported interfaces (''bad''). In this study, we investigate Eclipse interface usage by Eclipse third- party plug-ins (ETPs) based on whether they use bad interfaces or not. The investigations, based on empirical analysis present the following observations. First, we discovered that 44 % of the 512 analyzed Eclipse third-party plug-ins depend on ''bad'' interfaces and that developers continue to use ''bad'' interfaces. Second, we have observed that plug-ins that use or extend at least one ''bad'' interface are comparatively larger and use more func- tionality from Eclipse than those that use only ''good'' interfaces. Third, the findings show that the ETPs use a diverse set of ''bad'' interfaces. Fourth, we observed that the reason why the bad interfaces are being eliminated from the ETPs' source code is, because (ETP developers believe) these non-APIs will cause incompatibilities when a version of the ETP is ported to new Eclipse SDK release. Finally, we observed that when developers eliminate problematic ''bad'' interfaces, they either re-implement the same functionality in their own API, find equivalent SDK good interfaces, or completely delete the entities in the ETPs' source code that use the functionality from the ''bad'' interfaces.

[1]  Carlo Ghezzi,et al.  An empirical investigation into a large-scale Java open source code repository , 2010, ESEM '10.

[2]  Oscar Nierstrasz,et al.  The Effect of Object-Oriented Frameworks on Developer Productivity , 1996, Computer.

[3]  Alexander Serebrenik,et al.  Comparative study of software metrics' aggregation techniques , 2010 .

[4]  Wei Wu,et al.  AURA: a hybrid approach to identify framework evolution , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[5]  Alexander Serebrenik,et al.  Survival of Eclipse third-party plug-ins , 2012, 2012 28th IEEE International Conference on Software Maintenance (ICSM).

[6]  Antonio Cisternino,et al.  Trends in Robotic Software Frameworks , 2005, PPSDR@ICRA.

[7]  Zhenchang Xing,et al.  Refactoring Practice: How it is and How it Should be Supported - An Eclipse Case Study , 2006, 2006 22nd IEEE International Conference on Software Maintenance.

[8]  Alexander Serebrenik,et al.  Eclipse API usage: the good and the bad , 2013, Software Quality Journal.

[9]  Alexander Serebrenik,et al.  Process Mining Software Repositories , 2011, 2011 15th European Conference on Software Maintenance and Reengineering.

[10]  John Businge,et al.  Co-evolution of the Eclipse SDK Framework and Its Third-Party Plug-Ins , 2013, 2013 17th European Conference on Software Maintenance and Reengineering.

[11]  Robert J. Walker,et al.  Informing Eclipse API production and consumption , 2007, eclipse '07.

[12]  Andreas Zeller,et al.  Predicting component failures at design time , 2006, ISESE '06.

[13]  Austen Rainer,et al.  Evaluating the Quality and Quantity of Data on Open Source Software Projects , 2005 .

[14]  Andreas Zeller,et al.  Mining API Popularity , 2010, TAIC PART.

[15]  Alexander Serebrenik,et al.  Theil index for aggregation of software metrics values , 2010, 2010 IEEE International Conference on Software Maintenance.

[16]  J. L. Hodges,et al.  Estimates of Location Based on Rank Tests , 1963 .

[17]  Alexander Serebrenik,et al.  An empirical study of the evolution of Eclipse third-party plug-ins , 2010, IWPSE-EVOL '10.

[18]  Meir M. Lehman,et al.  Program evolution: processes of software change , 1985 .

[19]  Jan Bosch,et al.  Object-oriented framework-based software development: problems and experiences , 2000, CSUR.

[20]  Alexander Serebrenik,et al.  You can't control the unfamiliar: A study on the relations between aggregation techniques for software metrics , 2011, 2011 27th IEEE International Conference on Software Maintenance (ICSM).

[21]  Ralf Lämmel,et al.  Large-scale, AST-based API-usage analysis of open-source Java projects , 2011, SAC.

[22]  Miryung Kim,et al.  A graph-based approach to API usage adaptation , 2010, OOPSLA.

[23]  Gerd K Rosenkranz,et al.  A note on the Hodges–Lehmann estimator , 2010, Pharmaceutical statistics.

[24]  Tom Mens,et al.  Automated support for framework-based software , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[25]  Alexander Serebrenik,et al.  Analyzing the Eclipse API Usage: Putting the Developer in the Loop , 2013, 2013 17th European Conference on Software Maintenance and Reengineering.

[26]  Martin P. Robillard,et al.  Recommending adaptive changes for framework evolution , 2011, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[27]  Ralph E. Johnson,et al.  How do APIs evolve? A story of refactoring , 2006 .

[28]  Eric Braude,et al.  Best Principles in the Design of Shared Software , 2009, 2009 33rd Annual IEEE International Computer Software and Applications Conference.