CAREER: Maximal and Scalable Unified Debugging for the JVM Ecosystem
University Of Texas At Dallas, Richardson TX
Investigators
Abstract
The software industry all over the world has contributed to the massive culture of support around Java, one of the most popular programming languages. The Java runtime, or Java Virtual Machine (JVM), has become a software ecosystem on its own. Nowadays, hundreds of popular JVM languages (including Kotlin, Scala, and Groovy) have been developed/adopted under different platforms (including Oracle JDK and Android SDK), build systems (including Gradle and Maven), and JVM implementations (including HotSpot and OpenJ9). For example, Google just promoted Kotlin to the No.1 preferred language for Android development at Google I/O 2019. The huge and heterogeneous ecosystem of JVM raises unique challenges to automated debugging, including both fault localization and repair. This project proposes to re-think the role of a foundational concept of program mutation, that is, systematic program transformation, in automated debugging. Program mutation has been widely adopted in traditional mutation testing and program repair, and the investigator conjectures, based on preliminary work, that it can be used to transform and advance the state-of-the-art in automated debugging for software written with technologies from the entire JVM ecosystem and beyond. Specifically, the project focuses on the following research thrusts: (1) unifying both fault localization and repair via program mutation to boost each other, (2) automatically inferring up-to-date advanced mutators from big code corpora for maximal unified debugging, since existing program mutators are often limited and may easily become obsolete, (3) developing novel techniques to optimize patch executions for scalable unified debugging, since patch execution can be extremely time-consuming, and (4) supporting unified debugging of the entire heterogeneous JVM ecosystem. The project will unify program mutations across various dimensions for the first time, e.g., across JVM languages and platforms, across code types (including source, test, and build code), and even across JVM boundaries. Ultimately, the project aims for a practical debugging system to benefit JVM ecosystem developers all over the world. The overarching idea of unified debugging can also substantially impact the ways that both researchers and practitioners view, design, and apply automated debugging -- fault localization always requires manual repair while program repair only works for some bugs; in contrast, unified debugging can support the most automated debugging possible for each bug, and broaden the effective range of the entire program repair area to all possible bugs. The project will integrate the research results into SE curriculum, K-12 camps, software testing contests, and industrial collaborations. This award reflects NSF's statutory mission and has been deemed worthy of support through evaluation using the Foundation's intellectual merit and broader impacts review criteria.
View original record on NSF Award Search →