Information Flow Metamodel

The main goal of this metamodel is the description of the information flow among the entities of the system.

The modeling approach is based on the producer-consumer model that is widely used in distributed systems. This view of context-aware systems for UC was proposed by Zimmer in [3]. So, inspired
on this publication, our view is based on entities that exchange information to carry out system tasks.

Therefore, Information Flows are employed to communicate and share information among the Entities of the system. The mechanism is also inspired on the Message Passing mechanism employed in parallel programming.

The metamodel employed to define Information Flow models is depicted in Figure 14.

The Information Flow Metamodel
Figure 14: The Information Flow Metamodel

The System Information Flow metaclass represents the system boundaries where Context Aware Entities exchange information through Information Flows.
Context Aware Entities represent the entities of the system that exchange information.

Examples of Context Aware Entities are: Sensors, Actuators, Systems, Users, Software, PLCs etc.

The abstract Information Flow metaclass represent how information flows from one Context Aware Entity to another one.
There are two types of information flows: Point To Point Information Flows and Broadcast Information Flows.

While Point To Point Information Flows describe the information exchange between two Role Instances or Individuals (1 to 1 relationship); Broadcast Information Flows define the information exchange from a Role Instance or Individual to a set of them (1 to N relationship, N > 0).

On the one hand, examples of Point To Point Information Flows are: sending an email to user, a sensor and a Programming Logic Control (PLC), etc .On the other hand, examples of Broadcast Information Flows are: sending an email to a mailing list, publishing a web page, etc.

Note that both, Point To Point and Broadcast Information Flows are directional relaitonships that set the information producers and consumers.

Information Flows also define the information being transported from one entity to another one. The information (represented by the Data metaclass) is either Input or Output Data.
While Input Data refers to information that is sent from the Information Flow Producer, Output Data refers to information that is sent back from the Information Flow Consumer to the Information Flow Producer.

Thus, while Point To Point Information flows are allowed to define both, Input and Output Data; Broadcast Information Flows are allowed to define Output Data only.

The Data Definition defines the structure of the information being exchanged. This description is based on Regular Expressions. It defines 2 Terminal Data Definitions: the Type Data Definition to define basic types (such as int, long, real, string, etc.) and the ConstantDataDefinition to define enumerated types (i.e. mouse buttons are defined as: the LEFT, RIGHT and CENTER enumerated types).

The Varaible Data Definition defines a variable according to a Terminal Data Definition. Therefore, an instance of this metaclass represents an instance of a Type.

To represent collections, 2 operators where defined: the Collection Data Definition (representing the Kleene Closure) and the Not Empty Collection Data Definition (representing the variant of the Kleene Closure where there is at least one element in the collection).

Finally, the data structure defines to Binary Operation Data Definitions. The Sequence Data Definition and the Alternative Data Definition. While the first one defines collections of elements belonging to heterogeneous types; the second one is used to define different alternatives of data structures.

For instance, the Figure 15 depicts a the Information Flow model of a Temperature Controller in charge of turning the air conditioning system on and off according to the temperature that is read from a Temperature Sensor.

Pooling sensor scenario
Figure 15: Pooling sensor scenario

[3] Tobias Zimmer. Towards a better understanding of context attributes. In PerCom Workshops, pages 23–27. IEEE Computer Society, 2004.

You can reference this work as:
Ricardo Tesoriero, José A. Gallud, María D. Lozano and Víctor M. R. Penichet. CAUCE: Model-driven Development of Context-aware Applications for Ubiquitous Computing Environments
Journal of Universal Computer Science,  Vol. 16,  No. 15, pp. 2111-2138. 2010. Link: http://www.jucs.org/jucs_16_15/cauce_model_driven_development