Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [papyrus-rt-dev] Integration of the rts model library in the core

I actually agree with Ernesto in that the services provided by the runtime library are part of the UML-RT language definition and therefore comparable to the UML-RT profile and the validation rules.

I also agree with Peter in that there are many cases within “sketching” of an architecture where the runtime library is not needed and I agree that the two scenarios Peter described in his Wed, Apr 27, 2016 at 10:38 message are reasonable, with the caveat expressed further below. So the two “packages I would see are:

  • UML-RT based structure modeling (we can already do structure modeling in UML, UML-RT is a differentiator); optional high level state machine modeling); optional UML-RT model library (which we could rename to something more palatable for all scenarios); no code generation
  • Full-fledged UML-RT modeling with code-generation/run-time (including the run-time model library)

However, I disagree with Peter that could not be helpful, for example as an intermediate step between the architecture and the implementation or to illustrate that there are cases where capsule parts must be connected before they can start processing (ergo the need for rtBound and rtUnbound) or a case where a timeout to a process is required - where you do not need to have action code for it to be meaningful. Granted, in this cases you could just create empty but named triggers, but then you would start moving away from UML-RT, which is also a scenario worth considering.

Finally, I think that all we need right now is to address the most common scenarios, as described by and Rémi (in his 27 April 2016 at 16:22 message) and corrected by Peter (in his Apr 27, 2016 at 10:38 AM message), while enabling users to still bring in the runtime library if they so desire by still having the “Load registered package" for UMLRT-RTS.uml (re: Rémi in his 27 April 2016 at 16:22 message).

Thanks and regards,

Charles Rivet
Senior Product Manager
charles@xxxxxxxxxxxxx

On 2016.04.27, at 11:09 , Peter Cigéhn <peter.cigehn@xxxxxxxxx> wrote:

Hi,

First of all, I just want to clarify that this is not an argument about whether the run-time model library is target/action language agnostic or not. I'm perfectly happy with the intention of keeping the run-time model library target/action language agnostic, even though I could also very well see that we could have different run-time model libraries, depending on target/action language and let the target language "shine through" in the run-time model library if that makes things easier. But that' s a completely different question, and I have no intention of bringing that discussion up again! :) 

