The Impact of Interface Complexity on Failures : an Empirical Analysis and Implications for Tool Design

Information hiding is a cornerstone principle of modern software engineering. Interfaces are central to realizing the benefits of information hiding, but despite their widespread use, designing good interfaces is not a trivial activity. Particular design choices can have a significant detrimental effect on quality or development productivity. In this paper, we examine the relative impact of interface complexity on the failure proneness of source code files using data from two large-scale systems from two distinct software companies. Our analyses showed that increases in the complexity of interfaces are associated with increases the failure proneness of source code files. Building on our empirical results, we develop a set of implications for designing tools aimed at assisting developers to cope with the detrimental impact of interface complexity.

[1]  Nachiappan Nagappan,et al.  Using Software Dependencies and Churn Metrics to Predict Field Failures: An Empirical Case Study , 2007, First International Symposium on Empirical Software Engineering and Measurement (ESEM 2007).

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

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

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

[5]  Chris F. Kemerer,et al.  Software complexity and software maintenance: A survey of empirical research , 1995, Ann. Softw. Eng..

[6]  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).

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

[8]  Horst Zuse,et al.  Software complexity: Measures and methods , 1990 .

[9]  Nachiappan Nagappan,et al.  Predicting defects using network analysis on dependency graphs , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

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

[11]  Joel Ossher,et al.  Sourcerer: An internet-scale software repository , 2009, 2009 ICSE Workshop on Search-Driven Development-Users, Infrastructure, Tools and Evaluation.

[12]  Dewayne E. Perry,et al.  EMPIRICAL STUDY OF SOFTWARE INTERFACE FAULTS. , 1985 .

[13]  William G. Griswold,et al.  The structure and value of modularity in software design , 2001, ESEC/FSE-9.

[14]  D HerbslebJames,et al.  Software Dependencies, Work Dependencies, and Their Impact on Failures , 2009 .

[15]  Sriram K. Rajamani,et al.  Automatically validating temporal safety properties of interfaces , 2001, SPIN '01.

[16]  Norman E. Fenton,et al.  Quantitative Analysis of Faults and Failures in a Complex Software System , 2000, IEEE Trans. Software Eng..

[17]  James D. Herbsleb,et al.  Architectures, coordination, and distance: Conway’s law and beyond , 1999 .

[18]  W. Buxton Human-Computer Interaction , 1988, Springer Berlin Heidelberg.

[19]  Glenford J. Myers,et al.  Structured Design , 1974, IBM Syst. J..

[20]  Judith S. Olson,et al.  Distance Matters , 2000, Hum. Comput. Interact..

[21]  Lionel C. Briand,et al.  Exploring the relationships between design measures and software quality in object-oriented systems , 2000, J. Syst. Softw..

[22]  Harvey P. Siy,et al.  Predicting Fault Incidence Using Software Change History , 2000, IEEE Trans. Software Eng..

[23]  Victor R. Basili,et al.  Software errors and complexity: an empirical investigation , 1993 .

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

[25]  Audris Mockus,et al.  Software Dependencies, Work Dependencies, and Their Impact on Failures , 2009, IEEE Transactions on Software Engineering.

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

[27]  Manuel E. Sosa,et al.  Component Connectivity, Team Network Structure and the Attention to Technical Interfaces in Complex Product Development , 2007 .

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

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

[30]  Maurice H. Halstead,et al.  Elements of software science , 1977 .

[31]  James D. Herbsleb,et al.  Collaboration In Software Engineering Projects: A Theory Of Coordination , 2006, ICIS.

[32]  Richard N. Taylor,et al.  Software architecture: foundations, theory, and practice , 2009, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[33]  Elaine J. Weyuker,et al.  Evaluating Software Complexity Measures , 2010, IEEE Trans. Software Eng..

[34]  D. Watts,et al.  Small Worlds: The Dynamics of Networks between Order and Randomness , 2001 .

[35]  Bill Curtis,et al.  A field study of the software design process for large systems , 1988, CACM.

[36]  James D. Herbsleb,et al.  Socio-technical congruence: a framework for assessing the impact of technical and work dependencies on software development productivity , 2008, ESEM '08.

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

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

[39]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

[40]  Kim B. Clark,et al.  Design Rules: The Power of Modularity , 2000 .

[41]  A. Hassan,et al.  C-REX : An Evolutionary Code Extractor for C , 2004 .

[42]  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.

[43]  Gordon B. Davis,et al.  Software Development Practices, Software Complexity, and Software Maintenance Performance: a Field Study , 1998 .

[44]  Harald C. Gall,et al.  Detection of logical coupling based on product release history , 1998, Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272).

[45]  Norman E. Fenton,et al.  A Critique of Software Defect Prediction Models , 1999, IEEE Trans. Software Eng..

[46]  Peter Sommerlad,et al.  Pattern-Oriented Software Architecture , 1996 .

[47]  H. F. Li,et al.  An Empirical Study of Software Metrics , 1987, IEEE Transactions on Software Engineering.

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

[49]  Alfred V. Aho,et al.  Do Crosscutting Concerns Cause Defects? , 2008, IEEE Transactions on Software Engineering.

[50]  Gregor Kiczales,et al.  Beyond the Black Box: Open Implementation , 1996, IEEE Softw..

[51]  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.

[52]  M. E. Conway HOW DO COMMITTEES INVENT , 1967 .

[53]  Audris Mockus,et al.  Globalization by Chunking: A Quantitative Approach , 2001, IEEE Softw..

[54]  Victor R. Basili,et al.  The influence of organizational structure on software quality , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[55]  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.