[comp.lang.smalltalk] 1990 version of GROPE now available

new@ee.udel.edu (Darren New) (12/06/90)

University of Delaware is pleased to announce the availability of 
    GROPE - Graphical Representations of Protocols in Estelle

GROPE (Graphical representation of protocols in Estelle) is a tool for 
graphically animating the dynamic execution of an Estelle formal specification.
Developed in Smalltalk-80 and based on a SUN 3/110 workstation, GROPE is a 
window-based system that pictorially represents a protocol's architecture, 
animates transitions firing and the exchange of interactions between modules, 
graphically displays a module's extended finite state machine and the 
changing of states, and so on.

It is expected that the GROPE tool will assist the original protocol specifier 
in the design and debugging process, promote faster understanding of a 
protocol by those using it for the first time, and facilitate the development 
of effective test scenarios.

GROPE runs on Sun-3s, Sun-4s, Macintoshes, IBM PCs, and others (tm's).
It requires ParcPlace Smalltalk-80(tm) Version 2.5 and works best with
NIST's WISE interpreter.  Full details of system requirements may be
found in the Grope-Readme file.

GROPE is available via EMail by anyone sending their email address to
grope@udel.edu.  If possible, please send your name and affiliation for
the purpose of allowing me to support claims of usefullness. The actual
code is available, as are Postscript versions of articles describing
GROPE and its operation.

Also available via email is a collection of ``real world'' Estelle
specifications, many of which have been made to work with GROPE.  Send
mail to "Est-Specs@udel.edu" for more information. Contributions
welcome!

If you have any comments, questions, problems, or suggestions for improvement,
please feel free to contact us at GROPE@UDEL.EDU or USA phone number
(302) 451-8013 (Darren New) or (302) 451-1944 (Paul Amer, CIS dept).
GROPE can also be obtained by those without email access: contact us.
Our mailing address is 
   Paul Amer
   c/o Department of Computer and Information Science
   103 Smith Hall
   University of Delaware
   Newark, DE 19717
   FAX: 302-451-8000

A complete description of GROPE is appeared in
    Information Software and Technology
in March of 1990 under the title
    "Adding Graphics and Animation to Estelle".
Also, an update on the status of GROPE was presented at FORTE'90
in Madrid, Spain and will appear in those proceedings. 
These papers are available in Postscript form to those who request it.
A LaTeX version of these papers are also available for those without
Postscript, but lacking issulstrations suffer in their presentation.

Thank you for your time.       -- Darren New (new@udel.edu)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

New features since FORTE~'89:

GROPE can currently interface to the NIST WISE interpreter, which is
also written in Smalltalk, and can display the results of WISE
interpreting an arbitrary Estelle specification.  At FORTE'89, GROPE
was only capable of receiving information from WISE and outputting
graphical information to the screen: there was no communication path
established from GROPE back to WISE. This restricted GROPE's
applicability. Now, GROPE includes a mechanism whereby GROPE can
respond not only to WISE but to any program to which it is interfaced,
again maintaining the flexibility of using GROPE with a variety of
other tools.

The ability of a user to select and examine the contents of queues, the
ability to resolve non-determinism, and the ability to inspect the
bodies of transitions are all available in GROPE at this time.

It should be stressed that GROPE can interface to any Estelle
interpreter implemented in any language. The University of Delaware is
prepared to work with other tool builders to enhance their tools by
adding GROPE as a graphical front-end.

At FORTE'89, reducing the size of a GROPE window caused the
contained information to be scaled to a smaller size. 
This reduction sometimes made complex FSMs illegible.

A feature has been added to GROPE whereby windows can be ``zoomed'' in
to display only local areas of an FSM. As transitions fire, these
windows scroll to remain centered on the currently active state or
transition.  This allows many more state machines to be viewed
simultaneously without any becoming illegible due to a small window size.

Needless to say, most of the annoying bugs have been fixed.

Future Research:

We are investigating GROPE's ability to visually display a FSM at
varying levels of detail, i.e., not showing all states and transitions
at once.  This would allow complex machines to be studied
incrementally, aiding the visualization process. It is expected that
this feature will also allow improved first-guess graphics of a finite
state machine and may even lead to automatic modularization of poorly
written specifications. In addition, investigation of a graphical
Estelle editor based on GROPE is in progress, as is investigation of an
automatically-generated test case visualizer.


-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Availability:
  GROPE is available for Smalltalk-80 VI2.5 (ParcPlace ObjectWorks)
  and Smalltalk-80 VI2.2.  This file contains the code for VI2.5.

  The Grope-Wise-Driver (which allows WISE to call GROPE during execution)
  also is available for VI2.5.  It is untested for the latest version
  of WISE under VI2.2.

  WISE is available directly from National Institute of Standards
  and Technology (NIST, formerly NBS), without whose help GROPE would
  never have come to be.
    >From: Rachid Sijelmassi <sijel@apm1.ncsl.nist.gov>
    >Organization: National Institute of Standards and Technology (NIST)
    >Sub-Organization: National Computer Systems Laboratory
    >
    >The latest version of WISE is available by anonymous FTP
    >from osi.ncsl.nist.gov.  The code for WISE is part of
    >the OSIkit package, so you can take all or part of it.
    >Once you are on osi.ncsl.nist.gov, go to pub/osikit.
    >You will find the Estelle-to-C compiler (estpc.tar),
    >the ASN1 tool (asnfvt.tar), Wizard (estwizard.tar),
    >WISE (estwise.tar) and the manuals (mansrc.tar).
  Please note that to translate from Estelle to Smalltalk,
  estwizard.tar will be needed in addition to estwise.tar.

  The Smalltalk-80 interpreter is available from ParcPlace Systems
  at a cost of several hundred dollars (depending on the machine) for
  educational institutions.  
  ParcPlace Systems
  1550 Plymouth Street
  Mountain View
  California 94043
  Info@ParcPlace.com  Info@ParcPlace.uucp

Please read the comments in the Grope-Display classes for documentation
of the menus available within GROPE.

Please note that Smalltalk-80 is a liscenced product and a registered 
trademark of ParcPlace Systems.  GROPE is copyright 1988 1989 1990 by the
University of Delaware (All Rights Reserved) but may be freely redistributed
in its original form and without modification, addition, or deletion.
GROPE may NOT be redistributed for a fee except media costs, small
handling charges, and normal downloading fees.  GROPE may be posted
to private or commercial bulletin-boards within these restrictions.
Please contact us before charging fees for commercial support of GROPE.
Please contact us if you make any improvements or bug-fixes to GROPE
in order that we may incorporate your changes (with thanks!) into
our "official" version.

GROPE is supported, in part, by the US Army CECOM Center of Software
Engineering and the Office of Naval Research (N14-83-K-0320, N14-88-K-0253).
WISE is in the public domain (as far as I know) as is most material
developed by NIST.

I would like to thank the people at NIST who encouraged me and made valuable
suggestions about the structuring of GROPE and who provided the WISE 
interpreter that makes GROPE worthwhile in the first place.  I would also like
to thank Dr. Paul Amer who supplied the original ideas for GROPE, as well
as the funding.

------------------------------------------------------
Note that you MUST have Smalltalk-80 Virtual Image version 2.5 to run this
version of GROPE.  Please contact GROPE@UDEL.EDU if you have an older
version (2.2, 2.3, or 2.4).

To install GROPE into your Smalltalk-80 image, follow these steps:
1) If you have a postscript printer and you wish GROPE to be able
    to print, file in the printer support stuff.
