Mohsen Vakilian

dblp:05/6486 · DBLP profile ↗
← Back
11ranked-venue papers
6as 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 · 11 · 6 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
Program analysis · 28% Software maintenance and evolution · 26% Concurrent programming · 19%
Human-computer interaction and pervasive computing
1 paper
Usability and user experience research · 100%

Topics — the 18 heaviest of 18, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Concurrent programming › deterministic execution
deterministic parallelism
0.332015
Region and Effect Inference for Safe Parallelism (T) · ASE 2015
A type and effect system for deterministic parallel Java · OOPSLA 2009
Inferring Method Effect Summaries for Nested Heap Regions · ASE 2009
Software maintenance and evolution
refactoring
0.322014
Alternate refactoring paths reveal usability problems · ICSE 2014
Use, disuse, and misuse of automated refactorings · ICSE 2012
Program verification
annotation inference
0.212015
Region and Effect Inference for Safe Parallelism (T) · ASE 2015
Software maintenance and evolution
build systems
0.212015
Automated Decomposition of Build Targets · ICSE (1) 2015
Program analysis › static analysis
dependency analysis
0.212015
Automated Decomposition of Build Targets · ICSE (1) 2015
Concurrent programming › concurrency correctness
safe parallelism
0.212015
Region and Effect Inference for Safe Parallelism (T) · ASE 2015
Software maintenance and evolution
software modularity
0.212015
Automated Decomposition of Build Targets · ICSE (1) 2015
Program analysis
static analysis
0.212015
Region and Effect Inference for Safe Parallelism (T) · ASE 2015
Programming languages and type systems
type inference
0.212015
Region and Effect Inference for Safe Parallelism (T) · ASE 2015
Program analysis › type-based analysis
type qualifier inference
0.212015
Cascade: A Universal Programmer-Assisted Type Qualifier Inference Tool · ICSE (1) 2015
Usability and user experience research › evaluation methodology
critical incident method
0.212014
Alternate refactoring paths reveal usability problems · ICSE 2014
Usability and user experience research › usability evaluation
usability problem detection
0.212014
Alternate refactoring paths reveal usability problems · ICSE 2014
Empirical software engineering
developer studies
0.112012
Use, disuse, and misuse of automated refactorings · ICSE 2012
Program analysis
effect analysis
0.112009
Inferring Method Effect Summaries for Nested Heap Regions · ASE 2009
Program analysis › effect analysis
effect inference
0.112009
Inferring Method Effect Summaries for Nested Heap Regions · ASE 2009
Programming languages and type systems › computational effects
type and effect systems
0.112009
A type and effect system for deterministic parallel Java · OOPSLA 2009
Programming languages and type systems
type systems
0.112009
A type and effect system for deterministic parallel Java · OOPSLA 2009
Programming languages and type systems
object-oriented programming
0.012009
A type and effect system for deterministic parallel Java · OOPSLA 2009

Methods — techniques the papers use, named apart from their topics

