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

DejaVu
A Distributed Hypermedia Application Framework

A. Eliëns
Vrije Universiteit, Department of Mathematics and Computer Science
De Boelelaan 1081, 1081 HV Amsterdam The Netherlands
email: eliens@cs.vu.nl

slide: DejaVu - A Distributed Hypermedia Application Framework

Abstract

The project DejaVu aims at providing a framework for the development of open heterogeneous distributed object oriented intelligent hypermedia systems. It serves as a vehicle for research in hypermedia systems, object oriented programming, distributed logic programming, intelligent information systems and software engineering.

The DejaVu framework has a number of innovative features. First of all, we propose to employ inferential links as a means to traverse information stored in documents. Inferential links allow navigation on the basis of contextual knowledge. Such inferential links may be defined declaratively, in a rule-based way. The support for these links is provided by what we consider another innovative feature of our framework, a software platform that combines a low-level system implementation language (Active C++) and a high level logic-based distributed language DLP in what we call 'linguistic symbiosis'. An essential part of the (multi-lingual) environment is the hush (hyper utility shell) library based on Tcl/Tk, which enables the programmer to integrate (Tcl) script-based applications with C++ and DLP. To enable both the user and the developer of a hypermedia application to employ a script-like language to control the system, the framework provides an extendible hypermedia command language that offers the functionality needed to develop and tailor the user interface and contents of hypermedia systems. One of our research goals is to arrive at a declarative specification formalism that provides for both a high-level definition of the functionality of an application as well as support for the verification of invariance and consistency assertions. As part of the project we will develop some hypermedia applications to establish the validity of our approach. Further we intend to undertake a number of theoretical studies addressing the foundational and semantic issues involved.
Keywords: hypermedia systems, object oriented programming, visual languages, distributed logic programming, intelligent information systems, inferential links, rule-based information processing, declarative specifications, hypermedia command languages, meta programming

Introduction

With an increasing growth of information, hypermedia will become more and more important. Hypermedia must be regarded as a merge between multimedia and hypertext. Multimedia capture the need of displaying information in a non-textual form, such as graphics, sound or video animation. Hypertext technology provides associative information storage and retrieval by means of machine supported links between pieces of information. Combined, multimedia and hypertext offer a very powerful technology for information management, that we call hypermedia.

In order to deal with the mass of information involved, the integration of expert system technology and hypermedia has been proposed [Parsay et al, 1989]. With reference to our earlier work on distributed logic programming [Eliëns, 1992], we wish to explore this development towards distributed logic-based hypermedia, supporting knowledge-based information storage and retrieval.

Hypermedia applications

range from computer-based training, technical documentation and online encyclopedias to interactive help systems and information systems that aid in decision making, as for instance on the occurrence of environmental disaster. As prospective business applications one may think of product catalogs, blueprints and bulletin boards for advertisement. Electronic publishing is also likely to grow more important.

Another interesting application area of hypermedia technology lies in the software engineering of complex systems. Hypermedia may provide the support to monitor the behavior of a distributed program by means of animation techniques. Visual programming formalisms (like some CASE tools offer) may be naturally embedded in a hypermedia environment. See [Bigelow, 1988], [Meyer, 1990] and [Raeder, 1985].

One of the major challenges of hypermedia systems is to support connectivity, that is to allow the integration of heterogeneous systems and to provide the support for a compatible, homogeneous user interface. We expect that knowledge-based information handling and display will provide the support for such systems, as an example of which one may think of future office information systems.

Project aims

The DejaVu project aims at providing a framework for the development of open, heterogeneous distributed object oriented intelligent hypermedia systems. The phrase open means here that the framework offered must be extendible by a user to make it fit his or her own needs. By heterogeneous is meant that the framework must support the development of systems consisting of multiple, loosely coupled, components. Similarly, the framework must support the development of distributed systems, that are intended to run on a network of computers. The phrase object oriented clearly reflects a choice for a particular approach to software development, that is known as object oriented programming. Finally, the adjective intelligent indicates our intention to provide logic-based retrieval and navigation capabilities, alike those proposed for intelligent information systems.

