EDBT 2026 Demo / reviewers in the wild / expert
Dacong Yan
dblp:51/8164
· DBLP profile ↗
11ranked-venue papers
4as first author
0since 2021 · last 2018
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 11 · 4 first-authorSystems, architecture and hardware · 2 · 1 first-author
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
5 papers |
Program analysis · 66% Debugging and program repair · 12% Software testing · 12% | |
| Computer architecture, parallel and distributed computing, and storage systems
1 paper |
Performance modeling and evaluation · 100% |
Topics — the 10 heaviest of 11, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program analysis
static analysis |
0.6 | 3 | 2015 | Static Window Transition Graphs for Android (T) · ASE 2015 Static Control-Flow Analysis of User-Driven Callbacks in Android Applications · ICSE (1) 2015 Demand-driven context-sensitive alias analysis for Java · ISSTA 2011 |
Program analysis › static analysis › interprocedural analysis
context-sensitive analysis |
0.2 | 1 | 2015 | Static Control-Flow Analysis of User-Driven Callbacks in Android Applications · ICSE (1) 2015 |
Program analysis
control flow analysis |
0.2 | 1 | 2015 | Static Control-Flow Analysis of User-Driven Callbacks in Android Applications · ICSE (1) 2015 |
Software testing › test generation
GUI test generation |
0.2 | 1 | 2015 | Static Window Transition Graphs for Android (T) · ASE 2015 |
Operating systems › resource management
memory management |
0.1 | 1 | 2012 | Uncovering performance problems in Java applications with reference propagation profiling · ICSE 2012 |
Performance modeling and evaluation
profiling |
0.1 | 1 | 2012 | Uncovering performance problems in Java applications with reference propagation profiling · ICSE 2012 |
Program analysis › static analysis
pointer analysis |
0.1 | 1 | 2011 | Demand-driven context-sensitive alias analysis for Java · ISSTA 2011 |
Debugging and program repair
fault localization |
0.1 | 1 | 2010 | BPGen: an automated breakpoint generator for debugging · ICSE (2) 2010 |
Program analysis › static analysis › interprocedural analysis
call graph analysis |
0.1 | 1 | 2015 | Static Control-Flow Analysis of User-Driven Callbacks in Android Applications · ICSE (1) 2015 |
Compilers and program optimization
compiler optimization |
0.0 | 1 | 2012 | Uncovering performance problems in Java applications with reference propagation profiling · ICSE 2012 |
Methods — techniques the papers use, named apart from their topics
reference propagation graph · 0.3profiling · 0.3window transition graph · 0.2static analysis · 0.2path traversal · 0.2interprocedural analysis · 0.2graph reachability · 0.2field sensitivity · 0.1demand-driven analysis · 0.1context-free-language reachability · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2018 | Static window transition graphs for Android
Shengqian Yang, Haowei Wu 0004, Hailong Zhang 0006, Chandrasekar Swaminathan, Dacong Yan, Atanas Rountev |
Autom. Softw. Eng. | 6 |
| 2015 | Static Control-Flow Analysis of User-Driven Callbacks in Android ApplicationsabstractAndroid software presents many challenges for static program analysis. In this work we focus on the fundamental problem of static control-flow analysis. Traditional analyses cannot be directly applied to Android because the applications are framework-based and event-driven. We consider user-event-driven components and the related sequences of callbacks from the Android framework to the application code, both for lifecycle callbacks and for event handler callbacks. We propose a program representation that captures such callback sequences. This representation is built using context-sensitive static analysis of callback methods. The analysis performs graph reachability by traversing context-compatible interprocedural control-flow paths and identifying statements that may trigger callbacks, as well as paths that avoid such statements. We also develop a client analysis that builds a static model of the application's GUI. Experimental evaluation shows that this context-sensitive approach leads to substantial precision improvements, while having practical cost. Shengqian Yang, Dacong Yan, Atanas Rountev |
ICSE (1) | 2 |
| 2015 | Static Window Transition Graphs for Android (T)abstractThis work develops a static analysis to create a model of the behavior of an Android application's GUI. We propose the window transition graph (WTG), a model representing the possible GUI window sequences and their associated events and callbacks. A key component and contribution of our work is the careful modeling of the stack of currently-active windows, the changes to this stack, and the effects of callbacks related to these changes. To the best of our knowledge, this is the first detailed study of this important static analysis problem for Android. We develop novel analysis algorithms for WTG construction and traversal, based on this modeling of the window stack. We also describe an application of the WTG for GUI test generation, using path traversals. The evaluation of the proposed algorithms indicates their effectiveness and practicality. Shengqian Yang, Hailong Zhang 0006, Haowei Wu 0004, Dacong Yan, Atanas Rountev |
ASE | 5 |
| 2014 | Static Reference Analysis for GUI Objects in Android Software
Atanas Rountev, Dacong Yan |
CGO | 2 |
| 2014 | LeakChecker: Practical Static Memory Leak Detection for Managed Languages
Dacong Yan, Guoqing Harry Xu, Shengqian Yang, Atanas Rountev |
CGO | 1 |
| 2013 | Systematic testing for resource leaks in Android applicationsabstractThe use of mobile devices and the complexity of their software continue to grow rapidly. This growth presents significant challenges for software correctness and performance. In addition to traditional defects, a key consideration are defects related to the limited resources available on these devices. Resource leaks in an application, due to improper management of resources, can lead to slowdowns, crashes, and negative user experience. Despite a large body of existing work on leak detection, testing for resource leaks remains a challenging problem. We propose a novel and comprehensive approach for systematic testing for resource leaks in Android software. Similar to existing testing techniques, the approach is based on a GUI model, but is focused specifically on coverage criteria aimed at resource leak defects. These criteria are based on neutral cycles: sequences of GUI events that should have a “neutral” effect and should not lead to increases in resource usage. Several important categories of neutral cycles are considered in the proposed test coverage criteria. Experimental evaluation and case studies were performed on eight Android applications. The approach exposed 18 resource leak defects, 12 of which were previously unknown. These results provide motivation for future work on analysis, testing, and prevention of resource leaks in Android software. Dacong Yan, Shengqian Yang, Atanas Rountev |
ISSRE | 1 |
| 2012 | Static Detection of Loop-Invariant Data Structures
Guoqing Harry Xu, Dacong Yan, Atanas Rountev |
ECOOP | 2 |
| 2012 | Uncovering performance problems in Java applications with reference propagation profilingabstractMany applications suffer from run-time bloat: excessive memory usage and work to accomplish simple tasks. Bloat significantly affects scalability and performance, and exposing it requires good diagnostic tools. We present a novel analysis that profiles the run-time execution to help programmers uncover potential performance problems. The key idea of the proposed approach is to track object references, starting from object creation statements, through assignment statements, and eventually statements that perform useful operations. This propagation is abstracted by a representation we refer to as a reference propagation graph. This graph provides path information specific to reference producers and their run-time contexts. Several client analyses demonstrate the use of reference propagation profiling to uncover runtime inefficiencies. We also present a study of the properties of reference propagation graphs produced by profiling 36 Java programs. Several cases studies discuss the inefficiencies identified in some of the analyzed programs, as well as the significant improvements obtained after code optimizations. Dacong Yan, Guoqing Harry Xu, Atanas Rountev |
ICSE | 1 |
| 2011 | Demand-driven context-sensitive alias analysis for JavaabstractSoftware tools for program understanding, transformation, verification, and testing often require an efficient yet highly-precise alias analysis. Typically this is done by computing points-to information, from which alias queries can be answered. This paper presents a novel context-sensitive, demand-driven alias analysis for Java that achieves efficiency by answering alias queries directly, instead of relying on an underlying points-to analysis. The analysis is formulated as a context-free-language (CFL) reachability problem over a language that models calling context sensitivity, and over another language that models field sensitivity (i.e., flow of reference values through fields of heap objects). Dacong Yan, Guoqing Harry Xu, Atanas Rountev |
ISSTA | 1 |
| 2010 | BPGen: an automated breakpoint generator for debuggingabstractDuring debugging processes, breakpoints are frequently used to inspect and understand runtime behaviors of programs. Although most development environments offer convenient breakpoint facilities, the use of these environments usually requires considerable human efforts in order to generate useful breakpoints. Before setting breakpoints or typing breakpoint conditions, developers usually have to make some judgements and hypotheses on the basis of their observations and experience. To reduce this kind of efforts we present a tool, named BPGen, to automatically generate breakpoints for debugging. BPGen uses three well-known dynamic fault localization techniques in tandem to identify suspicious program statements and states, through which both conditional and unconditional breakpoints are generated. BPGen is implemented as an Eclipse plugin for supplementing the existing Eclipse JDT debugger. Dacong Yan, Jianjun Zhao 0001, Yuting Chen 0001, Shengqian Yang |
ICSE (2) | 2 |
| 2010 | Understanding parallelism-inhibiting dependences in sequential Java programsabstractMany existing sequential components, libraries, and applications will need to be re-engineered for parallelism. This work proposes a dynamic analysis of sequential Java programs that helps a programmer to understand bottlenecks for parallelism. The analysis measures the parallelism available in the program by considering a hypothetical parallel execution in which the code within a method executes sequentially, but each caller will execute in parallel with its callees. A best-case scenario is assumed: every statement executes as early as possible, as long as all dependences from the sequential program are satisfied. The idealized speedup under this model is a measure of the method-level parallelism inherent in the program, independent of hardware and JVMs. The analysis employs bytecode instrumentation and an online algorithm which tracks the reads and writes of relevant memory locations during a run of the sequential program. If the best-case parallelism is low, this likely means that the program cannot be easily re-engineered into a scalable parallel version. In experiments with 26 Java programs, we observed this situation for most programs. This problem is sometimes due to programmer decisions that were perfectly reasonable for a sequential program but would be detrimental to the performance of any parallel version. To pinpoint such decisions, we propose an approach that employs the dynamic analysis to automatically find memory locations whose read and write operations decrease the available parallelism. In three case studies, we demonstrate how these bottlenecks can be identified and eliminated using the proposed approach. Atanas Rountev, Kevin Van Valkenburgh, Dacong Yan, P. Sadayappan |
ICSM | 3 |