field study · 0.5interaction log analysis · 0.4critical incident technique · 0.4type qualifier inference · 0.2strongly connected component analysis · 0.2interactive inference · 0.2greedy algorithm · 0.2constraint satisfaction · 0.2interviews · 0.1interaction data collection · 0.1
YearPublicationVenuePosition
2019 Region and effect inference for safe parallelism
Alexandros Tzannes, Stephen Heumann, Lamyaa Eloussi, Mohsen Vakilian, Vikram S. Adve, Michael Han 0003
Autom. Softw. Eng.4
2015 Cascade: A Universal Programmer-Assisted Type Qualifier Inference Tool
abstract
Type qualifier inference tools usually operate in batch mode and assume that the program must not be changed except to add the type qualifiers. In practice, programs must be changed to make them type-correct, and programmers must understand them. Cascade is an interactive type qualifier inference tool that is easy to implement and universal (i.e., it can work for any type qualifier system for which a checker is implemented). It shows that qualifier inference can achieve better results by involving programmers rather than relying solely on automation.
Mohsen Vakilian, Amarin Phaosawasdi, Michael D. Ernst, Ralph E. Johnson
ICSE (1)1
2015 Automated Decomposition of Build Targets
abstract
A (build) target specifies the information that is needed to automatically build a software artifact. This paper focuses on underutilized targets - an important dependency problem that we identified at Google. An underutilized target is one with files not needed by some of its dependents. Underutilized targets result in less modular code, overly large artifacts, slow builds, and unnecessary build and test triggers. To mitigate these problems, programmers decompose underutilized targets into smaller targets. However, manually decomposing a target is tedious and error-prone. Although we prove that finding the best target decomposition is NP-hard, we introduce a greedy algorithm that proposes a decomposition through iterative unification of the strongly connected components of the target. Our tool found that 19,994 of 40,000 Java library targets at Google can be decomposed to at least two targets. The results show that our tool is (1) efficient because it analyzes a target in two minutes on average and (2) effective because for each of 1,010 targets, it would save at least 50% of the total execution time of the tests triggered by the target.
Mohsen Vakilian, Raluca Sauciuc, J. David Morgenthaler, Vahab S. Mirrokni
ICSE (1)1
2015 Region and Effect Inference for Safe Parallelism (T)
abstract
In this paper, we present the first full regions-and-effects inference algorithm for explicitly parallel fork-join programs. We infer annotations inspired by Deterministic Parallel Java (DPJ) for a type-safe subset of C++. We chose the DPJ annotations because they give the strongest safety guarantees of any existing concurrency-checking approach we know of, static or dynamic, and it is also the most expressive static checking system we know of that gives strong safety guarantees. This expressiveness, however, makes manual annotation difficult and tedious, which motivates the need for automatic inference, but it also makes the inference problem very challenging: the code may use region polymorphism, imperative updates with complex aliasing, arbitrary recursion, hierarchical region specifications, and wildcard elements to describe potentially infinite sets of regions. We express the inference as a constraint satisfaction problem and develop, implement, and evaluate an algorithm for solving it. The region and effect annotations inferred by the algorithm constitute a checkable proof of safe parallelism, and it can be recorded both for documentation and for fast and modular safety checking.
Alexandros Tzannes, Stephen Heumann, Lamyaa Eloussi, Mohsen Vakilian, Vikram S. Adve, Michael Han 0003
ASE4
2014 Alternate refactoring paths reveal usability problems
abstract
Modern Integrated Development Environments (IDEs) support many refactorings. Yet, programmers greatly underuse automated refactorings. Recent studies have applied traditional usability testing methodologies such as surveys, lab studies, and interviews to find the usability problems of refactoring tools. However, these methodologies can identify only certain kinds of usability problems. The critical incident technique (CIT) is a general methodology that uncovers usability problems by analyzing troubling user interactions. We adapt CIT to refactoring tools and show that alternate refactoring paths are indicators of the usability problems of refactoring tools. We define an alternate refactoring path as a sequence of user interactions that contains cancellations, reported messages, or repeated invocations of the refactoring tool. We evaluated our method on a large corpus of refactoring usage data, which we collected during a field study on 36 programmers over three months. This method revealed 15 usability problems, 13 of which were previously unknown. We reported these problems and proposed design improvements to Eclipse developers. The developers acknowledged all of the problems and have already fixed four of them. This result suggests that analyzing alternate paths is effective at discovering the usability problems of interactive program transformation (IPT) tools.
Mohsen Vakilian, Ralph E. Johnson
ICSE1
2013 A Comparative Study of Manual and Automated Refactorings
Stas Negara, Nicholas Chen, Mohsen Vakilian, Ralph E. Johnson, Danny Dig
ECOOP3
2013 A Compositional Paradigm of Automating Refactorings
Mohsen Vakilian, Nicholas Chen, Roshanak Zilouchian Moghaddam, Stas Negara, Ralph E. Johnson
ECOOP1
2012 Is It Dangerous to Use Version Control Histories to Study Source Code Evolution?
Stas Negara, Mohsen Vakilian, Nicholas Chen, Ralph E. Johnson, Danny Dig
ECOOP2
2012 Use, disuse, and misuse of automated refactorings
abstract
Though refactoring tools have been available for more than a decade, research has shown that programmers underutilize such tools. However, little is known about why programmers do not take advantage of these tools. We have conducted a field study on programmers in their natural settings working on their code. As a result, we collected a set of interaction data from about 1268 hours of programming using our minimally intrusive data collectors. Our quantitative data show that programmers prefer lightweight methods of invoking refactorings, usually perform small changes using the refactoring tool, proceed with an automated refactoring even when it may change the behavior of the program, and rarely preview the automated refactorings. We also interviewed nine of our participants to provide deeper insight about the patterns that we observed in the behavioral data. We found that programmers use predictable automated refactorings even if they have rare bugs or change the behavior of the program. This paper reports some of the factors that affect the use of automated refactorings such as invocation method, awareness, naming, trust, and predictability and the major mismatches between programmers' expectations and automated refactorings. The results of this work contribute to producing more effective tools for refactoring complex software.
Mohsen Vakilian, Nicholas Chen, Stas Negara, Balaji Ambresh Rajkumar, Brian P. Bailey, Ralph E. Johnson
ICSE1
2009 Inferring Method Effect Summaries for Nested Heap Regions
abstract
Effect systems are important for reasoning about the side effects of a program. Although effect systems have been around for decades, they have not been widely adopted in practice because of the large number of annotations that they require. A tool that infers effects automatically can make effect systems practical. We present an effect inference algorithm and an Eclipse plug-in, DPJizer, which alleviate the burden of writing effect annotations for a language called Deterministic Parallel Java (DPJ). The key novel feature of the algorithm is the ability to infer effects on nested heap regions. Besides DPJ, we also illustrate how the algorithm can be used for a different effect system based on object ownership. Our experience shows that DPJizer is both useful and effective: (i) inferring effect annotations automatically saves significant programming burden; and (ii) inferred effects are more precise than those written manually, and are fine-grained enough to enable the compiler to prove determinism of the program.
Mohsen Vakilian, Danny Dig, Robert L. Bocchino Jr., Jeffrey Overbey, Vikram S. Adve, Ralph E. Johnson
ASE1
2009 A type and effect system for deterministic parallel Java
abstract
Today's shared-memory parallel programming models are complex and error-prone.While many parallel programs are intended to be deterministic, unanticipated thread interleavings can lead to subtle bugs and nondeterministic semantics. In this paper, we demonstrate that a practical type and effect system can simplify parallel programming by guaranteeing deterministic semantics with modular, compile-time type checking even in a rich, concurrent object-oriented language such as Java. We describe an object-oriented type and effect system that provides several new capabilities over previous systems for expressing deterministic parallel algorithms.We also describe a language called Deterministic Parallel Java (DPJ) that incorporates the new type system features, and we show that a core subset of DPJ is sound. We describe an experimental validation showing thatDPJ can express a wide range of realistic parallel programs; that the new type system features are useful for such programs; and that the parallel programs exhibit good performance gains (coming close to or beating equivalent, nondeterministic multithreaded programs where those are available).
Robert L. Bocchino Jr., Vikram S. Adve, Danny Dig, Sarita V. Adve, Stephen Heumann, Rakesh Komuravelli, Jeffrey Overbey, Patrick Simmons, Hyojin Sung, Mohsen Vakilian
OOPSLA10