See also the slides that accompany this position paper.
The Caltech Infospheres Project deals with the theory and implementation of compositional systems that support peer-to-peer communication among persistent multithreaded distributed objects. Though our implementation uses Java, TCP/IP, and the Web, the ideas apply to any object-oriented system that supports messages and threads. A key concern is the development of reliable distributed applications by composing software components in structured ways.
Millions use the World Wide Web for information exchange and client-server applications. Several institutions are developing distributed web-based applications in commerce and collaboration. A number of these examples are implemented using industry standards such as Java and CORBA.
The Caltech Infospheres Project does research on theory, methods and tools that support the development of reliable distributed applications. A focus of our project is on methods of composing software components that are networks of communicating persistent multithreaded objects. The objects are implemented in Java and use the TCP/IP protocol. Resources such as object addresses and documentation are implemented on the Web.
The term infosphere originated in the military and refers to an individual's collection of interfaces to (possibly remote) software tools, data, appliances, servers, and collaborators. An interface is implemented by means of communicating objects. Our research project deals with the systematic design of such objects and the organization of these objects into infospheres.
Next, we discuss problems that are of specific concern to us. The contributions of our project are:
There are many different tools that do similar things. For instance, there are many calendar tools that help in setting up common meeting times and places for a group of collaborators. The tools of the collaborators in a group must be composed into a single distributed application. How can different tools that do similar things, be integrated into a reliable distributed application?
The problem has several features:
The solution space deals with different ways of defining interfaces, the degree of formality employed, the rigor used in demonstrating that a composition of tools is correct, the scalability of solutions across the global information infrastructure, and the extent to which standards such as TCP/IP, HTML, the Web, and Java are exploited to deal with these problems. Our emphasis is on rigorous scalable solutions based on industry standards.
The software community has learned that we can reason about (or test and debug) systems by reasoning about individual modules and then reasoning about their composition. Traditional distributed systems such as air traffic control deal with one application domain and are developed by a small number of expert institutions who define methods for module integration. By contrast, distributed applications on the Internet are drawn from a bewildering variety of domains, and an application may be composed of objects developed by different groups. Yet, we have to reason about this chaotic environment.
The problems we address are that of
A session is a temporary composition of collaborating objects into a distributed system; the session specification defines the way in which the persistent states of collaborating objects are to be changed by the session (in terms of pre- and post-conditions and invariants). We define sessions so that we can specify and reason about each session independently of others.
The Web has spawned a cottage industry of documentation and applet development. It will, likewise, support widespread development of both client-server and peer-to-peer distributed applications. We are developing simple tools that help design safe distributed applications. Examples of such tools are graphical specification of
Industry standards now support applications that consist of fluid temporary collections of objects from different infospheres. Our project deals with theories, methods and tools for such applications. Our emphasis is on compositionality, sessions as a modularity principle, and correctness. Our implementation uses Java, TCP/IP, and the World Wide Web; the theory and methods are, however, quite general.
Project Members:
K. Mani Chandy,
Anand Chelian, Boris Dimitrov,
Joe Kiniry,
Huy Le, Jacob Mandelson, Matthew Richardson,
Adam Rifkin,
Eve Schooler,
Paolo A.G. Sivilotti,
Wesley Tanaka, and Luke Weisman
Affiliations:
Infospheres
Project of the
Compositional Systems research group,
California Institute of Technology and
Center for Research on Parallel Computation.
Attending the Workshop:
More information about the Caltech Infospheres Project: