Behavioral and Temporal Contracts and its Application to Machine Learning
In modern software engineering, applications programming interfaces (APIs) are important for advancing productivity because they enable reuse. At the same time, it is of essence to make sure that these APIs are being correctly used and the API usage does not introduce new bugs in the code. Two fundamental kind of contracts for APIs: behavioral and temporal, can help establish that. Although, inferring such contracts has been well-studied, our preliminary work finds that the state-of-art techniques to understand the design and infer contracts for APIs are insufficient in all application domains. For example, one of the well-favored technique is to utilize the usage of APIs from large code corpora and build a consensus to infer contracts automatically by differentiating between must cases and coincidences. While this technique is effective, evidence can be found that to infer the entirety of contracts for some APIs, inherent typestate properties need to be encoded in addition to what is captured from the consensus. The key notion of this work is to study the design of such typestate properties and infer these properties automatically in regard to related behavioral, temporal (and hybrid) contracts. As machine learning (ML) is being used in many safety critical applications recently, this motivated us to investigate the behavioral and temporal contracts with inherent typestate properties in this domain.
Committee: Hridesh Rajan (major professor), Carl Chang, Wei Le, Robyn Lutz, Gary Leavens