saeaadl / emv2

AADL Error Model V2 annex language
0 stars 0 forks source link

Type transformation sets in connection error behaviors are confusing #98

Open joeseibel opened 1 year ago

joeseibel commented 1 year ago

In section E.12, the standard has a couple paragraphs describing how type transformation sets are used in connection error behavior clauses.

In paragraph (3), the standard says, "Type transformation sets are used to determine how an error propagation from the source component of a connection is affected by any error propagation from a hardware component such as a bus, virtual bus, processor, device, or system, resulting in a changed error type token at the destination component of the connection."

Semantics (6) says, "The specified error type transformation set is used to determine the target type token arriving at the connection destination from the source type token of the connection source, when combined with contributor type, first the connection error source and then the incoming propagations from the connection binding."

I think this language is confusing and doesn't explain well the intention of type transformations in connection error behaviors. After discussing it with @lwrage, I believe I have a better understanding. First of all, we can consider a type transformation set as a function that takes two type tokens as parameters and returns one type token. With that said, I'm going to attempt to write out what Semantics (6) is trying to say in pseudo-code:

sourceToken = type token from the out propagation on the source of the connection;
connectionErrorSourceToken = type token defined in the connection error source object for the connection;
result = typeTransformationSet(sourceToken, connectionErrorSourceToken);
if connection is bound to a bus or other hardware component per the Actual_Connection_Binding property
  busToken = type token from the out bindings propagation on the bus that the connection is bound to;
  result = typeTransformationSet(result, busToken);
result token propagates to the in propagation on the destination of the connection;

If the above is true, this seems like a convoluted way to specifying what type token shows up at the destination of a connection. It also seems like type transformation sets are used in somewhat differently in transitions than in connection error behaviors. For transitions, the type transformation sets are optional as the target type token can always be specified. The type transformations are only used to infer the target type if it is omitted from the transition. Here, the type transformations are required as there is no way of manually specifying this information in the connection error source.

We probably need to address the following questions:

  1. Are connection error sources necessary or can we throw them out? See #94.
  2. What syntax do we want in order to specify how type tokens are combined from the source of a connection, the connection error source, and the bus it is bound to in order to produce the type token that shows up at the destination of a connection?
  3. How do we explain the syntax in a way that clearly expresses intent and is unambiguous regarding how to interpret it? Examples should be given.