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:
- Complexity due to quality of service (QoS)
requirements -- Some system complexities arise because
software is required to perform efficiently, reliability, and
consistently. Many of these systems are "real-time" systems,
e.g.,, they do not function correctly if they incur too much
latency.
- Complexity due to changes in functional and quality
requirements -- Some systems complexities are due to the need
to accomodate changing requirements in functionality and software
quality. Change is inevitable since users' requirements change,
component interfaces change, and developers' understanding of their
application domain changes. Well-designed software must evolve to
support these changes, especially in an increasingly competitive
environment.
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:
- Appreciate the emerging trends
in advanced software techniques for developing DRE applications.
- Recognize the inherent
and accidental complexities involved with developing DRE
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
comunication software artifacts.
- Utilize CORBA, ACE, and C++ features to create efficient,
robust, reusable, and extensible DRE systems.
- Understand advanced OS capabilities and use them effectively to
develop extensible, robust, reusable, and efficient concurrent
DRE systems.
- 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:
- General object-oriented design and programming techniques, such
as modularity, information hiding, and design patterns.
- Fundamental OO programming language features (such as
classes, inheritance, dynamic binding, and parameterized
types) found in C++.
- Basic systems programming concepts (such as process/thread
management, synchronization, and interprocess communication)
- 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:
- Day 1 will present an overview and roadmap of
DRE software development techniques, focusing on topics
such as patterns, frameworks, middleware, aspect-oriented design,
and model driven architectures. It also covers background
material on object-oriented software design and programming
concepts and principles. This background material demonstrates
the fundamental differences between conventional algorithmic
design/programming, object-oriented design/programming, and
generic design/programming.
The following material is representative
of the handouts for the first day of the course:
- Day 2 will examine the patterns and reuse-centered object-oriented
development techniques used for DRE applications and
middleware. It will also cover the key software challenges facing DRE application
developers, which involve selecting appropriate mechanisms for handling (1) distribution,
communication, and cooperation, (2) process/thread management and
synchronization, (3) service naming, partitioning, and placement,
and (4) reliability and
availability. In addition, we will illustrate how C++ language features (such as parameterized types,
inheritance, and dynamic binding) can be combined with OO design
techniques and tools (such as patterns and frameworks) to
develop, use, and reuse DRE software applications and middleware
more effectively. The following material is representative
of the handouts for the second day of the course:
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. He also
serves as the Chief
Technology Officer for PrismTech and is a
visiting scientist at the Software
Engineering Institute. 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 350 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 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.
Dr. Schmidt has served as the 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 300
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 over fifteen
years 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