Skip to content

Constraints

Marcel Heinz edited this page Mar 8, 2017 · 4 revisions

The following constraints are validated by the checker.

Creation Time Constraints

The following critical constraints are checked during the parsing process by the checker. The ANTLR based parser basically processes each line from start to end. Therefore, anything has to be declared before it is used. Whenever a critical constraint is violated, the parsing process stops and returns error messages.

  • The right side of a subtyping declaration is a declared type or 'Entity'.
  • The left side of a subtyping declaration is not 'Entity'.
  • Multiple inheritance is not allowed.
  • Any type only exists once.
  • Any entity only exists once.
  • Any relationship between two or more instances only exists once.
  • The right side of an instantiation is a declared type.
  • The left side of an instantiation is neither a declared type nor 'Entity'.
  • An entity cannot be instance of multiple types.
  • Every relation declaration refers to types that are already declared.
  • Every relation declaration only exists once.
  • A relation instance must conform to exactly one declaration.
  • The left and right side of a relation instance must be declared instances.
  • The domains and ranges of a function must be declared instances of Language.
  • A function application must fit to a declaration such that the input instances are elements of the (subset of) domains and the output instances are declared element of the (subset of) ranges.

Well-Formedness Constraints

The following constraints are checked after the model has been created. These checks validate necessary completeness and try to identify undesirable relationships.

  • There is no non-abstract direct instance of Technology. Only subtypes are instantiated for clarity.
  • There is no non-abstract direct instance of Language. Only subtypes are instantiated for clarity.
  • There is no non-abstract direct instance of System.
  • Every non-abstract instance must be linked to a resource.
  • Every type must be linked to a resource.
  • Every technology uses at least one language.
  • Any system/technology/artifact cannot be a direct part of two distinct composites.
  • Every fragment must be part of a composite.
  • Every fragment may only be further composed into other fragments.
  • Every function must be implemented.
  • Every function should be applied at least once.
  • Every artifact is element of a language.
  • Every artifact has a manifestation.
  • Every non-abstract artifact must have a role.
  • There is no cycle in subtyping/subset/parthood/conformance relationships.
  • Every link is a well formed URL or a filepath.
  • Every URL must refer to an available web resource.
  • Every filepath must refer to an existing file.