Building a Scalable Software Architecture

Tags: Software

There are several different ways to approach software architecture development for component and system testing. A modular approach to software development has many advantages:

  • It’s reusable

  • It can save time and money on development

  • It’s easily extensible for future use

Modular software is ideal for applications, such as medical device testing and aerospace component testing, that require qualification or certification of testing software in order for test results to be considered compliant with industry regulations.

In this blog post, we’ll be looking at Test Deck, Genuen’s proven approach to developing software architecture for testing that is scalable, extensible, cost-saving, and time-saving.

Building a Scalable Software Architecture

What is Test Deck?

Traditional software architecture involved integrating the customer test sequences directly into the software and providing configuration to allow the operator to adjust inputs to each step. This approach is highly customizable and features a recognizable LabVIEW user interface. But for some testing applications, a more standardized approach is necessary.

Test Deck is a proven software architecture package, comprised of several different building blocks that make up the execution of a test system. To see if this modular package is appropriate for your application, our engineers start by working with you to identify which hardware components need to interface with the test software. In addition, our engineers will need information on your test sequences, how often they change, as well as what kind of data will be required.

Test Deck includes five major elements:

  • A Basic Initialization of Test System (BITS), which contains all required configuration information for IO Portals and the MCP.

  • Input/Output (IO) Portals that are responsible for controlling and monitoring a piece of equipment or performing a specific function (can also operate independently)

  • Test Script, written in Python, which executes the flow of test procedures (can be created or modified by the customer as test requirements change)

  • A Main Control Program (MCP) that serves as a user interface and provides coordination and automation to the test system

  • A Remote Access Manager (RAM) that is responsible for connecting the MCP to the IO Portals required to perform the configured tests

The following paragraphs further define these elements, why they are important, and what makes them ideal for a modular software architecture.

Basic Initialization of Test System (BITS)

The Basic Initialization of Test System (BITS) is a program that is used to coordinate the launching of all IO Portals and the MCP that are included in Test Deck. It passes all required configurations over to setup how each of the components run.

IO Portals

Input/Output (IO) portals allow you to communicate with a hardware device. Typically, there is one IO Portal for each hardware item that needs to communicate with the software. However, if multiple pieces of hardware within a subsystem require direct access to one another, they may share a single IO Portal. IO Portals consist of displays, commands (e.g., features, functionality, supporting code), and channels. Each IO Portal is a standalone executable, which can be used independently to control hardware. IO Portals are also useful for troubleshooting and can serve as manual debug utilities.

Once an IO Portal is qualified, each future configuration does not need to be qualified again. This can help to expedite the qualification process of future test systems that utilize the same portal.

Test Script

Test Deck uses Python, a commercial-off-the-shelf (COTS) scripting language, to provide system automation for test sequences. Each Python script is written per your test procedure. The script calls and utilizes commands from the Main Control Program (MCP) using channels that are found within the IO Portals.

Main Control Program

The Main Control Program (MCP) is the user interface for the test system and serves as a “router” of tasks and sequences. From this intuitive interface, you can select test sequences and define parameters for test procedure execution. Once you’ve selected a test sequence, the MCP will launch the Python script, executing and automating the sequence, communicating with the IO Portals corresponding with the hardware necessary to the procedure.

Remote Access Manager

The MCP uses a Remote Access Manager (RAM) to communicate with each part of Test Deck when a test sequence is executed. The MCP communicates directly with the RAM service, which helps the MCP to identify which IO Portals are available for performing the test sequence and communicates the connection information for the IO Portals back to the MCP. Upon launch, each IO Portal communicates with the RAM to register itself as available for use and provides updates as availability changes.

Block Diagram

Figure 1 Test Deck Software Architecture

Is Test Deck Right for Your Application?

Development Costs of a Modular software architecture, such as Test Deck, can be greater than the costs of a traditional single project focused based application. However, as Test Deck is reused, the time and cost required to develop new test systems decreases. Every new IO Portal is added to the library of available portals for use. The modular nature of the architecture allows IO Portals to be identified, configured, certified, and reused in future architectures. By reusing elements of the software architecture, we can reduce the time it takes to develop a test system, delivering it to you sooner.

Not only does Test Deck help you reduce development time and costs, it also provides you with a scalable and extensible system. New hardware and corresponding software can be easily added to your system to expand its capabilities. Test Deck is a practical software option for applications that benefit from standardization. Examples of this include test labs that want to use a common test software architecture across multiple test systems. In particular, Test Deck is useful for development testing. Test Deck allows users to easily create and modify test sequences via Python, allowing you to take control of how the test software performs testing as test requirements change.

Talk with a Genuen engineer to see if Test Deck is right for your application.