LiveLessons: Design Patterns in Java
Douglas
C. Schmidt
(d.schmidt@vanderbilt.edu)
|
A pattern describes a reusable solution to a common problem that arises within a particular context of software design. When related patterns are woven together they form a pattern language that provides vocabulary and a process for the orderly resolution of software development problems. A framework is an integrated set of software components that collaborate to provide a reusable architecture for a family of related applications. Frameworks can also be viewed as concrete realizations of pattern languages that facilitate direct reuse of detailed designs and source code.
This LiveLessons course describes how to apply patterns and frameworks to alleviate the complexity of developing software via the use of object-oriented design techniques and Java programming language features. We'll use a case study based on many patterns in the book Design Patterns: Elements of Reusable Object-Oriented Software (the so-called ``Gang of Four'' or ``GoF'' book) to showcase pattern-oriented design and programming techniques in Java. This case study will help us evaluate the limitations with alternative design and programming methods (such as algorithm decomposition) and demonstrate by example how patterns and object-orientation help alleviate these limitations.
Course Topics
The Table of Contents for the course is available here.
The following is a summary of the key topics covered in this course:
Java Source Code
The Java source code for the expression tree processing app is
available in a GitHub
repository. This code has been written and tested using Eclipse
on Android. It should be straightforward to port it to other Java
environments, as well.
Suggestions for improvement are welcome (especially if they are accompanied with updates to the source code). Note that the GUI version of the Calculator "Verbose Mode" is still a work-in-progress. If you'd like to help improve it please let me know.
Facebook Group
There's a Facebook
group on Design Patterns in Java. Feel free to post questions and
comments on that group.
Dr. Douglas
C. Schmidt is currently the President-appointed and
Senate-confirmed Director of
Operational Test and Evaluation, where he is responsible for
overseeing the evaluation of the operational effectiveness,
suitability, survivability, and (when necessary) lethality of United
States defense systems to defend the homeland and prevail in
conflict.
He's on leave from Vanderbilt
University, where he is the Cornelius Vanderbilt Professor of
Engineering in Computer Science, the
Associate Chair of Computer Science, and a Senior Researcher at the Institute for Software
Integrated Systems. He is also on leave from the Software Engineering Institute (SEI)
at Carnegie Mellon University, where he
is a Visiting Scientist. From 2018 to 2022 Dr. Schmidt served as the
Associate
Provost of Research Development and Technologies and the
Co-Director of the Data
Science Institute, both at Vanderbilt University.
Dr. Schmidt is an internationally
renowned
and widely
cited (an h-index of 93, an i10-index of 402, and a citation count
of 48,500+) 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. His recent research
focuses on prompt
engineering techniques and prompt patterns that
enhance the accuracy and expressiveness of large language models
(LLMs) and generative
augmented intelligence platforms.
He has published
10+ books and 700+ papers (including 135+ 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 600+ keynote addresses, invited talks, and tutorials
on Generative
AI, 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
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 400,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 also 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 ComputingAdditional Resources
The following are other online sources of material on GoF patterns:
About the Instructor
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.
Back to Douglas C. Schmidt's LiveLessons page.
Last modified 13:56:46 CDT 05 April 2020