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 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 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
- Click Components in the menu on the far left of the screen
- Click + New Component
- Type a Name,
My_Workspace
, in the Enter Component name text box - Select System as the Category
- Click the dropdown menu icon at the right of the Team list to select your Team
- 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
.
- Click + Add Implementation in the
My_Workspace
fly-out menu - Type a name,
First_System
, in the Implementation Name text box - Click Create Implementation
- 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
- 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
- Click + New Component
- Type a Name,
UAS_Navigation
, in the Enter Component name text box - Select System as the Category
- Check the dropdown menu of the Team list to select your Team
- 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
- Click + Add Port
- Click the dropdown menu icon to select your Message Set, in this case
OpenUxAS::LMCP::v3
- Click in the Select Message text box
- Click AirVehicleState
- Click the dropdown menu icon beneath the Direction field to select the message direction
- Click In-Out
- Click the dropdown menu icon beneath the Type field to select the message type
- Click Data
- 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_ cNavigation
and add it to the Workspace
- Type a name,
First_System
, in the Implementation Name text box - Click Create Implementation
- Click and drag the "UAS Navigation.First System" block into the Workspace
- Your Workspace should autosave. If not, click the blue 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
- Click the Component Library cube icon in the menu on the far left of the screen
- Click + New Component
- Type a Name,
UAS_Communication
, in the Enter Component name text box - Select System as the Category
- Check the dropdown menu icon of the Team list to select your Team
- Click Next
Time to add the first Port!
- Click + Add Port
- Click the dropdown menu icon to select your Message Set, in this case
OpenUxAS::LMCP::v3
- Click in the Select Message text box
- Click AirVehicleState
- Click the dropdown menu icon beneath the Direction field to select the message direction
- Click In-Out
- Click the dropdown menu icon beneath the Type field to select the message type.
- Click Data
And now for the second Port.
- Click + Add Port
- Click the dropdown menu icon to select your Message Set, in this case
OpenUxAS::LMCP::v3
- Click in the Select Message text box
- Click AirVehicleConfiguration
- Click the dropdown menu icon beneath the Direction field to select the message direction
- Click In-Out
- Click the dropdown menu icon beneath the Type field to select the message type.
- Click Data
Finally, a third Port.
- Click + Add Port
- Click the dropdown menu icon to select your Message Set, in this case
OpenUxAS::LMCP::v3
- Click in the Select Message text box
- Click GimbalState
- Click the dropdown menu icon beneath the Direction field to select the message direction
- Click In-Out
- Click the dropdown menu icon beneath the Type field to select the message type.
- Click Data
- Click Next
Bring it home by creating that Implementation!
- Type a name,
First_System
, in the Implementation Name text box - Click Create Implementation
- Click and drag the "UAS_Communication.First_System" block into the Workspace
- Click the blue 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 Name | Category | Message Set | Message | Direction | Type | Implementation Name |
---|---|---|---|---|---|---|
UAS Payload | System | OpenUxAS::LMCP::v3 | GimbalState | In-Out | Data | First System |
UAS GCS | System | OpenUxAS::LMCP::v3, OpenUxAS::LMCP::v3 | GimbalState, AirVehicleState, AirVehicleConfiguration | In-Out, In-Out, In-Out | Data, Data, Data | First System |
Your system ought to look something like this so far
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
- Click the Make Connection circle in the middle of the
UAS_GCS.First_System
Component block - Click the Make Connection circle in the middle of the
UAS_Communications.First_System
- Click Add Suggested
- Click the AirVehicleState suggestion
- Click the AirVehicleConfiguration suggestion
- Click the GimbalState suggestion
- Click < Done
- Click the blue Save button in the top right corner of the Workspace
Repeat this process to connect the
UAS_Communication.First_System
Component to theUAS_Payload.First_System
and theUAS_Navigation.First_System
Components.
Now, your system should look similar to this
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