Skip to main content

Visualize a Component Based System 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:

  • Define and specify a Component Type
  • Define and create a Component Implementation
  • Add Components to a Workspace
  • Connect Components

Step 1: Create a Component#

In Tangram Pro™ Components are the basic building blocks of a system. They are reusable elements that can stand alone as a single function or be connected with other Components to extend capabilities. In Tangram Pro™, we use Component Types to define Components and Component Implementations to model and build Component-based systems.

What are Component Types?

Component Types are the starting point for using Tangram Pro™ to model systems. You can think of a Component Type as the outside of an apartment building: it shows you the building’s shape and size, and how things get in and out of it, but you don’t know what the rooms inside look like.

Component Types

COMPONENT TYPES are the external view of a Component where a Component’s category, messages, ports, and properties are defined. If this building were a Component Type, its external characteristics would be blue and four floors.

What are Component Implementations?

In Tangram Pro™, a Component Implementation is where you determine the capabilities of a Component Type by connecting it to subComponents and building its structure. A single Component Type can have multiple Implementations. Implementations are like the apartments inside of an apartment building: the placement of furniture and appliances changes the function of each room.

Component Implementations

COMPONENT IMPLEMENTATIONS are the internal view of a Component where its behavior is characterized through the structure and function of its subComponents and connections to other systems and Components. Each blue building with four floors is the same type, but the Implementation is different because of the arrangement of parts in the fourth floor apartment.

To create a Component Type and Component Implementation#

  1. Click Component Library in the menu on the far left of the screen
  2. Click + New Component
  3. Type a Name, My Workspace, in the Enter Component name text box
  4. Select System as the Category
  5. Click the dropdown menu icon at the right of the Team list to select your Team
  6. Click Create Component

Once a Component Type is created it is added to the Component Library. Components are listed alphabetically, so if you don't see your My Workspace Component listed first, just scroll down to find it.

Of course, if you want to create a Component Implementation right away you can do so in the Component fly-out menu that appeared when you created your Component Type. Notice the name at the top is My Workspace.

  1. Click + Add Implementation in the My Workspace fly-out menu
  2. Type a name, First System, in the Implementation Name text box
  3. Click Create Implementation
  4. Click Open Workspace

Step 2: Add Component Types and Implementations#

You can think of your Workspace as your top level Component. For now, we are using the My Workspace Component Type and its Implementation First System as a shell to house other Components that you are about to create. As you visualize more complicated systems, you can edit the top level Component Type to exchange messages with other Components.

To add a Component to My Workspace.First System#

  1. Click the Component Library cube icon in the menu on the far left of the screen
    note

    If you belong to multiple teams, this fly-out allows you to change the Team that a new Component is associated with, but the Team you are currently in will be the default option

  2. Click + New Component
  3. Type a Name, UAS Navigation, in the Enter Component name text box
  4. Select System as the Category
  5. Check the dropdown menu of the Team list to select your Team
  6. Click Next

When you created the My Workspace Component Type you did not specify the Ports for the sending and receiving of messages. As you add Components from within a Workspace, you are required to add Ports.

To add Ports#

  1. Click + Add Port
  2. Click the dropdown menu icon to select your Message Set, in this case OpenUxAS::LMCP::v3
  3. Click in the Select Message text box
  4. Click AirVehicleState
  5. Click the dropdown menu icon beneath the Direction field to select the message direction
  6. Click In-Out
  7. Click the dropdown menu icon beneath the Type field to select the message type
  8. Click Data
  9. Click Next

You are really moving along! But remember, for every Component Type, you must create at least one Implementation. Of course, you can have multiple Implementations of just one Component Type. This is one of the ways that Tangram Pro™ enables Component re-use and swapping (more on that later...).

To create an Implementation of UAS Navigation and add it to the Workspace#

  1. Type a name, First System, in the Implementation Name text box
  2. Click Create Implementation
  3. Click and drag the "UAS Navigation.First System" block into the Workspace
  4. Click the yellow Save button in the top right corner

Great! Now add a few more Components to the Workspace to round out your system design. Step by step directions are listed below in items 1-26 for the next Component. Then, you'll see a chart providing you the information needed for the third and fourth Components.

