Research Article

A Quality Model for Conceptual Models of MDD Environments

Table 3

23 Defect types of conceptual models found using OOmCFP and OCL rules.

Defect types found using OOmCFPOCL rules

Defect: An object model without a specification of an agent classcontext Agent inv: body self.allInstances- size() 0
Defect: An OO-Method Conceptual Model without a definition of the presentation modelcontext ConceptualModel inv: body self.presentation- size() 0
Defect: A presentation model without the specification of one or more interaction unitscontext PresentationModel inv: body self.interactionUnit- size() 0
Defect: An object model without the specifications of one or more classescontext StructuralModel inv: body self.ownedClass- size() 0
Defect: A class without a namecontext Class inv: body Class.allInstances()- select(c c.name.isEmpty())- isEmpty()
Defect: Classes with a repeated namecontext Class inv: body self.allInstances()- forAll(c1, c2 c1 c2 implies c1.name c2.name)
Defect: A class without the definition of one or more attributescontext Class inv: body self.features- select(t t.oclIsKindOf(TypedProperty))- collect(t t.oclAsType (TypedProperty))- size() 0
Defect: A class with attributes with repeated namescontext Class inv: body self.features- select(t t.oclIsKindOf(TypedProperty))- collect(t t.oclAsType (TypedProperty))- forAll(a1, a2 a1 a2 implies a1.name a2.name)
Defect: An instance interaction unit without a display patterncontext InstanceIU inv: body self.displaySet- size() 0
Defect: A population interaction unit without a display patterncontext PopulationIU inv: body self.displaySet- size() 0
Defect: A display pattern without attributescontext DisplaySet inv: body self.relatedAttribute- size() 0
Defect: Derived attributes without a derivation formulacontext DerivedAttribute inv: body self.derValue.effect- select(f f.value.isEmpty())- isEmpty()
Defect: A filter without a filter formulacontext Filter inv: body self.filterFormula- select(f f.value.isEmpty())- isEmpty()
Defect: An event of a class of the object diagram without valuations (excluding creation or destruction events)context Event inv: body self.allInstances- select(e (e.kind ServiceKind::creation and e.kind ServiceKind::destruction) implies e.valuation.size() 0)
Defect: A class without a creation eventcontext Class inv: body self.features- select(s s.oclIsKindOf(Service))- collect(s s.oclAsType (Service))- select(s s.kind = ServiceKind::creation)- notEmpty()
Defect: Transactions without a specification of a sequence of services (service formula)context Transaction inv: body self.effect- select(f f.value.isEmpty())- isEmpty()
Defect: Operations without a specification of a sequence of services (service formula)context Operarion inv: body self.effect- select(f f.value.isEmpty())- isEmpty()
Defect: A service without argumentscontext Service inv: body self.argument- size() 0
Defect: A service with arguments with repeated namescontext Service inv: body self.argument- forAll(a1, a2 a1 a2 implies a1.name a2.name)
Defect: A precondition without the specification of the precondition formulacontext Service inv: body self.precondition.effect- select(f f.value.isEmpty())- isEmpty()
Defect: A precondition without an error messagecontext Service inv: body self.precondition- select ( .errorMsg.isEmpty())- isEmpty()
Defect: An integrity constraint without the specification of the integrity formulacontext Constraint inv: body self.effect- select(f f.value.isEmpty())- isEmpty()
Defect: An integrity constraint without an error messagecontext Constraint inv: body self.allInstances- select ( .errorMsg.isEmpty())- isEmpty()