Our aim is to provide a framework that integrates distributed logic programming with hypermedia technology, to support the development of distributed knowledge-based hypermedia systems. The starting point of our project will be to extend the distributed logic programming language DLP, as described in [Eliëns, 1992], with hypermedia facilities and a suitable programming environment.

Since our own expertise lies primarily in software engineering, computer systems and programming languages, we will focus our research initially to the development of hypermedia technology to support the construction and maintenance of complex software systems. The description of the background and motivations of the project is written from this perspective. It is, however, explicitly not our intention to restrict ourselves to this application area. On the contrary, we will look for opportunities to explore other application areas as well, such as for example environmental monitoring and computer-based training systems. In this initial phase, however, the inlooking nature of our approach seems unavoidable. Cf. [Graham, 1991].

Software engineering

The DejaVu project is meant to serve as a vehicle for research in hypermedia systems, software reuse, object oriented programming, distributed logic programming and intelligent information systems. Along with the actual realization of the framework we hope that valid insights and guidelines will emerge, that will contribute to the software engineering theory concerning heterogeneous distributed hypermedia systems. Also we expect to have (scientifically valid) spinoff from our accompanying theoretical studies of the areas mentioned.

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.

Hypermedia research goals

In the last decade we were able to witness a rapid growth in hypertext and hypermedia research. This has resulted in a number of systems, eg. KMS [Akscyn et al, 1988], Intermedia [Meyrowitz, 1986], Notecards [Halasz, 1988]. An overview of these systems and a more general introduction to hypertext is given in [Conklin, 1987]. See also [Shneiderman and Kearsley, 1989] and [Akscyn, 1990]. The idea of hypertext dates back almost half a century. See for example [Nyce and Kahn, 1991] for the historic background.

Reflecting on the development of Notecards, [Halasz, 1988] lists a number of research issues that were not adequately addressed by the systems existing at that moment. These research issues concerned both the architecture and design model of hypertext systems as well as user aspects and authoring issues.

In a follow-up speech [Halasz, 1991], discusses the dilemma's faced by hypertext/hypermedia development groups, dilemma's with respect to the functionality embodied in documents and links, and dilemma's with respect to the generality and functionality of retrieval and navigation mechanisms.

Most of the dilemma's sketched may be regarded from an architectural perspective, in that they may be translated into a preference for a particular architectural solution. In the following section we will examine a number of these issues.

Link varieties

Basically, hypertext is just a collection of nodes (documents) and links (expressing relations between documents). Evidently, for hypermedia, documents may take a number of forms. Less evident is that links may exist in a number of ways. In this section we will more closely examine the nature of links. We will discuss the way links may impose structure on a hyperdocument, by what means we may represent links, how to employ knowledge-based processing to support 'inferential links', and finally we will discuss the pros and cons of intrinsic versus extrinsic links.

Referential versus structural links.

Currently, there is a lively debate in the hypertext community whether to support the means to deal with structured collections of documents in addition to the traditional referential links that represent arbitrary associations between documents. To our mind, there are strong arguments in favor of supporting structural links as a means of representing the hierarchic structure of a compound document. Structural links are essential to produce a linearized version of a hyperdocument. Moreover, structural links allow for user defined semantic checks, whereas referential links are by nature arbitrary.

Implicit versus explicit links.

Another question with respect to the architecture of hypermedia systems is whether links between documents must be represented explicitly or implicitly. Explicit links have the advantage that they are directly (that is efficiently) available. However, implicit links that are computed in a particular information context do have the advantage of flexibility and are functionally more powerful. Structural links are likely to be explicitly stored in as far as they represent the hierarchic structure of a hyperdocument. However, for 'guided tours' or tutorials based on a user model, which may also be considered as represented by structural links, it may be more convenient to employ an implicit representation, in order to be able to adapt to the users need.

