CPS differ from traditional software systems as they include both software and hardware components (such as sensors and actuators) facilitating the collaboration between these two worlds. Furthermore, feedback loops exist where physical processes and computations affect each other, and where humans are involved in the decision-making process. As these systems grow in size and interact with other systems, they become more complex, interrelated, and heterogeneous, exhibiting Systems of Systems characteristics.
Due to the combination of hardware, software, and human actors, the behavior of large-scale heterogeneous systems in general and CPS in particular is not always predictable and therefore often cannot be tested in advance. In many cases, behaviors only emerge at runtime due to complex interactions between the software and hardware components, humans, and their environment.
Monitoring a CPS, and its constituent components, at runtime, provides crucial insights on how the system performs its tasks at runtime and if deviations from the specified requirements occur. Such deviations can not only affect functional or performance-related requirements of a system, but can have severe safety-critical impact if humans are involved.
Model-Driven Engineering (MDE) is an area of Software engineering that aims to automate the development of software and systems by considering the models as the core of the development process. MDE consists of different processes and stages from designing the metamodel and instance models to code generation, which can make software development simpler and more customizable by tackling the changes quickly and easily.