# A Theoretical Foundation for Context-Aware Cyber-Physical Production Systems
## 2 Literature Review
Among these characteristics, the ability to deal with complexity and heterogeneity in CPPS is essential. To deal with complexity and heterogeneity in CPPS, proper tools and methods should be used. In [32], [PERSON] et al. reviewed the engineering approaches and tools available for CPPS. Selection of a proper modeling language is needed to handle complexity and heterogeneity in CPPS. To cope with the changing requirements in the business environment of CPPS, the concept of Model Driven Architecture (MDA) was proposed [33]. The MDA approach to the development of software systems focuses on platform-independent models instead of the platform dependent models of an application. A generic transformation procedure is then applied to transform platform-independent models into platform dependent models for the target application. The Unified Modeling Language (UML) and the Systems Modeling Language (SysML) are two popular modeling languages that can be used with the MDA approach. UML is a widely accepted and general-purpose modeling language in software engineering [34]. As an industrial standard, UML provides a standard way to visualize the design of software systems. In [35], [PERSON] proposed a model driven approach for control and automation software based on UML. SysML is a general-purpose architecture modeling language for Systems Engineering applications [36]. The application of SysML to support embedded systems engineering can be found in [37]. In [38], a model and simulation for mechatronic systems with SysML was studied. Despite the powerful modeling tools provided by UML and SysML, they lack the support to address the situation awareness issues of systems. To analyze the situation awareness of systems, a formal modeling language that supports the analysis of system dynamics should be used. Petri nets and different variants of Petri nets are graphically oriented and formal modeling languages that have been used for the simulation, verification and analysis of software systems. According to Wikipedia, Petri nets were invented to describe chemical processes in August 1939 by [PERSON] [39]. In the literature, the Petri net model was documented in the dissertation of [PERSON] in 1962. Since its invention, the Petri net model has been widely applied in different problem domains, including the computer, communication manufacturing and chemical sectors [40]. The adoption of Petri nets as the platform-independent models in MDA has been studied in [15]. In [15], the authors adopted untimed Petri nets as the platform-independent models to develop context-aware workflow systems. However, the time factor is not considered in [15]. Inthe literature, many variants of Petri net models considering time semantics have been proposed to deal with timing issues in real world systems. The paper [41] by [PERSON] surveys several variants of timed Petri nets proposed in the literature. There are different ways to model the time factor in timed Petri nets. For example, [PERSON] introduced a class of deterministic timed Petri nets by specifying a fixed time interval for each transition [42]. In [43], [PERSON] proposed a class of timed Petri nets by specifying a fixed time interval for each place in [38] to evaluate performance. Tokens are considered to be unavailable during the specified time interval of the corresponding place. Another way to model the stochastic nature of firing time is to assign a random variable to represent the firing time of each transition. This class of timed Petri nets are called Stochastic Petri Nets (SPN) [44]. In a continuous time SPN, the transitions are fired based on transition rates and the firing time is exponentially distributed. In a discrete time SPN, the transitions are fired based on the specified conditional probabilities and the firing time is geometrically distributed [45]. SPNs are primarily used in performance evaluation whereas deterministic timed Petri nets are used for scheduling or the control of systems.