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

Gerard HolzmannGerard Holzmann discusses Spin, a design analyzer tool, and Scrub, a code review tool, used by Jet Propulsion Laboratory to analyze and fix the software used for critical solar system exploration missions.

Watch the video on InfoQ.

More Highlights