Path: utzoo!utgpu!water!watmath!clyde!rutgers!cmcl2!husc6!mailrus!umix!uunet!mcvax!cernvax!cui!dt From: dt@cui.UUCP (TSICHRITZIS Dennis) Newsgroups: comp.lang.c++ Subject: Object Design Tools Message-ID: <97@cui.UUCP> Date: 18 Feb 88 20:39:22 GMT Organization: University of Geneva/Switzerland Lines: 79 Posted: Thu Feb 18 20:39:22 1988 We have been struggling for a year now to understand what kinds of tools are needed for object design. Here are some comments which may at least encourage some discussion. General comment --------------- If you insist on reusability you cannot always rely on structured design by refinement. At some point you should synthesize from existing objects. Traditional software methodologies are the equivalent of a cookbook recipe. Given the desired meal, you come down to the needed ingredients and the procedure to follow to cook it. With object reusability the problem is inverted. Given some notion of a meal and some available stuff in your fridge, fix a reasonable meal. Here are some tools that we have been working on that we believe will help to solve the problem: 1. The first tool you need is one that helps you to organize a software base of available objects. Conceptual modeling and knowledge base ideas are helpful here, but we are dealing with *real* objects, not concepts. Together with this we need a powerful filter-browser to select the pertinent objects for your application. 2. Another tool you need is a structure editor like the ones used for VLSI design, which puts objects together from existing objects as parts. You can go so far with structural synthesis. Eventually you arrive at some objects which are relatively autonomous. 3. You need a configuration tool which defines how objects are put together. The important notion here is "glue". Glue is a kind of interfacing tool which you use when objects do not fit nicely together. After all, if you insist on reusing objects you will be very lucky if they can talk to each other. A common standard interface as a uniform glue is too restrictive. The problem we are struggling with is, what are the most useful kinds of glue? A more advanced problem is, what is a good tool for creating your own glue? 4. When objects are active and autonomous, you need a notion of "scripting". Scripts can be thought of as scenarios in a theatrical play, or as the instructions given by the coach to the football players for a game. They can be considered as a driving mechanism, or as a constraint mechanism on a set of objects. We have worked on scripts and we are now developing some tools. It is a fascinating area. What we are aiming for is that the scripts which coordinate objects will be the same as the ones which can coordinate an animation of characters representing objects. In this way the user can follow what the objects are doing by watching the animated characters. The work we are doing relates to Hybrid, a local, yet another, object-oriented language and system. However most of the work is in C++, and the design tools should apply to other environments. By the way, if you want to understand how application developers may be using existing objects to create applications, go and watch a mason building a *stone* wall (if you can find anywhere such an endangered species). You will see there the notions of a software base, available objects, selection of objects, fitting of objects, mortar as glue, etc. The striking impression is that for such an effort you need imagination, not discipline. That sort of goes against traditional thought about what programming ought to be. But I better stop here. To illustrate that no problem is new, here is a correspondence between hacking, and object design and configuration. Object design Hacking ------------- ------- select objects from software base get packages from network modify them hack them configure via scripts link with shell commands monitor behaviour prototype & test evolve software base distribute on the network You get the feeling that what we are trying to do is to provide some academic respectability for hacking. Greetings from Geneva. D. Tsichritzis (UUCP: mcvax!cernvax!cui!dt)