Logo blue background.png

Bruce Powel Douglass, Ph.D.

  • Content

    • Resources
    • Embedded World
    • Papers
    • Presentations
    • Models
    • Harmony aMBSE Overview
    • Harmony aMBSE Functional Analysis
    • Harmony Embedded Software Overview
    • Harmony ESW Nanocycle
    • Safety Analysis and Design
    • Books
    • On the Web
    • Links
  • Services

  • Public Interest

  • Blog

  • What's New

  • Forum

  • About

  • Comments

  • Site Map

  • Geekosphere

  • Members

    • Members Only
  • More

    Use tab to navigate through the menu items.
    To see this working, head to your live site.
    • Categories
    • All Posts
    • My Posts
    Avraham Makeler
    Apr 04, 2020

    Activity Diagrams: How to model actions that share intermediate results

    in UML / SysML

    Hi experts,


    re: Activity Diagrams: How to model actions sharing intermediate results


    This is a cross post from another group. Apologies. Excuse: I need an an answer fast. Thought: The heaven;y gates of excuses are always very busy ...


    Here goes... Scenario: In a UML/SysML activity diagram, I have two concurrent threads. In one thread there is Action X and in the second thread there is Action Y.


    Action X shares its intermediate result data with Action Y, because Action Y needs the data for its own processing.


    Similarly, Action Y shares its intermediate result data with Action X, because Action X needs the data for its own processing.


    How would I show on an activity diagram these two flows (exchange of data)? The problem I am having is that in order for an action to output something, then the action must complete its processing. That is the way I understand SysML actions: there is no such thing as an action 'somehow magically outputting something' while still only half-way complete.


    Seems to me that to model such a thing I am forced to add some detail inside the two actions X and Y.

    Example diagram supplied, of what I want to do. But I don't think that this activity diagram does it.



    Thanks,


    Avraham

    11 comments
    0
    Bruce Douglass
    Apr 05, 2020

    There are two ways to model intermediate computations being passed out of an activity before it completes: The first is to use <<stream>>. In the example shown, the action in the middle sends the object token to to the activity parameter as it completes, not as the activity completes.




    The other way is to simply make the action from which you want intermediate output a separate Call Behavior (nested activity), so that it pipes out the value when the Call Behavior completes.

    0
    Avraham Makeler
    Apr 06, 2020

    Approach #1 looks great. Thank you very much. I was sort of worrying that I had a need that "nobody had thought of yet". Hopefully I will get time soon to say more about the way this technique is to be used.

    0
    Bruce Douglass
    Apr 08, 2020

    A clarification. The above is what *I* do. I think that stream should be a stereotype, as is <<rate>> and <<continuous>>. However, in the UML 2 spec, it is an *annotation*, which is basically a comment. I find that unsatisfying. I've attached the relevant part of the UML 2.5 spec

    0
    Bruce Douglass
    Apr 08, 2020

    More ...


    Although UML does define a property on activity parameters IsStreaming which by default is set to False; it also provides for a standard notation which nobody uses as far as I can tell.


    0
    Avraham Makeler
    Apr 12, 2020

    Hi Bruce,

    Thank you for sharing with me your thorough treatment of this.


    >> "I think that stream should be a stereotype, as is <<rate>> and <<continuous>>. However, in the UML 2 spec, it is an *annotation*, which is basi