[] DejaVU Online -- Project DejaVu (1992)
[] - [up] [up] introduction background hypermedia components studies conclusions

DejaVu: background and motivation

Software systems grow increasingly larger and complex, to the extent that they become unmanageable and a large prize has to be paid for their maintenance.

With respect to program development there are a number of issues of complexity and size that are specific for heterogeneous and distributed systems. However, also on a smaller scale the problem of managing the complexity of a system and the software development process is not so easily solved as well. Usually a variety of methods and tools is needed in order to construct a system and to understand the functionality that it offers.

In the following section we will explore what support hypermedia offers for the development of complex, heterogeneous distributed systems. Then we will discuss some of the problems that occur with heterogeneous systems, and the requirements that are imposed on the environment in which such systems may be developed. We will conclude the discussion of the motivation underlying our efforts with a brief sketch of our earlier work and why we think it is of relevance in developing a distributed hypermedia application framework.

Distributed hypermedia

Hypermedia technology is increasingly used in programming environments (such as those found on personal computers). It is applied to support program development , to provide online associative documentation , to build multimedia user interfaces , to provide the tools for visual programming , and to create intelligent information systems that support computer-based training and the animated display of complex information.

Program development support

For personal computers one can clearly discern a trend towards integrated programming environments that allow the user the simultaneous inspection of source code, dynamic behavior and supplementary documentation. Obviously, similar facilities are needed when developing large heterogeneous distributed systems. For these systems, however, the integration techniques as used for personal computers do not apply. To effect the cooperative behavior of tools one must proceed from the assumption that not only the source code but also the tools themselves may be distributed, where, in opposition, tool-integration on personal computers is often patched into a single executable. A tool-environment is needed that is adapted to the intrinsically distributed nature of multimedia systems. Characteristic for such an environment is the cooperation of tools by means of explicit protocols of communication and the exchange of information.

Associative online documentation

An essential ingredient of such an environment is a (distributed) hypermedia-based online information retrieval and documentation system that may be used for browsing, annotation and documentation, both in text and graphic formats and possibly also in audio and video formats.

Multimedia User Interfaces

Many workstations and personal computers (for those willing to pay for it) provide multimedia facilities, including sound and the display of video signals. Applications in such environments naturally wish to to profit from the capabilities offered by these systems to provide a more appealing interface. As an example, an online encyclopedia may include sound examples and (video-based) animation to give better explanations.

For some applications, such as computer music systems or 'virtual museums' multimedia intrinsically belong to the application area. For many other applications however, multimedia capabilities provide the opportunity to create a lively tutorial or demonstration for that applications. Such computer-based tutorials and demonstrations will definitely contribute to the acceptance of that particular application by a larger (non-specialist) user community.

Intelligent information systems

Information can become arbitrarily complex. Having stored the information in a computer does not reduce complexity in itself. However, tools may be developed to manage this complexity. Hypertext technology (that we will also refer to as hypertechnology) allows to connect pieces of information by means of associative links that enable a focussed retrieval of this information. Hypertechnology supports structural links between pieces of information, but also accidental links that are added by the user for the purpose of navigation and selection.

As an example, in a software documentation system there must exist links between the requirements specification and the documents describing the design and implementation. To be useful in the development of a software system, it must be possible to add annotations and temporary links connecting the relevant pieces of information, relevant with respect to a particular problem.

A key issue in the development of intelligent information systems is to allow the user to view the information in accordance with his or her needs and to focus rapidly into the relevant areas. Such systems must hence support functionally powerful links between information and personal annotations to determine the selection of material, closely coupled with an interface that allows associative navigation through the information stored.

Heterogeneous systems

Given the availability of wide and small area networks, many of the current systems (such as for instance systems for command and control, environmental monitoring systems) must be characterized as heterogeneous and distributed. For a variety of reasons the (re)design of these systems will only be partial and incremental, and hence the original question of how to manage these systems narrows down to the question of what technology is needed to partition a system in suitable components and to integrate these components.

Glueing

With regard to the question of how to glue more or less heterogeneous components together opinions may differ whether such support must be given by an underlying operating system or whether the programming language must provide the necessary constructs. The disadvantage of the former approach clearly is its ad hoc nature. Extending a programming language (and we assume to have an object oriented language) has as an advantage that the transition from an object oriented model of the domain to an implementation may be more easily made. Since in our opinion the modeling perspective must be regarded as essential in the object oriented approach, the benefit of modeling outweights the disadvantage that the required functionality is harder to obtain in a consistent fashion. When relying on the operating system, obtaining the required functionality is not the problem but dealing with it is much more difficult.

