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).
Moving your mouse over the elements of the FMC-Metamodel diagram above will display additional information.
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.
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.
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.
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).
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.
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.)
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:
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:
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:
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.
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.