-
Notifications
You must be signed in to change notification settings - Fork 30
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
Revise the Data Dictionary Implementation #310
Comments
There is the original proposal page on the wiki: https://github.com/openETCS/toolchain/wiki/Integration-of-Data-Dictionary-into-Papyrus However I think a more detailed description is necessary for proposing changes. |
I'd like to show the actual state of my proposal for the mapping from XML to UML, and discuss it. My vision of the data dictionary is that its goal is to document all variables and packets used in the control system. Actually, all data is produced in bitwalker XML format form the textual specification. The goal of the plugin is to produce a UML model form XML files that can be used for documentation in SysML and SCADE models. This UML model should not be directly used as implementation but referred by objects in the model for documentation and traceability. The main requirement is to have a lossless transformation. In the following sections, I summarize the bitwalker xml format, then propose how to perform the transformation to UML, and finally give an example made by hand in Papyrus. Bitwalker XML sourceVariablesThe variables are defined in the XML by an element "Variable" containing the following elements:
PacketsEach packet is defined in the XML by an element "Packet" with contains:
Packet data is a sequence of elements:
UML mapping:The goal of the mapping is to be easily readable with minimal number of UML elements used. Each variable should be transformed into an UML classifier, allowing to add attributes as properties and specs as a nested classifier. Because this model will be used as documentation the kind of classifier does not really matter. However, only one classifier should be used for consistency. Enumerations should not be used because we lose information about special values. Indeed, a value cannot be directly linked with an enumeration literal (except with comments). Packets should be handed in the same way using nested classifiers for contents, conditional parts and loops. To achieve this the usage of a new profile with new stereotypes is proposed:
Each sequence of elements that are in a conditional, or a loop, should be encapsulated inside of a new classifier, and the property of type of this block should appear in the packet with <> or <> stereotype. For loops the iteration variable should appear preceding this block and should be referenced by a property of the stereotype for consistency. Simple hand made example (in Papyrus)As a proof of concept I propose a hand made version of "Gradient Profile" packet, NID_PACKET variable and Q_GDIR variable. This was made using Papyrus. The corresponding model is easily readable and manually modifiable. Comments on the proposalThis proposal remains close to the XML representation, we're not sure that it is the best approach. Mainly because:
One direction could be the usage of plain SysML (primitive types, value types, dimensions, units). I toyed with this, but did not achieve anything satisfying. |
@lfronc thanks for this proposal - this looks very promising. Two comments:
|
From 20.03.14 telco:
|
Bump - any progress here? Also, it's still not possible to assign this to Lukasz. |
Lukasz suggested to revise the Data Dictionary implementation, as currently some data in the XML is not exposed in the UML profile. Rather than working on the implementation right away, we will:
The text was updated successfully, but these errors were encountered: