  Industrial computing devices, in particular cyber-physical, real-time and
safety-critical systems, focus on reacting to external events and the need to
cooperate with other devices to create a functional system. They are often
implemented with languages that focus on a simple, local description of how a
component reacts to external input data and stimuli. Despite the trend in
modern software architectures to structure systems into largely independent
components, the remaining interdependencies still create rich behavioural
dynamics even for small systems. Standard and industrial programming approaches
do usually not model or extensively describe the global properties of an entire
system. Although a large number of approaches to solve this dilemma have been
suggested, it remains a hard and error-prone task to implement systems with
complex interdependencies correctly.
  We introduce multiple coupled finite state machines (McFSMs), a novel
mechanism that allows us to model and manage such interdependencies. It is
based on a consistent, well-structured and simple global description. A sound
theoretical foundation is provided, and associated tools allow us to generate
efficient low-level code in various programming languages using model-driven
techniques. We also present a domain specific language to express McFSMs and
their connections to other systems, to model their dynamic behaviour, and to
investigate their efficiency and correctness at compile-time.
