## 5 Model Transformations
### Execution and Implementation of the Model Transformations
Space partitioning indicates that each application has its own memory space, and time partitioning indicates that each application has its dedicated time slot allocated. Inside each partition, multiple processes can run, and multitasking between the processes using preemptive scheduling is allowed. In ARINC-653, a _process_ is similar to a _thread_ in the UNIX operating system. It shares the same address space with other processes and operates on the same global data. On the other hand, a _partition_ in ARINC-653 corresponds to a _process_ in the UNIX operating system, which assigns dedicated and protected virtual address spaces to the processes. ### Case I: Multicasting Periodic Data

The first case for which the application of enhanced connectors is beneficial involves the communication between software components running inside the same ARINC-653 \begin{table}
\begin{tabular}{c l l l} \hline \hline
**Level** & **Failure Condition** & **Objectives** & **With Independence** \\ \hline A & Catastrophic & 71 & 30 \\ B & Hazardous & 69 & 18 \\ C & Major & 62 & 5 \\ D & Minor & 26 & 2 \\ E & No Safety Effect & 0 & 0 \\ \hline \hline \end{tabular}
\end{table} 
Table 2: DO-178C development assurance levels. Figure 15: Cases searched in real-life projects: (**a**) Case 1: a class having more than one port that requires the same interface. (**b**) Case 2: a class that provides and requires the same interface at multiple ports. partition. In an ARINC-653 system, communication among the partitions is performed using _sampling ports_ and _queuing ports_. A sampling port is used to send periodic data. The port retains a single copy of the data, and the recently arriving data overwrite the previous copy. ARINC-653 allows connecting a source sampling port to multiple destination ports for sending data to more than one partition. If another partition needs the same data in the future, we only add a port to the list of destination sampling ports. We do not need to change the design of the source partition by adding another source port. Although ARINC-653 solves the problem of multicasting data among the partitions, we also have a similar problem inside the partitions. We can have multiple software components running inside a partition. The communication among these software components is modeled using UML ports, and the data should also be multicast among these components when required. Figure 16 shows an example scenario where a software component in _partition A_ produces data. The software component sends the data to ports that belong to two other software components in the same partition. Additionally, it sends the data to a source sampling port defined on _partition A_. The data are then sent from this port to two additional destination ports, which reside on partitions \(B\) and \(C\). As a result, the data produced by the source software component are sent to four destinations: \(Cmp_{1}\), \(Cmp_{2}\), _partition A_, and _partition B_. The ARINC-653 implementation handles the multicasting of sampling port data to _partition A and B_ in this scenario. However, we need to implement a solution for multicasting the data to \(Cmp_{1}\), \(Cmp_{2}\), and the source sampling port of _partition A_. Without using enhanced connectors, we have to manually multicast the data by creating three separate ports on the source software component or by inserting an additional object which replicates the data to multiple destinations using multiple source ports. Creating three ports on the source decreases reusability by coupling the design of the source component to the number of destinations. On the other hand, inserting an additional object to replicate the data requires manually designing intermediary classes and objects to perform the multicasting. We can solve this problem using the enhanced connector presented in Section 6.2: the multiple destination sender. By using the enhanced connector, we can decouple the source component from the multicasting concern.