Object-Oriented Design and Programming with Patterns, Frameworks, and Middleware

Dr. Douglas C. Schmidt
d.schmidt@vanderbilt.edu


Tutorial Scope

Developing software for distributed real-time and embedded (DRE) applications that effectively utilizes concurrency over high-speed, low-speed, and mobile networks is hard; developing high quality reusable DRE components and applications 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 DRE software components and frameworks can be designed, implemented, optimized, validated, maintained, and enhanced by applying effective development practices and patterns.

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


Tutorial Description

This course describes OOD/OOP techniques and software that have been used successfully to reduce the complexity of developing large-scale concurrent DRE applications, including online transaction processing, telecommunication call-processing, network management for large-scale global personal communication systems, electronic medical imaging systems, real-time avionics systems, and high-performance parallel communication protocol stacks, among others. Two types of software complexity are addressed in this course: To address the software complexities described above, this course illustrates techniques that can significantly simplify and enhance the development, use, and reuse of DRE software. These techniques include object-oriented design (such as patterns, layered modularity, and information hiding), C++ language features (such as abstract classes, inheritance, dynamic binding, and parameterized types), tools (such as object-oriented communication frameworks and Object Request Brokers (ORBs), advanced operating system mechanisms (such as event de-multiplexing, multi-threading, multi-processing, and explicit dynamic linking), and emerging standards for distributed object computing such as such as OMG CORBA and Distributed COM (DCOM).


Tutorial Objectives

Upon completing this tutorial, attendees will be able to:
  1. Appreciate the emerging trends in advanced software techniques for developing DRE applications.
  2. Recognize the inherent and accidental complexities involved with developing DRE software.
  3. Understand precisely how object-oriented techniques and tools can and cannot help to alleviate this complexity.
  4. Apply key object-oriented design techniques (such as patterns, frameworks, and components) to develop reusable comunication software artifacts.
  5. Utilize CORBA, ACE, and C++ features to create efficient, robust, reusable, and extensible DRE systems.
  6. Understand advanced OS capabilities and use them effectively to develop extensible, robust, reusable, and efficient concurrent DRE systems.
  7. Know where to find additional sources of information on how to successfully apply object-oriented techniques to DRE systems.


Who Should Attend

The tutorial is intended for software developers who are designing and implementing DRE systems, such as telecommunication systems, multimedia services, network management applications, personal communication systems, client/server management information systems, WWW servers, avionics and aerospace systems, and upper-layer communication protocols. Participants are expected to have some familiarity with the following topics:
  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)
The first day of the course will provide an overview of these topics to ensure participants have an opportunity to get clarifications on topics they are unfamiliar with.


Course Structure

The tutorial is divided into the following days:


Instructor Profiles

Dr. Douglas C. Schmidt is a Full Professor in the Electrical Engineering and Computer Science Department, the Associate Chair of Computer Science and Engineering, and a Senior Researcher at the Institute for Software Integrated Systems (ISIS) at Vanderbilt University. Dr. Schmidt is an internationally renowned and widely cited 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 and applications on parallel platforms running over high-speed networks and embedded system interconnects. He has published 9 books and over 400 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, real-time distributed computing with CORBA, Real-time Java, object-oriented patterns for concurrent and distributed systems, and model-driven engineering tools.

Dr. Schmidt 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 book Ultra-Large-Scale Systems: Software Challenge of the Future. 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.

Dr. Schmidt has served as guest editor for feature topic issues on 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-authors the Object Interconnections column on distributed computing middleware for the C/C++ Users Journal.

Dr. Schmidt has 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 has 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 serves as a visiting scientist at the Software Engineering Institute. He 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. He has also served as the Chief Technology Officer for PrismTech.

Dr. Schmidt has served as 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. He has presented over 350 keynote addresses, invited talks, and tutorials on reusable patterns, concurrent object-oriented network programming, and distributed system middleware at dozens of conferences, including OOPSLA, the USENIX general technical conference, USENIX COOTS, ECOOP, IEEE Local Computer Networks, ACM PODC, IEEE ICNP, IEEE GLOBECOM, Object Expo, Component Users Conference, OOP, and C++ World.

In addition to his academic research, Dr. Schmidt has two decades of experience developing DRE middleware and model-driven engineering tools. He has led the development of the ADAPTIVE Communication Environment (ACE), which is a widely used, freely-available object-oriented framework that contains a rich set of components that implement patterns for high-performance DRE systems. Dr. Schmidt and the members of his research group in the Distributed Object Computing (DOC) Group at Institute for Software Intensive Systems (ISIS) 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. Most recently, the DOC Group has 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.

ACE, TAO, CIAO, and CoSMIC have been used successfully by thousands of developers at hundreds of companies world-wide. In collaboration with his colleagues, Dr. Schmidt has applied these middleware platforms and tools on large-scale projects at many companies, including BBN, Boeing, Cisco, Ericsson, Kodak, Lockheed Martin, Lucent, Motorola, Nokia, Nortel, Raytheon, Qualcomm, SAIC, Siemens, Sprint, and Telcordia. These projects involve telecommunications systems, medical imaging systems, real-time avionic systems, and distributed interactive simulation systems.

Dr. Schmidt received B.S. 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. His Ph.D. advisor was Tatsuya Suda. Dr. Schmidt is a member of the IEEE, ACM, and USENIX.

In his ``spare'' time, Dr. Schmidt enjoys Corvettes and weight lifting.

Back to Tutorials home page.

Last modified 20:38:09 CDT 07 September 2007