Tutorial Scope

Developing high quality communication software is hard; developing high quality reusable communication software is even harder. The principles, methods, and skills required to develop reusable software cannot be learned by generalities. Instead, developers must learn through experience how reusable software components and frameworks can be designed, implemented, optimized, validated, maintained, and enhanced by applying good development practices and patterns.

The goal of this tutorial is to provide an active learning context where developers can significantly improve their skills related to building reusable software assets. This course emphasizes hands-on exercises and analysis of case-studies to help developers create effective reusable communication software. The main theme of this course is that deep knowledge of architectures, patterns, components, and frameworks can significantly improve communication software reuse.


Tutorial Description

This course describes component middleware and model-driven development (MDD) techniques that can reduce the complexity of developing distributed systems, including online transaction processing, telecom/datacom data and control planes, process control and automation, aerospace/defense systems, and medical systems, among others. Two types of software complexity are addressed in this course: To address the software complexities described above, the course illustrates by example how to significantly simplify and enhance the development of software that effectively utilizes concurrent and distributed services via the use of component-based techniques, such as patterns, layered modularity, and information hiding; language features, such as abstract classes; inheritance, dynamic binding, and parameterized types; platforms, such as communication frameworks, request brokers, and service-oriented architectures; tools, such as Eclipse Modeling Framework (EMF), Corona, and the Generic Modeling Environment (GME), advanced operating system mechanisms, such as event de-multiplexing, multi-threading, multi-processing, and dynamic linking; and standards for distributed computing, such as the OMG CORBA Component Model (CCM), Java 2 Enterprise Edition (J2EE), Real-time Java, and Real-time CORBA.

Tutorial Objectives

Upon completing this tutorial, attendees will be able to:

  1. Recognize the inherent and accidental complexities involved with developing communication software systems.

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

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

  4. Utilize CORBA, ACE, and C++ features to create efficient, robust, reusable, and extensible communication systems.

  5. Understand advanced OS capabilities and use them effectively to develop extensible, robust, reusable, and efficient concurrent communication systems.

  6. Know where to find additional sources of information on how to successfully apply object-oriented techniques to communication systems.


Who Should Attend

The tutorial is intended for software developers who are designing and implementing communication systems, such as telecommunication systems, multimedia services, network management applications, personal communication systems, client/server management information systems, WWW servers, avionics systems, and upper-layer communication protocols.

Participants should be familiar with the following:

  1. General object-oriented design and programming techniques (such as modularity, information hiding, and design patterns)

  2. Fundamental OO programming language features (such as classes, inheritance, dynamic binding, and parameterized types) found in C++.

  3. Basic systems programming concepts (such as process/thread management, synchronization, and interprocess communication)

  4. Networking terminology (such as client/server architectures and TCP/IP)


Topic Outline

The tutorial is divided into the following four sections:


Tutorial Notes

The following are preliminary versions of the tutorial handouts (the final versions handed out at the course may be different and not all topics may be covered depending on attendee interests):

Pattern-Oriented Software Architecture and Model-Driven Development

Patterns, Frameworks, and Components for Distributed Systems

Component Middleware for Enterprise and DRE Systems

Software Design and Implementation Concepts and Principles


Instructor Profiles

Dr. Douglas C. Schmidt is the Cornelius Vanderbilt Professor of Engineering in the Electrical Engineering and Computer Science Department, the Associate Provost of Research Development and Technologies, the Co-Director of the Data Science Institute, and a Senior Researcher at the Institute for Software Integrated Systems, all at Vanderbilt University. He is also a Visiting Scientist at the Software Engineering Institute (SEI) at Carnegie Mellon University.

