A variety of application domains are interactive in nature: a primary task involves responding to external actions. In this paper, we introduce explicit programming language suppor...
Abstract. Upgrading the software of long-lived, highly-available distributed systems is difficult. It is not possible to upgrade all the nodes in a system at once, since some nodes...
Templates are a powerful but poorly understood feature of the C++ language. Their syntax resembles the parameterized classes of other languages (e.g., of Java). But because C++ sup...
Abstract. Source code querying tools allow programmers to explore relations between different parts of the code base. This paper describes such a tool, named CodeQuest. It combines...
Abstract. We present F(Eml), a language that combines classes, extensible functions, symmetric multiple dispatching, and a practical system for parameterized modules. Parameterized...
Modern programming languages have little or no support for querying objects and collections. Programmers are forced to hand code such queries using nested loops, which is both cumb...
A session takes place between two parties; after establishing a connection, each party interleaves local computations and communications (sending or receiving) with the other. Ses...
A test case consists of two parts: a test input to exercise the program under test and a test oracle to check the correctness of the test execution. A test oracle is often in the f...
The assembly of components that can handle continuously changing data results in programs that are more interactive. Unfortunately, the code that glues together such components is ...