Pattern-Oriented Software Architectures - Patterns and Frameworks for Concurrent and Networked Software

Sun 8:30-5:00 pm - Ponderosa B
Douglas Schmidt, Vanderbilt University, United States

Developing concurrent and networked software is hard; developing high quality reusable concurrent and networked software is even harder. The principles, methods, and skills required to develop such software are best learned by understanding how to create and apply patterns and frameworks. This tutorial describes how to apply patterns and frameworks to alleviate the complexity of developing concurrrent and networked software. These patterns and frameworks have been used successfully in thousands of companies for telecom/datacom, network management, electronic medical imaging systems, real-time avionics and aerospace systems, and computational finance. The tutorial illustrates by example how patterns and frameworks simplify and enhance the development of concurrent and networked software via the use of:

  • Object-oriented design techniques – such as patterns, layered modularity, and data/control abstractions
  • Object-oriented language features – such as inheritance, dynamic binding, and parameterized types
  • Middleware – such as object-oriented frameworks for host infrastructure middleware (such as ACE and the Java Virtual Machine) and Service-Oriented Architecture (SOA) and component middleware (such as Enterprise Java Beans, the CORBA Component Model, and Web Services).

The material presented in this tutorial is based on the "Pattern-Oriented Software Architecture" book series published by Wiley.


Upon completing this tutorial, attendees will be able to:

  • Recognize the inherent and accidental complexities involved with developing concurrenty and networked software.
  • 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 object-oriented language and middleware features to create efficient, robust, reusable, and extensible concurrent and networked software.
  • Understand advanced OS capabilities and use them effectively to develop extensible, robust, reusable, and efficient concurrent and networked software.
  • Know where to find additional sources of information on how to successfully apply object-oriented techniques to concurrent and networked software.
Class format

Slide presentations


2009 Highlights

Barbara Liskov

In a reprise of her ACM Turing Award lecture, Barbara Liskov discusses the invention of abstract data types, the CLU programming language, clusters, polymorphism, exception handling, iterators, implementation inheritance, type hierarchies, the Liskov Substitution Principle, polymorphism, and future challenges such as new abstractions, parallelism, and the Internet.

Watch the video on InfoQ.

More Highlights