So we just state that the run-time model library is target/language agnostic and that it can be placed in the "Common Runtime" 'box' that I made in my little sketch (Reference [3] in Remi's first mail in this thread).

This is more related to if you actually need the run-time model library at all, in certain modeling scenarios. If you haven't choosen to install any specific target/action language, then as I said, the use of the run-time model library is still pretty limited, even though it is target/action language agnostic. I really do not see why you would like to model stuff with e.g. the empty Frame protocol, if you are not planning on writing any action code? And since you mention rtBound/rtUnbound, I also have a hard time to see why you would like to create a state-machine with triggers based on such low-level protocol messages like rtBound/rtUnbound, if you are actually not planning on writing any action code as the next step (and actually have a run-time that generates events based on those protocol messages during run-time). For me all this is about which abstraction level (how "sketchy") you plan your model to be. And this is especially true when doing systems modeling based on UML-RT (which is what I have been involved in for the last 10+ years... :)

If you are modeling on an abstraction level where you don't have the need for action code, then you are highly likely also without the need to go into any of the details in the run-time model library.

/Peter Cigéhn

On 27 April 2016 at 16:54, Ernesto Posse <eposse@xxxxxxxxxxxxx> wrote:
Peter, wouldn't you need a language-agnostic model library anyway? It seems to me that Timing and Frame as well as rtBound and rtUnbound are an essential part of UML-RT, regardless of the target language, no?

Remi, considering Peter's concerns about the library being in the core, and considering the original thread, perhaps this could be addressed by a different namespace, so that we rename

o.e.prt.umlrt.core.cpp -> o.e.prt.umlrt.cpp
o.e.prt.umlrt.core.rts.library -> o.e.prt.umlrt.common.rts.library

Is there a reason why these two need to be in the core?

In fact we could (should?) go further:

o.e.prt.rts -> o.e.prt.cpp.rts
o.e.prt.codegen.* -> o.e.prt.umlrt.cpp.codegen.* 

perhaps refactoring some generic codegen stuff into

o.e.prt.umlrt.common.codegen


 

On Wed, Apr 27, 2016 at 10:38 AM Peter Cigéhn <peter.cigehn@xxxxxxxxx> wrote:
Hi,

I have a hard time seeing actual use of modeling with the run-time model library, but without any specific target/action language selected. As I already indicated in my little sketch, the run-time model library (if placed in the "Common Runtime" part) gets included by selected a specific target/action language feature (C++ or Java in the sketch).

As soon as you want to model run-time stuff, e.g. add an SAP based on any of the system protocols in the run-time model library, then you are a very small step away from needing a target language and actually reference that SAP in your action code. Keep in mind that two of the three system protocol actually do not have any protocol messages, since they are accessed directly as methods on the C++ representation of the port. So the use for adding SAPs based on empty protocol, without writing action code is pretty limited.

Sure, there could be some special cases where you are doing some "sketchy" modeling and still want to add SAP ports (based on "empty" protocols), but not write any action code. But I have a feeling that this is such an uncommon case, and if this is needed, then I would like to propose that you have to select a action/target language to be able to do that. Just to reduce the number of choices and alternatives.

So I would like to simplify things to cover two cases: Structure modeling (optionally with high level state machine modeling), but no code-generation/run-time support (and no run-time model library) and full-fledged UML-RT modeling with code-generation/run-time (including the run-time model library).

/Peter Cigéhn

On 27 April 2016 at 16:22, SCHNEKENBURGER Remi 211865 <Remi.SCHNEKENBURGER@xxxxxx> wrote:

Sorry, I meant “Papyrus-RT” core, not “Papyrus” for the new place for the runtime system model library.

 

Load registered package" for UMLRT-RTS.uml integration should be still added and present in tooling part, as this is probably the only place where this is needed. So it would be still accessible in Papyrus environment easily, and keep a small dependency footprint for code generators. I will move this extension to a tooling.xxx plugin.

 

I am now thinking about the integration and the automatic loading of the model library when creating a new model. The default language framework may provide support there, but it seems we will have 3 different possibilities when creating a new model, with all current extensions installed:

-        Structural modeling with no support (reference / load) of the runtime model library

-        Model with support of the runtime model library

-        Model with C++ support

Do you see some other case?

 

Regards,

Rémi

 

 

 

-------------------------------------------------------

 

Rémi SCHNEKENBURGER

+33 (0)1 69 08 48 48

CEA Saclay Nano-INNOV

Institut CARNOT CEA LIST

 

Description : PapyrusLogo_SmallFormatwww.eclipse.org/papyrus

 

De : papyrus-rt-dev-bounces@xxxxxxxxxxx [mailto:papyrus-rt-dev-bounces@xxxxxxxxxxx] De la part de charles+zeligsoft.com
Envoyé : mercredi 27 avril 2016 14:39
À : papyrus-rt developer discussions <papyrus-rt-dev@xxxxxxxxxxx>
Objet : Re: [papyrus-rt-dev] Integration of the rts model library in the core

 

Some comments inline below.

 

/Charles

 

On 2016.04.27, at 06:29 , SCHNEKENBURGER Remi 211865 <Remi.SCHNEKENBURGER@xxxxxx> wrote:

 

Hi all,

 

I restart the work on these bugs [1] this week. I wanted to integrated quite fast, as it impacts the architecture of the tool, especially having some impact on code generator and tooling.

 

The contribution on gerrit [2]  is ongoing, we are only facing now some small issues on the integration/testing part. Thanks to Ernesto, the contribution for the testing of the code generator was updated. I can easily now integration the contribution if it is OK with everyone, I just have to remove the reviewer Hudson-ci from the list of reviewers, and its -1 will be removed from the votes. Some historic discussion already happened on that mailing list [3]

 

However, before integrating this contribution, I wanted to be sure everyone was OK on it:

-        I created a new plugin for the rts model library. This model is supposed to be independent from any implementation language, so I added it to the core part of Papyrus, with no link to C++ as it was before. In fact, RTS model library and the runtime were distributed in the same plugin historically for convenience.

 

<cr>

I don’t think it should be in Papyrus Core. It really only belongs in Papyrus-RT. This library and the runtime is specific to UML-RT and therefore to Papyrus-RT.

</cr>



-        I moved the library in this new plugin, cleaned bit the dependencies, and I would like also to remove the extension as a Papyrus library. This declaration is used only for a tooling point of view, to be listed in the list of available registered libraries, it has no impact on the element resolution when model is loaded. Removing it would remove the dependency of the library to Papyrus, thus making it usable on standalone model transformation / code generation / etc.

 

<cr>

Regarding the part about the extension, does that mean it will no longer show in the “Load registered package”? I agree with this as long as it is automatically included in models. Actually, since Ericsson is (or planning on) using Papyrus-RT as a DSML platform that may not require the codegen or RTS, automatic inclusion may not be an ideal solution, but then you should also be able to remove stuff when creating a DSML.

However, it must be tied to the UML-RT code generation and the actual runtime. So if you are planning on using one of these, all three must be available in the toolset. Perhaps an option for UML-RT code generation on project/model setup, with default on inclusion (as I believe it to be the most common option)?

</cr>



-        I changed the pathmap location. It now points to the new plugin, so there are no impacts on the existing models referencing the model library by the pathmap (which should be always the case).

-        The o.e.prt.rts only contains the generated C++ code. As it is C++ dependent, I would advise to make it obvious in the namespace.

-         

Does everyone agree on that changes?

 

Once the contribution is merged, I can finish the work on the system protocol identification (and system classes by the way) relying on default language framework & specific profile

 

Regards,

Rémi

 

 

[1] Bug 488104: Identify UML-RT system classes in UMLRT-RTS model library

Bug 477721: Decide on common principle to identify system protocols,

including base protocol in UML-RT model library

 

 

 

-------------------------------------------------------

 

Rémi SCHNEKENBURGER

CEA Saclay Nano-INNOV

Institut CARNOT CEA LIST

 

 

_______________________________________________
papyrus-rt-dev mailing list
papyrus-rt-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/papyrus-rt-dev

 


_______________________________________________
papyrus-rt-dev mailing list
papyrus-rt-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/papyrus-rt-dev


_______________________________________________
papyrus-rt-dev mailing list
papyrus-rt-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/papyrus-rt-dev

_______________________________________________
papyrus-rt-dev mailing list
papyrus-rt-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/papyrus-rt-dev


_______________________________________________
papyrus-rt-dev mailing list
papyrus-rt-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/papyrus-rt-dev

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail


Back to the top