2) You MUST file in the FStream.st file from the Smalltalk utils directory
    in order to run WISE under VI2.5.
3) FileIn the wise.st code to load WISE. Note that the wiseForm* must 
    be in the current directory (not the same as the Wise directory)
    before trying to FileIn wise. Note that two methods will fail to
    compile and that many warnings will be generated.  On the failing methods,
    just select "proceed" to ignore the erroneous methods.
4) FileIn the wise-patches-for-25.st file, which will fix the incorrect methods,
    will eliminate the warning messages, and will fix a couple of bugs in
    the WISE routines.  Exactly what changes are made is documented at the
    beginning of that file.
5) FileIn the grope code. During the GropeView class>initialize code, the
    Grope-Queue-Forms.st file will be sought. If you get no queues
    displaying, reinitialize GropeView and make sure that the file
    is found. Also, the files Grope-Driver-Form.st and 
    Grope-Background-Form.st will be read.  These should probably be 
    renamed before filing in GROPE unless you enjoy gaudy backgrounds.  
    These can be deleted safely and are used primarily when the UDel GROPE 
    team demos GROPE to others. The Grope-ABP* files
    include the forms for the GROPE demo.  If you select not to install
    the standard GROPE screen menu (a BinaryChoice will appear during filein)
    you may need to press break (Ctrl-C) and close the notifier to regain
    control.  
6) To actually interpret an Estelle spec with wise, you must do the
    following:
6a)  Edit the Estelle spec (say "plover.e"). End the name with .e
      To avoid confusion, name the specification body "plover".
6b)  Due to restrictions of the current Grope-Wise driver, all transitions
      must be expanded and named with the "name :" clause.  That is, each
      transition body must correspond to exactly one arc in the FSM
      drawing and each must have a unique (within the body) name.
      This is not a restriction of WISE, but only of the current version
      of GROPE, and will eventually be lifted.  You need to name transitions
      even if the only state is the default state; however, if there are
      no named states then you will see no FSM pictures.
