AN ARCHITECTURAL PATTERN FOR REAL-TIME CONTROL SOFTWARE Bran Selic ObjecTime Limited 340 March Rd. Kanata, Ontario, CANADA K2K 2E4 e-mail: bran@objectime.com phone: (613) 591-3435 fax: (613) 591-3784 ABSTRACT In this paper, we introduce a high-level design pattern that can be applied to a broad class of real-time systems. This pattern, which we call Recursive Control, provides a systematic method for dealing with what are traditionally considered ancillary software functions (system start up and shut down, failure detection and recovery, on-line maintenance, etc.). In many large systems, such functions represent as much as 80% of all the code written yet they are still given lower priority in system design. The result are systems that are difficult to control and evolve. The Recursive Control pattern implements a clear separation between the control aspects and the service-providing aspects of a real-time system allowing each to be defined and modified independently. The pattern can be applied recursively which means that it is applicable across a wide range of levels and scopes, starting from the highest system architectural level down to individual components.