Encapsulation

Recently, the object oriented paradigm has been proposed as a means to handle the complexity of large systems and to structure the software development process. Assuming that object orientedness indeed provides a solution to the problems incurred by the size and complexity of current systems, we may start to re-design and re-implement these systems. However, in practice a complete re-design is most often regarded as infeasible due the the size of the existing software (which may run into million lines of code), limitations on the budget or the absence of qualified people. Instead, a considerable effort is put into maintenance and only the components requiring new functionality are redesigned and glued back into the old software. Obviously, the notion of encapsulation , which may be regarded as one of the basic ingredients of an object oriented approach, is of relevance here. Encapsulation provides the means to hide implementation details to the extent that the functionality of a component may be addressed solely by means of a well-defined interface, regardless of the size of the component or the resources needed to perform its function.

Reuse

Apart from budget limitations, there may be other reasons not to re-implement existing systems or parts thereof. For instance when a component is used by different groups it may be impossible to decide how to satisfy all these groups. Or even there may be an explicit intention to reuse the available software resources. This applies in particular to systems that are explicitly designed as a heterogeneous collection of components. A fortiori this holds for hypermedia applications.

Object oriented modeling

Having enumerated the diverse problems, their underlying assumptions and the direction toward their solution, there remains one issue that must be treated in somewhat more depth. We have stated that an object oriented approach supports the glueing technology required to deal with heterogeneous software but we have not stated what glue we need or prefer. Two requirements have to be dealt with in this respect. First of all it is necessary to provide the low level mechanisms that enable to connect a variety of software and/or hardware components. Secondly, we must provide the means to model the constituent entities and actors in the application domain in a natural way.

Active objects

A basic assumption here, and from the perspective of distributed systems a necessary presupposition, is that at least part of these entities and actors behave intrinsically concurrent. The extent that this parallel behavior must be directly visible in the model and the program depends on the application. Nevertheless, we feel that we must provide the means to model parallel activity in a form that is compatible with the modeling facilities offered by the object oriented paradigm. The opportunity to control dynamically the interface of an active object, that is its willingness to engage in a rendez-vous, counts in this respect as an argument in favor of our approach.

In order to deal with the low level aspects of the system we will spend effort to augment the object oriented systems programming language with features that support parallelism and distribution. We have coined the name Active C++ for this effort [Eliëns and Visser, 1992].

Specification

In addition to a systems implementation language, we wish to provide a high level language that enables to specify the functionality of a system in a rule-based manner, so that our understanding of the behavior of a system can rely to a large extent on the logical, declarative semantics of its specification. This effort will be based on the distributed logic programming language DLP, that we have developed previously. DLP as it is, provides apart from a logic-based formalism (Prolog), features such as encapsulation and inheritance. However, we also studied how to augment DLP with reflective capabilities that allow to specify the dynamic semantics (with regard to parallelism and distribution) of the language constructs in a more application oriented way [Eliëns, 1992b].

Applications

To allow an easy transition from a high level (executable) specification to an efficient implementation in the systems programming language, both language must be highly integrated. Program animation and visualization support must exist on both levels. To realize this goal we will reimplement DLP in Active C++. Other components of our framework that require an implementation will be realized in DLP and Active C++. Since our framework is designed to be open we envision that on top of DLP we may (easily) implement application oriented languages, object oriented reasoning systems and specification formalisms for conceptual modeling. To this end we wish to provide the tools that support the specification of the syntax and semantics of such language formalisms in a way that fits within the object based approach as sketched.

Integration

The use of CASE tools in the area of distributed systems is relatively unexplored, and the potential of (object oriented) CASE tools for heterogeneous distributed hypermedia systems needs to be investigated. An important problem we have is how to integrate the variety of tools needed for the actual construction and maintenance of hypermedia applications, such as debugging and monitoring tools.

Tool integration

To solve the problem of tool integration we have a trade-off between support in the programming language enabling to monitor and analyze the behavior of a program and facilities provided by the tool-environment allowing the inspection of the dynamic execution of a (distributed) program. To our mind, the mechanisms that enable the cooperation, that is the synchronization and communication between tools, must be embedded in the tool-environment. However, the information required by the tools to perform these monitoring tasks must be provided by the program(s), either explicitly programmed by the programmer or compiled into the executable(s) by a smart compiler. See [Reiss, 1990b] and [Stasko, 1990]. An interesting area of research in this respect has evolved around the meta-programming facilities and reflective capabilities offered by a number of current object oriented languages. See for example [London and Duisberg, 1985].

