Skip to main content

Visualize a Project Design

Understanding your system and the interactions between software elements is critical for new integrations and safety. We use component-based design to try and make sense of this complexity. However, doing component-based design is a challenge in the absence of a Component Software Integration Platform (CSIP). That's why we made Tangram Pro™!

You'll learn how to:

  • Design a component-based system
  • Define component interfaces
  • Connect components

Step 1: Create a Project

To begin modeling a system we need to make a project. Projects are used to design component-based systems, and generate code based on your design. Each project is a reusable element that can stand alone as a single design, or be connected with other projects for extended capabilities. Let's get started!

  1. Go to Projects and click New Project
  2. Enter a Project Name
  3. You can associate a team to your project with the Select Owner dropdown menu. Let's keep Personal (You) selected for now

Create a Project

After your project is created, you can go to Settings to update its name. Go to Members to add other users to your project to collaborate. For additional information see User Guide: Projects.

Step 2: Add a Component

Components are the basic building blocks of a system design. They represent pieces of software or hardware that communicate by sending and receiving messages. In this tutorial, we're going to model a simple unmanned aerial system (UAS). To start, let's add a component to represent a ground control station (GCS).

  1. Click the Add Component button
  2. Click anywhere on the stage to place it
  3. Change its name to GCS, then click Save

Step 3: Define a Component Interface

Each component has an Interface that specifies which messages it can send or receive. These interfaces are the points of connection and communication between components in your system.

There are two ways to define component interfaces in Tangram Pro™:

  • Edit a component – This lets you explicitly define its interface, as well as lock it to prevent future changes.
  • Connect a component to another one – This will infer its interface based on the component you connect to.

First we'll edit the GCS component and explicitly define its interface. We'll be using OpenUxAS LMCP formatted messages, but there are several built-in message standards available in Tangram Pro™.

Define the GCS Component Interface

  1. Edit the component and then click the Interface Edit button
  2. Set the Package to OpenUxAS::LMCP::v3
  3. Set the Message API to Tangram Pro Default API
  4. Set the Message Direction to Input/Output
  5. Select the following messages
    • AirVehicleState
    • AirVehicleConfiguration
    • GimbalState
  6. Once all 3 messages are added, try Locking the component's interface to prevent future changes
  7. Click Done or anywhere on the stage to close the component details

Nice work! You've created your first component and defined its interface. Next we'll look at making connections.

Step 4: Connect and Infer Interfaces

The next components you create will infer their interfaces based on connections. There are 3 more components needed to complete the project design. Let's get started!

Add a Communications Component

  1. Add a component and name it Communications
  2. Click its Connect button, and connect it to the GCS component
  3. Click Select from "GCS" Interface and select all three messages
  4. Click Switch Directions, then Select from "GCS" Interface and select all three messages
  5. Click anywhere on the stage to close the connections panel
  6. Click on the arrow to view the connection details

Communications and GCS are now connected across a common interface. They are designed to send and receive the same messages. Two more components to go!

Add a Navigation Component

  1. Add a component and name it Navigation
  2. Click its Connect button, and connect it to Communications
  3. Click Suggested and select AirVehicleState and AirVehicleConfiguration
  4. Click Switch Direction and select AirVehicleState and AirVehicleConfiguration
  5. Click Done or anywhere on the stage to close the component details

Add a Payload Component

  1. Add one more component and name it Payload
  2. Click its Connect button, and connect it to Communications
  3. Click Suggested and select GimbalState
  4. Click Switch Direction and select GimbalState
  5. Click Done or anywhere on the stage to close the component details

Navigation and Payload are now connected to Communications. Their interfaces include a subset of messages from the Communications interface.

Your completed design should look similar to this

Complete Design

Step 5: Explore Your Design

Great work building your first system! Let's take a look at a couple more areas.

Adjusting the View

Try clicking and dragging components to rearrange them, and dragging the background to adjust the view. Use the toolbar on the bottom right to zoom in and out. There's also an Export button to save your design as an image or PDF.

View Components and Connections

Try clicking on a component listed in the Navigator to view its details. Hover over a message to see the message flow. You can also click on a connection to see which messages are exchanged between components.

Design Details


By completing this tutorial, you've learned to design your first component-based system with Tangram Pro™!

Check out what you accomplished:

  • Created a project
  • Designed a system of components that communicate with OpenUxAS LMCP messages
  • Defined component interfaces
  • Locked a component interface
  • Created connections between components

If you want to know more about component-based system design in Tangram Pro™, take a look at our blog posts.


Check out Discuss, our Tangram Flex community and find out more about component based system design.

Ready to generate some code with a Tangram Pro™ Build? Head on over to the next tutorial below!