[Ccsds-omg-liaison] AB review of the SOLM Revised submission (space/2011-02-01 to 04)

hugues.vincent hugues.vincent at thalesgroup.com
Mon Mar 14 11:15:42 EST 2011

Dear Brad and Space DTF members,

Here are my first comments as AB reviewer of the Specification for the Spacecraft  Operations Language Metamodel" revised submission (space/2011-02-01 to 04).

This version of the submission is a real improvment wrt to the previous version. A  proof of this quality is the interest of non-involved people such as JPL's Nicolas Rouquette (whose mail contains interesting comments, btw). Many thanks for that!

General comments: 
- For the sake of readability, the diagrams should be moved to the beginning of each  section 6.x or, better, with each class.
- The table of content need to go to the third level of title
- A Big Picture of the important classes and their relationships needs to be given in  order to ease the reading.
- I'm a bit annoyed with the phrase "with the assistance of Aerospace Corporation"  because Aerospace Corporation is not a member of the OMG. We'll need to sort this out  during the AB meeting.
- The execution model (ie fUML vs BPMN, see Nicolas's mail) will need to be discussed  during the AB meeting as well.

Localized comments:
- Section 1: nice introduction which allow to understand well the issues at stake.  Perhaps, it could be useful to specify that this spec is about earth satellite.
- Section 2 and 5 are the only place "SOLM Executive" is used instead of "SOLM  execution environment" (AFAIK, please check this): choose one and be consistent all  over the document.
- Section 6.1: "For that reason ... Figure 8": I believe that this is not on Figure 8.
- Figure 5: I didn't encounter the definitions of HeaderComment and InlineComment.
- Section 6.1.2 "It is defined in the modelling environment": and in the execution  environment.
- Section "A negative time value can be used" -> must
- Section 6.2.3: the introduction speaks about AbsoluteTime and not about ActivityEdge,  that really needs some explanation.
- Section "Parallel flows should use a JoinNode or ...": what happen, if not?  Even if it lead to an unspecified behaviour, this needs to be said.
- Section the introduction is hard to understand. For instance, which node is  it about: everything but DecisionNode, MergeNode, ForkNode and JoinNode? But it just  remains FinalNode and InitialNode!
- Section "multiple guards should be exclusive": what if not? this needs to be  said (even if unspecified behaviour).
- Section which version of python? Reference?
- Section 6.2.12: what is "FinalNode" for?
- Section what if there is no matching "Join"? This needs to be specified.
- Section the way this exception handling system work with the multi-thread  system needs to be specified.
- Section "should" -> must
- Section 6.2.17: "a MergeNode allows a thread..." is confusing. I propose: "a  MergeNode allows a path of execution...".
- Section the content seems to be useless.
- Figure 8: "guard" needs to have a constrain saying that the value must be a boolean  expression.
- Figure 9: I believe that several constrains need to be put on "containedNode" and  'handler" from HandledExceptionRegion to deal with specific cases such as: the  inclusion of one region in another (is allowed?), or the interleaving of two regions,  or the presence of a fork in a Region and so forth
- Figure 10: I didn't see the definition of ProcedureArgument.
- Figure 10: Add the association between Device and ProcedureEnvironment
- Section "may" -> "must" (two times)
- Section 6.3.4: "may" -> "must"?
- Section 6.3.4: "Some GemsParameters may be variable, in which case...": what happens  if it is not writable?
- Section 6.3.5: "may" -> "must"?
- Section 6.3.5: "Some GroundParameters may be variable, in which case...": what  happens if it is not writable?
- Section "If the Parameter has never ... have not InstantValue": what happens  in that case? an exception?
- Section 6.4.1: "by an XTCE document or another source": I didn't see the case  "another source" modelled: where is it?
- Section the 6 "should" need to be replaced by "must", don't they?
- Section 6.4.4 must be moved to section 6.1
- Section which "Send action"? This sentence is hard to understand during the  first reading: please add a reference and explain.
- Section how is defined the timeout period?
- Figure 12: Please add the classes Value (linked to ParameterWrite) and Directive  (linked to Send).
- Section "page" ?
- Section what does mean "Represents a specific point in time" for an Invoke?
- Section which version of python? Reference?
- Section which "expected value" are you speaking of? I'm a bit lost, there...
- Section 6.6 - 6.5.4: remove "that closely ... and nodes" (that was not the question  asked by the RFP, actually).

These comments don't preclude any further comments from me or other AB members.

Best regards,
OMG Architecture Board Member
hugues_vincent (at) omg.org

More information about the Ccsds-omg-liaison mailing list