Bundt User's Manual · Bundt Toolset version 1.0.1.0

Model Elements

A model element is a discrete component of a model. In fact, models can be seen as organized collections of model elements.

There are various kinds of model elements, each one having very specific meanings. In addition, model elements relate to each other in an orderly manner, so that they compose a mesh or network within a model that can be navigated.

Details

Most model elements have a name that we can use to refer to it. This name is usually an identifier so that the system can handle and process it. When you examine the details of a model element in a property page, the name is shown at the top.

Kinds of model elements

Models of different kinds (type or instance) contain model elements of different kinds too.

Type models may contain elements of these kinds:

  • Packages are groups of related classes and enumerated types.
  • Enumerated types are lists of options that we can use to provide controlled values for an attribute.
  • Enumerated items are individual options inside an enumerated type.
  • Classes represent categories in the world.
  • Generalizations represent subsumption relationships between classes, such as in "a house is a type of building".
  • Properties represent abstract characteristics of a class, which have yet to be implemented as either an attribute or an association.
  • Attributes represent atomic characteristics of a class, such as the population of a city or the style of a building.
  • Associations represent relationships between classes, such as in "buildings are located in cities".
  • Semi-associations are associations as seen by each of the participant classes.

Instance models may contain elements of these kinds:

  • Objects represent entities in the world, such as Rome or the Colosseum.
  • Values represent specific details of these entities, such as in "Rome has a population of 2.880.000".
  • References represent unidirectional connections from these entities to other ones, such as in "Rome is located in Italy".
  • Links represent bidirectionaly connections between entities, such as in "the Colosseum is located in Rome and Rome is the location of the Colosseum".

If you want to learn more about the different kinds of model elements, please refer to the ConML modelling language in which the Bundt Toolset is based.

Model parts

Model parts include model elements plus other things that, strictly speaking, are not model elements but also are contained in models, such as languages and tags. The major difference between model parts and model elements is that parts do not necessarily represent the world, whereas elements always do. Also, model parts may exist in both type and instance models alike.

There are two kinds of model parts:

  • Languages express what natural language (such as English or Spanish) is used to describe things in a model.
  • Tags are simple labels that we can use to annotate or organize model elements.
Identity of model elements

Model elements possess identity; this means that two model elements, even if their properties are lexically the same (same name, definition, comments, etc.), are still semantically different.

For example, imagine a Building class in a model with a given definition, comments and other properties. Now imagine that we create a Building class in a another model with the same definition, comments and other properties. These two classes are semantically diffferent, although lexically equivalent.

To avoid confusion between model elements, the system gives each model element a key, which is composed of the owner model's guid plus a sequential number. This key is always shown at the top of a model element's property page.

Identity has strong implications. For example, imagine that we have a type model containing a Building class, as described above. Imagine now that we change this class' name to Person, and adjust its definition and other properties accordingly. This would be a mistake, as the resulting class would still have the same key as the original, and thus be considered the same class, albeit with a changed name and definition. If you want a different class, delete the original and create a new one.

See Also


Contents distributed under a Creative Commons Attribution 4.0 International License · About · Terms of Use · Contact Us · last updated on 08 October 2020