The following is the guest editorial for the IEEE Communications Magazine feature topic issue on Distributed Object Computing, Vol. 14, No. 2, February, 1997.
Despite dramatic increases in network channel speeds and compute power, developing distributed software remains expensive and error-prone. Across the industry, this situation has produced a ``distributed software crisis,'' where computing hardware and networks get smaller, faster, and cheaper; yet distributed software gets larger, slower, and more expensive to develop and maintain.
The challenge of distributed software stems from inherent and accidental complexities. Inherent complexities arise from fundamental problems of distribution. Chief among these are detecting and recovering from network and host failures, minimizing the impact of communication latency, and determining an optimal partitioning of service components and workload onto computers throughout a network. Accidental complexities arise from limitations with tools and techniques used to build distributed software. A common source of accidental complexity is the widespread use of functional design, which results in non-extensible and non-reusable systems.
Distributed Object Computing (DOC) is a promising approach to alleviate the inherent and accidental complexities of distributed software. DOC represents the confluence of two major areas of software technology: distributed computing systems and object-oriented (OO) design and programming. Techniques for developing distributed systems focus on integrating multiple computers to act as a scalable computational resource. Likewise, techniques for developing OO systems focus on reducing complexity by creating reusable frameworks and components that reify successful design patterns and software architectures. Thus, DOC is the discipline that uses OO techniques to distribute reusable services and applications efficiently, flexibly, and robustly over multiple, often heterogeneous, computing and networking elements.
At the heart of contemporary distributed object computing models are Object Request Brokers (ORBs), which facilitate communication between local and remote objects. ORBs eliminate many tedious, error-prone, and non-portable aspects of creating and managing distributed applications. This enables programmers to develop and deploy complex applications rapidly and robustly, rather than wrestling continuously with low-level infrastructure concerns. Two widely used ORB models are the Common Object Request Broker Architecture (CORBA), which is an being standardized by the 700+ member Object Management Group (OMG) and the Distributed Component Object Model (DCOM), which is being developed by Microsoft. Although they are often positioned as rival DOC technologies, CORBA and DCOM share many architectural similarities.
Advances in DOC technology have occurred at a time when deregulation and global competition are motivating an increase in software productivity and quality. Distributed computing is perceived as a way to control costs in corporate Information Technology (IT) departments, e.g., through open systems and client/server computing. Likewise, OO design and programming are widely touted as a means to reduce software cost and improving software quality, e.g., through reuse, extensibility, and modularity. As a result, there has been a surge of interest in DOC technology in the trade press and in many IT organizations.
Unfortunately, the level of technical discussion concerning distributed object computing has not kept pace with the level of interest. Since DOC is a combination of two fields, academic journals and conferences concerned with either field have not yet embraced the merger and there are relatively few forums for technical discussion of the combined disciples. Consequently, DOC technology has been ``sold'' far more than it has been studied. This feature topic section of IEEE Communication Magazine is intended to rectify this imbalance by examining the technical benefits and the challenges provided by DOC technology.
The four articles that have been selected cover a range of DOC-related topics. The lead article is CORBA: Integrating Diverse Applications Within Distributed Heterogeneous Environments by Steve Vinoski. CORBA defines a convenient object interaction model that provides a stability point for developing distributed applications, even as networking technology, programming languages, operating systems, and computer hardware change continuously. Vinoski describes the key components in the CORBA 2.0 specification, explains how they interact, and outlines how they provide a foundation to support higher level services in vertical application domains (such as telecommunications, medical systems, and business applications).
Distributed systems are increasingly deployed in mission-critical applications such as avionics, electronic commerce, and command and control systems. As a result, the need for fault tolerance and high availability has increased significantly. Common models for building reliable distributed systems include transaction processing monitors, message-oriented middleware, and virtual synchrony. Neither the CORBA standard nor other ORB implementations like DCOM directly address the inherent complexities of reliable distributed computing (such as detecting and recovering from partial failures). The second article in this section, Constructing Reliable Distributed Communication Systems with CORBA by Maffeis and Schmidt addresses this issue. Maffeis and Schmidt describe an ORB framework that uses the Virtual Synchrony model to support reliable data- and process-oriented distributed systems.
While developing highly available DOC solutions for conventional tethered computing systems is hard, developing highly-available DOC solutions for mobile computing systems is even harder. Mobile applications must be usable even in the face of frequent disconnections from the network, widely varying bandwidth capacity among wired and wireless links, limited CPU power and device capacity on mobile hosts, and periodic reconfigurations due to handoff among servers and base stations. The third article in this section, ``Designing Mobile Computing Systems using Distributed Objects'' by Chen and Suda, examines how the DOC paradigm can simplify the construction of highly available infrastructure to support mobile, ubiquitous computing applications.
ORBs have proven to be well-suited for certain applications domains (such as managing network elements in PCS and traditional wireline environments). However, conventional ORB implementations for CORBA and DCOM are not yet suited for performance-sensitive domains that require deterministic and statistical quality of service (QoS) guarantees. To accomplish this requires ORB endsystems that can deliver end-to-end QoS guarantees from application to application across a network. The final article in the feature topic section, A High-performance Endsystem Architecture for Real-time CORBA by Schmidt, Gokhale, Harrison, and Parulkar, describes the architectural features and optimizations required to develop real-time ORB endsystems. An ORB endsystem consists of more than OO middleware -- it also contains network adapters, operating system I/O subsystems, communication protocols, and common object services. The underlying theme of this paper is that only by using an integrated approach can DOC systems successfully deliver end-to-end QoS guarantees to applications.
Although distributed object computing is an significant advance compared to traditional Remote Procedure Call (RPC) technology, it is no silver bullet. As with other sophisticated software technologies, DOC software is inherently abstract. This makes it hard to engineer its quality and to manage its production. Ultimately, reusable DOC components and frameworks are only as good as the people who build and use them. Therefore, to truly alleviate the inherent and accidental complexities of distributed computing, we must cultivate developers who can master complex topics like communication protocols, design patterns, software architectures, and OO middleware.
I encourage you to get involved with others working on distributed object computing by attending conferences, participating on online newsgroups, and contributing your insights and experience. To find out about books, online papers, electronic mailing lists, and conferences on patterns, see http://www.cs.wustl.edu/~schmidt/corba.html.
Douglas C. Schmidt
Last modified 11:34:21 CDT 28 September 2006