Distributed Systems Group

SWFTI (started in 2005)

Survivable Work Flow Transaction Infrastructure (SWFTI) is an architecture and software system that supports executing and managing cross-domain fault-tolerant distributed applications. SWFTI supports persistent Byzantine Fault Tolerant replication of both passive data objects and active autonomous software components. This gives rise to high levels of fault tolerance for all components of critical, long-running applications. The degree of fault tolerance (and implicitly the degree of replication) can be specified individually on a per-component basis for flexible resource allocation. SWFTI's strong isolation guarantees ensure that the correctness of highly fault-tolerant components cannot be compromised by faulty components in other parts of the system. For example, a faulty data server cannot force the states to diverge in the replicas in a fault-tolerant ongoing computation. SWFTI also features a robust execution model, based on the execution of guarded, distributed transactions. This execution model is well suited to cross-domain distributed workflow applications. The model also complements SWFTI's mechanism for dynamic evolution, which achieves atomic on-the-fly upgrades of distributed applications without suspending service for the duration of the upgrade.

JPie (1999-2007)

JPie is a unique software tool for live construction of Java applications. It is designed to make the power of software development accessible to a wider audience, as well as to improve the productivity of seasoned programmers.

JPie treats programming as an application in its own right, rather than a behind-the-scences activity. This enables inexperienced programmers to achieve early success, without the steep learning curve that precedes development in a traditional textual language.

JPie enables interactive software construction through the direct manipulation of semantic units using proven object-oriented programming techniques.

In JPie, all aspects of a programs behavior can be modified while the program runs, without the edit-compile-test cycle that routinely bogs down software development. When a class is modified in JPie, even existing objects are affected by the change.

JPie's integrated thread-oriented integrated debugger supports fine-grain inspection of the execution and on-the-fly program modification and exception handling.

JPie's integrated interface builder supports property connections and automatic event handling.

JPie transparently exposes the Java programming model and provides access to compiled classes in the underlying language, enabling development of sophisticated object-oriented applications and establishing a pathway for programmers who want to transition into more traditional textual programming.

Project Olympus (1995-2000)

High-performance distributed multimedia applications, supporting reliable high-bandwidth interaction among many users and system components, are central to the future of human communication. As applications for the use of digital media grow more diverse and complex, effective communication and synthesis of data will require abstractions supporting end-user construction and integration of applications that may be customized dynamically. These abstractions must be implemented without sacrificing the end-to-end communication performance demanded by critical applications. Project Olympus has led to a software development environment and underlying hardware support for media streaming and end-user construction of high-performance distributed multimedia applications from reusable self-describing software components.

Programmers Playground (1993-2000)

Playground provides software tools for both programmers and end-users for creating high performance, Internet-based, distributed applications. The Playground software library supports the creation of modular software building blocks using an intuitive "plug and play" metaphor in which data ports of distributed modules are configured together to establish communication streams. Additional software tools provide end-users with the ability to combine these components into a distributed application, create graphical user interfaces (GUIs) for the applications, and make the applications available to other users on the World Wide Web. Application paradigms that are well suited to Playground include client/server applications, remote collaboration, applications requiring multi-platform communication, and computationally intensive applications consisting of concurrently running components.