Architecture and Design of Distributed Dependable Systems
ARDI) Course Materials

Last updated:05. august 2014.

Course Book:

Pattern-Oriented Software Architecture (POSA2)
Patterns for Concurrent and Networked Objects

by Douglas C. Schmidt, Michael Stal, Hans Rohnert and Frank Buschmann
Publisher: Wiley & Sons, 2000, ISBN 0-471-60695-2, 633 pages., Web Page:

Designing application and middleware software to run in concurrent and networked environments is a significant challenge facing software developers. This document presents an overview of the contents in the book Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects (POSA2) that address this challenge. The patterns in POSA2 form the basis of a pattern language that addresses issues associated with concurrency and networking. The book presents 17 interrelated patterns: Wrapper Facade, Acceptor-Connector, Extension Interface, Interceptor, Component Configurator, Reactor, Proactor, Asynchronous Completion Token, Scoped Locking, Strategized Locking, Thread-Safe Interface, Double-Checked Locking Optimization, Active Object, Monitor Object, Leader/Followers, Half-Sync/Half-Async, and Thread-Specific Storage. This material represents a range of patterns from ranging idioms to architecture designs. The patterns cover core elements of building concurrent and networked systems: service access and configuration, event handling, synchronization, and concurrency. All patterns present extensive examples and the pattern known uses are presented in various programming languages, including C++, C, and Java.

The book can be used to tackle specific software development problems or read from cover to cover to provide a fundamental understanding of the best practices for constructing concurrent and networked applications and middleware.

Supplementary Course Materials: selected research articles

Articles for Student Article Presentation Track:

Article 1:
"Streamlining Development of Networked Embedded Systems Using Multiple Paradigms", Christophe Huygens, Danny Hughes, Bert Lagaisse and Wouter Joosen, IEEE Software, Sept-oct. 2010, Vol. 27. Issue 5. , p.45-52.

Article 2:
"CQML: Aspect-oriented Modeling for Modularizing and Weaving QoS Concerns in Component-based Systems",
 Sumant Tambe, Akshay Dabholkar, Anirudda Gokhale, Dept. of EECS, Vanderbilt University. 16th Annual IEEE International Conference and Workshops on Engineering of Computer-Based Systems, 2019, p. 11-20.

Article 3:
"Designing dynamic reconfiguration for distributed real time embedded systems", Fatma Krichen, Brahmid Hamid, Bechir Zalila, Bernard Coulette, 10th Annual International Conference on New Technologies of Distributed Systems (NOTERE), May-June 2010, p. 249-254.

Article 4,
"Service-Oriented Architecture for Distributed Publish/Subscribe Middelware in Electronics Production", Ivan M. Delamer and Jose L. M. Lastra, IEEE Transactions on Industrial Informatics, Vol. 2. No. 4, November 2006, p. 281-294.

Article 5:
"The RUNES Middleware for Networked Embedded Systems and its Application in a Disaster Management Scenario", Paolo Costa et al., Fifth Annual IEEE Conference on Pervasive Computing and COmmunications (PerCom07), 2007, p. 1-10.

Article 6:
"Improving Software Performance and Reliability with an Architecture-Based Self-Adaptive Framework", Xu Zhang and Chung-Horng Lung, Department of Systems and Computer Engineering, Carleton University, Ottawa. IEEE 34th Annual Computer Software and Application Conference, July 2010, p 72-81.

Article 7:
"Fault Tolerant Approaches for Distributed Real-time and Embedded Systems", Paul Rubel et al, Aniruddha Gokhale et al., Aaron Paulos et al., IEEE MILCOM Military Communication Conference, 2007, p. 1-8.

Distributed Real-Time Systems:

“Middleware Challenges Ahead”, Kurt Geihs, Goethe University, published in IEEE Computer, June 2001, p.24-31.

“What Object Oriented Distributed Programming does not have to be, and what it may be”, Rachid Guerraoui, Swiss Federal Institute of Technology, Informatik, 1999 (11 pages).

The Many Faces of PublishSubscribe”, P.Th. Eugster, P. Felber, R. Guerraoui and A.-M.Kermarrec, Swiss Federal Institute of Technology, Bell Laboratories and Microsoft Research, Technical report, EPFL, Lausanne, Switzerland, 2001, (24 pages).

Frameworks for Distributed Systems:

“An Architectural Overview of the ACE Framework”, Douglas C. Schmidt, Department of Computer Science, Washington University, St. Louis, 1998 (8 pages)

Applying a Pattern Language to Develop Extensible ORB Middleware, Douglas C. Schmidt and Chris Cleeland. Appeard as a chapter in the book ”Design Patterns in Communications”, (Linda Rising ed.), 2000 and in an abridged version in IEEE Communication Magazine, Special Issue on Patterns, April 1999, (20 pages).

“JAWS: A Framework for High-performanceWeb Servers, James C. Hu, Douglas C. Schmidt, Department of Computer Science, Washington University, St. Louis. The paper has been accepted for inclusion in a book covering framework programming techniques. (21 pages).


"The Architecture Tradeoff Analysis Method (ATAM)", R. Kazman, Software Engineering Institute, Carnegie Mellon Univesity, USA. Proceeding of IECCS98 (IEEE).