6c)  Copy the Estelle spec to a Smalltalk name:
      cp plover.e plover.st
6d)  Start the wizard program:
      wizard plover.st
6e)  type "escape e" to translate to smalltalk.  If you get an
      error message instead of smalltalk on the screen, type
      "escape e control-x control-w escape s control-x control-c"
      and look in the plover.st file for the string "===" which will
      mark error messages. If you got "Syntax error on line XX" then
      just "control-x control-c escape s" to exit wizard and fix the
      offending lines. If you got smalltalk code, type
      "control-x control-w escape s control-x control-c" to save
      the smalltalk code.  P.S., this takes several minutes.
6f)  Start ST80, choose "wise" from the screen controller, and choose
      "add a spec" from the upper-left pane. Then, add a site, select
      the spec and the site, and start the selected spec. Fiddle around.
7) To interpret it with GROPE, you must file in Grope-Wise-Driver.st 
    after loading WISE and GROPE (in that order) but before loading
    specifications with WISE.  Then simply choose "build grope" from the
    specification menu before starting the specification under wise.

Note that WISE has some serious user-interface problems, primarily in the
scheduling of views. GROPE also needs some work, but not as much. Both of 
these are prototypes, so don't expect to use them in a "production" environment.

Known bugs in Grope-Display:
1) Sometimes when multiple Processes update at the same time (multiple
   transitions firing at once, multiple outputs, etc.) reverse-video
   spots will be left on the screen. This is new since VI2.5 and I
   suspect that something has become non-atomic. If you find out
   what is causing this, please let me know.
2) Doing "restore display" while transitions are in the middle of firing
   can cause updates to lock up the scheduler. This is due to the way
   that refreshing is handled; basically, I busy-loop waiting for updates
   to complete. I'll work on this.

Known bugs in Grope-Wise-Driver:
1) You need names on the transitions even if you have no states and thus
   can't display the FSM. Since I plan to eventually not require
   expansion of the transitions, I don't plan to fix this one soon.

Known bugs in Wise:
1) Due to the way WISE views are added to ScheduledControllers, sometimes
   moving the pointer from one view to another and trying to use the
   menu does not work. To work around: move to the background, bring up the
   screen menu (to unselect all views) and then move off that menu,
   release the mouse button, and move to the WISE view you wish to work on.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

File in the Grope-Display.st class.
(Grope-other stuff will be drivers for Grope)
It will add the category Grope-Display.
It will also add several graphical operations to the Path, 
Point, Curve, Form, DisplayObject classes.
It will add some functionalty to ScreenController and 
BlockContext as well; the ScreenController>>openGrope will display
an example of AlternatingBit protocol.
Use "Smalltalk browseAllCallsOn: #GropeDisplay" to
see all changes outside of the Grope-Display category.

The GropeSpec class has several examples.
The GropeView class has several parameters which
can be modified by the user; some are constants and some 
are initialized class variables. GropeView version will return
a string describing the current version, currently 0.95.

To run a demo of GROPE, send the current screen controller
the message openGrope (like by putting it in the screen menu
or by typing that method into a workspace).
Open out the window, which will show the architecture
of the AlternatingBitExample. Click anywhere in the window away
from other things, which should make the border turn gray.
Select "load" off the yellow menu, and AlternatingBitExample.gr
should be loaded (if in the current directory). This should cause the
window to redraw. Make sure your transcript is open, and then
use "test" from the yellow menu while the specification body is
selected to "simulate" a driver (with informative messages going
to the transcript). Due to Smalltalk's lack of clipping, GROPE windows
which are overlapped by other windows will not be updated.

My preference is to open the transcript at the bottom,
the specification body on the left side,
AlternatingBit[1] on the top right (showing FSM),
AlternatingBit[2] on the bottom right (showing FSM).
Leave the AlternatingBit modules in the specification
showing the architectures (for the queues).
Note that the rectangle that would be overlapped were
the label of a window to be extended fully to the right
is considered part of the window; thus, a GROPE window
overlapping this area will not be updated.

To exit this demo, hold all three mouse buttons down until you get
an "ABORTED" message in the Transcript (appologies to thos with one- and
two-button mice). To pause, move the cursor to the upper-left corner.

Please see the class comments for GropeDBody, GropeDSpecBody, 
GropeDLink, GropeDIP, GropeDState and GropeDTransition
for explainations of the menus.
------------------------------------------------------

-- 
--- Darren New --- Grad Student --- CIS --- Univ. of Delaware ---
----- Network Protocols, Graphics, Programming Languages, 
      Formal Description Techniques (esp. Estelle), Coffee, Amigas -----
              =+=+=+ Let GROPE be an N-tuple where ... +=+=+=