Introduction


introduction, concepts, components, examples, patterns, experience, conclusions, references
The DejaVu project at Software Engineering department of the Vrije Universiteit (Amsterdam) originated from the wish to offer graduate and undergraduate students the opportunity for projects that fit within a longstanding research effort concerning OOP and hypermedia.

The DejaVu project aims may be characterized by a number of buzz-words, familiar no doubt to all those who have had the privilege to write project proposals themselves: The DejaVu framework is intended to be open (in the sense of extendible by a variety of other software), heterogeneous (that is allowing for heterogeneous components, possibly developed within different software paradigms), distributed (which means operating on both LAN and WAN computer configurations), object-oriented (which is intended to characterize our approach at software development, including modeling and programming), and intelligent (which may, lacking a better definition, be characterized as allowing for a declarative approach to the knowledge-level aspects of the application). Wide in scope, and certainly ambitious, but on the other hand (as argued in  [Eliens94]) focussing on a number of interesting research issues in OOP and as such clearly of interest to students, in particular when taking into account the emphasis on multimedia and hypermedia systems.

The DejaVu project has, in a period of about three years, resulted in a collection of software components that allow for building quite complex systems in a relatively easy way. To substantiate this claim, we may remark that our software has succesfully been used over the last years in CS2 project assignments for Software Engineering, ranging over the realization of routeplanners, product/components control systems, business simulation models and (simple) geographical information systems. It has also been used, at a more advanced level, in OOP assignments, including the development of gambling machines (mimicking existing 'one armed' bandits), musical score editors (with soundsynthesis facilities) and interactive games (such as those you may find in a video game hall). Ease of use, that is a natural and simple class interface, is enforced (to the extent possible) as an explicit design goal for all components that constitute the DejaVu framework, now and in the future.

In this paper we will discuss the organization and modeling principles underlying the hush library and its extensions. The acronym hush stands for hyper utility shell and reflects our intention to provide the means for incorporating 'hypertechnology' in a variety of applications. The acronym hush is also intended to reflect our wish to allow each program developed with hush to act as a shell that interprets scripts written in a general purpose script language that is extended with functionality defined by the application itself.

A central theme in the DejaVu project has been to support a multi-lingual software development platform, allowing in particular for a close coupling between C++, the distributed logic programming language DLP  [Eliens92] and a variety of script languages (including Tcl).

The extensions of hush include support for discrete event simulation (sms), facilities for realtime soundsynthesis and music (hymne), support for digital video (xanim) and facilities to connect to the World Wide Web (web), also allowing to extend the web browsing facilities with client-side computing.

With respect to the area of hypermedia systems, we may remark that our results compete with developments undertaken by the big players in the field (such as the Java project by Sun Systems), yet our approach is fundamentally different to the extent that we are not interested in one particular application but rather in an approach to software development that allows for employing a variety of components, in a multiparadigm fashion.