Fractionated spacecraft - a cluster of simple satellites that are
wirelessly connected, perform high-resolution sensing functions by
running distributed sensor fusion applications. Coordinated swarms of
networked Unmanned Aerial Vehicles carry out data collection damage
assessment flights over large geographical areas affected by weather
events. Fleets of Unmanned Underwater Vehicles collect climate change
data from oceans with the help of sensor fusion and motion control
applications. Smart data acquisition and control devices implement
distributed sensing and control functions for the Smart Electric Grid.
Such `cyber-physical cloud computing platforms' present novel
challenges because the system is built from mobile embedded devices,
is inherently distributed and typically has 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 creation 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.
|