EDBT 2026 Demo / reviewers in the wild / expert
Edward Aftandilian
dblp:98/5242
· DBLP profile ↗
8ranked-venue papers
3as first author
0since 2021 · last 2019
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 8 · 3 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
7 papers |
Software maintenance and evolution · 27% Debugging and program repair · 19% Program analysis · 17% |
Topics — the 17 heaviest of 18, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Debugging and program repair
automated program repair |
0.4 | 1 | 2019 | DeepDelta: learning to repair compilation errors · ESEC/SIGSOFT FSE 2019 |
Compilers and program optimization
code generation |
0.4 | 1 | 2019 | DeepDelta: learning to repair compilation errors · ESEC/SIGSOFT FSE 2019 |
Debugging and program repair › automated program repair
compilation error repair |
0.4 | 1 | 2019 | DeepDelta: learning to repair compilation errors · ESEC/SIGSOFT FSE 2019 |
Software maintenance and evolution
refactoring |
0.4 | 1 | 2019 | Type migration in ultra-large-scale codebases · ICSE 2019 |
Software maintenance and evolution › refactoring
type migration |
0.4 | 1 | 2019 | Type migration in ultra-large-scale codebases · ICSE 2019 |
Software testing
fault detection |
0.3 | 1 | 2017 | Detecting argument selection defects · Proc. ACM Program. Lang. 2017 |
Program analysis
static analysis |
0.3 | 1 | 2017 | Detecting argument selection defects · Proc. ACM Program. Lang. 2017 |
Program analysis
dynamic analysis |
0.2 | 2 | 2011 | Asynchronous assertions · OOPSLA 2011 What can the GC compute efficiently?: a language for heap assertions at GC time · OOPSLA 2010 |
Runtime systems and virtual machines
garbage collection |
0.2 | 2 | 2010 | What can the GC compute efficiently?: a language for heap assertions at GC time · OOPSLA 2010 GC assertions: using the garbage collector to check heap properties · PLDI 2009 |
Software maintenance and evolution › build systems
build failure analysis |
0.2 | 1 | 2014 | Programmers' build errors: a case study (at google) · ICSE 2014 |
Empirical software engineering
mining software repositories |
0.2 | 1 | 2014 | Programmers' build errors: a case study (at google) · ICSE 2014 |
Program verification › dynamic verification › runtime verification
assertion checking |
0.1 | 1 | 2011 | Asynchronous assertions · OOPSLA 2011 |
Concurrent programming
concurrency bugs |
0.1 | 1 | 2011 | Asynchronous assertions · OOPSLA 2011 |
Software maintenance and evolution
software ecosystems |
0.1 | 1 | 2019 | Type migration in ultra-large-scale codebases · ICSE 2019 |
Program analysis
error detection |
0.1 | 1 | 2009 | GC assertions: using the garbage collector to check heap properties · PLDI 2009 |
Requirements engineering and software design › interface design
API design |
0.1 | 1 | 2017 | Detecting argument selection defects · Proc. ACM Program. Lang. 2017 |
Program analysis › static analysis
bug detection |
0.0 | 1 | 2011 | Asynchronous assertions · OOPSLA 2011 |
Methods — techniques the papers use, named apart from their topics
neural machine translation · 0.4mapreduce · 0.4deep neural network · 0.4AST diff · 0.4statistical threshold tuning · 0.3identifier name analysis · 0.3empirical study · 0.2build log analysis · 0.2snapshot consistency · 0.1checking threads · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2019 | Type migration in ultra-large-scale codebasesabstractType migration is a refactoring activity in which an existing type is replaced with another one throughout the source code. Manually performing type migration is tedious as programmers need to find all instances of the type to be migrated, along with its dependencies that propagate over assignment operations, method hierarchies, and subtypes. Existing automated approaches for type migration are not adequate for ultra-large-codebases - they perform an intensive whole-program analysis that does not scale. If we could represent the type structure of the program as graphs, then we could employ a MAPREDUCE parallel and distributed process that scales to hundreds of millions of LOC. We implemented this approach as an IDE-independent tool called T2R, which integrates with most build systems. We evaluated T2R's accuracy, usefulness and scalability on seven open source projects and one proprietary codebase of 300M LOC. T2R generated 130 type migration patches, of which the original developers accepted 98%. Ameya Ketkar, Ali Mesbah 0001, Davood Mazinanian, Danny Dig, Edward Aftandilian |
ICSE | 5 |
| 2019 | DeepDelta: learning to repair compilation errorsabstractProgrammers spend a substantial amount of time manually repairing code that does not compile. We observe that the repairs for any particular error class typically follow a pattern and are highly mechanical. We propose a novel approach that automatically learns these patterns with a deep neural network and suggests program repairs for the most costly classes of build-time compilation failures. We describe how we collect all build errors and the human-authored, in-progress code changes that cause those failing builds to transition to successful builds at Google. We generate an AST diff from the textual code changes and transform it into a domain-specific language called Delta that encodes the change that must be made to make the code compile. We then feed the compiler diagnostic information (as source) and the Delta changes that resolved the diagnostic (as target) into a Neural Machine Translation network for training. For the two most prevalent and costly classes of Java compilation errors, namely missing symbols and mismatched method signatures, our system called DeepDelta, generates the correct repair changes for 19,314 out of 38,788 (50%) of unseen compilation errors. The correct changes are in the top three suggested fixes 86% of the time on average. Ali Mesbah 0001, Andrew C. Rice, Emily Johnston, Nick Glorioso, Edward Aftandilian |
ESEC/SIGSOFT FSE | 5 |
| 2017 | Detecting argument selection defectsabstractIdentifier names are often used by developers to convey additional information about the meaning of a program over and above the semantics of the programming language itself. We present an algorithm that uses this information to detect argument selection defects, in which the programmer has chosen the wrong argument to a method call in Java programs. We evaluate our algorithm at Google on 200 million lines of internal code and 10 million lines of predominantly open-source external code and find defects even in large, mature projects such as OpenJDK, ASM, and the MySQL JDBC. The precision and recall of the algorithm vary depending on a sensitivity threshold. Higher thresholds increase precision, giving a true positive rate of 85%, reporting 459 true positives and 78 false positives. Lower thresholds increase recall but lower the true positive rate, reporting 2,060 true positives and 1,207 false positives. We show that this is an order of magnitude improvement on previous approaches. By analyzing the defects found, we are able to quantify best practice advice for API design and show that the probability of an argument selection defect increases markedly when methods have more than five arguments. Andrew C. Rice, Edward Aftandilian, Ciera Jaspan, Emily Johnston, Michael Pradel, Yulissa Arroyo-Paredes |
Proc. ACM Program. Lang. | 2 |
| 2014 | Programmers' build errors: a case study (at google)abstractBuilding is an integral part of the software development process. However, little is known about the compiler errors that occur in this process. In this paper, we present an empirical study of 26.6 million builds produced during a period of nine months by thousands of developers. We describe the workflow through which those builds are generated, and we analyze failure frequency, compiler error types, and resolution efforts to fix those compiler errors. The results provide insights on how a large organization build process works, and pinpoints errors for which further developer support would be most effective. Hyunmin Seo, Caitlin Sadowski, Sebastian G. Elbaum, Edward Aftandilian, Robert W. Bowdidge |
ICSE | 4 |
| 2012 | Building Useful Program Analysis Tools Using an Extensible Java CompilerabstractLarge software companies need customized tools to manage their source code. These tools are often built in an ad-hoc fashion, using brittle technologies such as regular expressions and home-grown parsers. Changes in the language cause the tools to break. More importantly, these ad-hoc tools often do not support uncommon-but-valid code code patterns. We report our experiences building source-code analysis tools at Google on top of a third-party, open-source, extensible compiler. We describe three tools in use on our Java code base. The first, Strict Java Dependencies, enforces our dependency policy in order to reduce JAR file sizes and testing load. The second, error-prone, adds new error checks to the compilation process and automates repair of those errors at a whole-code base scale. The third, Thindex, reduces the indexing burden for a Java IDE so that it can support Google-sized projects. Edward Aftandilian, Raluca Sauciuc, Siddharth Priya, Sundaresan Krishnan |
SCAM | 1 |
| 2011 | Asynchronous assertionsabstractAssertions are a familiar and widely used bug detection technique. Traditional assertion checking, however, is performed synchronously, imposing its full cost on the runtime of the program. As a result, many useful kinds of checks, such as data structure invariants and heap analyses, are impractical because they lead to extreme slowdowns. We present a solution that decouples assertion evaluation from program execution: assertions are checked asynchronously by separate checking threads while the program continues to execute. Our technique guarantees that asynchronous evaluation always produces the same result as synchronous evaluation, even if the program concurrently modifies the program state. The checking threads evaluate each assertion on a consistent snapshot of the program state as it existed at the moment the assertion started. Edward Aftandilian, Samuel Z. Guyer, Martin T. Vechev, Eran Yahav |
OOPSLA | 1 |
| 2010 | What can the GC compute efficiently?: a language for heap assertions at GC timeabstractWe present the DeAL language for heap assertions that are efficiently evaluated during garbage collection time. DeAL is a rich, declarative, logic-based language whose programs are guaranteed to be executable with good whole-heap locality, i.e., within a single traversal over every live object on the heap and a finite neighborhood around each object. As a result, evaluating DeAL programs incurs negligible cost: for simple assertion checking at each garbage collection, the end-to-end execution slowdown is below 2%. DeAL is integrated into Java as a VM extension and we demonstrate its efficiency and expressiveness with several applications and properties from the past literature. Christoph Reichenbach, Neil Immerman, Yannis Smaragdakis, Edward Aftandilian, Samuel Z. Guyer |
OOPSLA | 4 |
| 2009 | GC assertions: using the garbage collector to check heap propertiesabstractThis paper introduces GC assertions, a system interface that programmers can use to check for errors, such as data structure invariant violations, and to diagnose performance problems, such as memory leaks. GC assertions are checked by the garbage collector, which is in a unique position to gather information and answer questions about the lifetime and connectivity of objects in the heap. By piggybacking on existing garbage collector computations, our system is able to check heap properties with very low overhead -- around 3% of total execution time -- low enough for use in a deployed setting. Edward Aftandilian, Samuel Z. Guyer |
PLDI | 1 |