Dr. Schmidt is an internationally renowned and widely cited (an h-index of 84, an i10-index of 390, and a citation count of 41,000+) researcher whose work focuses on patterns, optimization techniques, and empirical analyses of object-oriented and component-based frameworks and model-driven engineering tools that facilitate the development of distributed real-time and embedded (DRE) middleware frameworks and mobile cloud computing applications on parallel platforms running over wireless/wired networks and embedded system interconnects. He has published 10+ books and 625+ papers (including 120+ journal papers) in top IEEE, ACM, IFIP, and USENIX technical journals, conferences, and books that cover a range of topics, including high-performance communication software systems, parallel processing for high-speed networking protocols, and distributed real-time and embedded (DRE) middleware with CORBA, Real-time Java, object-oriented patterns for concurrent and distributed systems, concurrent and networked software for mobile devices, and model-driven engineering tools. He has mentored and graduated 40+ Ph.D. and Masters students working on these research topics and has presented 575+ keynote addresses, invited talks, and tutorials on mobile cloud computing with Android, reusable patterns, concurrent object-oriented network programming, distributed system middleware at scores of technical conferences.

Dr. Schmidt has co-authored several books in the Pattern-Oriented Software Architecture series for Wiley & Sons edited by Frank Buschmann of Siemens, including Patterns for Concurrent and Networked Objects, A Pattern Language for Distributed Computing, and Patterns and Pattern Languages. He has also co-authored two books for Addison-Wesley on the topic of C++ Network Programming edited by Bjarne Stroustrup of AT&T Labs. He was a member of the writing team for the books Ultra-Large-Scale Systems: Software Challenge of the Future and Critical Code: Software Producibility for Defense. In addition, he has co-editored the first volume of the Pattern Languages of Program Design series by Addison-Wesley and the Object-Oriented Application Frameworks: Applications & Experiences series for Wiley & Sons.

In addition to his research, Dr. Schmidt has a taught scores of cutting-edge courses at Vanderbilt University, University of California Irvine, and Washington University St. Louis on topics relating to object-oriented design and programming, software patterns, middleware for distributed real-time and embedded systems, concurrent and networked programming with C++ and Java, and mobile cloud computing with Android. He recently co-taught one of the first ground-breaking cross-college University Courses at Vanderbilt on Tackling Big Problems with Mobile Cloud Computing. He received the 2015 Award for Excellence in Teaching by the Vanderbilt University School of Engineering. In addition, he's taught 10+ popular Coursera MOOCs at Vanderbilt on topics related to pattern-oriented software architecture and Android App Development to over 300,000 learners from around the world.

