Using design patterns to evolve system software from UNIX to Windows NT
Douglas C. Schmidt, Paul Stephenson · Cambridge University Press eBooks · 1998
Developing system software that is reusable across OS platforms is challenging. Due to constraints imposed by the underlying OS platforms, it is often impractical to directly reuse existing algorithms, detailed designs, interfaces, or implementations. This article describes our experiences using a large-scale reuse strategy for system software based on design patterns. Design patterns capture the static and dynamic structures of solutions that occur repeatedly when producing applications in a particular context [1, 2]. Design patterns are an important technique for improving system software quality since they address a fundamental challenge in largescale software development: communication of architectural knowledge among developers [3]. This article describes our experiences with a large-scale reuse strategy based upon design patterns. We have used this strategy at Ericsson to facilitate the development of efficient OO telecommunication system software. In this article, we present a case study that describes the cross-platform evolution of portions of an OO framework called the ADAPTIVE Service eXecutive (ASX) [4]. The ASX framework is an integrated collection of components that collaborate to produce a reusable infrastructure for developing distributed applications. This article focuses on the ASX framework’s support for event-driven distributed applications. One of the key components in the ASX framework is the Reactor class category [5]. The Reactor integrates the demultiplexing of events and the dispatching of the corresponding event handlers. Event handlers are triggered by various types of events such as timers, synchronization objects, signals, or I/O operations. We recently ported theASX framework from several UNIX platforms to the Windows NT platform. These OS platforms possess significantly different mechanisms for event demultiplexing and I/O. To meet our performance requirements, it was not possible to directly reuse many of the components in the ASX framework across the OS platforms. However, it was possible to reuse the underlyingdesign patterns that were embodied in the ASX framework, thereby reducing project risk. The remainder of the article is organized as follows: Section 2 outlines the background of our work using OO frameworks for telecommunications system softare; Section 3.1 presents an overview of the design patterns that are the focus of this article; Section 4 examines the issues that arose as we ported the components in the Reactor framework from several UNIX platforms to the Windows NT platform; Section 5 summarizes the experience we gained, both pro and con, while deploying a design pattern-based system development methodology in a production software environment; and Section 6 presents concluding remarks.