Mining library specifications using inductive logic programming

Sriram Sankaranarayanan, Franjo Ivančić, Aarti Gupta

Research output: Chapter in Book/Report/Conference proceedingConference contribution

24 Citations (Scopus)

Abstract

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.

Original languageEnglish (US)
Title of host publicationICSE'08
Subtitle of host publicationProceedings of the 30th International Conference on Software Engineering 2008
Pages131-140
Number of pages10
DOIs
StatePublished - Dec 15 2008
Externally publishedYes
Event30th International Conference on Software Engineering 2008, ICSE'08 - Leipzig, Germany
Duration: May 10 2008May 18 2008

Publication series

NameProceedings - International Conference on Software Engineering

Other

Other30th International Conference on Software Engineering 2008, ICSE'08
CountryGermany
CityLeipzig
Period5/10/085/18/08

Fingerprint

Inductive logic programming (ILP)
Application programming interfaces (API)
Specifications
Reverse engineering
Interfaces (computer)

All Science Journal Classification (ASJC) codes

  • Software

Cite this

Sankaranarayanan, S., Ivančić, F., & Gupta, A. (2008). Mining library specifications using inductive logic programming. In ICSE'08: Proceedings of the 30th International Conference on Software Engineering 2008 (pp. 131-140). (Proceedings - International Conference on Software Engineering). https://doi.org/10.1145/1368088.1368107
Sankaranarayanan, Sriram ; Ivančić, Franjo ; Gupta, Aarti. / Mining library specifications using inductive logic programming. ICSE'08: Proceedings of the 30th International Conference on Software Engineering 2008. 2008. pp. 131-140 (Proceedings - International Conference on Software Engineering).
@inproceedings{5b59f14fed5a4a7f9bf4fc9f154500da,
title = "Mining library specifications using inductive logic programming",
abstract = "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.",
author = "Sriram Sankaranarayanan and Franjo Ivančić and Aarti Gupta",
year = "2008",
month = "12",
day = "15",
doi = "https://doi.org/10.1145/1368088.1368107",
language = "English (US)",
isbn = "9781605580791",
series = "Proceedings - International Conference on Software Engineering",
pages = "131--140",
booktitle = "ICSE'08",

}

Sankaranarayanan, S, Ivančić, F & Gupta, A 2008, Mining library specifications using inductive logic programming. in ICSE'08: Proceedings of the 30th International Conference on Software Engineering 2008. Proceedings - International Conference on Software Engineering, pp. 131-140, 30th International Conference on Software Engineering 2008, ICSE'08, Leipzig, Germany, 5/10/08. https://doi.org/10.1145/1368088.1368107

Mining library specifications using inductive logic programming. / Sankaranarayanan, Sriram; Ivančić, Franjo; Gupta, Aarti.

ICSE'08: Proceedings of the 30th International Conference on Software Engineering 2008. 2008. p. 131-140 (Proceedings - International Conference on Software Engineering).

Research output: Chapter in Book/Report/Conference proceedingConference contribution

TY - GEN

T1 - Mining library specifications using inductive logic programming

AU - Sankaranarayanan, Sriram

AU - Ivančić, Franjo

AU - Gupta, Aarti

PY - 2008/12/15

Y1 - 2008/12/15

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.

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 - https://doi.org/10.1145/1368088.1368107

DO - https://doi.org/10.1145/1368088.1368107

M3 - Conference contribution

SN - 9781605580791

T3 - Proceedings - International Conference on Software Engineering

SP - 131

EP - 140

BT - ICSE'08

ER -

Sankaranarayanan S, Ivančić F, Gupta A. Mining library specifications using inductive logic programming. In ICSE'08: Proceedings of the 30th International Conference on Software Engineering 2008. 2008. p. 131-140. (Proceedings - International Conference on Software Engineering). https://doi.org/10.1145/1368088.1368107