Dr. Schmidt has served as guest editor for feature topic issues on Applications of Augmented Reality for the IEEE Proceedings, Model-Driven Engineering for IEEE Computer magazine, middleware technologies for future communication networks for IEEE Networks magazine, Distributed Object Computing for the IEEE Communications Magazine, Distributed Object Computing for the USENIX Computing Systems Journal, and the Communications of the ACM special issues on Design Patterns and Object-Oriented Frameworks. Dr. Schmidt has also served as the editor of the C++ Report magazine and the Patterns++ section of C++ Report. Along with Steve Vinoski (Chief Architect of IONA Technologies' Orbix Object Request Broker), Dr. Schmidt co-authored the Object Interconnections column on distributed computing middleware for the C/C++ Users Journal.

From 2010 to 2014 Dr. Schmidt was a member of the Air Force Scientific Advisory Board (AF SAB), where he served as Vice Chair of a study on Cyber Situational Awareness for Air Force mission operations, as well as a study on sustaining hardware and software for US aircraft. He also served on the advisory board for the joint Navy/Army Future Airborne Capability Environment (FACE) initiative. From 2000 to 2003 Dr. Schmidt served as a Program Manager in the DARPA Information eXplotation Office (IXO) and Information Technology Office (ITO), where he led the national effort on QoS-enabled component middleware research in the Program Composition for Embedded Systems (PCES) program. In addition, he served as the co-chair for the Software Design and Productivity (SDP) Coordinating Group of the Federal government's multi-agency Information Technology Research and Development (IT R&D) Program, the collaborative IT research effort of the major Federal science and technology agencies. The SDP Coordinating Group formulates the multi-agency research agenda in fundamental software design. Dr. Schmidt also served as the Deputy Director of the DARPA Information Technology Office (ITO), where he helped to set the national IT research and development agenda and manage the autonomous systems, network-centric command and control systems, distributed real-time and embedded systems, and augmented cognition.

Dr. Schmidt was formerly an Associate Professor in the Electrical and Computer Engineering department at the University of California, Irvine and an Associate Professor and Director of the Center for Distributed Object Computing in the Department of Computer Science and in the Department of Radiology at Washington University in St. Louis, Missouri, USA. In addition, he's been an adjunct professor of Software Engineering in the Institute for Software Research at the School of Computer Science at Carnegie Mellon University. He has also served as the Deputy Director of Research and Chief Technology Officer at the Software Engineering Institute, the Chief Technology Officer for PrismTech and the Chief Technology Officer at Zircon Computing, where he was responsible for technical vision, strategic directions, and growth.

Dr. Schmidt served as the Chair of the DoD Organic Software Infrastructure Workshop in 2018, the General Chair of the Software Product Line Conference in 2015, the Program Chair of the Interoperable Open Architecture 2012 and 2013 conferences; program co-chair for the 1st International Symposium on Secure Virtual Infrastructures; the general co-chair for the DEBS 2009 conference; general chair for the IEEE/ACM 2007 MODELS conference; program co-chair for the 2006 ACM GPCE conference; program chair for the ACM OOPSLA 2004 conference; vice chair for the middleware track at the 2004 IEEE Real-time Systems Symposium; general co-chair for the 2004 IEEE Real-time Technology and Application Symposium; program co-chair for 2003 IEEE Real-time Technology and Application Symposium; the program co-chair for the 2003 IFIP/ACM/USENIX Middleware International Conference on Distributed Systems Platforms; area vice-chair and session chair for Middleware at the 2003 IEEE International Conference on Distributed Computing Systems (ICDCS); Program co-chair for the 2002 International Symposium on Distributed Objects and Applications; Program Co-chair for the 2001 International Symposium on Distributed Objects and Applications; Area vice-chair and session chair for Middleware at the 2001 IEEE International Conference on Distributed Computing Systems (ICDCS); co-chair of the 2000 OMG Workshop on Real-time and Embedded CORBA; general chair of the 2000 IFIP/ACM International Middleware Conference; program chair for the 1996 USENIX Conference on Object-Oriented Technologies and Systems (COOTS); and the 1996 Pattern Languages of Programming conference.

In addition to his academic research/teaching and university/government service, Dr. Schmidt has three decades of experience developing DRE middleware, model-driven engineering tools, and mobile cloud computing apps. He has led the development of the ADAPTIVE Communication Environment (ACE), which is a set of widely used, freely-available object-oriented frameworks that contain a rich set of components that implement patterns for mission-critical DRE systems. Dr. Schmidt and the members of his research group in the Distributed Object Computing (DOC) Group at Institute for Software Intensive Systems at Vanderbilt University have used ACE to develop a high performance, real-time CORBA ORB endsystem called The ACE ORB (TAO), which is a real-time ORB endsystem that supports end-to-end quality-of-service guarantees over high-speed networks. In turn, ACE and TAO form the basis for the Component-Integrated ACE ORB (CIAO), which is a real-time CORBA Component Model (CCM) implementation built by the DOC Group. The DOC Group also developed CoSMIC, which is a collection of domain-specific modeling languages and their associated analysis/synthesis tools that support various phases of DRE system development, analysis, configuration, and deployment.

The middleware platforms pioneered by Dr. Schmidt constitute some of the most successful examples of software R&D ever transitioned from academia to industry, being used successfully by thousands of developers in hundreds of companies world-wide, including Defense, Aerospace, Finance, Telecommunications, Medical, Gaming, and Internet industries. In collaboration with his colleagues, Dr. Schmidt has applied these middleware platforms and model-driven tools on large-scale telecommunications systems, medical imaging systems, real-time avionic systems, and distributed interactive simulation systems projects at many companies, including BBN, Boeing, Cisco, Ericsson, Kodak, Lockheed Martin, Lucent, Motorola, Nokia, Nortel, Raytheon, Qualcomm, SAIC, Siemens, Sprint, and Telcordia.

Dr. Schmidt received B.A. and M.A. degrees in Sociology from the College of William and Mary in Williamsburg, Virginia, and an M.S. and a Ph.D. in Computer Science from the University of California, Irvine (UCI) in 1984, 1986, 1990, and 1994, respectively.