UML 2.2 RTF Avatar
  1. OMG Issue

UML22 — UML 2 Issue: Message notation

  • Key: UML22-502
  • Legacy Issue Number: 6463
  • Status: closed  
  • Source: Simula Research Laboratory ( Dr. Bran Selic)
  • Summary:

    PROBLEM STATEMENT
    According to Superstructure, p. 430, the notation for messages in
    interaction diagrams is as follows (we put assumptions between parenthesis):

    asynchronous message - (solid line) open arrowhead
    synchronous message - (solid line) filled arrowhead
    reply message - dashed line (filled or open arrowhead?)
    object creation - dashed line open arrowhead

    However, the example given in Figure 333, p. 414, shows a different
    notation:

    asynchronous message - solid line open arrowhead (not shown in this diagram,
    but in others)
    synchronous message - solid line filled arrowhead
    reply message - dashed line OPEN arrowhead
    object creation - SOLID line open arrowhead

    Another confusing aspect of the notation is that in a reply message, which
    is not a true message, the message name is the name of the operation invoked
    on the callee (same as in the corresponding synchronous call), but it
    suggests instead that there is an operation with this name in the caller. In
    Figure 333, the reply labeled as "foo(_)" visually suggests that there is an
    operation named foo in class C1, which is wrong: foo is defined in C2, not
    in C1. It would make more sense to label a reply message with the name of
    the value returned.

    PROPOSED SOLUTION
    The simplest solution would be to fix Figure 333 using a dashed arrow to
    represent object creation, although this would yield the same notation for
    object creation and reply message. Therefore, beyond this simplest solution,
    we propose something more advanced: First, state explicitly the notation for
    all kinds of messages, leaving no place for assumptions. Second, use a
    filled arrowhead for reply messages, since this emphasizes the conceptual
    proximity to the synchronous message it is a reply from. Third, use the
    notation for object creation also for object deletion, which currently is
    not mentioned. That is:

    asynchronous message - SOLID LINE open arrowhead
    synchronous message - SOLID LINE filled arrowhead
    reply message - dashed line FILLED ARROWHEAD
    object creation OR DELETION - dashed line open arrowhead

    Or better, simply drop object creation as an special kind of message. Object
    creation (and deletion) was not considered a special kind of message in UML
    1, and it is not at all clear why it should be in UML 2. Probably, an object
    creation is either synchronous or asynchronous, but not "something else" in
    the same meta-specialization row. In fact, the constraints and semantics of
    Message (Superstructure, p. 429) do not consider object creation as
    messages: "The signature must either refer an Operation (...) or a Signal",
    "A Message reflects either an Operation call (...) or a sending and
    reception of a Signal". Neither does the meta-attribute Message.messageSort,
    which has the following permitted values: synchCall, synchSignal,
    asynchCall, asynchSignal. By the way, what do synchSignal and asynchCall
    mean? The "sorts" of message are not defined in the Spec. Although calls are
    considered in other places to be either synchronous or asynchronous, signals
    are explicitly defined to be asynchronous (Superstructure, pp. 15, 371, 394
    and 395), therefore at least synchSignal is banned.

    Finally, we also propose to label reply messages with the name of the value
    returned by the operation call, not the operation name itself. In Figure
    333, this would leave the replies foo() and doit() without label, and the
    last reply would be labeled simply as "x".

  • Reported: UML 1.5 — Fri, 7 Nov 2003 05:00 GMT
  • Disposition: Resolved — UML 2.1
  • Disposition Summary:

    see above

  • Updated: Fri, 6 Mar 2015 20:58 GMT