T19: Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects
Monday, Oct 23, from 08:30 to 17:00, D135
This tutorial describes how to apply patterns and middleware frameworks to alleviate the complexity of developing concurrrent and distributed applications. These patterns and frameworks have been used successfully by the speaker on production distributed applications at hundreds of commercial companies for telecommunication systems, network management for personal communication systems, electronic medical imaging systems, real-time avionics and aerospace systems, and automated stock trading. The tutorial illustrates by example how to significantly simplify and enhance the development of distributed systems that effectively utilizes concurrency and distribution 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) and
- Advanced operating system mechanisms -- such as event demultiplexing, multi-threading, multi-processing, and explicit dynamic linking.
The material presented in this tutorial appears in the book "Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects", Wiley & Sons, 2000 by Frank Buschmann, Hans Rohnert, and Michael Stal.
Intermediate: The 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).
Goals: Upon completing this tutorial, attendees will be able to:
- Recognize the inherent and accidental complexities involved with developing distributed 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 distributed application artifacts.
- Utilize OO language and middleware feature to create efficient, robust, reusable, and extensible distributed applications.
- Understand advanced OS capabilities and use them effectively to develop extensible, robust, reusable, and efficient concurrent distributed applications.
- Know where to find additional sources of information on how to successfully apply object-oriented techniques to distributed applications.
Format: Presentation with live examples and interactive discussions with participants.
Douglas Schmidt, Vanderbilt University: Douglas C. Schmidt is a Professor of Computer Science at Vanderbilt University. His research focuses on patterns, optimization techniques, and empirical analyses of frameworks and domain-specific modeling environments for developing distributed real-time and embedded (DRE) middleware and applications. Doug has over fifteen years of experience leading the development of ACE, TAO, CIAO, and CoSMIC, which are widely used, open-source DRE middleware frameworks and model-driven tools that implement patterns and product-line architectures for high-performance DRE systems. He was Program Chair for OOPSLA in 2004 and has given highly rated tutorials at OOPSLA every year since 1994.