Applying Design Patterns and Frameworks to Develop Object-Oriented Communication Software

Communication software for next-generation distributed applications must be flexible to support a growing range of multimedia datatypes, traffic patterns, and end-to-end quality of service (QoS) requirements. Moreover, communication software must be efficient to provide low latency to delaysensitive applications (such as avionics, simulation, and call processing) and high performance to bandwidth-intensive applications (such as medical imaging, satellite surveillance, and teleconferencing) over high-speed and mobile networks. Despite dramatic increases in computing power and network bandwidth, however, the cost of developing communication software remains high and the quality remains relatively low. Across the industry, this situation has produced a “communication software crisis,” where computing hardware and networks get smaller, faster, and cheaper; yet communication software gets larger, slower, and more expensive to develop and maintain. The challenges of communication software arise from inherent and accidental complexities [1]. Inherent complexities stem from fundamental challenges of developing communication software. Chief among these are detecting and recovering from network and host failures, minimizing the impact of communication latency, and determining an optimal partitioning of application service components and workload onto processing elements throughout a network. The accidental complexities associated with communication software stem from limitations with conventional tools and techniques. For instance, low-level network programming interfaces like sockets are tedious and error-prone. Likewise, higher-level distributed object computing toolkits like CORBA, DCOM, and Java RMI lack key features (such as asynchronous I/O and end-to-end QoS guarantees) and are not yet optimized for applications with stringent performance requirements [2]. Another source of accidental complexity arises from the widespread use of algorithmic design techniques [3] to develop communication software. Although graphical userinterfaces (GUIs) are largely built using object-oriented techniques, communication software has traditionally been developed with algorithmic techniques. However, algorithmic design yields non-extensible software architectures that cannot be customized rapidly to meet changing application requirements. Therefore, in an era of deregulation and stiff global competition, it is prohibitively expensive and time consuming to repeatedly develop applications from scratch using algorithmic design techniques. Object-oriented (OO) techniques provideprinciples, methods, and tools that significantly reduce the complexity and cost of developing communication software. The primary benefits of OO stem from its emphasis on modularity and extensibility,which encapsulate volatile implementation details behind stable interfaces and enhance software reuse by factoring out common object structures and functionality. This paper illustrates how to produce flexible and efficient communication software using OO application frameworks and design patterns. A framework is a reusable, “semi-complete” application that can be specialized to produce custom applications [4]. A pattern represents a recurring solution to a software development problem within a particular context [5]. Patterns and frameworks can be applied synergistically to improve the quality of communication software by capturing successful software development strategies. Patterns capture abstract designs and software architectures in a systematic and comprehensible format, whereas frameworks capture concrete designs, algorithms, and implementations in particular programming languages. The examples in the paper focus on developing highperformance concurrent Web servers using the ACE framework [6]. ACE is an OO framework that provides core concurrency and distribution patterns [7] related to the domain of communication software. The framework and patterns in this paper are representative of solutions that have been successfully applied to communication systems ranging from telecommunication system management [7] to enterprise medical imaging [8] and real-time avionics [9]. This paper is organized as follows: Section 2 presents an overview of patterns and frameworks and motivates the need for the type of communication software framework pro-