Requirements Engineering of Open vs Closed Systems
Define a "closed" system to be one specified completely in terms of its behaviour, given internal state and I/O interface. In contrast, an "open" system is one whose specification must be developed in tandem with the development of a description of the real-world domain in which it operates. An open system interacts with this world via sensors and actuators, is often safety-critical, and its specification can be a challenge. Fly-by-wire and engine control systems are two examples.
This is a demanding area not least since it involves the interfacing/integration of quite different notations that are used to describe the real-world vs. computational domains. For example, for an engine control system, the physics of the engine and the plant it drives is described in the continuous mathematics of classical physics. The behavioural requirements of the engine (e.g. timing sequences, scheduling sequences of activities) and its controller may be described in a temporal logic. The controller requirements might be expressed in a discrete, set-theoretic language.
For the formal construction of closed systems, established "rely/guarantee" methods work well. These methods must now be extended in this real-world context. In our European research project RODIN (Rigorous Open Development Environment for Complex Systems) we will investigate this theme in a case study about failure management in an engine control system.