TY - GEN
T1 - Mining library specifications using inductive logic programming
AU - Sankaranarayanan, Sriram
AU - Ivančić, Franjo
AU - Gupta, Aarti
PY - 2008
Y1 - 2008
N2 - Software libraries organize useful functionalities in order to promote modularity and code reuse. A typical library is used by client programs through an application programming interface (API) that hides its internals from the client. Typically, the rules governing the correct usage of the API are documented informally. In many cases, libraries may have complex API usage rules and unclear documentation. As a result, the behaviour of the library under some corner cases may not be well understood by the programmer. Formal specifications provide a precise understanding of the API behaviour. We propose a methodology for learning interface specifications using Inductive Logic Programming (ILP). Our technique runs several unit tests on the library in order to generate relations describing the operation of the library. The data collected from these tests are used by an inductive learner to obtain rich Datalog/Prolog specifications. Such specifications capture essential properties of interest to the user. They may be used for applications such as reverse engineering the library internals or constructing checks on the application code to enforce proper API usage along with other properties of interest.
AB - Software libraries organize useful functionalities in order to promote modularity and code reuse. A typical library is used by client programs through an application programming interface (API) that hides its internals from the client. Typically, the rules governing the correct usage of the API are documented informally. In many cases, libraries may have complex API usage rules and unclear documentation. As a result, the behaviour of the library under some corner cases may not be well understood by the programmer. Formal specifications provide a precise understanding of the API behaviour. We propose a methodology for learning interface specifications using Inductive Logic Programming (ILP). Our technique runs several unit tests on the library in order to generate relations describing the operation of the library. The data collected from these tests are used by an inductive learner to obtain rich Datalog/Prolog specifications. Such specifications capture essential properties of interest to the user. They may be used for applications such as reverse engineering the library internals or constructing checks on the application code to enforce proper API usage along with other properties of interest.
KW - Datalog
KW - Inductive logic programming
KW - Machine learning
KW - Software specification
KW - Verification
UR - http://www.scopus.com/inward/record.url?scp=57349129534&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=57349129534&partnerID=8YFLogxK
U2 - 10.1145/1368088.1368107
DO - 10.1145/1368088.1368107
M3 - Conference contribution
AN - SCOPUS:57349129534
SN - 9781605580791
T3 - Proceedings - International Conference on Software Engineering
SP - 131
EP - 140
BT - ICSE'08
T2 - 30th International Conference on Software Engineering 2008, ICSE'08
Y2 - 10 May 2008 through 18 May 2008
ER -