[new]New and Revised Books, Papers, and Tutorials

The following are links to my new and/or recently revised books, papers, tutorials. These are listed in reverse chronological order, indicating the date of the latest revision.

oTechnical Research Papers
oKeynotes, Editorials, and Tutorials
oC/C++ Users Journal Columns
oMy new Corvette


  1. Douglas C. Schmidt and Steve Huston, C++ Network Programming: Systematic Reuse with ACE and Frameworks, Addison-Wesley Longman, 2003.

  2. Douglas C. Schmidt and Steve Huston, C++ Network Programming: Mastering Complexity with ACE and Patterns, Addison-Wesley Longman, 2002.

  3. Douglas C. Schmidt, Michael Stal, Hans Rohert, and Frank Buschmann, Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects, John Wiley and Sons, 2000.

Technical Research Papers

oModel Driven Architecture (MDA)
oCORBA and Middleware
oWeb Servers

Model Driven Architecture (MDA)

  1. Anirudda Gokhale, Balachandran Natarjan, Douglas C. Schmidt, Andrey Nechypurenko, Nanbor Wang, Jeff Gray, Sandeep Neema, Ted Bapty, and Jeff Parsons, CoSMIC: An MDA Generative Tool for Distributed Real-time and Embdedded Component Middleware and Applications, Proceedings of the OOPSLA 2002 Workshop on Generative Techniques in the Context of Model Driven Architecture, Seattle, WA, November 2002.

    This paper presents three contributions to the challenges of applying the OMG Model Driven Architecture (MDA) to develop and deploy distributed real-time and embedded (DRE) applications. First, we motivate our MDA tool called CoSMIC, which is based on the Model Integrated Computing (MIC) paradigm that provides the intellectual foundation for MDA. Second, we describe how CoSMIC's generative abilities can be used to configure and assemble DRE component middleware required to deploy DRE applications. Third, we delineate the challenges involved in developing CoSMIC. Based on our collective experience developing MIC tools and DRE middleware, we are confident that combining these two paradigms will yield significant advantages in developing model based DRE applications.

CORBA and Middleware

  1. Chris Gill, Jeanna M. Gossett, David Corman, Joseph P. Loyall, Richard E. Schantz, Michael Atighetchi, and Douglas C. Schmidt, Integrated Adaptive QoS Management in Middleware: An Empirical Case Study, submitted to the 24th IEEE International Conference on Distributed Computing Systems (ICDCS), May 23-26, 2004, Tokyo, Japan.

    Distributed real-time and embedded (DRE) systems in which application requirements and environmental conditions may not be known a priori or may vary at run-time, mandate an adaptive approach to management of quality-of-service (QoS) to meet key constraints such as end-to-end timeliness. Furthermore, coordinated management of multiple QoS capabilities across layers of applications and their supporting middleware may be required to achieve necessary assurances of meeting these constraints. This paper offers two primary contributions to the state of the art in distributed computing systems: (1) a case study of our integration of multiple middleware QoS management technologies to manage quality and timeliness of imagery adaptively within a representative distributed avionics system and (2) empirical results and analysis of the impact of that integration on fundamental trade-offs between timeliness and image quality in that system.

  2. Arvind Krishna, Douglas C. Schmidt, and Raymond Klefstad, Enhancing Real-Time CORBA via Real-Time Java, submitted to the 24th IEEE International Conference on Distributed Computing Systems (ICDCS), May 23-26, 2004, Tokyo, Japan.

    Ensuring end-to-end middleware predictability is essential to support quality of service (QoS) capabilities needed by distributed real-time and embedded (DRE) applications. Real-time CORBA is a middleware standard that allows DRE applications to allocate, schedule, and control the QoS of CPU, memory, and networking resources. Existing implementations of Real-time CORBA are implemented in C++, which is widely considered to be more complicated and error-prone to program than Java and the Real-time Specification for Java (RTSJ). Although Real-time CORBA does not currently leverage key RTSJ features, such as scoped memory and real-time threads, integration of Real-Time CORBA and RTSJ is essential to ensure predictability required for Java-based DRE applications. This paper provides the following contributions to the study of middleware for DRE applications. First, we discuss the optimization strategies applied in the Real-time CORBA Portable Object Adapter (POA) layer. Second, we identify sources for applying RTSJ features within ZEN, which is our implementation of Real-time CORBA that runs atop multiple RTSJ implementations. Third, we qualitatively and quantitatively analyze predictability enhancements arising from applying RTSJ features to the Real-time CORBA POA layer. Our results show that combining optimizations with RTSJ features can considerably improve the performance and predictability of DRE applications written using Real-time CORBA and Java.

  3. Arvind Krishna, Douglas C. Schmidt, Krishna Raman, and Raymond Klefstad, Optimizing the ORB Core to Enhance Real-time CORBA Predictability and Performance, submitted to the Submitted to the 5th International Symposium on Distributed Objects and Applications (DOA), Catania, Sicily, November 2003.

    Distributed real-time and embedded (DRE) applications possess stringent quality of service (QoS) requirements, such as low latency, bounded jitter, and high throughput. An increasing number of DRE applications are developed using QoS-enabled middleware, such as Real-time CORBA and the Real-time Specification for Java (RTSJ), to ensure predictable end-to-end QoS. Real-time CORBA is an open middleware standard that allows DRE applications to allocate, schedule, and control the QoS of CPU, memory, and networking resources. The RTSJ provides extensions to Java that enable it to be used as the basis for Real-time CORBA middleware and applications.

    This paper provides the following contributions to the study of QoS-enabled middleware for DRE applications. First, we outline key Real-time CORBA implementation challenges within the ORB Core, focusing on efficient buffer allocation and collocation strategies. Second, we describe how these challenges have been addressed in ZEN, which is an implementation of Real-time CORBA that runs atop RTSJ platforms. Third, we describe how RTSJ features, such as scoped memory and no-heap real-time threads, can be applied in a real-time ORB Core to enhance the predictability of DRE applications using Real-time CORBA and the RTSJ. Our results show that carefully applied optimization strategies can enable RTSJ-based Real-time CORBA ORBs to achieve effective QoS support for a range of DRE applications.

  4. Ossama Othman, Jaiganesh Balasubramanian, and Douglas C. Schmidt, Performance Evaluation of an Adaptive Middleware Load Balancing and Monitoring Service, submitted to the 24th IEEE International Conference on Distributed Computing Systems (ICDCS), May 23-26, 2004, Tokyo, Japan.

    As middleware-based distributed applications become more pervasive, the need to improve scalability of those application becomes more important. Improving scalability can be achieved through the use of a load balancing service. Earlier generations of middleware-based load balancing services were simplistic, however, since they focused on specific use-cases and environments. These limitations made it hard to use the same load balancing service for anything other than a small class of distributed applications. Moreover, the lack of generality forced continuous redevelopment of application-specific load balancing services. Not only did this redevelopment increase distributed applications deployment costs, but it also increased the potential of producing non-optimal load balancing implementations since time-proven load balancing service optimizations could not be reused directly without undue effort. Recent advances in the design and implementation of middleware load balancing services overcome these limitations through several techniques, all of which are present in Cygnus, which is adaptive load balancing service based on the CORBA middleware standard.

    This paper presents the following contributions to research on adaptive middleware-based load balancing techniques: (1) it presents the results of empirical benchmarks that systematically evaluate different load balancing strategies provided in Cygnus by measuring how they improve scalability, and (2) illustrates when adaptive load balancing, as opposed to non-adaptive, is suitable for use in a middleware based distributed application.


  1. Angelo Corsaro, Douglas C. Schmidt, Raymond Klefstad, and Carlos O'Ryan, Virtual Component: a Design Pattern for Memory-Constrained Embedded Applications, Proceedings of the 9th Annual Conference on the Pattern Languages of Programs, Monticello, Illinois, September, 2002.

    The proliferation of embedded systems and handheld devices with limited memory is forcing middleware and application developers to deal with memory consumption as a design constraint. This paper uses the POSA format to present the Virtual Component compound pattern that helps to reduce the memory footprint of middleware, particularly standards-based middleware such as CORBA or J2EE, by transparently migrating component functionality into an application on-demand. This compound pattern applies the Factory Method, the Proxy, and Component Configurator design patterns to achieve its goals. We describe the Virtual Component pattern as a separate named abstraction since each of these constituent pattern does not independently resolve the set of forces addressed by the Virtual Component pattern.

