Metamodel

The FMC metamodel depicts the atomic concepts and their relations which are necessary to describe software-intensive systems using FMC. However, it neither defines the syntax of the different types of FMC diagrams nor the relationships between FMC diagrams on different levels of abstractions. The explaned metamodel is also available as download (88.29kB) as well as the FMC metamodel diagram (28.65kB).


Entity set AGENT: active system component which performs operations and accesses locations to which it is connected. According to the system example below: {a1, a2} Entity set LOCATION: storage place or channel used by agents to communicate and to store values. According to the system example below: {c, s} Entity set OPERATION: each agent performs a number of operations. According to the system example below: {o1, o2, o3, o4, ..., o15} Entity set VALUE: a location contains a value in a particular time interval.? According to the system example below: {count, reset, empty, 0, 1, 2, 3} Entity set EVENT: the change of a value in a location. According to the system example below: {e_c1, e_c2, e_c3, ..., e_c10, e_s1, e_s2, e_s3, e_s4, e_s5} Entity set POINT OF TIME: each event occurs at a particular point of time. Not defined in the system example below. Relation CONNECTION: connects a channel to at least two agents. According to the system example below: {(a1, c), (a2, c)} Relation CONNECTION: connects a storage to at least one agent. According to the system example below: {(a2, s)} Relation PERFORMS: each agent performs a number of operations. According to the system example below: {(a1, o1), (a2, o2), (a1, o3), (a2, o4), (a1, o5), (a2, o6), (a1, o7), (a2, o8), (a1, o9), (a2, o10), (a1, o11), (a1, o12), (a1, o13), (a1, o14), (a1, o15)} Relation TRIGGERS: each event can trigger another agent to perform an operation. According to the system example below: {(e_c1, o2), (e_c3, o4), (e_c5, o6), (e_c7, o8), (e_c9, o10)} Relation ISOUTCOMEOF: each event is caused by a modifying write access performed by an agent. According to the system example below: {(e_c1, (o1, (c, count))), (e_c2, (o11, (c, empty))), (e_c3, (o3, (c, reset))), ...} Relation CAUSALORDERING: all events occur in a causally ordered way. According to the system example below: {(e_c1,  e_s1), (e_c3, e_s2), (e_c5,  e_s3), (e_c7,  e_s4), (e_c9,  e_s5)} Relation READACCESS: while performing an operation, an agent can read the value of a location the agent is connected to. According to the system example below: {(o2, (c, count)), (o2, (s, 0)), (o4, (c, reset)), (o6, (c, count)), (o6, (s, 0)), (o8, (c, count)), (o8, (s, 1)), (o10, (c, count)), (o10, (s, 2))} Relation WRITEACCESS: while performing an operation, an agent can write the value of a location the agent is connected to and has write access. According to the system example below: {(o1, (c, count)), (o2, (s, 1)), (o3, (c, reset)), (o4, (s, 0)), (o5, (c, count)), (o6, (s, 1)), (o7, (c, count)), (o8, (s, 2)), (o9, (c, count)), (o10, (s, 3)), (o11, (c, empty)), (o12, (c, empty)), (o13, (c, empty)), (o14, (c, empty)), (o15, (c, empty))} Relation CONTAINS: each location contains exactly one value. According to the system example below: {(c, count), (c, reset), (c, empty), (s, 0), (s, 1), (s, 2), (s, 3)} Relation CONSISTSOF: structured values consist of values which are again structured or unstructured. Not defined in the system example below. Relation POST: each event can be assigned the value which could be found after the event occured. According to the system example below: {(e_c1, count), (e_c2, empty), (e_c3, reset), (e_c4, empty), (e_c5, count), ...} Relation PRE: each event can be assigned the value which could be found before t?he event occured. According to the system example below:  {(e_c1, empty), (e_c2, count), (e_c3, empty), (e_c4, reset), (e_c5, empty), ...} Relation VALUE-OBSERVABILITY: in each pre-defined time interval exactly one value can be observed in a location. Not defined in the system example below. Relation TIMEINTERVAL: two points of time between which the value of the location stays constant. Not defined in the system example below. Relation EVENT-OBSERVABILITY: points of time at which the occurence of events can be observed. Not defined in the system example below. Relation TIME-PLACE: time at which the value in a location changes. Not defined in the system example below.

FMC-Metamodel Moving your mouse over the elements of the FMC-Metamodel diagram above will display additional information.

Comments on the FMC metamodel (as FMC Entity Relationship diagram)

In general, the FMC metamodel distinguishes three fundamental types of structures - compositional structure, dynamic structure and value range structure. A brief description of these three structures follows below.

Compositional structure