Direct versus inferential links

Our research interest is directed towards exploring the use of what we like to call 'inferential links', links that are computed by processing the knowledge available at the time the link needs to be established. In contrast with other links, including implicit links that are the result of evaluating a function, the functionality of inferential links is characterized declaratively by a number of knowledge rules. To our mind a knowledge-based approach is valid for both structural and referential links. For example a guided tour may depend on answers provided by the user. Similarly, the importance of an annotation may be decided by simple rules.

Intrinsic versus extrinsic links

A distinction that is somewhat analogous, yet distinct from the distinction between implicit and explicit links is that between intrinsic and extrinsic links. Intrinsic links are links that are somehow embodied in the document and hence physically connected with the actual document. Extrinsic links, in contrast, may exist completely independent of the actual document. As an example of extrinsic links between two documents, one may think of the relation between coordinate positions of the bitmaps representing the documents on a screen. Another example is a relation between documents expressed as file positions.

A definite advantage of extrinsic links is the fact that these links may be stored independently of the actual documents involved. However, extrinsic links must be considered dead links, since they will not reflect any change in one of the documents, which clearly is a disadvantage. The tradeoff between intrinsic and extrinsic links is a point of future research. One possible solution here might be to develop appropriate update protocols.

Document types

Evidently, hypermedia must support multiple types of documents, such as ordinary text documents but also sound samples and video images.

Active documents

Hyperdocuments are intrinsically active, since they must support the dynamic interpretation of their contents as commands. As an example, an ordinary referential link is an active spot in a document since it allows the passage to related documents.

Multimedia documents are active in yet another sense. For example, a document consisting of sound samples may be considered active since displaying such a document requires sound generation activity taking place independently from the other processing involved. In order for a user to manipulate such documents, a handle must be available to display a sequence of sound; and in addition, to integrate a document of this kind in a hyperdocument, handles must be provided to store links and annotations for specific positions in a sequence.

Documents as objects

There is a close analogy of (active) documents to objects (in the sense of OOP). Documents, containing data of some sort, must support methods that enable to view or display the information contained and methods that allow to relate parts of that document to other documents by means of links. Naturally, such objects must in some way be persistent, since hyperdocuments (including the links) must survive multiple sessions.

Multimedia (document) objects must support autonomous (concurrent) behavior in order to mediate the synchronization between user requests and the devices in use. An additional argument for employing active objects (active in the sense of Active C++/DLP) to represent multimedia documents is that active objects are convenient for simulating the behavior of active documents in the absence of a working device. In other words, active objects provide the flexibility needed to model the behavior of a multimedia hyperdocument in a more abstract way. Cf. [Gibbs, 1991].

Semantic constraints

One research issue of particular interest is how we may model constraints related to document types in a generic yet flexible way. One could think for instance of defining the structure of a document by means of as SGML-grammar (for ordinary text) or a HyTime specification (for time-based material). However, in addition to specifying the syntactic requirements we also wish to be able to check for semantic constraints laid down in for instance rules that specify the dynamic behavior of a document. Our intent is to employ the inference capabilities of DLP for this purpose. A problem still, however, is how to define such constraints in a rule-based form.

Hierarchic contexts

Many of the current hypertext/media systems treat an application as a large unstructured collection of documents connected by arbitrary link, e.g. NoteCards [Halasz, 1988]. In contrast, the Intermedia system allows the user to construct so-called webs that provide a context for connecting documents. The same document may occur in different webs with different connections. In addition to a context mechanism as provided in Intermedia we like to explore a notion of hierarchic contexts that automatically provide structural links and may also be used as a mechanism to inherit shared information. Such contexts may be used both as a single (compound) document as well as a collection of separate documents that may each be accessed individually.

Hypermedia command languages