High-performance Web Servers and Applications

  1. James Hu, Irfan Pyarali, and Douglas C. Schmidt, ``The Object-Oriented Design and Performance of JAWS: A High-performance Web Server Optimized for High-speed Networks,'' (updated July 18) The Parallel and Distributed Computing Practices journal, special issue on Distributed Object-Oriented Systems, edited by Maria Cobband Kevin Shaw, Vol. 3, No. 1, March 2000.

    This paper provides two contributions to the study of high-performance object-oriented (OO) Web servers. First, it outlines the design principles and optimizations necessary to develop efficient and scalable Web servers and illustrates how we have applied these principles and optimizations to create JAWS. JAWS is a high-performance Web server that is designed to alleviate overheads incurred by existing Web servers on high-speed networks. In addition to its highly extensible OO design, it is also highly efficient, consistently outperforming existing Web servers, such as Apache, Java Server, PHTTPD, Zeus, and Netscape Enterprise, over 155 Mbps ATM networks on UNIX platforms.

    Second, this paper describes how we have customized the JAWS OO design to leverage advanced features of Windows NT on multi-processor platforms linked by high-speed ATM networks. The Windows NT features used in JAWS include asynchronous mechanisms for connection establishment and data transfer. Our previous benchmarking studies demonstrate that once the overhead of disk I/O is reduced to a negligible constant factor (e.g., via memory caches), the primary determinants of Web server performance are its concurrency and event dispatching strategies.

    Our performance results over a 155 Mbps ATM network indicate that certain Windows NT asynchronous I/O mechanisms (i.e., TransmitFile) provide superior performance for large file transfers compared with conventional synchronous multi-threaded servers. Conversely, synchronous event dispatching performed better for files less than 50 Kbytes. Thus, to provide optimal performance, a Web server design should be adaptive, i.e., choosing to use different mechanisms (such as TransmitFile) to handle requests for large files, while using alternative I/O mechanisms (such as synchronous event dispatching) on requests for small files.

C/C++ Users Journal Columns

Keynotes, Editorials, and Tutorials

  1. Trends in Distributed Object Computing, guest editorial for the Parallel and Distributed Computing Practices journal, special issue on Distributed Object-Oriented Systems, edited by Maria Cobb and Kevin Shaw, Vol. 3, No. 1, March 2000.

    Back to Douglas C. Schmidt's home page.

    Last modified 11:34:43 CDT 28 September 2006