Evaluating application programming interfaces as communication artefacts

Application programming interfaces (APIs) allow the reuse of software artefacts by providing abstractions to other software layers, and their design is critical to enable the effective use of the underlying software and avoid programming errors. As such, the role of an API designer should be strengthened in any software project that has reuse among its goals. Also, we should be able to evaluate the effectiveness of an API in communicating its design to programmers and identify the tools and techniques that help the designers to accomplish this task, so that APIs may be easier to understand and use. This paper describes a work in progress that proposes the use of a combined semiotic and cognitive method to evaluate APIs as an artefact mediating the communication process between designers and programmers, and also aims to investigate some possibilities of enhancing this communication.

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

[2]  Clarisse Sieckenius de Souza,et al.  A qualitative human-centric evaluation of flexibility in middleware implementations , 2012, Empirical Software Engineering.

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

[4]  David Hovemeyer Simple and Effective Static Analysis to Find Bugs , 2005 .

[5]  Jeff Kramer,et al.  Is abstraction the key to computing? , 2007, CACM.

[6]  Christopher Scaffidi,et al.  Using intelligent tutors to enhance student learning of application programming interfaces , 2011 .

[7]  Clarisse Sieckenius de Souza,et al.  Can inspection methods generate valid new knowledge in HCI? The case of semiotic inspection , 2010, Int. J. Hum. Comput. Stud..

[8]  John M. Carroll,et al.  Perceived Self-Efficacy and APIs , 2010, PPIG.

[9]  Joshua Bloch Effective Java (2nd Edition) (The Java Series) , 2008 .

[10]  Curtis Becker,et al.  Using the cognitive dimensions framework to measure the usability of a class library , 2003, PPIG.

[11]  Jeannette M. Wing Computational thinking and thinking about computing , 2008, IPDPS.

[12]  Clarisse Sieckenius de Souza,et al.  Combining cognitive, semiotic and discourse analysis to explore the power of notations in visual programming , 2012, 2012 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

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

[14]  Kumiko Tanaka-Ishii,et al.  Semiotics of Programming , 2010 .

[15]  Gary T. Leavens,et al.  Behavioral interface specification languages , 2012, CSUR.

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

[17]  Neal M. Gafter,et al.  Java Puzzlers: Traps, Pitfalls, and Corner Cases , 2005 .

[18]  Michi Henning,et al.  The Rise and Fall of CORBA , 2006, ACM Queue.

[19]  Alan F. Blackwell,et al.  CHAPTER 5 – Notational Systems—The Cognitive Dimensions of Notations Framework , 2003 .

[20]  Umer Farooq,et al.  API peer reviews: a method for evaluating usability of application programming interfaces , 2010, CSCW '10.

[21]  Bertrand Meyer,et al.  Applying 'design by contract' , 1992, Computer.

[22]  Roberto Ierusalimschy,et al.  Passing a language through the eye of a needle , 2011, CACM.

[23]  Clarisse Sieckenius de Souza,et al.  The Semiotic Engineering of Human-Computer Interaction , 2005 .

[24]  Li-Te Cheng,et al.  Sometimes you need to see through walls: a field study of application programming interfaces , 2004, CSCW.

[25]  Gilles Dubochet Computer Code as a Medium for Human Communication: Are Programming Languages Improving? , 2009, PPIG.

[26]  Jean-Marc Jézéquel,et al.  Making Components Contract Aware , 1999, Computer.

[27]  Cleidson R. B. de Souza,et al.  The Impact of Interface Complexity on Failures : an Empirical Analysis and Implications for Tool Design , 2010 .