# A Methodology for the Design of Application-Specific Cyber-Physical Social Sensing Co-Simulators
## 2 State of the Art
### Selection of the Co-Simulation Paradigm  
In the first step, once software designers have selected the domains involved in the simulation, requirements and characteristics have been captured and the available tools which are going to be used to compose the final co-simulator, it is necessary to select the co-simulation paradigm on which the co-simulator is being based. An explanation about all the possibilities, and the criteria for selecting the most adequate, are provided in this sub-section. It is important to note that most of these criteria are extracted from requirements captured in the previous phase (see Table 5). Figure 3 proposes a taxonomy of the simulation paradigms, which could be applicable to the CPSS simulation. Figure 3: Taxonomy of CPSS simulation paradigms. \begin{table}
\begin{tabular}{c c} \hline \hline
**Thematic Block** & **Relevant Characteristics** \\ \hline \multirow{2}{*}{Application characteristics} & The main subsystem (physical, cyber or social world) in the simulation \\  & Type of application (e.g., Ambient Intelligence validation or development) \\  & Possible simulation scenarios considered (buildings, cities, large facilities, etc.) \\ \hline \multirow{2}{*}{Development team characteristics} & Knowledge about simulators programming \\  & Number of developers (available workforce) \\ \hline \multirow{2}{*}{Final users characteristics} & Technical and programming skills \\  & Users’ profile (sector professionals, researchers or students, etc.) \\ \hline \hline \end{tabular}
\end{table} 
Table 5: Relevant characteristic for a co-simulator. In general, two different types of simulation scheme may be implemented, when various domains compose a global scenario: _independent simulation_ or _co-simulation_. In the _independent simulation_ each domain is simulated in a different domain-specific simulator. In this case, once designed the global scenario, an expert must divide it into the different subsystems (three, in the case of CPSS--the physical, the cyber and the social worlds-) and configure each simulator separately (see Figure 4a). Finally, the results obtained from each tool must be combined with the others in order to generate the global results for the proposed scenario. As main advantage (see Section 3.4), if various work stations are available, it is possible to run all the simulations in parallel (which is very efficient in time). On the other hand, _co-simulation_ tools are instruments being able to process a description including all the characteristics of the global scenario (see Figure 4b). They may be implemented using different integration levels, which, at the end, causes the simulation time goes up in different quantities depending on the implementation selected. In any case, considering the same hardware platform, these solutions always require a higher simulation time. As we said in Section 2, recent attempts to reach a co-simulation tool for two of the CPSS subsystems are based on the deep integration of new characteristics in the existing simulator. We call this co-simulation paradigm _integrated co-simulation_. Integrated co-simulation tools are monolithic instruments where none separated functional part can be distinguished. In practice, they can be understood as a unique simulation algorithm. In general, this is the final objective when building co-simulation tools as, at that moment, the resulting solution is completely different from the parts. However, it is really difficult to create an integrated simulator right from the scratch. In fact, various previous works [113] have showed the complexity of combining various tools and domains in a unique simulation (even if only two different tools are considered). In contrast, we define the _federated co-simulation_. In _federated co-simulation_ various (three in CPSS--a social simulator, a network simulator and a physical process simulator-) domain-specific tools are coordinated to simulate the global scenario.