Program Analysis and Debugging through Ontology
Date17th Jun 2022
Time11:00 AM
Venue Google Meet
PAST EVENT
Details
Program Analysis and Debugging are the processes in software engineering used to discover the vulnerabilities and bugs in the software applications. Many tools have been developed to implement these processes. These tools suffer from three drawbacks. Firstly, the program analysis and debugging processes require many artifacts of software applications such as abstract syntax tree, control-flow graph, library-usage knowledge, static trace or execution trace etc. There is no uniform representation of these artifacts. This impedes communication among the tools related to these processes. Users man-ually handle this issue by rewriting the artifacts in different formats. This compels the need to develop semantic models that can represent the artifacts in a uniform manner. Secondly, some steps in these processes are tightly coupled with the programs. For ex-ample, the results of constant propagation analysis or the execution-traces are coupled to the programs. One cannot store and reuse these results for further analyses. Thirdly, unlike APIs and source codes, the domain-knowledge guiding the development of a program is often not considered as an autonomous artifact. This knowledge is mostly integrated into the programs. This impedes an opportunity to formally specify valida-tion criteria of programs through domain-knowledge.
We propose the use of ontologies to address the above drawbacks. Ontology is a knowledge representation framework that is widely used to standardize the terminology for communication among humans and machines. Its unparalleled ability to integrate information from diversified sources provides a promising solution to address the above drawbacks. We developed three frameworks to demonstrate the marriage of ontologies with the program analysis and debugging processes. The first framework, Ontology-based Program Analysis (OPAL), is a static analysis framework that represents the se-
mantic information of the programs, called static trace, using an ontology. We propose Program Analysis ontology to provide the vocabulary to represent the static trace. Thestatic trace provides an interface to conceptually specify and accelerate the performance
of the client-analyses. The second framework, Ontology-Based Log Debugger (BOLD), is a debugging framework that represents the execution traces of the programs using an ontology. We propose Program Debug ontology to provide the vocabulary for the same.
BOLD’s novel feature is to build high-level abstractions on the execution trace that the end-users can utilize during debugging. The salient feature of both the frameworks is the ability to integrate with knowledge-outside-the-program such as library-usage knowledge to improve the productivity. The third framework, Domain-Assertions for
Programs through Ontology (DAPO), is a dynamic analysis framework that integrates domain-ontologies with software programs. The domain-ontologies are used to specify assertions in computational problems of domains. These domain-ontologies can be used to address many practical problems in software engineering. As an illustration, we
demonstrate the usage of these assertions for fault localization. Experiments with the OPAL and BOLD frameworks suggest improvements in the conciseness of the speci-fications and performance compared to the existing approaches. An intriguing result of the DAPO framework is that it identifies bugs even in the successful test runs that violate the domain-properties.
Speakers
Mr. Dileep Kumar Pattipati, Roll No: CS15D002
CSE

