CsmRulesForLqnGenerator - JUCMNAV/projetseg-update GitHub Wiki
Originally proposed by Dorin B. Petriu, Ph.D. candidate, Carleton University (March 30, 2007)
- All Scenarios must begin with a Start path connection
- All top-level Scenarios must begin with a Start path connection that includes a Workload
- Conversely, all Scenarios that begin with a Start path connection with a Workload are treated as top-level Scenarios
- so a sub-scenario with a Workload will be traversed every time it is included in a complex Step as well as once as a stand-alone top-level Scenario, sub-scenarios that should not be traversed on their own should not have any Workload attached
- All CSM Scenarios must finish with an End path connection
- All Steps (and Resource Acquire/Release) must be connected to predecessor and successor path connections mutliple Steps without
- DA: Not sure about the last part
- Conversely, all path
connections must be connected to source and target Steps (or
Resource Acquire/Release). However:
- Start path connections cannot have source Steps and must have
- target Step 1. End path connections must have 1. source Step and cannot have target Steps
- Sequence path connections must have 1 source Step and 1 target Step
- Fork and Branch path connections must have 1 source Step and 2 or more target Steps
- Join and Merge path connections must have 2 or more source Steps and 1 target Step\1 Mutliple Steps without path connections are not allowed
- Multiple path connections without Steps are not allowed
- DA: For the two above, you mean sequences of Steps without path connections and vice-versa? This is redundant with the previous info. Also, this is already enforced by the XSD schema
- All Resource Acquire/Release elements must be contained in the Scenario
- Resource Acquire/Release elements must not be contained inside Steps, even though the schema allows for them to be so contained.
- All resources that are not ProcessingResources must be acquired/released explicitly with Resource Acquire/Release elements
- Active Components must have a host relationship with a ProcessingResource
- The host ProcessingResource for a Component is implicitly acquired when the Component is acquired 1. The host ProcessingResource for a Component is implicitly released when the Component is released
- ProcessingResources must not be explicitly acquired/released
- Complex Steps with sub-Scenarios with multiple Start/End path connections must have Input and Output Bindings to indicate which Start/End path connections are connected to the main flow of the path
- All Steps should have a hostDemand attribute
- The target Steps of a Branch path connection should have a probability
- That probability is the probability for that particular branch
- It is preferable that Steps have a component attribute that points to the Component in whose context the Step executes
- DA: Otherwise?
- The number of resourceUnits acquired over the traversal of a top-level Scenario must equal the number of resourceUnits released through the traversal of a top-level Scenario
- DA: Otherwise? This might be difficult to enforce at the UCM level. Is this detected by the tool and does this prevent the LQN from being generated?
- It is not permissible at any point in the traversal of a Scenario to release more units of a resource than were previously acquired along that Scenario
- DA: ditto
- The End path connection of a Scenario with a ClosedWorkload must occur in the same Component execution context as the Start path connection
- DA: Why?
- There are no defaults for Workload attributes
- The Step hostDemand attribute has a default value of 0
- The Step probability attribute has a default value of 1.
- The Step repCount attribute has a default value of 1.
- DA: Any defaults for RA/RR quantities, for component multiplicities...
- Does not properly handle sequences of successive Resource Acquire/Release elements that do not have at least one execution Step in between them
- Need to insert a "dummy" execution Step (with hostDemand of 0) between any sequence of successive Resource Acquire/Release elements
- Does not properly handle Fork-Join or Branch-Merge constructs where the Fork/Branch and Join/Merge occur in the execution context of different Components
- Does not handle at all Scenarios where Join/Merge occurs before Fork/Branch
- How are resources used after a Fork?
- Assume that all parallel branches of a Fork share the resources held at the Fork?
- How to interpret unmatched ResourceReleases along a parallel branch?
- Assume that the resource is released for all the parallel branches?
- At what point along the other parallel branches do they lose the use of the resource?
- What is the meaning of resources passed at a Fork?
- Assume that the parallel branch which get passed a resource owns it exclusively?
- What about all the other resources?
- Does the parallel branch own any of them?
- Does the parallel branch own only the resources it is passed?
- Does the parallel branch share all resources that have not been explicitly passed to it or any other parallel branch?
-- Main.DanielAmyot - 30 Mar 2007