Designing Reusable Realtime Frameworks

Brian Foote

Thursday, 11 August 1988
Workshop on the Realtime Systems
OOPSLA '88, San Diego, CA
Tuesday, 27 September 1988
John Gilbert, organizer

Department of Computer Science
University of Illinois at Urbana-Champaign
1304 West Springfield Ave., 
Urbana IL 61801 
(217) 328-3523

Realtime application domains are, of course, characterized by tight, demanding performance and timing constraints. Realtime programmers often must also contend with highly dynamic (even volatile) software requirements (i.e. requirements that are changing frequently). Some realtime applications may also require complex, highly interactive user interfaces that must be tightly coupled with their underlying application programs.

The strengths of object-oriented approaches in the realm of user interface construction are well-documented. Perhaps less well understood is the manner in which the application of object-oriented techniques can help one contend with the complex lifecycle requirements present in many realtime application domains. This question is the focus of [Foote 1988].

The work therein describes the design of a (simulated) Smalltalk-80 application framework for a family of realtime psychophysiological data acquisition and experimental control applications. It shows how a well-constructed framework can subsume the role played by skeleton programs in such application domains. It documents the emergence both of this framework, and of a collection of reusable application specific utility objects, including user interface components. Frameworks and reusable class design are discussed in [Johnson & Foote 1988]. The resuse of proven, verified components is one way to deal with mission criticality concerns.

This work was based on an earlier realtime system (the CPL Battery) consructed using a Fortran preprocessor and object-oriented techniques. (See [Heffley et. al. 1985]. My experience with these two systems has convinced me that the benefits of applying object-oriented tools and techniques in realtime domains can be considerable indeed.

It is difficult to generalize about how to address realtime performance questions, since performance requirements vary widely from one application to the next. Realtime designers have become quite adept at finding pragmantic solutions to such concerns on an application-by-application basis. Among such approaches to object-oriented performance questions are:

  • The use of hybrid object-oriented languages (such as C++)
  • The use of custom primitives in languages such as Smalltalk
  • Increased use of multiple threads and processors

    Factoring realitme programs into multiple parallel objects in an object-oriented environment can greatly increase the reuse potential of such objects, since incidental sequential dependencies in the code are reduced.

    See Confessions of a Framework Zealot for some more recent reflections on the art and craft of constructing realtime object-oriented frameworks.
    -- BF 2/26/98


    [Foote 1998]
    Brian Foote
    Designing to Facilitate Change with Object-Oriented Frameworks
    Masters Thesis, 1988
    University of Illinois at Urbana-Champaign
    [Heffley et. al. 1985]
    Earle Heffley, Brian Foote, Tony Mui, and Emanuel Donchin
    Pearl II: Portable Laboratory System Psychophysiological Assessment using Event Related Brain Potentials
    Neurobehavioral Toxicology and Teratology 
    Volume 7, pp. 399-407, 1985
    [Johnson & Foote 1988]
    Ralph E. Johnson and Brian Foote
    Designing Reusable Classes
    Journal of Object-Oriented Programming
    Volume 1, Number 2, June/July 1988 
    pages 22-35

    Brian Foote
    Last Modified: 23 April 2004