Reply
This is an open group. Sign in and click the "Join Group" button to become a group member and start posting.
Highlighted

Operations Diagram (is this the basic VI?)

As a side note: I skip discussing Expressions and Constraints, as there is almost no change to Abstractions.

Operations Diagraml.png

Parameter:
They are derived from TypedElement and MultiplicityElement. To me this now seems obvious, as I want them to have a type (e.g. integer) and I also would like to use arrays.
They even can have a default value.
The direction complies with other text languages i have encountered: return, in, inOut, out.

Operation:
In Basics it is derived from TypedElement and MultiplicityElement; in Constructs from Namespace and Feature. The attributes of the MultiplicityElement (isOrdered, ...) are redefined to be derived from the return Parameter (which is a MultiplicityElement).

Error handling:
Each error is modelled by a Type object. The abstract class BehavioralFeature defines an association 'raisedExceptions'.
This is redefined by the operation class, also I don't see any variation.
Raised Exceptions have no notation in the uml diagram.

Constraints:
I don't really catch the use case, so I ignore this feature in it's full complexity.

Parameters:
Some inconsistency when redefining the ownedParameters, it's not written in the text (but in the Superstructure). Also the navigational arrow is missing. Also I don't get the reason for the redefinition, the only guess is that the other end of the association is now named 'operation'.
Only one parameter of kind return is allowed, which defines the Type and the Multiplicity attributes.

Redefinition:
I didn't draw it on my uml diagram, but there is also an association redefinedOperation. An Operation is a RedefinableElement (super-class of feature). I still don't grasp the complete concept of redefinition.

Static operations:
This is mentioned in the text, but the attribute feature::isStatic is introduced in the superstructure.

LabVIEW:
An operation natively relates to our basic element in LabVIEW: the (Sub)VI. I'll need to think further from this point, so just a small set of notes:

  • We don't have a return parameter available, so an operation would never have a type or multiplicity.
  • Our error handling is the same as passing parameters. But I think it should be correct to model our error wire as an raised Exception instead of marking every operation with an 'inout error:error cluster'.
  • Parameter would model the terminals of the SubVI. To properly translate to/from uml, I'd use the lable/name (Parameter is inherited from NamedElement).
  • I miss an option in uml to make a parameter required (like if I don't define a default value). This has proven to be a useful feature in LabVIEW.
www.aescusoft.de
My latest community nugget on producer/consumer design
My current blog: A journey through uml
0 Kudos
Message 1 of 3
(4,480 Views)
2 REPLIES

Re: Operations Diagram (is this the basic VI?)

I miss an option in uml to make a parameter required (like if I don't define a default value). This has proven to be a useful feature in LabVIEW.

Me too. One thing I've done is define a series of stereotypes in a LabVIEW profile diagram which allow me to tag methods (member VIs) as <<Property>>, <<Dynamic>>, etc. This has proved useful as well, and after doing this I'm convinced there's a way to futher extend the paramter list such that additional qualifiers can be specified using the profile diagram. I specifically want to be able to qualify required, recommended, optional. The problem is the documentation is so verbose and specific, that I'm having a tough time even finding where to begin...

Message 2 of 3
(851 Views)

Re: Operations Diagram (is this the basic VI?)

I did play with eclipse/papyrus today. I created a profile with an enum (required, recommended, optional). Then I imported the metaclass Parameter and Extended it through a Sterotype LVParam with the property ConPaneKind of type of above enum.

In my test project I could apply the profile to the package, create inside the package->Class->Operation->Parameter. Then I could apply the sterotype to the parameter, it even displayed the enum nicely.

But sadly, nothing showing on the diagram.

Felix

www.aescusoft.de
My latest community nugget on producer/consumer design
My current blog: A journey through uml
0 Kudos
Message 3 of 3
(851 Views)
Reply
This is an open group. Sign in and click the "Join Group" button to become a group member and start posting.