To add UAS Communication.First System and additional Components to the Workspace#

  1. Click the Component Library cube icon in the menu on the far left of the screen
  2. Click + New Component
  3. Type a Name, UAS Communication, in the Enter Component name text box
  4. Select System as the Category
  5. Check the dropdown menu icon of the Team list to select your Team
  6. Click Next

Time to add the first Port!

  1. Click + Add Port
  2. Click the dropdown menu icon to select your Message Set, in this case OpenUxAS::LMCP::v3
  3. Click in the Select Message text box
  4. Click AirVehicleState
  5. Click the dropdown menu icon beneath the Direction field to select the message direction
  6. Click In-Out
  7. Click the dropdown menu icon beneath the Type field to select the message type.
  8. Click Data

And now for the second Port.

  1. Click + Add Port
  2. Click the dropdown menu icon to select your Message Set, in this case OpenUxAS::LMCP::v3
  3. Click in the Select Message text box
  4. Click AirVehicleConfiguration
  5. Click the dropdown menu icon beneath the Direction field to select the message direction
  6. Click In-Out
  7. Click the dropdown menu icon beneath the Type field to select the message type.
  8. Click Data

Finally, a third Port.

  1. Click + Add Port
  2. Click the dropdown menu icon to select your Message Set, in this case OpenUxAS::LMCP::v3
  3. Click in the Select Message text box
  4. Click GimbalState
  5. Click the dropdown menu icon beneath the Direction field to select the message direction
  6. Click In-Out
  7. Click the dropdown menu icon beneath the Type field to select the message type.
  8. Click Data
  9. Click Next

Bring it home by creating that Implementation!

  1. Type a name, First System, in the Implementation Name text box
  2. Click Create Implementation
  3. Click and drag the "UAS Communication.First System" block into the Workspace
  4. Click the yellow Save button in the top right corner
note

Repeat the last few steps to create the UAS Payload and UAS Ground Control Station Component Types and Implementations listed in the table below. Then click and drag them into your Workspace.

Component Type NameCategoryMessage SetMessageDirectionTypeImplementation Name
UAS PayloadSystemOpenUxAS::LMCP::v3GimbalStateIn-OutDataFirst System
UAS GCSSystemOpenUxAS::LMCP::v3, OpenUxAS::LMCP::v3GimbalState, AirVehicleState, AirVehicleConfigurationIn-Out, In-Out, In-OutData, Data, DataFirst System

Your system ought to look something like this so far

Simple System

Step 3: Connect Components#

With the four Components in your Workspace, it is now time to connect them up. This is an important step because you will specify how these Components talk with one another. Of course, these interactions can be easily changed and updated as needed.

To connect Components in the Workspace#

  1. Click the Make Connection circle in the middle of the UAS GCS.First System Component block
  2. Click the Make Connection circle in the middle of the UAS Communications.First System
  3. Click Add Suggested
  4. Click the AirVehicleState suggestion
  5. Click the AirVehicleConfiguration suggestion
  6. Click the GimbalState suggestion
  7. Click < Done
  8. Click the yellow Save button in the top right corner of the Workspace

Repeat this process to connect the UAS Communication.First System Component to the UAS Payload.First System and the UAS Navigation.First System Components.

Now, your system should look similar to this

Simple System Connected

tip

Hover over the connection lines for a quick view of the messages exchanged between connected Components, or click on the connection line to manage the available connections.

Cheers!#

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

Check out what you accomplished:

  • Set up your Workspace
  • Created Component Types specifying the message set, messages, and directionality of Ports
  • Created Component Implementations
  • Added Components to your Workspace
  • Connected Components

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

note

Check out Discuss, our Tangram Flex community and find out more about Component based system design with a CSIP.

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

Appendix#

Additional items available in Tangram Pro™, but not discussed in this tutorial

  • A Component Library shareable across Teams
  • Component Copying
  • Additional message sets, such as Open Mission Systems (OMS) and STANAG4586(NATO)
  • Transforms
  • Linking Components to repositories