Technical Program
Educators' Symposium
Doctoral Symposium
Student Research

Student Volunteers
Special Events
Housing Information
Registration Information

Monday, 4 November – 8:30-17:00 Full day – Convention Ctr - Room 612

3 Pattern-Oriented Software Architectures for Networked and Concurrent Applications

Douglas Schmidt
University of California, Irvine, schmidt@uci.edu

Developing software for distributed systems that effectively utilizes concurrency over high-speed, low-speed, and mobile networks is hard. This tutorial describes how to apply patterns and middleware frameworks to alleviate the complexity of developing concurrent and networked applications. These patterns and framework components have been used successfully by the speaker on production communication software projects at hundreds of commercial companies for telecommunication systems, network management for personal communication systems, electronic medical imaging systems, real-time avionics, distributed interactive simulations, and automated stock trading.

The tutorial illustrates by example how to simplify and enhance the development of applications that use concurrency and networking via the use of:

    Object-oriented design techniques -- such as patterns, layered modularity, and data/control abstraction

    Object-oriented language features -- such as abstract classes, inheritance, dynamic binding, and parameterized types

    Middleware -- such as frameworks for host infrastructure middleware (such as ACE) and distribution middleware (such as Object Request Brokers)

    Advanced operating system mechanisms -- such as event demultiplexing, multi-threading, multi-processing, and explicit dynamic linking

Upon completing this tutorial, attendees will be able to:

    Recognize the inherent and accidental complexities involved with developing concurrent and networked applications.

    Understand precisely how object-oriented techniques and tools can and cannot help to alleviate this complexity.

    Apply key object-oriented design techniques (such as patterns, frameworks, and components) to develop reusable concurrent and networked software artifacts.

    Utilize middleware and OO programming features to create efficient, robust, reusable, and extensible concurrent and networked applications.

    Understand advanced OS capabilities and use them effectively to develop extensible, robust, reusable, and efficient concurrent and networked applications.

    Know where to find additional sources of information on how to successfully apply object-oriented techniques to concurrent and networked applications.

The material presented in this tutorial appears in the books "Pattern-Oriented Software Architecture: Patterns for Concurrent and Distributed Objects", Wiley & Sons, 2000 and the two-volume "C++ Network Programming" series, Addison-Wesley, 2002.

Attendee background

This tutorial is intended for software developers who are familiar with general object-oriented design and programming techniques (such as patterns, modularity, and information hiding), fundamental OO programming language features (such as classes, inheritance, dynamic binding, and parameterized types), basic systems programming concepts (such as process/thread management, synchronization, and interprocess communication), and networking terminology (such as client/server architectures and TCP/IP).


Slide presentation


Dr. Douglas C. Schmidt is an Associate Professor in the Electrical and Computer Engineering department at the University of California, Irvine. His research focuses on patterns, optimization principles, and empirical analyses of object-oriented techniques that facilitate the development of high-performance and real-time distributed object computing middleware on parallel processing platforms running over high-speed networks and embedded system interconnects. Dr. Schmidt is currently the Deputy Director and a Program Manager at the DARPA Information Technology Office (ITO), where he helps set the US IT research and development agenda on autonomous systems, network-centric systems, distributed real-time and embedded systems, and augmented cognition.