Please use this identifier to cite or link to this item:
Title: Graph-based detection of library API imitations
Authors: Sun, C.
Khoo, S.-C. 
Zhang, S.J.
Issue Date: 2011
Citation: Sun, C.,Khoo, S.-C.,Zhang, S.J. (2011). Graph-based detection of library API imitations. IEEE International Conference on Software Maintenance, ICSM : 183-192. ScholarBank@NUS Repository.
Abstract: It has been a common practice nowadays to employ third-party libraries in software projects. Software libraries encapsulate a large number of useful, well-tested and robust functions, so that they can help improve programmers' productivity and program quality. To interact with libraries, programmers only need to invoke Application Programming Interfaces (APIs) exported from libraries. However, programmers do not always use libraries as effectively as expected in their application development. One commonly observed phenomenon is that some library behaviors are re-implemented by client code. Such re-implementation, or imitation, is not just a waste of resource and energy, but its failure to abstract away similar code also tends to make software error-prone. In this paper, we propose a novel approach based on trace subsumption relation of data dependency graphs to detect imitations of library APIs for achieving better software maintainability. Furthermore, we have implemented a prototype of this approach and applied it to ten large real-world open-source projects. The experiments show 313 imitations of explicitly imported libraries with high precision average of 82%, and 116 imitations of static libraries with precision average of 75%. © 2011 IEEE.
Source Title: IEEE International Conference on Software Maintenance, ICSM
ISBN: 9781457706646
DOI: 10.1109/ICSM.2011.6080785
Appears in Collections:Staff Publications

Show full item record
Files in This Item:
There are no files associated with this item.


checked on Apr 13, 2019

Page view(s)

checked on Apr 7, 2019

Google ScholarTM



Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.