The Viable System Model for Software Charles Herring and Simon Kaplan Department of Computer Science and Electrical Engineering The University of Queensland Brisbane, Queensland QLD 4072 {herring kaplan}@dstc.edu.au Abstract We are investigating the application of Beer’s Viable System Model to the development of software for “complex” applications. We use this model as the basis for a component system architecture, the Viable System Architecture. A key construct of the architecture is the structure of a component and its special set of interfaces, a “viable component.” After presenting the Viable System Model and the Viable System Architecture, we outline a design methodology for development of software components in this approach. 1. Introduction Stafford Beer developed the Viable System Model (VSM) [1] for the purpose of understanding, predicting and controlling human organizations or “enterprises.” The VSM is based on study and observation of many organizations over a thirty-year period. Beer’s goal was to discover the invariant structures and behaviors and describe them based on cybernetics. We take this model as a starting point for modeling “complex” systems in order to build better software. Examples of complex software systems include Smart Environments, Ambient Computing, Multi-Agent Systems, Adaptive/Intelligent User Interfaces and Business-to-Business e-Commerce. These systems are characterized by large numbers of heterogeneous components with a high degree of interconnections, relationships and dependences. They exist in a dynamically changing environment that demands dynamically responding behavior. In other words, these systems must adapt to their environment. Figure 1 Automobile Cruise Control As an introduction to and motivation for the approach consider the automobile cruise control system of Figure 1. This is a typical closed-loop control system where the controller monitors and maintains a system variable, speed, within certain desired limits. The overall system is subject to environmental disturbances (such as a steep hill) and the controller, based on feedback, adjusts the throttle as necessary. The automobile cruise control is one of the “canonical” object-oriented design problems. Shaw analyzes this problem and develops a control paradigm for software [2]. Her insight is that it is a control system and there is a body of engineering knowledge associated with such systems. She argues that the object-oriented paradigm may not be the most Engine Throttle Setting Wheel Rotation Pulses From Wheel Controller Desired Speed On/Off Disturbance Engine Throttle Setting Wheel Rotation Pulses From Wheel Controller Desired Speed On/Off Disturbance