Another important research issue, pointed at in [Halasz, 1988], concerns the means offered to authors of hypertext/hypermedia systems to develop applications. Scripting languages provide these means in a flexible way, and may also be used by end-users to customize an application. Currently, there are a number of scripting languages, eg. Toolbook, HyperTalk, that support the development of hypermedia applications. In a recent lecture, Alan Kay remarked that there are over 750.000 people using HyperTalk, most of which are non-programmers. Having established the need for an easy-to-use hypermedia command language, we must remark that the scripting languages that exist offer rather limited functionality, or if they do it is in the form of a rather unstructured collection of ad hoc solutions without a firm semantical basis. See for example [Younggren, 1988].

Embeddable command languages

We believe that a hypermedia command language must be usable both in a shell like fashion, to enable the construction of simple scripts, and in the context of a compiled program, to allow the development of more complex, yet efficient, applications.

Research concerning embeddable command languages is reported in [Ousterhout, 1990] and [Ousterhout, 1991], which describe respectively Tcl, an embeddable command language interpreter (embeddable in C programs) and Tk, an X-windows toolkit based on Tcl.

As a first step in developing the environment we envisage, we have developed the hush class library, the C++ programmer interface to Tcl/Tk.

Interprocess communication

The approach taken in Tcl allows for an application to have commands executed by command interpreters of other applications. To achieve this, Tcl employs the X-windows application manager to register existing interpreters and to exchange commands. Such an approach is of particular importance for hypermedia applications since it allows to dispense with large monolithic programs in favor of a number of small (cooperating) processes. In particular, this allows for incorporating a variety of software (such as a debugger or network communication programs) in a seamless way, that is consistent with the overall look-and-feel of the application.

Declarative specifications

A hypermedia command language must be both easy to use and functionally powerful. We wish to provide a language that allows to specify a hypermedia application in a declarative way (to the extent possible). We intent to explore the employment of logic-based languages in this area (and in particular the distributed logic programming language DLP) since these have a clear and easy to understand semantics yet great expressive power. Research in this direction has been reported a.o. in [Anjewierden and Wielemaker, 1989], which describes an extension of Prolog with object oriented graphics primitives. We expect that, in combination with Active C++ and the hush library, the use of DLP will enable us to provide high level support for the development of distributed (intelligent) hypermedia systems.

System implementation issues

With respect to the development of graphical user interfaces, we have studied a number of toolkits. [Hansen, 1990], [Linton et al, 1989], [Ousterhout, 1991] and [Young, 1990].

