In episode 52, we’re joined by Gianpiero Napoli, Principal Software Engineer and Lead Developer for RTI System Designer. Gianpiero discusses how RTI System Designer can ease the configuration process and manage the complexity of building large Connext DDS systems.
In Episode 52 of The Connext Podcast:
- [0:24] What is RTI System Designer?
- [5:12] What are its specific capabilities, and how can system architects and DDS developers benefit from them?
- [7:33] How does integration with other RTI Tools speed up development?
- [10:38] Who’s most likely to use System Designer? New or existing users?
- [12:48] How can our listeners access RTI System Designer today?
- [13:47] What’s your favorite part about RTI System Designer?
- [Free Connext DDS Trial] Try a fully-functional version of Connext DDS for 30 days.
- [System Designer] A Graphical Tool that simplifies the creation of XML files, allowing you to define and configure your Connext DDS Systems
- [RTI Labs] A free program that provides you with early access to new technology, including software projects, downloads and tools.
Hello everybody, and welcome to another episode of The Connext Podcast and our first Zoom recorded podcast. Today I'm joined by Gianpiero Napoli. He's a principal software engineer here at RTI and lead developer on System Designer – which is what we are here to talk about today. Gianpiero, welcome to the podcast. How are you?
Hi, I'm very good. Thank you very much.
What is RTI System Designer?
Excellent. Well, as I mentioned before, we're here to discuss System Designer, so let's just start with the basics. What is System Designer?
So before we explain what System Designer is, let me talk a little bit about how DDS based systems work. So a DDS application or a DDS distributed system has a lot of configuration knobs that you can change. Before we even start coding, the System Architect has to define the data types and it can configure a lot of different quality of services. And the last thing that you have to do is to create your participants, your Data Readers, and your Data Writers. All of these aspects of DDS can be configured using XML. You can either do it by writing code, or you can use XML. And, of course, when you write them in XML, you can use your favorite editor to type in all of this information. Here’s the problem: there are a lot of QoS's, types, and things that you can configure, and it becomes overwhelming typing them in a text editor.
So when we created System Designer, we decided to tackle that issue. Essentially, System Designer is a UI tool – it is web based, everything runs on your computer, but you bring up the user interface in your browser and it basically helps you design the system. It gives you a little bit of guidance, so when you are creating your types and QoS settings, the documentation is right there, alongside auto completion. In totality, it really helps you design and understand what the settings are and what you have to configure when you're writing a DDS application.
While you could do everything without System Designer, like adding things manually into that simple text editor, it's a bit cumbersome and you have to go back and forth between the documentation and trying out your XML's word format. System Designer solves all of these problems. You're not going to have a spelling error because you are clicking and picking one of the options and everything is in one place. Again, the documentation is right there. For example, for each QoS, there is a little explanation and link to the specific page in the manual of DDS that will help you configure your system. It saves a lot of time, and will reduce the number of errors that a developer can make.
Right, and so RTI decided to build it. Was this a light bulb going off in someone's head type of an event or something that gradually became obvious?
System Designer was developed by the research team here at RTI. Initially, there was a customer that was using other tools of RTI. Let’s use the RTI Prototyper for example. In order to use these tools, you have to write a lot of XML configuration files. Because of this, they wanted an easier way to share the configuration file with their customer in a graphical way and give the opportunity to their customer to easily modify those XML files to change one QoS policy or to add one field inside their data types.
So, they asked us to do that and we started working with them. As we were creating System Designer, we started showcasing it to other customers and collected feedback. After reviewing the feedback, we added some features, removed some features and came up with this current version that is available right now. It works with the latest versions of Connext® DDS 6.0.1 and it's available as an installer in RTI Lab. You can install it with RTI Launcher to ensure that it's well integrated with the 6.0.1 release of Connext DDS.
Can you talk about the production track, whether or not this will be a tool?
So we have confidence that it's going to be an official RTI supported tool. We have spent a few years in research, making sure that we would implement the right set of features and we have presented it to many customers. We collected feedback and regularly circulated and brainstormed internally at RTI. After integrating all of the feedback, we came up with the final version that is going to be released on the RTI Labs webpage that is the most current version of 0.4.0., we hope that the next release is going to be fully supported by the Tools team at RTI. Right now, you can download it for free and use it. If you have any questions, please don’t be afraid to reach out. You can go on the community forums webpage and submit a question and you will get support.
What are its specific capabilities, and how can system architects and DDS developers benefit from them?
Can you discuss some of its highlights and how system architects and DDS developers will benefit from them?
When you are developing a DDS system, System Designer can help you in many different ways. For example, when you start developing a Connext DDS based system, the first thing that you want to do is design your data types. By using System Designer, you can look through the UI and figure out what kind of data types you have available to start building your types library. Additionally, you can do it in a collaborative way with your team since you can share your projects, modify them, and more, so that's one great aspect. Then of course, there are many QoS policies in DDS and each QoS policy can belong to a different part of the system: to the participant, to the data reader and to the data writer. It can be difficult to differentiate which one belongs to which part of the system, but by using System Designer, you can go inside the right part of the UI, right click, and it will categorize all the QoS by Data Reader and Data Writer.
How does integration with other RTI Tools speed up development?
That's interesting how you mentioned that the result produced by System Designer can be used with other RTI tools like RTI Prototype or RTI Connector. Can you talk about how this integration of tools can speed up the process of development?
Yeah, so the base of System Designer is something that we call XML based application creation. It's a way that allows you to define all the aspects of your distributed system in XML so you can define mainly four different categories: the data types, quality of services, topics that your application will be using and your end points, Data Readers and Data Writers. In System Designer, you can define your old system and then use one of the languages that we support: C, C++, Java, C#, Ada. You can load these XML's through one of our API's and the system will be initiated for you.
If you are familiar with DDS development, you're doing everything by code: you have to create your participants, your topic, your subscription, your Data Reader, your Data Writer. Only then can you start working on your application logic. By using XML based applications and XML files created with System Designer, you can kind of divide up the two phases: write everything in XML, and then with one or two API calls, you can get the system set up for you. That way, you can just focus on your application logic.
The advantage of that is not only that you are using the boilerplate code that you're writing, but also that you can change some aspect of your distributed system without having to recompile. The perfect example of this is the QoS policies. You could write your XML, with your QoS policies, compile your program, and then try different QoS policies without even recompiling your code, just changing the XML either by hand or using System Designer.
You talked about speeding up development. I want to just take one step deeper and talk about, how.
Because you are writing most of the logic of your planning in XML, you don't have to write all those lines of code. You don't have to call an API to create a participant and then check that the return code is okay, and do something if there is a failure and then do the same for a subscriber, a topic, or a reader, you don't have to write all the code. All you have to do is load the XML file that describes all your readers, all your topics, all your writers and the system will be initiated for you. So with one or two XML system calls or API calls, you reduce a lot of the boilerplate. This is not an advantage directly related to System Designer, it's an XML based application creation that gives you these advantages. But again, System Designer is the most effective way to write that XML. That's why we think it is going to save developers a lot of time.
Who’s most likely to use System Designer? New or existing users?
Are new customers more likely to use System Designer, or is it more useful later on? Who should use it and when?
This is a very good question. Both new customers and experienced customers are going to be able to take advantage of System Designer. Experienced customers already have their configuration in XML so they can easily create a new System Designer project and load their XML files. Now, they have an organized way to modify their XML files, to share them with another team in their company, and to keep the QoS's and types separated. Some teams may create a library of types that then another team wants to use, and through System Designer, it becomes very easy to look at the types that you already have and to reuse them instead of creating new ones that are already there.
New customers can also take advantage of System Designer because we noticed the need with some of our doctors. System Designer is not going to remove the need for you to understand the basics of DDS. You will still need to know what a type is, what a QoS is, what a Data Reader and Data Writer are, but when you know the basics, you can go inside System Designer and you can take a step back and say “okay, I know what a type is, but what can I do? What is the type that can be at the top level?” And if you don't know that, System Designer is just going to offer you the ones that are available for being at the top level.
It's the same thing with the QoS's. It's like,“okay, I know that I want to be reliable, but what is the name of the exit of the QoS policy that allows me to set up a reader or a writer to be reliable?” You don't need to remember the spelling of that QoS. You can just go and look in the UI and it's going to become very clear what the name is and how to use it and what policy to set. It's going to be useful to both experienced users and new users that are going to use System Designer to learn a little bit more about the policies and the options that are available.
How can our listeners access RTI System Designer today?
You mentioned that this is currently in RTI Labs and will graduate to the tools portfolio. How can our listeners access System Designer today?
If you go on the RTI Lab website you're going to see a big button there and a section for System Designer. This will download an RTI package that you can install if you have Connext 6.0.1 using the RTI Launcher – it's very simple. It installs System Designer in the same directory structure with the other applications, and you can start it when you click on the launcher. Once you install the tool, System Designer will open in the browser and you can just start using it. And if you have any questions, you can write to the community portal, community.rti.com - there is a forum there and somebody will answer your inquiries. We plan to release additional System Designer integrations with Connext as an official add-on in the next release.
What’s your favorite part about RTI System Designer?
Before we go, what's your favorite part about System Designer as one of the lead developers?
Yeah, that's a fun question. I'm not usually a fan of UI’s when it comes to writing your code, but I found myself, since I built System Designer, within the research group using it all the time because it's hard to remember, even for people that are working with DDS everyday, how a specific QoS is spelled and how a data type can be configured. So very often I open System Designer and I go and look for my own reference. Even if it's just to create a snippet, I just cut and paste into a more complex file. I use it all the time. In research, we do a lot of demos so it's very easy to create a data type and to share that with other people within the research team. And so I think it makes your life easier as a system developer and allows you to focus on your application logic instead of spending too much time configuring a QoS or defining your data types.
Well I want to thank you for your time, Gianpiero, and I hope you'd want to come back on the podcast again and chat over another topic sometime.
Yeah, sure thing. Thank you, Steven.
And to all of the listeners, again, you can get System Designer today for free at RTI Labs, and it works with the latest version of RTI Connext DDS 6.0.1. Thanks for listening everyone, and we'll see you on the next episode of The Connext Podcast.