Computer systems are increasing in complexity and interconnectivity. One attempt to deal with this is via Autonomic Computing, for which several implementations are available.
Control systems must increasingly be designed to involve collections of hardware and software components, both of which may evolve over the lifetime of the system, and which are expected to provide self-managing, adaptive, autonomic behaviour. Understanding the behaviour such a system will exhibit under any specific conditions is a significant design challenge.
Computer networks are becoming more common and more diverse; they are moving away from the office environment, where they can be controlled with relative ease, into everyday user devices, homes, and automobiles.