Automatic evaluation of API usability using complexity metrics and visualizations

APIs are one of the most important concepts in today's modern software engineering. They allow software developers to work independently and minimize the impact caused by changes in the implementation of software services. Despite their importance, currently there are only a few approaches that guide the design of an API. In this paper, we present an approach, and associated tool, that allows an API client (developer) to evaluate the usability of an API and decide whether to use it (release it). In this aspect, our approach goes beyond previous approaches by performing this complexity and usability API analysis automatically.

[1]  James D. Herbsleb,et al.  The geography of coordination: dealing with distance in R&D work , 1999, GROUP.

[2]  Martin Fowler Public versus Published Interfaces , 2002, IEEE Softw..

[3]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[4]  Michele Lanza,et al.  Object-Oriented Metrics in Practice - Using Software Metrics to Characterize, Evaluate, and Improve the Design of Object-Oriented Systems , 2006 .

[5]  Vijay K. Vaishnavi,et al.  Predicting Maintenance Performance Using Object-Oriented Design Complexity Metrics , 2003, IEEE Trans. Software Eng..

[6]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[7]  Norman E. Fenton,et al.  Software Metrics: A Rigorous Approach , 1991 .

[8]  J. Henkel,et al.  CatchUp! Capturing and replaying refactorings to support API evolution , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[9]  Joshua J. Bloch How to design a good API and why it matters , 2006, OOPSLA '06.

[10]  Tao Xie,et al.  SpotWeb: Detecting Framework Hotspots and Coldspots via Mining Open Source Code on the Web , 2008, 2008 23rd IEEE/ACM International Conference on Automated Software Engineering.

[11]  Jock D. Mackinlay,et al.  Information visualization using 3D interactive animation , 1993, CACM.

[12]  Shari Lawrence Pfleeger,et al.  Software metrics (2nd ed.): a rigorous and practical approach , 1997 .

[13]  Craig Larman Design - Protected Variation: The Importance of Being Closed , 2001, IEEE Softw..

[14]  Beat Kleiner,et al.  Graphical Methods for Data Analysis , 1983 .

[15]  David S. Rosenblum,et al.  Design and evaluation of a wide-area event notification service , 2001, TOCS.

[16]  Li-Te Cheng,et al.  How a good software practice thwarts collaboration: the multiple roles of APIs in software development , 2004, SIGSOFT '04/FSE-12.

[17]  Jaroslav Tulach Practical API Design: Confessions of a Java Framework Architect , 2008 .

[18]  Brian Ellis,et al.  The Factory Pattern in API Design: A Usability Evaluation , 2007, 29th International Conference on Software Engineering (ICSE'07).

[19]  Brad A. Myers,et al.  Mica: A Web-Search Tool for Finding API Components and Examples , 2006, Visual Languages and Human-Centric Computing (VL/HCC'06).

[20]  John M. Chambers,et al.  Graphical Methods for Data Analysis , 1983 .

[21]  Ben Shneiderman,et al.  Tree visualization with tree-maps: 2-d space-filling approach , 1992, TOGS.

[22]  Harald C. Gall,et al.  Visualizing multiple evolution metrics , 2005, SoftVis '05.

[23]  Jian Pei,et al.  MAPO: mining API usages from open source repositories , 2006, MSR '06.