Interaction

Not only from the perspective of tool integration is a formalism which allows to express the interaction of objects of interest but also (scientifically and practically) as a means to impose additional structure on a collection of objects, in addition to the structure imposed by the client-server and inheritance (or subtyping) relations. A challenge in this area is to augment the communication mechanisms employed by a reasoning component to allow for an intelligent interaction and cooperation of objects. This research aims at providing a formalism for what is called interaction oriented programming. See [Helm et al, 1990].

Application framework

To conclude our motivational remarks, our aims are to develop a framework (that we have named DejaVu) to assist the development of distributed hypermedia applications.

Environment

The DejaVu framework advocates in essence a multi-lingual approach to the development of complex software systems. To our mind, no single language (including Lisp, C/C++, Prolog) is fit to be used for any application in a natural way. Rather, for specific domains (such as reasoning, numerical computation, and so forth) developers seem to have a strong preference for a particular language. Besides, a uni-lingual approach may easily lead to large monolithic systems. Our approach, instead, supports the development of component-based (distributed) systems. By providing adequate glueing technology we intent to encourage the reuse of building-block components. Consequently, the framework must support the encapsulation and reuse of existing software. Also it must provide the tools for monitoring heterogeneous distributed systems by means of program animation and visualization. And, it must support the creation and use of online associative documentation.

The approach supported by the DejaVu framework is motivated by the desire to provide a specification formalism as well as an implementation platform that may be considered natural for a particular application. Hence, we will provide an implementation platform that supports both a concurrent distributed object oriented systems implementation language (Active C++) to deal with the low level aspects and a very high level (object oriented) distributed logic programming language (DLP) that enables to model complex systems in a logic based way.

In addition, the environment will provide a collection of pre-defined objects for the rapid development of graphical user interfaces.

The implementation platform is primarily meant to implement basic (reusable) components that are needed to construct hypermedia systems. To enable the actual construction of a hypermedia system, we will provide a high-level hypermedia command language that may be used both for the specification of a hypermedia system and for adapting an existing system (developed within the framework) to more specific needs.

Our preference for a hypermedia command language, in addition to the functionality provided by the implementation platform, is motivated by the observation that the actual development of hypermedia systems is mostly done by non-programmers. For that reason also, we intent to provide an application oriented language specification formalism that supports the specification of dedicated languages for specific application areas in a convenient way.

Research goals

Having sketched the outline of our project it is worth reflecting on how such a framework may be realized. In the next section we will discuss hypermedia research goals from a more thematic perspective, here we will restrict ourselves to discussing the pragmatics underlying our proposal.

A first observation that must be made is that currently a number of research groups are working on one or more of the topics mentioned. Some research groups work on rather specific topics such as the development of a programming environment [Reiss, 1990b], or tools for the construction of graphic user interfaces [Linton et al, 1989], [Ousterhout, 1991]. Other groups cover a larger parts of the area, for example [Weinand et al, 1988] aim at providing an environment to some extent similar to ours. Another example of a wide-spectrum project is the project referred to in [Nierstrasz et al, 1992]. Our approach differs from the latter in that we wish to employ tools that are already available as much as possible. There seems to be no need to develop new tools when these are already there, waiting to be used. In other words, our intention is to provide the means to integrate existing tools in our framework and to employ these tools for its development. From this perspective the name of our project reflects our wish to reuse the products of research already done.

The second observation is that our project actually consists of a number of more or less well-delineated subprojects. These subprojects are well-delineated in the sense that the research involved may proceed to a large extent independently of the other subprojects. The reason to incorporate the various subprojects in a common framework is that we feel that these (sub)projects will mutually benefit from the work done in the other (sub)projects. That is to say, to our mind, the (sub)projects are more clearly defined when regarded from the common background set by the goal of developing a distributed (intelligent) hypermedia application framework.

A third observation is that, as a matter of fact, our research proposal is (partly) based on our previous research. In particular, where it concerns the development of a high level (logic-based) prototyping and modeling environment, we may lean on our previous efforts in developing the distributed logic programming language DLP, and devote our attention to applying this language in a hypermedia context.

Concluding, taking these observations into account, we feel that we have a sufficient basis to endeavor in the development of a hypermedia framework along the lines sketched.


[] - [up] [up] introduction background hypermedia components studies conclusions
Hush Online Technology
hush@cs.vu.nl
09/10/98