Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.

Dacong Yan

dblp:51/8164 · DBLP profile ↗
← Back
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

TopicWeightPapersLastEvidence papers
Program analysis
static analysis
0.632015
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.212015
Static Control-Flow Analysis of User-Driven Callbacks in Android Applications · ICSE (1) 2015
Program analysis
control flow analysis
0.212015
Static Control-Flow Analysis of User-Driven Callbacks in Android Applications · ICSE (1) 2015
Software testing › test generation
GUI test generation
0.212015
Static Window Transition Graphs for Android (T) · ASE 2015
Operating systems › resource management
memory management
0.112012
Uncovering performance problems in Java applications with reference propagation profiling · ICSE 2012
Performance modeling and evaluation
profiling
0.112012
Uncovering performance problems in Java applications with reference propagation profiling · ICSE 2012
Program analysis › static analysis
pointer analysis
0.112011
Demand-driven context-sensitive alias analysis for Java · ISSTA 2011
Debugging and program repair
fault localization
0.112010
BPGen: an automated breakpoint generator for debugging · ICSE (2) 2010
Program analysis › static analysis › interprocedural analysis
call graph analysis
0.112015
Static Control-Flow Analysis of User-Driven Callbacks in Android Applications · ICSE (1) 2015
Compilers and program optimization
compiler optimization
0.012012
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
YearPublicationVenuePosition
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 Applications
abstract
Android 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)
abstract
This 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
ASE5
2014 Static Reference Analysis for GUI Objects in Android Software
Atanas Rountev, Dacong Yan
CGO2
2014 LeakChecker: Practical Static Memory Leak Detection for Managed Languages
Dacong Yan, Guoqing Harry Xu, Shengqian Yang, Atanas Rountev
CGO1
2013 Systematic testing for resource leaks in Android applications
abstract
The 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
ISSRE1
2012 Static Detection of Loop-Invariant Data Structures
Guoqing Harry Xu, Dacong Yan, Atanas Rountev
ECOOP2
2012 Uncovering performance problems in Java applications with reference propagation profiling
abstract
Many 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
ICSE1
2011 Demand-driven context-sensitive alias analysis for Java
abstract
Software 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
ISSTA1
2010 BPGen: an automated breakpoint generator for debugging
abstract
During 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 programs
abstract
Many 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
ICSM3