pyuseocl.evaluation¶
Model the result of the evaluation of a USE OCL state (a soil file) against
a USE OCL model. This module represents the output of the evaluation
while the module ‘evaluator’ actually perform the computation from
a state (a ‘.soil’) and a model (a ‘.use’)) using a check
command.
Simply put this module represents the information contained in the output of
this command which might look like:
checking invariant (NUM) `CLASS::INVARIANT': OK.
checking invariant (NUM) `CLASS::INVARIANT': FAILED.
> false : Boolean
Instances of CLASS violating the invariant:
> Set{@bedroom201,@bedroom202, ...} : Set(Bedroom)
The evaluation is modeled at two levels of granularity.
At the model level there are 3 classes:
 ‘ModelEvaluation’ is the toplevel result. This is an abstract class.
 ‘ModelValidation’ is a ‘ModelEvaluation’ representing the fact that ALL invariants have been validated.
 ‘ModelViolation’ is a ‘ModelEvaluation’ representing the fact that at least one invariant has not been validated.
At the feature level (e.g. ‘invariant’ or a ‘cardinality’) there are also 3 classes:
 ‘InvariantEvaluation’ is an abstract class representing the outcome of the evaluation of an invariant against a state.
 ‘InvariantValidation’ is a ‘InvariantEvaluation’ representing the fact that the invariant has been validated.
 ‘InvariantViolation’ is a ‘InvariantEvaluation’ representing the fact that the invariant has been violated.
 ‘CardinalityViolation’ represents the fact that a cardinality has been violated.
All these objects are created by the module ‘evaluator’.
Classes
CardinalityViolation (modelViolation, role, ...) 
Cardinality violation. 
InvariantEvaluation (modelEvaluation, invariant) 
Result of the evaluation of an invariant. 
InvariantValidation (modelEvaluation, invariant) 
Invariant validation. 
InvariantViolation (modelViolation, ...) 
Invariant violation. 
ModelEvaluation (model[, state]) 
Result of the evaluation of a USE OCL state against a USE OCL model. 
ModelValidation (model, state) 
Result of the positive evaluation of a USE OCL state against a USE OCL model. 
ModelViolation (model, state) 
Result of the negative evaluation of a USE OCL state against a USE OCL model. 
CardinalityViolation¶

class
pyuseocl.evaluation.
CardinalityViolation
(modelViolation, role, violatingObject, cardinalityFound)[source]¶ Cardinality violation.
Looks like this in USE OCL:
Multiplicity constraint violation in association `ASSOC': Object `OBJECT' of class `CLASS' is connected to NUM objects of class `CLASS' at association end `END' but the multiplicity is specified as `NUM'.
InvariantEvaluation¶
InvariantValidation¶
InvariantViolation¶

class
pyuseocl.evaluation.
InvariantViolation
(modelViolation, invariant, violatingObjects)[source]¶ Invariant violation.
Looks like this in USE OCL:
checking invariant (NUM) `CLASS::INVARIANT': FAILED. > false : Boolean Instances of CLASS violating the invariant: > Set{@bedroom201,@bedroom202, ...} : Set(Bedroom)
ModelEvaluation¶

class
pyuseocl.evaluation.
ModelEvaluation
(model, state=None)[source]¶ Result of the evaluation of a USE OCL state against a USE OCL model. This is an abstract class. In practice this could either be a ModelValidation if the state is valid, that is there is absolutely no errors. If there is at least one error, then this will be a ModelViolation. A ModelEvaluation contains a map of InvariantEvaluation as well as a map of CardinalityEvaluation.

state
= None¶ str

invariantEvaluations
= None¶ dict[Invariant, InvariantEvaluation]

cardinalityViolations
= None¶ dict[Role, list[CardinalityViolation] ]
