Meridian Project Summary
Interactive distributed applications (IDAs) are those that involve direct interaction
with users and whose processing and data components are distributed across a network.
Examples of IDAs include distributed data management systems, on-board driver/pilot
navigation assistance systems, computer-supported cooperative work environments, distance
education tools, and a variety of public safety systems. The increasing interest in IDAs
is fueled by several factors, including the advent of the World-Wide Web, the development
of new middleware technologies, the introduction of scripting languages for graphical user
interfaces, and the availability of new network services and protocols.
Three characteristics of IDAs complicate their development. First, IDAs usually
interact with other independent systems, including one or more human users. Verification
of the system functionality requires extensive experimentation and testing. Second, IDAs
typically comprise multiple levels of concurrent communicating components, creating the
potential for race conditions, deadlock, and starvation. Informal reasoning about
correctness and performance of concurrent systems is difficult and prone to error. Third,
IDAs typically incorporate existing software modules to implement communication protocols,
manage distributed resources, and display data to the user. An IDA developer should be
able to browse reuse repositories, reason about component interaction, and validate a
component's ability to satisfy requirements. As the demand for IDAs grows, and as they
become increasingly complex, there is a need to automate various activities in their
construction and maintenance. Automated software techniques can potentially improve both
the quality of the resulting products and productivity of developers.
The proposed project involves the integration and validation of Meridian, a collection
of tools designed to help automate the development of IDAs. Collectively, these tools will
support diagram-based modeling, rigorous correctness analysis, software reuse, automated
code generation, and software visualization. Moreover, they will interact with one another
through explicit design representations with formally defined semantics, enabling
requirements to be traced from high-level models to low-level code. (See Diagram for Meridian Vision)
The Meridian project will be conducted on an NSF-supported mobile/distributed computing
testbed and will involve three experimental components. First, the construction of the
Meridian toolkit itself is a proof-of-concept endeavor demonstrating that a set of
existing tools can be integrated to support all phases of IDA development. Second,
Meridian will be accessible only through a set of coordinated interfaces that support user
input capture, thus enabling the recording of each step of the development process for
purposes of traceability and reproducibility of development results. Third, in order to
validate the Meridian toolkit and facilitate technology transfer, case studies of three
different classes of IDAs will be conducted using projects supplied by industrial
partners.
The Meridian project will leverage on multidisciplinary precursor research in software
engineering, formal methods, interactive systems design, distributed systems, and
networking. By constructing a single development framework for a specific class of
applications, in which tools for different phases interact via consistent representations,
the Meridian project can address several critical issues that do not arise when studying
individual phases of development: tracing requirements through design, implementation, and
testing; visualizing consistent models of component behavior; supporting software reuse
across different levels of abstraction; and incorporating performance feedback from
testing into formal specifications. These capabilities can fundamentally improve the way
in which IDA software is developed and maintained. Moreover, Meridian can serve as a model
for software development in other application domains.
