![](https://csdnimg.cn/release/download_crawler_static/11930820/bg13.jpg)
1. HETEROGENEOUS MODELING
Many of today’s engineered systems combine heterogeneous and often complex subsys-
tems. A modern car, for example, may combine a complex engine, electronic control units
(ECUs), traction control systems, body electronics (for controlling windows and door
locks), entertainment systems, climate control and ventilation, and a variety of safety
subsystems (such as airbags). Each subsystem may be realized with a combination of
software, electronics, and mechanical parts. Engineering such complex systems is quite
challenging, in part because even the smallest subsystems span multiple engineering dis-
ciplines.
These complex systems also challenge the design tools that engineers use to specify, de-
sign, simulate, and analyze systems. It is no longer sufficient to sketch a mechanical struc-
ture and write down a few equations describing the interactions of the mechanical parts.
Neither is it sufficient to rely entirely on software tools for 3D modeling of mechani-
cal parts or tools for model-based design of software systems. The complex interplay
across domains (mechanics, software, electronics, communication networks, chemistry,
fluid dynamics, and human factors) reduce the usefulness of tools that address only a
single domain.
The focus of this book is on cyber-physical systems (CPS) (Lee, 2008a, 2010a; Lee and
Seshia, 2011), which combine computing and networking with physical dynamics. Cyber-
physical systems require model combinations that integrate the continuous dynamics of
physical processes (often described using differential equations) with models of software.
Diverse models are most useful in applications where timed interactions between compo-
nents are combined with conventional algorithmic computations.
1
They can also be used
in traditional software systems that have concurrent
2
interactions between algorithmic
components.
1
An algorithm is a finite description of a sequence of steps to be taken to solve a problem. Physical
processes are rarely structured as a sequence of steps; rather, they are structured as continuous interactions
between concurrent components.
2
Concurrency, from the Latin verb concurrere meaning “run together,” is often taken in computer science
to mean the arbitrary interleaving of two or more sequences of steps. However, this is a rather specialized
interpretation of a basic concept. In this book, we take concurrency to mean simultaneous operation, with no
implication of either interleaving nor sequences of steps. In particular, two continuous processes can operate
concurrently without being directly representable as sequences of steps. Consider, for example, a resistive
heating element immersed in a vat of water. Increasing the current through the heating element will cause
the temperature of the water to rise. The electrical flow is one continuous process, as is the temperature of
the water, and these processes are interacting. But neither process is reasonably representable as a sequence
of steps, nor is the overall process an interleaving of such steps.
Ptolemaeus, System Design 3