From owner-shlaer-mellor-users@phoenix.projtech.com  Mon Sep 10 23:53:16 2001
Received: from phoenix.projtech.com (209-234-139-66.twtelecom.net [209.234.139.66] (may be forged))
	by saturn.cs.uml.edu (8.11.6/8.11.6) with ESMTP id f8B3rFs181498
	for <lechner@cs.uml.edu>; Mon, 10 Sep 2001 23:53:15 -0400 (EDT)
Received: (from majordom@localhost)
	by phoenix.projtech.com (8.9.3+Sun/8.9.1) id UAA05500
	for s-m-users-outgoing; Mon, 10 Sep 2001 20:03:24 -0700 (MST)
X-Authentication-Warning: ns.projtech.com: smap set sender to <rs@roxsoftware.com> using -f
Date: Mon, 10 Sep 2001 20:03:13 -0700 (PDT)
From: "Cortland D. Starrett" <rs@roxsoftware.com>
X-Sender: rs@saturn.he.net
To: shlaer-mellor-users@projtech.com
Subject: (SMU) MLS/MDS Example (and Vendor Word)
Message-ID: <Pine.LNX.4.21.0109102000380.30073-100000@saturn.he.net>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-shlaer-mellor-users@projtech.com
Precedence: bulk
Reply-To: shlaer-mellor-users@projtech.com
Errors-To: owner-shlaer-mellor-users@projtech.com
Status: RO

"Cortland D. Starrett" <rs@roxsoftware.com> writes to shlaer-mellor-users:
--------------------------------------------------------------------

> The other point I'd like to make on this thread is let's hear more from the
> vendors of model compilers (thanks to Raistrick of KC for anticipating this
> request.)  Remember: the language is what your compiler vendor says it is!
> ;-)  
> -Chris

In response to Chris Lynch's request for the word from the model
compiler vendors, let me describe the behavior of MC-3020 (which
generates ANSI C from BridgePoint models).  [Note that the poly
leg of MC-3020 represents a manifest rendering of Case's theoretical
posits (aka rants :) as code gen craft.]

A polymorphic event "percolates" down a subtype hierarchy until
landing on a subtype instance which does not ignore the event
(transitions or "can't happen"s).  As multi-directional subtyping
is encountered, this percolation traverses both legs.

It is possible for an event to "flow through" a subtype (which
is also a supertype) to a subtype at a lower level in the hierarchy
(or "splice" if you prefer).  Splice does imply that only one instance
along a particular leg will consume the event, which is true (and
differs from the KC description provided by Chris Raistrick).

An example is warranted:

         R2
  R1   /-+- C
A -+- B  R3
       \-+- D

B is a sub to A across R1
C is a sub to B across R2
D is a sub to B across R3
(Note that we model a multi-directional subtype.  C and D are not
siblings in their respective isa relationships.)

A defines poly events A1*, A2* and A3*
B defines event B1 mapped to A1* plus poly event B2*
C defines events C1 mapped to A2* and C2 mapped to B2*
D defines events D1 mapped to A2* and D2 mapped to A3*

Of course all state models must be prepared to receive any poly
from above in the hierarchy.  Sameness of event signatures must also
be adhered to.

Scenarios:

- If event A1* is generated, the related B instance consumes it.
- If event A2* is generated, B percolates it down R2 and R3 cloning
A2* because of the multiple directions.  The related instances of
C and D each consume the event.
- If A3* is generated, B percolates the event down R3, and D consumes it.
- If B2* is generated, B passed the event through R2, and C consumes it.

Note that if C or D defined an event mapped to A1*, they would never
receive it.  B will always consume the event at a higher level in the
hierarchy (due to the B1 mapping to A1*).

With the software architect hat firmly screwed on (and all analysis
biases firmly stashed away), the model compiler needs to support all
of the "rules of OOA".  Thus multidirectional subtyping is blithely
supported.  However, when said model compiler hat is doffed, the
analyst in me recommends navigating these modeling waters cautiously.

Cortland D. Starrett
ROX Software, Inc.



