Some structural measures of API usability

In this age of collaborative software development, the importance of usable APIs is well recognized. There already exists a rich body of literature that addresses issues ranging from how to design usable APIs to assessing qualitatively the usability of a given API. However, there does not yet exist a set of general‐purpose metrics that can be pressed into service for a more quantitative assessment of API usability. The goal of this paper is to remedy this shortcoming in the literature. Our work presents a set of formulas that examine the API method declarations from the perspective of several commonly held beliefs regarding what makes APIs difficult to use. We validate the numerical characterizations of API usability as produced by our metrics through the APIs of several software systems. Copyright © 2013 John Wiley & Sons, Ltd.

[1]  Martin P. Robillard,et al.  A field study of API learning obstacles , 2011, Empirical Software Engineering.

[2]  Sergiu M. Dascalu,et al.  Unit-level test adequacy criteria for visual dataflow languages and a testing methodology , 2008, TSEM.

[3]  Philip J. Guo,et al.  Two studies of opportunistic programming: interleaving web foraging, learning, and writing code , 2009, CHI.

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

[5]  David Holmes,et al.  Java Concurrency in Practice , 2006 .

[6]  Avinash C. Kak,et al.  API-Based and Information-Theoretic Metrics for Measuring the Quality of Software Modularization , 2007, IEEE Transactions on Software Engineering.

[7]  Brad A. Myers,et al.  Mapping the Space of API Design Decisions , 2007, IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC 2007).

[8]  Avinash C. Kak,et al.  Metrics for Measuring the Quality of Modularization of Large-Scale Object-Oriented Software , 2008, IEEE Transactions on Software Engineering.

[9]  Michi Henning API: Design Matters , 2007, ACM Queue.

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

[11]  Andre Doucette On API usability: An analysis and an evaluation tool , 2008 .

[12]  Tommy Burnette,et al.  Alice: lessons learned from building a 3D system for novices , 2000, CHI.

[13]  Richard Baskerville,et al.  Generalizing Generalizability in Information Systems Research , 2003, Inf. Syst. Res..

[14]  Diomidis Spinellis,et al.  Power laws in software , 2008, TSEM.

[15]  S. M. Robertson Postsecondary Education & Autism: Developing an Online Community , 2007 .

[16]  Jeffrey Stylos,et al.  Usability Implications of Requiring Parameters in Objects' Constructors , 2007, 29th International Conference on Software Engineering (ICSE'07).

[17]  Martin P. Robillard,et al.  What Makes APIs Hard to Learn? Answers from Developers , 2009, IEEE Software.

[18]  Eleni Stroulia,et al.  API-Evolution Support with Diff-CatchUp , 2007, IEEE Transactions on Software Engineering.

[19]  Lin Li,et al.  Obstacles in Using Frameworks and APIs: An Exploratory Study of Programmers' Newsgroup Discussions , 2011, 2011 IEEE 19th International Conference on Program Comprehension.

[20]  N. Cowan The magical number 4 in short-term memory: A reconsideration of mental storage capacity , 2001, Behavioral and Brain Sciences.

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

[22]  Brad Abrams,et al.  Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries , 2005 .

[23]  Sae Young Jeong,et al.  Usability challenges for enterprise service-oriented architecture APIs , 2008, 2008 IEEE Symposium on Visual Languages and Human-Centric Computing.

[24]  Ralph E. Johnson,et al.  How do APIs evolve? A story of refactoring , 2006, J. Softw. Maintenance Res. Pract..

[25]  Daqing Hou,et al.  CriticAL: A critic for APIs and libraries , 2012, 2012 20th IEEE International Conference on Program Comprehension (ICPC).

[26]  W. Shadish,et al.  Experimental and Quasi-Experimental Designs for Generalized Causal Inference , 2001 .

[27]  Miryung Kim,et al.  Ref-Finder: a refactoring reconstruction tool based on logic query templates , 2010, FSE '10.

[28]  Vladimir I. Levenshtein,et al.  Binary codes capable of correcting deletions, insertions, and reversals , 1965 .

[29]  Clay Spinuzzi,et al.  Building More Usable APIs , 1998, IEEE Softw..

[30]  James D. Herbsleb,et al.  Improving API documentation usability with knowledge pushing , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[31]  Cleidson R. B. de Souza,et al.  Automatic evaluation of API usability using complexity metrics and visualizations , 2009, 2009 31st International Conference on Software Engineering - Companion Volume.

[32]  Vlad Gorelik,et al.  One Step Ahead , 2007, ACM Queue.

[33]  Ines Gloeckner Programming With Objects A Comparative Presentation Of Object Oriented Programming With C And Java , 2016 .