Tag software engineering

CC’12

This week, Cong is presenting his work on synthesizing program inverses at the 21st International Conference on Compiler Construction (CC) 2012, in Talinn, Estonia. A program inverse enables speculative parallelization, but also has applications in program debugging and software engineering (e.g., automatically creating “undo” functionality). His paper describes new compiler-based analysis and transformation techniques for the problem, specifically by introducing two new intermediate program representations: a value search graph, which extends single static assignment form to convert the synthesis problem into a graph search problem, and a route graph, which is a subset of the VSG that represents an inverse. Read the gory details below.

Dagstuhl seminar.

Attendees of the Dagstuhl Seminar 10191 on Program Composition and Optimization

Nerds from the software engineering and the autotuning/HPC communities attempt to understand each other’s language and find common research ground at the Dagstuhl Seminar on Program Composition and Optimization (10191), at which Rich was an attendee.

Falcon @ ICSE’10

Today, Sangmin will present his work on Falcon, a tool to localize faults in concurrent software, at the International Conference on Software Engineering (ICSE), which is being held in Cape Town, South Africa. Here’s a brief summary of the main ideas underlying Sangmin’s work.

Prior work suggests that concurrency bugs can be described heuristically by patterns of thread-interleaved memory references. However, just because a particular pattern occurs at run-time does not mean it is associated with a bug. Thus, the Falcon technique works as follows. First, we assume that a given program can be executed multiple times, and that there is a test oracle that tells us whether an execution “passed” or “failed.” Falcon then works by (a) observing both patterns and test execution outcomes; and (b) analyzes this data statistically to determine which patterns are most associated with the failing runs, and ranks those patterns. Since the patterns themselves correspond to locations in the source code, this overall analysis effectively gives the programmer a ranked list of program locations to inspect. In Sangmin’s benchmark suite, the first or second most highly ranked patterns/locations were always associated with the bug! By contrast, prior efforts of which we are aware produce either an unranked list of patterns, or a ranked list of individual statements rather than complete patterns.

ICSE’10 paper accepted

Sangmin Park‘s paper on fault localization applied to concurrent programs has been accepted for publication! The paper will appear at the ACM/IEEE International Conference on Software Engineering (ICSE), to be held in Cape Town, South Africa in May 2010. This paper describes a novel technique for pinpointing the cause of program failure in multithreaded Java software. Sangmin designed and implemented this approach in a prototype tool called “Falcon.” This effort is joint between Prof. Mary Jean Harrold(Sangmin’s primary advisor) and The HPC Garage.