The compositional structure is the (mostly) static structure of a system in terms of components and their connections. A system thus consists of active and passive system components. We call the active components agents and the passive ones locations. Locations are either channels which are only used for communication among the agents, or storages which are used by agents to store information. Please note that shared storages (more than one agent having access to a storage) can also be used for communication purposes. The difference between a channel and a storage is that the information on a channel is volatile (e.g. information transmitted by a radio station vanishes as soon as the transmission is stopped) whereas the information in a storage is not (e.g. information on a whiteboard stays until a human agent clears/changes it). A channel is accessed by at least two agents, whereas a storage is accessed by at least one agent. Agents and locations can be both, purely conceptual elements of a high level model or representations of technical components, such as operating system tasks, network connections or storage devices.

Value range structure

While a location is a abstract or physical place, a value represents the information that is observable at such a location. A value is either unstructured i.e. is atomic like a bit or an integer number, or structured i.e. it consists of two ore more other unstructured or structured values. Examples for structured values are a record, a stack or even the complete content of a database. Please notice that both, contents of storages and information appearing at channels (messages etc.) are considered as values.

Dynamic structure

The dynamic structure of a system represents all activities performed by agents and their observable results at locations. An activity may consist of a single sequence of operations as well as simultaneous sequences of operations. An operation is a basic activity, i.e. the "smallest" activity an agent can perform. Normally, when an agent performs an operation it reads values from locations, then it processes this information and finally writes the result to a certain location. Sometimes an agent does not need to read values in order to write values to certain locations, i.e. a generator. So an operation consists of at least one write access concerning at least one location. We may also say that there is at least one access per operation and concerned location. Possible types of access to locations are either read access which means the value currently observable in a location does not change, or write access which means — presupposed the new value differs from the previous one — the value in a location changes. There is also a modifying access which consists of a read access followed by a write access to the values of the same location. As an outcome of a write access a value at a location may change, i.e. an event occurs. Each event occurs exactly at one point of time. The pre- and post-values of the event are the values which can be observed at the location before and after the value change. Accordingly, the post-value of an event can be the pre-value of the following event (at the same location of course). An event itself can cause an agent which is connected to the location where the event occurs to perform an operation. Between events exist causal dependencies, i.e. there is a causal ordering (partial ordering).

Relations to FMC diagrams

It is important to point up that the metamodel shows the fundamental terms and their relation. It does not show how systems are described in textual or graphical form with FMC. Nor does it show the syntax of FMC diagrams and the relation between them on different levels of abstraction. The FMC diagrams in general describe types of the three presented structures.

FMC block diagrams indeed depict compositional structures and thus the nodes depict agents and locations. But the edges depict the kind of access (read, write, modifying) which are not associated to the compositional structure within the metamodel. The FMC Petri nets are used to show the dynamic structures. With the help of Petri nets it is possible to generate occurrence sequences which show the causal ordering of activities / operations / events. There are no graphical representations for access or point of time etc.


Example for the FMC Metamodel

The intention of this section is to introduce an example system in order to give a better understanding of the semantics of the FMC metamodel which is quite hard to understand without an example. The formal description of the example in form of sets and relations is not meant to be really important to understanding. It shows that it is easy to map the system description to the metamodel.

To clarify the metamodel we will present exemplary entity sets and relations resulting of the example system shown in Figure 1. It consists of two agents a1 and a2 which are connected via a channel c and a storage s connected to a2. Agent a1 can send a "count" or a "reset" message via channel c to agent a2. Whenever a message appears at c, agent a2 will increase or reset the value (natural number or zero) currently held at storage s. The value at s is increased modulo 4, i.e. "increasing" 3 yields the value zero. The system thus is a modulo 4 counter with the option to reset the counter.

As one can see, we have defined the entity sets and relationships from the metamodel to reflect the example system of Figure 1. Actually, all entity sets and relations are finite sets which contain only those items that are really present in the system or relevant for the consideration of the system's behavior respectively. (The mathematical descriptions inside the gray shaded boxes may be ignored in order to understand the implications of the example with the metamodel.)

Example System (Modulo 4 Counter) Figure 1: Example System (Modulo 4 Counter)

Compositional Structure

As we can see our system consists of several system components. The active components – agents – are a1 and a2. A channel c and a storage s are the passive system components. Furthermore agent a1 and agent a2 are connected to channel c, whereas storage s is only connected to agent a2. These are all system components and connections mentioned directly in the description above.

Accordingly, the following sets can be defined:

(Agents) A = {a1, a2}
(Channels) C = {c}
(Storages) S = {s}
(Locations) L = C ∪ S = {c} ∪ {s} = {c, s}
 
(Connections between agents and channels) CAC ⊆ A × C = {(a1, c), (a2, c)}
(Connections between agents and locations) CAS ⊆ A × S = {(a2, s)}

Value Range Structure

The values appearing at channel c are either "count", "reset" or "empty", where "empty" denotes the value after a message has disappeared and the next one has not yet been sent. The storage s is used to store numbers 0, 1, 2 or 3. Obviously, the values in our example are unstructured.

Thus we can define the following set and relation:

(Values) V = {count, reset, empty, 0, 1, 2, 3}
(Values placed at locations) LV ⊆ L × V = {(c, count), (c, reset), (c, empty), (s, 0), (s, 1), (s, 2), (s, 3)}

