-
Notifications
You must be signed in to change notification settings - Fork 128
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Generalisation does not work as intended in SYSML #75
Comments
Hi, I am not sure that you described the expected UML/SysML generalization behaviour, and I will try to explain my point of view. Let's say that you are defining an object A and its child an object B (so you have a generalization from A to B). But when I instantiate (use) B, in this case, I do want to see or access to all B properties (from its proper definition or coming from its generalizations). So in SysML, when I am modeling Block Definition Diagram (BDD), I just only want to see B properties (not those coming from A) to focus on B definition. Does it clarify my point? |
Etienne, I'm Senior Expert for System Architectures in the company and Yes Rhapsody implements the generalization exact like that. A Object (A) which is specialized down to B(the child) will cause the child ALL properties inherited as described - including its ports. Of course you can hide the objects inherited or even overwrite (polymorphism) as well. Sometimes this is a natural need. It has nothing to do with "pollution" it has to do what you generate with the generalization. At least you should let the user decide if the want or not. In a C++ Class also the children see the properties and Methods of the base class - here we don't call that pollution. Also a Tool like Modelio should implement basics of SYSML correct and not patronize the user. I was on the search for suitable replacement of Rhapsody and this first simple test failed for Modelio. Of course i can add the ports manually on the child's (an in my case the child has child's as well). This manual action will cost me extra time and a loss of accuracy. Because a property of the Father (in A) must go straight through because the dependency otherwise the generalization rule is broken. I had the hope that there is a difference in Modelio from drawing diagrams with DIA or VISIO. Unfortunately i don't have my screenshots at hand (made in RPY) Its Like that : RUT (a Router) <--RUT X11 (Family) RUT X11<-- RUT_TRUCK CONTEXT composes RUT_TRUCK,RUT_CABIN,RUT_TRAILER (on a BDD) and in IBD i can link the Parts of RUT_TRUCK,RUT_CABIN,RUT_TRAILER Benefit of that: So it's a mixture of generalizations to a certain level and then do directed compositions. Why ? - I want to express the chain of technical properties correct a generic definition of a RUT, or X11 or 950 family is not a physical device you can have, a named Router (RUT_TRUCK) is one and has a "path" the RUT(root object) at all. This technique speed up maintenance extreme. Of course it as drawbacks because you really need to model careful. Thanks for understanding that windy mind of me..... Greets Daniel |
Hi Daniel, First of all, thanks for all, we will try to see what Rhapsody is capable of and what we can learn from it. Now let's try to summarize your point, Modelio implements SysML generalisation correctly (your are able to create it, modify it, etc. ) but you expect, from the tool, particular facilities, features, shortcuts, which are not part of SysML specification but made System Architect life easier or more productive. Am I right? The good news is that possible under Modelio!!! And you can ask more like creating a IBD from a composition set for example. Of course, Modelio can be better. Best Regards, |
getting closer, "One of the useful language mechanisms that results from Generalization is for the specialized elements to inherit the structural and behavioral features from the generalized element. So far in the example diagrams the engineer has chosen not to display these inherited features, but they can be set to be displayed using the compartments sections of the element's Property sheet." So it's definitly part of the SYSML and not a optional ;) Greets Daniel |
That's definetly a nice feature but its comes from a tool documentation and not from any standard specification like UML or SysML, am I right? |
I think I see what @danieldd0 is getting at. when I use a generalization relationship between two blocks, I don't see that the specialized block inherits any properties or features of the general block. Per the UML specification, I would expect at least that the inheritedMembers attribute is synchronized:
I would also expect to see an attribute indicating the generalizations: Right now, I see no indication in the attributes that anything is inherited. @etiennebrosse , are you suggesting that this is something the modeler should maintain manually? It's definitely nice if Modelio could automatically provide the features and properties to the specialized elements, and indicate (with the ^) that they are inherited properties and features. The only way I see to indicate that something is inherited is to manually enter the ^ in the name of the element. |
Using SYSML a generalisation to a block does not work as intened:
Expected Behaviour :
The father block has a port, expectation is that the child Block will show up the port as well after generalisation (and of course any depth of itteration)
Faulty Behavior:
The child block does not get any port from father visible
Tests i did:
It does not make an difference if the father block has the port before or after adding the generalisation.
Checked also older version of modelio (5.0 / 5.3) no difference. => generalisation is just a arrow on the sketch.
Also no effect on the two different generalisations....
Side effect noted:
If a Block gets a port on different diagram it will not show on the others unless you move manually the port from the left tree on the diagramm (anywhere) then it "falls" to the owners block. (sometimes this behavior is ok)
Solving suggestions:
1.) repair the generalisation to make them generalize all properties comming from the source.
2.) Probably make an (context) menue to the block to control when port updates shall appear and when not..
The text was updated successfully, but these errors were encountered: