EDBT 2026 Demo / reviewers in the wild / expert
Dawei Qi
dblp:72/7252
· DBLP profile ↗
13ranked-venue papers
8as first author
1since 2021 · last 2024
0000-0002-1290-0183ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 11 · 7 first-authorSystems, architecture and hardware · 1 · 1 first-author · 1 since 2021Applied, interdisciplinary, general and emerging computing · 1
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
9 papers |
Debugging and program repair · 31% Program analysis · 24% Software maintenance and evolution · 18% | |
| Interdisciplinary, comprehensive, and emerging computing
1 paper |
Bioinformatics and computational biology · 100% |
Topics — the 16 heaviest of 18, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program analysis
symbolic execution |
0.4 | 3 | 2013 | Path exploration based on symbolic output · ACM Trans. Softw. Eng. Methodol. 2013 Path exploration based on symbolic output · SIGSOFT FSE 2011 Darwin: an approach for debugging evolving programs · ESEC/SIGSOFT FSE 2009 |
Debugging and program repair
regression debugging |
0.3 | 2 | 2013 | Path exploration based on symbolic output · ACM Trans. Softw. Eng. Methodol. 2013 DARWIN: An approach to debugging evolving programs · ACM Trans. Softw. Eng. Methodol. 2012 |
Program analysis › symbolic execution
path exploration |
0.3 | 2 | 2013 | Path exploration based on symbolic output · ACM Trans. Softw. Eng. Methodol. 2013 Path exploration based on symbolic output · SIGSOFT FSE 2011 |
Software testing › test process › test design
test suite design |
0.3 | 2 | 2013 | Path exploration based on symbolic output · ACM Trans. Softw. Eng. Methodol. 2013 Path exploration based on symbolic output · SIGSOFT FSE 2011 |
Bioinformatics and computational biology › structural bioinformatics › protein structure classification
protein fold classification |
0.3 | 1 | 2017 | An ensemble approach to protein fold classification by integration of template-based assignment and support vector machine classifier · Bioinform. 2017 |
Bioinformatics and computational biology
protein structure prediction |
0.3 | 1 | 2017 | An ensemble approach to protein fold classification by integration of template-based assignment and support vector machine classifier · Bioinform. 2017 |
Debugging and program repair
fault localization |
0.2 | 2 | 2012 | DARWIN: An approach to debugging evolving programs · ACM Trans. Softw. Eng. Methodol. 2012 Darwin: an approach for debugging evolving programs · ESEC/SIGSOFT FSE 2009 |
Program verification
contract verification |
0.2 | 1 | 2015 | Software Change Contracts · ACM Trans. Softw. Eng. Methodol. 2015 |
Software maintenance and evolution › software evolution
software change |
0.2 | 1 | 2015 | Software Change Contracts · ACM Trans. Softw. Eng. Methodol. 2015 |
Debugging and program repair
automated program repair |
0.2 | 1 | 2013 | SemFix: program repair via semantic analysis · ICSE 2013 |
Debugging and program repair › automated program repair
semantics-based program repair |
0.2 | 1 | 2013 | SemFix: program repair via semantic analysis · ICSE 2013 |
Software testing
test generation |
0.2 | 2 | 2013 | Test generation to expose changes in evolving programs · ASE 2010 Expressing and checking intended changes via software change contracts · ISSTA 2013 |
Debugging and program repair
root cause analysis |
0.1 | 1 | 2012 | DARWIN: An approach to debugging evolving programs · ACM Trans. Softw. Eng. Methodol. 2012 |
Program verification › dynamic verification
runtime verification |
0.1 | 1 | 2012 | Software change contracts · SIGSOFT FSE 2012 |
Program analysis › symbolic execution
dynamic symbolic execution |
0.1 | 1 | 2010 | Test generation to expose changes in evolving programs · ASE 2010 |
Software maintenance and evolution › software defects
regression bugs |
0.1 | 2 | 2012 | Software change contracts · SIGSOFT FSE 2012 Darwin: an approach for debugging evolving programs · ESEC/SIGSOFT FSE 2009 |
Methods — techniques the papers use, named apart from their topics
symbolic execution · 0.6java modeling language · 0.4dynamic checking · 0.4template-based assignment · 0.3support vector machine · 0.3HHsearch · 0.3static checking · 0.2program synthesis · 0.2formal semantics · 0.2constraint solving · 0.2user study · 0.1control-flow divergence analysis · 0.1symbolic output partitioning · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2024 | Smooth Transition Switching Strategy for Sensorless Control of PMSM with Extended State Observer and Phase-Locked LoopabstractThe article introduces an innovative method for sensorless control of Permanent Magnet Synchronous Machines (PMSM), ensuring stable operation across the entire speed range. It adopts an Extended State Observer (ESO) based on pulse injection of elevated-frequency voltage for low-speed rotor position estimation and utilizes a Phase-Locked Loop (PLL) based Sliding Mode Observer for medium to high-speed rotor position estimation. Building upon this foundation, a smooth and continuous cubic function proportional switching strategy is proposed. This strategy considers the impact of discontinuities in the derivative of the switching proportional coefficient on the smoothness of speed transitions, ensuring a smooth transition of derivatives at switching instants. Simulation of this sensorless control switching strategy is conducted using Matlab/Simulink software. Simulation outcomes indicate that the suggested switching method enables accurate rotor position and speed estimation with seamless transitions. Dawei Qi, Dongxue Wang, Guangming Wu |
INDIN | 1 |
| 2017 | An ensemble approach to protein fold classification by integration of template-based assignment and support vector machine classifierabstractMotivation: Protein fold classification is a critical step in protein structure prediction. There are two possible ways to classify protein folds. One is through template-based fold assignment and the other is ab-initio prediction using machine learning algorithms. Combination of both solutions to improve the prediction accuracy was never explored before. Results: We developed two algorithms, HH-fold and SVM-fold for protein fold classification. HH-fold is a template-based fold assignment algorithm using the HHsearch program. SVM-fold is a support vector machine-based ab-initio classification algorithm, in which a comprehensive set of features are extracted from three complementary sequence profiles. These two algorithms are then combined, resulting to the ensemble approach TA-fold. We performed a comprehensive assessment for the proposed methods by comparing with ab-initio methods and template-based threading methods on six benchmark datasets. An accuracy of 0.799 was achieved by TA-fold on the DD dataset that consists of proteins from 27 folds. This represents improvement of 5.4-11.7% over ab-initio methods. After updating this dataset to include more proteins in the same folds, the accuracy increased to 0.971. In addition, TA-fold achieved >0.9 accuracy on a large dataset consisting of 6451 proteins from 184 folds. Experiments on the LE dataset show that TA-fold consistently outperforms other threading methods at the family, superfamily and fold levels. The success of TA-fold is attributed to the combination of template-based fold assignment and ab-initio classification using features from complementary sequence profiles that contain rich evolution information. Availability and Implementation: http://yanglab.nankai.edu.cn/TA-fold/. Contact: [email protected] or [email protected]. Supplementary information: Supplementary data are available at Bioinformatics online. Jiaqi Xia, Zhen-Ling Peng, Dawei Qi, Hongbo Mu, Jianyi Yang 0002 |
Bioinform. | 3 |
| 2015 | Software Change ContractsabstractSoftware errors often originate from incorrect changes, including incorrect program fixes, incorrect feature updates, and so on. Capturing the intended program behavior explicitly via contracts is thus an attractive proposition. In our recent work, we had espoused the notion of “change contracts” to express the intended program behavior changes across program versions. Change contracts differ from program contracts in that they do not require the programmer to describe the intended behavior of those program features which are unchanged across program versions. In this work, we present the formal semantics of our change contract language built on top of the Java modeling language (JML). Our change contract language can describe behavioral as well as structural changes. We evaluate the expressivity of the change contract language via a survey given to final-year undergraduate students. The survey results enable to understand the usability of our change contract language for purposes of writing contracts, comprehending written contracts, and modifying programs according to given change contracts. Finally, we develop both dynamic and static checkers for change contracts, and show how they can be used in maintaining software changes. We use our dynamic checker to automatically suggest tests that manifest violations of change contracts. Meanwhile, we use our static checker to verify that a program is changed as specified in its change contract. Apart from verification, our static checker also performs various other software engineering tasks, such as localizing the buggy method, detecting/debugging regression errors, and classifying the cause for a test failure as either error in production code or error in test code. Jooyong Yi, Dawei Qi, Shin Hwei Tan, Abhik Roychoudhury |
ACM Trans. Softw. Eng. Methodol. | 2 |
| 2014 | SQLR: Grammar-Guided Validation of SQL Injection SanitizersabstractThe SQL injection attack is one of the major threats to web applications. Through malicious inputs, attackers can cause data leakage and damage, and even remote code execution on the victim servers. A common solution is to use input sanitizers to filter out inputs that can result in SQL injection attacks. In this paper, we propose a novel solution, SQLR, to validate SQL sanitizers by systematically generating SQL injection attack patterns. Our approach uses the SQL grammar to guide the enumeration of malicious SQL queries efficiently, and summarizes the queries into patterns that can be used by existing solutions. SQLR successfully identified new attack patterns and weaknesses in sanitizers used in several real-world web applications. Sai Sathyanarayan, Dawei Qi, Zhenkai Liang, Abhik Roychoudary |
ICECCS | 2 |
| 2013 | SemFix: program repair via semantic analysisabstractDebugging consumes significant time and effort in any major software development project. Moreover, even after the root cause of a bug is identified, fixing the bug is non-trivial. Given this situation, automated program repair methods are of value. In this paper, we present an automated repair method based on symbolic execution, constraint solving and program synthesis. In our approach, the requirement on the repaired code to pass a given set of tests is formulated as a constraint. Such a constraint is then solved by iterating over a layered space of repair expressions, layered by the complexity of the repair code. We compare our method with recently proposed genetic programming based repair on SIR programs with seeded bugs, as well as fragments of GNU Coreutils with real bugs. On these subjects, our approach reports a higher success-rate than genetic programming based repair, and produces a repair faster. Hoang D. T. Nguyen, Dawei Qi, Abhik Roychoudhury, Satish Chandra 0001 |
ICSE | 2 |
| 2013 | Expressing and checking intended changes via software change contractsabstractSoftware errors often originate from incorrect changes, including incorrect program fixes, incorrect feature updates and so on. Capturing the intended program behavior explicitly via contracts is thus an attractive proposition. In our recent work, we had espoused the notion of "change contracts" to express the intended program behavior changes across program versions. Change contracts differ from program contracts in that they do not require the programmer to describe the intended behavior of program features which are unchanged across program versions. In this work, we present the formal semantics of our change contract language built on top of the Java Modeling Language (JML). Our change contract language can describe behavioral as well as structural changes. We evaluate the expressivity of the change contract language via a survey given to final year undergraduate students. The survey results enable us to understand the usability of our change contract language for purposes of writing contracts, comprehending written contracts, and modifying programs according to given change contracts. Finally, we discuss the tool support developed for our change contract language. The tool support enables (i) test generation to witness contract violation, as well as (ii) automated repair of certain tests which are broken due to program changes. Jooyong Yi, Dawei Qi, Shin Hwei Tan, Abhik Roychoudhury |
ISSTA | 2 |
| 2013 | Path exploration based on symbolic outputabstractEfficient program path exploration is important for many software engineering activities such as testing, debugging, and verification. However, enumerating all paths of a program is prohibitively expensive. In this article, we develop a partitioning of program paths based on the program output. Two program paths are placed in the same partition if they derive the output similarly, that is, the symbolic expression connecting the output with the inputs is the same in both paths. Our grouping of paths is gradually created by a smart path exploration. Our experiments show the benefits of the proposed path exploration in test-suite construction. Our path partitioning produces a semantic signature of a program—describing all the different symbolic expressions that the output can assume along different program paths. To reason about changes between program versions, we can therefore analyze their semantic signatures. In particular, we demonstrate the applications of our path partitioning in testing and debugging of software regressions. Dawei Qi, Hoang D. T. Nguyen, Abhik Roychoudhury |
ACM Trans. Softw. Eng. Methodol. | 1 |
| 2012 | Software change contractsabstractIncorrect program changes including regression bugs, incorrect bug-fixes, incorrect feature updates are pervasive in software. These incorrect program changes affect software quality and are difficult to detect/correct. In this paper, we propose the notion of "change contracts" to avoid incorrect program changes. Change contracts formally specify the intended effect of program changes. Incorrect program changes are detected when they are checked with respect to the change contracts. We design a change contract language for Java programs and a dynamic checking system for our change contract language. We conduct a preliminary user study to check the expressiveness of our change contract language and find that the language is expressive enough to capture a wide variety of real-life changes in three large software projects (i.e., Ant, JMeter, log4j). Finally, our contract checking system detects several real-life incorrect changes in these three software projects via runtime checking of the change contracts. Dawei Qi, Jooyong Yi, Abhik Roychoudhury |
SIGSOFT FSE | 1 |
| 2012 | DARWIN: An approach to debugging evolving programsabstractBugs in programs are often introduced when programs evolve from a stable version to a new version. In this article, we propose a new approach called DARWIN for automatically finding potential root causes of such bugs. Given two programs—a reference program and a modified program—and an input that fails on the modified program, our approach uses symbolic execution to automatically synthesize a new input that (a) is very similar to the failing input and (b) does not fail. We find the potential cause(s) of failure by comparing control-flow behavior of the passing and failing inputs and identifying code fragments where the control flows diverge. A notable feature of our approach is that it handles hard-to-explain bugs, like code missing errors, by pointing to code in the reference program. We have implemented this approach and conducted experiments using several real-world applications, such as the Apache Web server, libPNG (a library for manipulating PNG images), and TCPflow (a program for displaying data sent through TCP connections). In each of these applications, DARWIN was able to localize bugs with high accuracy. Even though these applications contain several thousands of lines of code, DARWIN could usually narrow down the potential root cause(s) to less than ten lines. In addition, we find that the inputs synthesized by DARWIN provide additional value by revealing other undiscovered errors. Dawei Qi, Abhik Roychoudhury, Zhenkai Liang, Kapil Vaswani |
ACM Trans. Softw. Eng. Methodol. | 1 |
| 2011 | Locating failure-inducing environment changesabstractTraditionally, debugging refers to the process of locating the program portions which are responsible for a program failure. However, a program also fails when the execution environment does not meet the requirement/assumption of the program. Unfortunately, few existing debugging techniques addresses the problem of changing operating system environment. In this paper, we propose an effective record-replay technique called Semi-replay to solve this problem. Semi-replay records all the essential interactions between an application and its underlying operating system environment where it successfully executed. Semi-replay then allows the recorded interactions to be partially replayed and partially executed in another operating system to identify those interactions which contribute to the root cause of the application failure induced by the environment changes. We have conducted three case studies on real-life programs which show the significance and efficiency of the Semi-replay technique in locating failure-inducing environment changes. We have also implemented a tool for the Linux kernel to demonstrate the feasibility of the proposed approach. Dawei Qi, Minh Ngoc Ngo, Abhik Roychoudhury |
PASTE | 1 |
| 2011 | Path exploration based on symbolic outputabstractEfficient program path exploration is important for many software engineering activities such as testing, debugging and verification. However, enumerating all paths of a program is prohibitively expensive. In this paper, we develop a partitioning of program paths based on the program output. Two program paths are placed in the same partition if they derive the output similarly, that is, the symbolic expression connecting the output with the inputs is the same in both paths. Our grouping of paths is gradually created by a smart path exploration. Our experiments show the benefits of the proposed pathexploration in test-suite construction. Dawei Qi, Hoang D. T. Nguyen, Abhik Roychoudhury |
SIGSOFT FSE | 1 |
| 2010 | Test generation to expose changes in evolving programsabstractSoftware constantly undergoes changes throughout its life cycle, and thereby it evolves. As changes are introduced into a code base, we need to make sure that the effect of the changes is thoroughly tested. For this purpose, it is important to generate test cases that can stress the effect of a given change. In this paper, we propose an automatic test generation solution to this problem. Given a change c, we use dynamic symbolic execution to generate a test input t, which stresses the change. This is done by ensuring (i) the change c is executed by t, and (ii) the effect of c is observable in the output produced by the test t. To construct a change-reaching input, our technique uses distance in control-dependency graph to guide path exploration towards the change. Then, our technique identifies the common programming patterns that may prevent a given change from affecting the program's output. For each of these patterns we propose methods to tune the change-reaching input into an input that reaches the change and propagates the effect of the change to the output. Our experimental results show that our test generation technique is effective in generating change-exposing inputs for real-world programs. Dawei Qi, Abhik Roychoudhury, Zhenkai Liang |
ASE | 1 |
| 2009 | Darwin: an approach for debugging evolving programsabstractDebugging refers to the laborious process of finding causes of program failures. Often, such failures are introduced when a program undergoes changes and evolves from a stable version to a new, modified version. In this paper, we propose an automated approach for debugging evolving programs. Given two programs (a reference, stable program and a new, modified program) and an input that fails on the modified program, our approach uses concrete as well as symbolic execution to synthesize new inputs that differ marginally from the failing input in their control flow behavior. A comparison of the execution traces of the failing input and the new inputs provides critical clues to the root-cause of the failure. A notable feature of our approach is that it handles hard-to-explain bugs like code missing errors by pointing to the relevant code in the reference program. We have implemented our approach in a tool called DARWIN. We have conducted experiments with several real-life case studies, including real-world web servers and the libPNG library for manipulating PNG images. Our experience from these experiments points to the efficacy of DARWIN in pinpointing bugs. Moreover, while localizing a given observable error, the new inputs synthesized by DARWIN can reveal other undiscovered errors. Dawei Qi, Abhik Roychoudhury, Zhenkai Liang, Kapil Vaswani |
ESEC/SIGSOFT FSE | 1 |