  Cyber-physical systems increasingly rely on distributed computing platforms
where sensing, computing, actuation, and communication resources are shared by
a multitude of applications. Such `cyber-physical cloud computing platforms'
present novel challenges because the system is built from mobile embedded
devices, is inherently distributed, and typically suffers from highly
fluctuating connectivity among the modules. Architecting software for these
systems raises many challenges not present in traditional cloud computing.
Effective management of constrained resources and application isolation without
adversely affecting performance are necessary. Autonomous fault management and
real-time performance requirements must be met in a verifiable manner. It is
also both critical and challenging to support multiple end-users whose diverse
software applications have changing demands for computational and communication
resources, while operating on different levels and in separate domains of
security.
  The solution presented in this paper is based on a layered architecture
consisting of a novel operating system, a middleware layer, and
component-structured applications. The component model facilitates the
construction of software applications from modular and reusable components that
are deployed in the distributed system and interact only through well-defined
mechanisms. The complexity of creating applications and performing system
integration is mitigated through the use of a domain-specific model-driven
development process that relies on a domain-specific modeling language and its
accompanying graphical modeling tools, software generators for synthesizing
infrastructure code, and the extensive use of model-based analysis for
verification and validation.
