It is becoming increasingly important to be able to build survivable software systems. By survivable we mean having the qualities needed for a system to survive in, and to interact with an environment that is not under its control. Such systems need to be robust rather than brittle, and reactive rather than autistic. They may need to adapt to changes in their environment. In some cases it is important to be able to add new functionality to an existing system. Survivability depends on the ability of a system to represent its current behavior, to reason about this behavior, to accept and process new information and ideas, and to change its behavior. A software components behavior can be changed from without – brain surgery – or from within – conversation and contemplation. Although there will probably always be cases where brain surgery is required, it is important to move towards more principled, less intrusive, mechanisms of change. This leads us to the general question of what mathematical concepts and structures are needed to establish a firm mathematical foundation for building survivable software systems. In this abstract we consider the concept of reflection and its generalization to multi-model coupled systems.
Keywords: survivable, reflective, coupled multi-model systems