saeaadl / aadlv2.2

SAE AADL core language, version 2.2
1 stars 0 forks source link

Subprogram groups and thread groups legality rules #49

Open jjhugues opened 4 years ago

jjhugues commented 4 years ago

Thread groups have the following legality rule

(L2) A thread group component implementation can contain abstract, data, subprogram, subprogram group, thread, and thread group subcomponent declarations.

Subprogram groups have the following legality rule

(L2) A subprogram group implementation can contain abstract, data, subprogram group, and subprogram subcomponents as well as data and subprogram access connections.

=> There is no legality rule that states that a subprogram group implementation must have at least one subprogram or subprogram group as subcomponent

a thread group implementation must have at least one thread or thread group as subcomponent

This legality rule is similar to the rule that states that a process must have at least one thread, that is a check done at instantiation

jjhugues commented 4 years ago

Proposed resolutions

- [ ] Add the following legality rule for subprogram groups

a subprogram group implementation must have at least one subprogram or subprogram group as subcomponent

a thread group implementation must have at least one thread or thread group as subcomponent

jjhugues commented 3 years ago

Subprogram groups already had

(L3) A subprogram group type or implementation may contain zero or more subcomponent declarations. If it contains zero elements, then the subprogram group type or implementation is considered to be incompletely specified.

lwrage commented 3 years ago

There is no such legality rule for processes, There's only a note in the process section and a consistency rule for system instances 13.1 (C1).

lwrage commented 3 years ago

The legality rule (L3) for subprogram groups doesn't make sense as written. It mentions types even though we talk about subcomponents, "zero or more" doesn't add anything that isn't known, already, "zero elements" is unclear. Also, an implementation could inherit a subprogram subcomponent.

I suggest to remove the legality rule for subprogram groups and add consistency rules to the system instance section, instead.

brlarson commented 3 years ago

I agree with Lutz that (L3) doesn't make sense and should be removed. I don't see need for (a) consistency rule(s) instead. In what way would empty subprogram groups be inconsistent?

jjhugues commented 3 years ago

The original rule, and the one I proposed are part of many rules that we should consider removing. They discuss some notion of model completeness. Yet, this notion is analysis specific. When we discussed separately with Lutz, we agreed it makes more sense to remove those

jjhugues commented 3 years ago

Rules (L3) have been clarified to remove component type and keep only implementation, as only those can have subcomponents. No further action at this stage