Figure 2: Exemplary system behavior Figure 2: Exemplary system behavior (here value pattern)

Dynamic Structure

Figure 2 shows an exemplary value pattern of the system. It shows information about values, events and points of time on each location but not necessarily the dependencies among them nor which agent is responsible for the occurrence of values. We know from the short introduction of the sample system at the beginning that agent a1 is responsible for changes on channel c. So it has to perform operations to write messages to channel c. Thus agent a1 needs write access to c.

Whereas agent a2 performs operations which change the value at storage s depending the message received via channel c. The first operation of a2 is to read the message sent by agent a1, thus a2 needs read access to c. In case of resetting the value at s the operation consists solely of a write access. The operation for increasing ("count") the value at s involves a combined read/write access because a2 needs first to know the current value in order to write back the increased value.

This leads to the definition of following set and relationships:

(Operations) O = {o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13, o14, o15}
(Operations performed by agents) AO ⊆ A × O = {(a1, o1), (a2, o2), (a1, o3), (a2, o4), (a1, o5), (a2, o6), (a1, o7), (a2, o8), (a1, o9), (a2, o10), (a1, o11), (a1, o12), (a1, o13), (a1, o14), (a1, o15)}
(Read access) Aread ⊆ O × LV = {(o2, (c, count)), (o2, (s, 0)), (o4, (c, reset)), (o6, (c, count)), (o6, (s, 0)), (o8, (c, count)), (o8, (s, 1)), (o10, (c, count)), (o10, (s, 2))}
(Write access) Awrite ⊆ O × LV = {(o1, (c, count)), (o2, (s, 1)), (o3, (c, reset)), (o4, (s, 0)), (o5, (c, count)), (o6, (s, 1)), (o7, (c, count)), (o8, (s, 2)), (o9, (c, count)), (o10, (s, 3)), (o11, (c, empty)), (o12, (c, empty)), (o13, (c, empty)), (o14, (c, empty)), (o15, (c, empty))}

Since an event is defined as the change of a value, an event is the outcome of a write access occurring during one of the operations performed by agent a1 or a2. An event - of course - only occurs if the value written differs from the previous value. Thus a pre and post value is always associated with an event. In our case all write operations change the value of the locations they access. Figure 2 depicts the observable events in our example system.

Some events trigger operations performed by agents. Here, each appearance of a message at channel c triggers an operation (o2, o4, o6, ...) of agent a2 which changes the value at s. These value changes also produce events but these do not trigger any operations because no agent awaits value changes in s.

Events also have a causal ordering specifying which event needs to occur before another one in order for it to occur on its turn.

Thus defining:

(Events) E = {ec,1, ec,2, ec,3, ec,4, ec,5, ec,6, ec,7, ec,8, ec,9, ec,10, es,1, es,2, es,3, es,4, es,5}
(Events as outcome of write access) EAwrite ⊆ E × Awrite = { (ec,1, (o1, (c, count))), (ec,2, (o11, (c, empty))), (ec,3, (o3, (c, reset))), (ec,4, (o12, (c, empty))), (ec,5, (o5, (c, count))), (ec,6, (o13, (c, empty))), (ec,7, (o7, (c, count))), (ec,8, (o14, (c, empty))), (ec,9, (o9, (c, count))), (ec,10, (o15, (c, empty))), (es,1, (o2, (s, 1))), (es,2, (o4, (s, 0))), (es,3, (o6, (s, 1))), (es,4, (o8, (s, 2))), (es,5, (o10, (s, 3)))}
(Pre-values of events) EVpre ⊆ E × V = { (ec,1, empty), (ec,2, count), (ec,3, empty), (ec,4, reset), (ec,5, empty), (ec,6, count), (ec,7, empty), (ec,8, count), (ec,9, empty), (ec,10, count), (es,1, 0), (es,2, 1), (es,3, 0), (es,4, 1), (es,5, 2))
(Post-values of events) EVpost ⊆ E × V = {(ec,1, count), (ec,2, empty), (ec,3, reset), (ec,4, empty), (ec,5, count), (ec,6, empty), (ec,7, count), (ec,8, empty), (ec,9, count), (ec,10, empty), (es,1, 1), (es,2, 0), (es,3, 1), (es,4, 2), (es,5, 3)}
(Operations triggered by events) EO ⊆ E × O = {(ec,1, o2), (ec,3, o4), (ec,5, o6), (ec,7, o8), (ec,9, o10)}
(Causal ordering of events) EE ⊆ E2 = {(ec,1, es,1), (ec,3, es,2), (ec,5, es,3), (ec,7, es,4), (ec,9, es,5)}

The remaining entities and relation all deal with the observability of the system. A hypothetic observer of the system would have access to all locations and would observe the value changes without influencing the system by his observation. The hypothetic observer will only be able to observe:

The definition of these entities and relations would be straight forward but it doesn't give further assistance for the example system. Therefore they are skipped here.