Main Page/Resources/E-motions/PacketSwitchingExample

From Atenea

< Main Page | Resources | E-motions
Revision as of 16:28, 16 February 2011 by Jmbautista (Talk | contribs)
Jump to: navigation, search



This Packet Switching example models a network. A user sends packages to another user by means of the network. This is composed of nodes which receive, process, and forward packages to other nodes. A node, after having processed a package, forwards it to a node which is connected to it. The node where the package is forwarded is the one which is currently processing fewer packages among the nodes connected to the former. Eventually, a package arrives to the other user after being processed by a node connected to him.

System Modeling


The metamodel of this system is shown here:


The network is composed of components which have a specific position. Components can point to other components which play the role of neighbours. They can also contain packages. Packages have two attributes, is_being_processed and timeStamp. is_being_processed is true if the package is being processed by a node and false if it is not. timeStamp stores the time at which the package get into the network. Components are of three types: Users, Nodes and Servers. Users send packages to the network and servers receive and consume them. Nodes receive packages, process them and forward them to other components. They have an attribute, pckPr, which counts the packages processed. When the initial user or a node have more than one possible node to send a package, they send it to the node that is currently processing a smaller number of packages. The time a node spends when processing a package depends on the number of packages it is currently processing: the more packages being processed, the slower the processing is. There is a node's specialization, named Support Node, which can be active or not depending on the number of packages being processed by the nodes linked to the support node by the support relationship. In this way, when one of the nodes that a support node supports is processing the same number of packages as the value indicated by the threshold attribute or a higher number of them, the support node activates itself if it was not already active. On the contrary, when the support node is active and all the nodes that it supports are processing a lower number of packages than the indicated by the threshold value, it deactivates itself. The activations attribute records the time units when a support node activates/deactivates itself.

We associate every class of the metamodel with a picture. This graphical concrete syntax will be used for the definition of the behavioral rules.


We are interested on monitoring the throughput and delay of the packages processed by a network as well as on the number of packages processed by each node, specially the support nodes, and the activation/deactivation frequency of the support nodes. The latter two properties can be already analyze with the pckPr and activations attributes of nodes. As for the other two, we make use of observers. An observer is an object whose purpose is to monitor the state of the system: the state of the objects, of the actions, or both. Observers, as any other objects, have a state and a well-de�ned behavior. The attributes of the observers capture their state and are used to store the variables that we want to monitor. We have defi�ned an Observers metamodel:



We have designed four rules to model the behavior of the system, including the rule that initializes the system.


The InitialRule creates the initial model. It contains two users, one that will be sending packages and one that will be receiving them. The sender has the initial attribute set to true, and its value in the receiver is false. There are ten nodes. The connection of all the components forms a network whose behavior will be given with the following rules. The NAC pattern forbids the triggering of the rule if was already thrown before.


The PackageArrival rule models the creation of a package in the sender, so that it will be forwarded to the network in other rule. The attribute of the package to be sent to the network is set to false, as it is not being processed by any node. This rule spends two time units in its execution, so a new package appears in the sender user every two time units.


The Forwarding rule models the forwarding of a package from a component to a neighbour one. For this rule to be triggered, the package cannot be under processing. In the LHS pattern of the rule there is a OCL condition that forbids the triggering of the rule if the neighbour c2 is not the one processing fewer packages among all the neighbours of the component c. In the RHS pattern we see how the package is now in the other node and the attribute is_being_processed is set to true as it is ready to be processed by the new node. The NAC pattern forbids the triggering of the rule if the component c is already forwarding the package. The time spent when forwarding a package is the Manhattan distance between both components.


The PackageProcessing rule models the processing of a package by a node. In the LHS pattern of the rule the attribute is_being_processed of the package is set to true, meaning that it has just arrived to the node and it is ready to be processed. In the RHS pattern the package has already been processed so its attribute is set to false, so that it is ready to be forwarded again. The NAC pattern forbids the triggering of the rule if the package is already been processed. The time this rule lasts grows as the number of pacakges being processed by the node does. Thus, the time spent is two times the number of packages being processed by the node, plus one.



We can configure eMotions launcher to run the simulation as shown in the next figure. Please note that we do not need to specify an initial model of the system since we have a rule that creates it.


Data Result


The file contains the project with all files required to try this example: the metamodel definition, the graphical concrete syntax for the metamodel and its corresponding behavioral specifications. To import this project, right click on the navigation view Import...-> General -> Existing Projects into Workspace -> Select archive file and then select the

Personal tools