Teaching Distributed Systems class using RTI DDS

Last semester I was the TA for Dr. Bakken's Distributed Systems Concepts and Programming class (CptS 464/564, see http://www.eecs.wsu.edu/~cs464/). It was the first time that we use RTI DDS as our programming platform for the class projects (previously we used ORBacus). We designed three class projects with the help of Dr. Gabriela Ciocarlie. The first one is a “hello world” project. It let the students write a basic program that publishes information over the network. The purpose of this project is to give the students an idea of how middleware actually works and get them familiar with RTI DDS. The second project let the students create a distributed system “Top” functionality using RTI DDS. The publisher sends CPU and memory usage data periodically, and the subscriber uses ContentFilteredTopic to get a subset of the messages. Also, in this project the students used some QosPolicies to control the behavior of their program. In the third project, the students created a simplified public transport system using RTI DDS. We got the idea of this project from the example application of IBM's MQSeriesPublish/SubscribeApplications redbook. In this public transport system, there are buses following different routes with passengers who want to know the status of their bus and when it will arrive at their stop. There may also be operators who need to know the status of the bus fleet from time to time. Graduate students need to take care of the breakdown of a vehicle, which causes its temporary removal from the system, and the adding of a backup vehicle (if available) to the route. Overall, it's a great and successful experience using RTI DDS in the class.

This is a quote from Dr. Bakken on the benefit this technology provides to the student's eductation

"As someone who has researched new kinds of middleware for 20 years, its very important to me that students in my distributed computing course get significant practice programming with middleware. I have used CORBA in the past. However, it has a steeper learning curve (in large part no doubt because clients and servers are fairly tightly coupled), so it would take most students 10-20 hours to get their first "hello, world" program running. This last fall with DDS half of the class got "hello, world" running in an hour or less. I consider that a minor miracle, especially given the heterogeneous interoperability that comes for free, of course along with being much easier to program than at the socket layer. Keep up the great work -- I think this is a very strong testament to the maturity of RTI's DDS products."

Following are some feedbacks from the students:

"I have actually found RTI DDS to be a very mature and well developed product. What I have found especially useful and intriguing about the system is the diversity and maturity of its QoS policies...Another aspect of RTI DDS I have found fascinating is how transparency they have made the discovery process...the last comment I would like to make about RTI DDS is to compliment them on how thorough the majority of their documentation seems to be..."

"The RTI data distribution service eased the development of the project, to a large extent...it provides the options of development in a number of languages...the applications written in different lanuages, running on different hardwares under different operating systems can operate seamlessly over RTI DDS...The RTI DDS framework provides a vast range of QoS policies...RTI DDS provides interoperability with other middleware services like JMS and IBM MQ...Lastly, there is extensive documentation..."

"This is an ideal tool to learn about middleware Pub Sub...better than other existing tools to learn about middleware."

"The framework is actually quite flexible...the framework is powerful and useful. It's a great tool for optimizing the development experience and improving the performance of a distributed system. All things considered, I think RTI DDS is quite a valid choice for many other distributed application scenarios."

"RTI DDS is great way of playing with distributed real-time systems...RTI DDS is a great tool and has helped a lot in the learning process and getting acquainted with real distributed system concepts."

"It is easy to use and has high degree of reliability...The RTI DDS middleware makes the coding for distributed systems simpler..."