For our purposes we need a toolkit that fits in smoothly with Active C++. In our group we have developed a pilot hypermedia system with the InterViews library [Linton et al, 1989]. A drawback of InterViews, however, it turns out that it is rather complex to use. Another disadvantage of InterViews is that it supports only a limited number of the widgets commonly used in graphical user interfaces. In contrast, many of such widgets are available for example in the OSF/Motif widget kit. [Yo A possible route to incorporate such a widget kit in C++ is by using the wrapper classes provided by the WWL library. toolkit The WWL widget library [Fekete, 1992] implements an approach that does allow the integration with programs developed with OSF/Motif and other kits on top of X-windows, by providing a wrapper mechanism that enables a flexible use the C-based Athena, OSF/Motif and HP widget kits in a C++ context. However, the drawback of this approach is that it provides only a very shallow object interface, clearly lacking the elegance of the InterViews library.

A radically different approach to developing graphical user interfaces is represented by the Tcl/Tk toolkit. The Tcl/Tk toolkit offers a large number of widgets and a very flexible environment for rapidly developing graphical user interfaces by means of Tcl scripts. Moreover, Tcl scripts defining interfaces are easily coupled to applications developed in C/C++. However, we felt that the C programmer interface provided by Tcl/Tk was not adequate for our approach. Hence (to have the best of both worlds) we developed the hush C++ interface to Tcl/Tk in a style reminiscent of InterViews. The hush class structure is, however, considerably less complex than the class structure of InterViews. Yet, it inherits in a natural way the rich functionality offered by Tcl/Tk.

Software components

Our project aims at providing a software platform that supports the development of distributed hypermedia applications. In this section we will delineate the software components that we plan to develop in the context of our project. We distinguish between three layers of software. Our implementation platform Active C++/DLP must be regarded as the bottom layer. We consider what we call the linguistic symbiosis between Active C++ and DLP as crucial to the success of our project. It is one of the innovative features of our framework, and together with the second layer, which consists of a library and toolkit for constructing hypermedia systems, we consider this the core of our project. The third layer we envision is of a more general, explorative nature. It will provide additional hypermedia development support tools.

Linguistic symbiosis

The object oriented language C++ is a powerful language for implementing (complex) efficient systems. It is likely to become an industry standard of the near future. We have recently developed Active C++, an extension of C++ with active classes and communication by rendez-vous. See [Eliëns and Visser, 1992]. Active C++ is currently being employed for implementing the distributed logic programming language DLP. In order to provide a flexible and powerful software platform for the construction of distributed hypermedia systems, we aim at a linguistic symbiosis between Active C++ and DLP. The notion of a linguistic symbiosis has originally been put forward in [Ichisugi et al, 1992], and it expresses the wish to mix computations specified in different formalisms. More precisely it indicates a means to specify the relation between a high level language and its underlying implementation language in a way that allows the programmer to profit from both worlds in a non ad-hoc manner. Such an environment enables the programmer to effect a smooth transition between a prototype in DLP and an efficient implementation in Active C++, which in our opinion may significantly reduce the production cost of complex systems.

Another advantage of this approach is that it supports the implementation of inferential links in a rather direct way.

Active C++

Active C++ is a minimal extension of C++ supporting active objects and communication by rendez-vous. From the outside, for client code, there is no distinction between calling a member of an active object or calling a member of an ordinary object. Whether an object is active or not is determined by the definition of its class. The actual object created is of a subclass of the class defined for the object, dependent on what type of process is associated with the object. In addition to the encapsulation provided by the typechecking mechanism of C++, Active C++ provides strong dynamic encapsulation by allowing to determine the order in which method calls are accepted. This is done by a somewhat Ada-like accept-statement.

Active C++ is implemented as a pre-compiler (which is a preprocessor to be used before cfront) that generates the proper derived classes for classes that define active objects. Currently, both light and heavy weight processes are supported. At run-time, calls to active objects are dealt with by message-passing. We chose this model because it is clean, it is universal (across multiple platforms), it is easy to establish its correctness and (very important also) it is flexible. The message-passing model moreover may be optimized in shared-memory situations. Other run-time models, although they may sometimes result in a better performance in specific situations, are considered as semantically unclear, inflexible, difficult to implement, and difficult to support uniformly on multiple platforms.

Due to the type-information we get from our pre-compiler, we can deal with a number of issues such as distribution, persistence and type-security quite easily. Marshalling and unmarshalling can be transparently dealt with by inserting the appropriate stubs. Currently, we study how we can best incorporate primitives for the allocation of processes on a network of processors. In our approach thus far, we assume that processes running on multiple processor machines are created from a single root process. This enables us to deal with arbitrary C++ code, without artificial restrictions specific to active classes.

DLP

We will employ the distributed logic programming language DLP that allows to specify an object oriented system in a highly abstract way. DLP is fully described in [Eliëns, 1992].

The language DLP extends logic programming with features specifically geared towards the specification of object oriented systems and thus corrects what has been commonly felt to be one of the major drawbacks of logic programming: the lack of support for specifying large systems in a structured way . See [Eliëns, 1989].

In addition to object oriented features, DLP supports parallelism, by allowing objects to have activity of their own. For many problem areas, concurrency or parallelism is a very natural phenomenon. Parallism and distribution fit in well with the object oriented paradigm since the actual (possibly concurrent) behavior or location of an object may remain hidden for the clients of an object.

An important application of DLP lies in the area of distributed knowledge based systems. We feel that the object oriented modeling approach may support a proper distribution of the various reasoning tasks that are involved, by taking the natural activity of the actors in a domain as the guideline in developing an intelligent system. See [Eliëns, 1991] and [Eliëns, 1992c].

Hyper Utility Shell

We distinguish between three subcomponents that together will comprise our hypermedia toolkit. First of all, we need a (kind of) hypermedia abstract machine that allows the storage of documents and links and that supports elementary storage and retrieval tasks (and in the future also versioning). Secondly, we must provide a library of common user interface items (widgets in X-terminology) to support the (rapid) construction of hypermedia interfaces. And lastly, we wish to provide a hypermedia command language that supports a script-based definition of links and retrieval and navigation semantics. The name hush , which stands for hyper utility shell , is used to refer to the class library providing an interface to Tcl/Tk as well as to the interpreter for (Tcl-like) hypermedia scripts. (Actually, it is a variation on wish , the original window shell interpreter that is part of Tcl/Tk.)

Hypermedia Abstract Machine

What we need is a uniform mechanism to store documents, links and context information in an efficient and reliable manner. Currently, we are exploring the use of O++, which provides an object oriented database extension to C++ as part of the Ode environment. See [Agrawal and Gehani, 1989] and [Agrawal and Gehani, 1990]. Our approach now is to store the raw contents of a document as an ordinary file. However, the additional information, such as links to other documents and the structure of compound documents, is stored in persistent objects. In the near future, we intend to support persistent objects in Active C++, which will give us greater control over the storage and retrieval policies employed. Another important feature of a hypermedia abstract machine is the support it offers for various documents and link types and the mechanisms it provides for retrieval and navigation. Cf. [Campbell and Goodman, 1988].

As explained in our discussion of hypermedia research issues, our framework will include the support for inferential links that allow retrieval and navigation to be controlled by contextual knowledge. However, this states a research issue, rather than a ready solution! As other interesting issues, we mention version control and support for group work.

HyperViews

For hypermedia systems, user interface issues are closely connected with functionality. Apart from the primitives for define graphical user interfaces, we also need to provide the functionality to present the various document types (including time-based documents) and links in a user consumable fashion.

In [E. Rijvordt and M. Kalkman, 1992], a pilot implementation of HyperViews is described, developed as part of a student project. (The name HyperViews was the idea of the students. It reflects their intention to provide for hypermedia what InterViews provides for the development of graphic user interfaces.) The HyperViews library currently supports bitmaps and ordinary text as document types and provides mechanisms to define extrinsic links between documents of these types. The HyperViews system is open in that similar support for other documents may easily be defined. A limitation of the current approach, however, is that it offers no real support for hierarchically structured documents and that it only supports extrinsic links. Hence, it does not allow the sharing of information and it is difficult to dynamically update the information of individual without compromising the consistency of the link structure. The next version of HyperViews (or a library akin to it) will be based on the hush library (and Tcl/Tk primitives) Also, we expect that our approach will be to a greater extent script-based in order to allow for the definition of soft (dynamic) links.

Hypermedia Command Language

From the perspective of the average user, the most important part of our implementation platform will consist of a shell-like scripting language (based on Tcl). Naturally, we need additional functionality to accommodate the construction of hypermedia systems. The advantage of using a Tcl-based scripting language in this respect is that it may be extended and integrated with existing programs. We think that this feature is especially important in the area of hypermedia applications, since a language or system designer cannot possibly foresee every need of future users. Scripts, moreover, have the advantage that they may be easily transported across a network. Being human-readable, they moreover provide an excellent way to communicate complex information.

Application Development Support

Projects such as ours are somehow intrinsically open ended. Therefore, in addition to the two layers described previously, we distinguish a third layer comprising additional application development support.

To realize this layer, our intention is to reuse other software whenever possible by employing so-called software wrappers . The generic phrase software wrappers describes an approach to reusing traditional (read C-based) software in an object oriented context (read C++) by embedding the software in one or more classes. An example of this approach is the work reported in [Fekete90], that we have discussed in section toolkit . In a similar vein, we have developed a pre-processor that wraps the output of the scanner and parser generators lex and yacc in appropriate classes. The advantage of using a wrapping technique is that it allows to hide many of the complex details of the software involved behind a (rather) clean interface. As an aside, wrapper generators as described are another instance of the glueing technology around which our framework is built.

In the following we will discuss our plans to develop an integrated programming environment and tools for software documentation support. Also, we will discuss our ideas with respect to declarative specification formalisms.

Integrated Programming Environment

Developing distributed systems is error-prone. As an essential part of our software platform we need to have some basic tools for debugging and monitoring a system developed in Active C++/DLP. We intend to model our programming environment after Field [Reiss, 1990b], which offers a collection of tools for the static and dynamic analysis of a program. The Field-environment supports a tool-interaction protocol that enables tools to cooperate in the task of monitoring a program. This protocol allows to monitor the behavior of the distinct components of an application separately and hence to focus the activity of debugging on any particular component. Our implementation platform offers the primitive needed for the implementation of this protocol. Currently, we are studying on formalisms that enable to specify the interaction between tools cooperating in a debugging task in a formal way in order to specify such protocols in a verifiable manner. See section studies .

Software Documentation Support

Without wanting to engage in an ideological debate, we wish to state our belief that a suitable software documentation tool facilitates the maintenance of software. See also [Webster, 1988]. It is our intention to document the software developed in our software in a web-like manner along the guidelines defended in [Knuth, 1992].

Additionally, for user documentation and reference manuals we intend to employ the gnu latexinfo system, that allows to generate both a latex copy and a hypertext-alike online manual out of a common source. As one of the possible applications of our environment, we suggest the development of a fully fledged hypermedia application based on these tools.

Both the latexinfo and web tools mentioned are instances of report generators which are found in a number of systems. We choose for report generator tools, among other reasons, for the quality of output.

Declarative Specification Formalism

We have already argued the usefulness of a hypermedia command language. More in general, applications may profit from a command language that is extendible with user-defined commands.

Another approach to support user defined command languages in a C++ context is provided by our wrapping technique, which allows to embed a scanner and a parser (generated by lex and yacc) in a class. Due to the encapsulation provided by C++ an arbitrary number of these scanners and parsers can be employed (whereas without wrapping only a single scanner/parser pair is allowed). This enables the system developer to define an arbitrary number of application specific languages. Whether this is the most viable approach depends of course on the nature of the application at hand. For some applications visual languages may considered to be more appropriate. See [Harel, 1988], [Grafton, 1985], [Ichikawa et al, 1990]. Certainly, we need more experience in this area.

Ultimately, we like to provide the means to derive a prototype system from a declarative specification of an application. However, specification technology has not matured enough yet to make this at all possible. Our approach of supporting an extendible command language meets our ends to some extent. In addition, however, we wish to explore how to translate formal specifications, in Z or a related specification language, to DLP automatically. Suggestions in this direction can be found for instance in [Diller, 1990]. An advantage of using DLP to implement such specifications is its support for distributed processing. Finding the proper translation mechanisms to represent specifications in DLP is a difficult but potentially very fruitful research issue. If successful it would result in a support environment for the development of applications other than hypermedia systems as well.

Apart from the means for specifying a system we would also like to provide some support for verification. Our thoughts in this respect are directed towards applying a theorem prover such as Otter [Wos et al, 1992], or a special purpose theorem prover built in DLP, for verifying invariance and consistency assertions.

Theoretical Studies

Our approach raises a number of interesting theoretical questions that deserve to be studied independently from a more theoretical perspective. The issues that need to be clarified concern the mechanisms needed to allow applications or components thereof to interact, the means by which (hierarchically) structured applications may store and share information, and the opportunities for automatically generating links based on information with respect to the documents type (and possibly its contents). Also, we plan to study the more general software and knowledge engineering issues involved in developing complex hypermedia applications.

Inter-application Interaction Mechanisms

Currently, we are studying a number of interaction mechanisms proposed in the literature, e.g. [Helm et al, 1990]. From a more pragmatic perspective, the tool-cooperation protocol employed in the Field-environment has served as an example [Reiss, 1990b]. Also, we have been led by the ideas embodied in Tcl/Tk, such as the primitive [Ousterhout, 1990]. Another source of inspiration is [Dharap and Narayana, 1992], which describes an incremental distributed editing environment. The interaction protocol employed there is based on semantic actions, allows a central server to propagate the changes invoked by multiple independent clients.

For the DejaVu framework we aim at a formalism describing the interaction between objects in a general and formal way. As a starting point we have taken the notion of contracts , as proposed in [Helm et al, 1990] and [Meyer, 1988]. Contracts allow to specify the interaction between components of a system in a declarative way. The contracts formalism allows, moreover, for the refinement of contracts analogous to the inheritance refinement relation offered by object oriented languages.

Hierarchical Information Systems

The functionality of hypertext systems is usually expressed in a very informal and operational way. We wish to develop a mathematically more satisfying semantics. Such a semantics must deal with the way hierarchically structured information systems deal with shared information, how information is accessed and what information may be retrieved at a certain moment in time. More in particular, the semantics must be able to give an account of the way the system processes events, such as the definition of links and the loss of information. References to relevant literature in this area are [Garg, 1988] and [Stotts and Furuta, 1988], and (for a theoretical perspective on inheritance systems) also [Touretzky, 1986].

Document Type Inference

Another interesting theoretical issue is how we may automatically provide links. One possible route is to use structural information to establish containment relations and the existence of forward and backward directed links. Another route, however, is to exploit the information that is implicitly contained in the document type. An example of this is may be found in the relation that exists between documents generated in successive phases of a software component. Obviously, the documents that are produced during analysis must correspond with documents produced during the design and implementation. A system may automatically provide the links necessary for navigating between these documents.

The (software/knowledge) engineering of hypermedia applications

In [Howell, 1992] a number of guidelines for developing hypermedia applications are presented. The guidelines proposed are derived from a classical waterfall conception of the software life-cycle. Working in a distributed setting, we think that it is necessary to develop our own set of guidelines. Cf. [Shatz and Wang, 1987]. Our approach lies closer to a prototyping framework and does not easily fit in a more classical life-cycle model. Recall that we provide a rather complex software platform based on a linguistic symbiosis between a low-level system implementation language (Active C++) and a high-level logic based language (DLP). In addition, we provide an extendible command language. Together, this offers a very powerful and flexible platform, but we do not expect that it will be particularly easy to master.

Our framework allows for a gradual refinement of specifications, but for such an approach to work it is necessary to provide clear guidelines and examples of 'how to do it'. For this we must develop an understanding of the appropriate idioms for developing hypermedia applications. Equally important is that we gain understanding of how to employ inferential links in order to provide the developer of an application with adequate guidelines in this respect also.

Conclusions

We have sketched the framework DejaVu. We wish to stress that this framework is meant explicitly as a vehicle for research. The DejaVu approach is rich in scope, yet we believe that our attitude is sufficiently pragmatic for the project to be realized. Part of the work is intended to be done in the context of student projects.

Partial results of the DejaVu project may be obtained by ftp (at ftp.cs.vu.nl:eliens ). These fragments include DLP and the hush API to Tcl/Tk.

We consider as our major contribution to hypermedia research our notion (and implementation) of inferential links . In addition, we regard our concept of linguistic symbiosis as being a fruitful and challenging answer to hypermedia system implementation issues. Together, they contribute to the realization of a framework addressing the programmability of hypermedia systems in a fundamental way.


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