LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Architecture to allow modular software design

Hello everybody,
 
I am new to this forum and as topic of my master thesis, I will work on an architecture that is suitable for the design of modular software. The developed software architecture should be processed into a framework structure in which different required software modules can be generically integrated (by the user, not the programmer) without additional programming effort. Different modules are needed for different tasks (each module stands for a measuring device). The modules must be able to communicate with each other, including sending and processing different message data.
My first approach is a plugin architecture, where both the frame structure and the individual modules communicate via the QMH with a possibility for replies. The module VIs are called dynamically via "Asynchronous Call".
My question now is, which approaches exist to realize such an architecture? Is the Actor Framework suitable for this? I also found the UI Plugin Framework by Elijah Kerry but I am not sure if it fits my needs.
Many thanks in advance!
 
Philipp
0 Kudos
Message 1 of 16
(4,091 Views)

You might want to look into the Distributed Control and Automation Framework (DCAF). By default the modules aren't really running asynchronously but the framework has a configuration editor meant for users to easily integrate user developed plugins so, if anything, you might get some inspiration from the framework.

 

https://github.com/LabVIEW-DCAF/Documentation

Matt J | National Instruments | CLA
0 Kudos
Message 2 of 16
(4,064 Views)

On the LabVIEW Tools Network you should look at DQMH, Aloha, and my own "Messenger Library".

0 Kudos
Message 3 of 16
(4,054 Views)

From what you describe, it seems like actor framework would definitely be suitable for what you want. Just make sure you look into "zero coupling" for your messages to get what you are wanting about being able to plug in different modules without re-programming.

0 Kudos
Message 4 of 16
(4,031 Views)

Thank you very much, you helped me a lot with your suggestions.

0 Kudos
Message 5 of 16
(3,996 Views)

@philipp_htr wrote:
The developed software architecture should be processed into a framework structure in which different required software modules can be generically integrated (by the user, not the programmer) without additional programming effort. Different modules are needed for different tasks (each module stands for a measuring device). The modules must be able to communicate with each other, including sending and processing different message data.

So what you really want is a program that allows the end user to select what tests they want to perform or not and set the order they are performed?

 

 

========================
=== Engineer Ambiguously ===
========================
0 Kudos
Message 6 of 16
(3,985 Views)

That's almost it. Let's say we have 7 measuring devices overall, so we have 7 different software modules. Those modules are all stored in one directory. Now for example for the first test setup all 7 modules are required, but for the second test setup only 3 of them. So the user should have the possibility to select the actually needed modules.. 

The testing order shall be realized through a kind of a "Sequencer" module, but this is a task for the future and not for my masterthesis.

0 Kudos
Message 7 of 16
(3,975 Views)

@philipp_htr wrote:

That's almost it. Let's say we have 7 measuring devices overall, so we have 7 different software modules. Those modules are all stored in one directory. Now for example for the first test setup all 7 modules are required, but for the second test setup only 3 of them. So the user should have the possibility to select the actually needed modules.. 

The testing order shall be realized through a kind of a "Sequencer" module, but this is a task for the future and not for my masterthesis.


You are getting off into the weeds worrying about "we have 7 measuring devices overall, so we have 7 different software modules. Those modules are all stored in one directory". All of that is superfluous 

 

You should have ONE PROGRAM where the end user selects the tests that are needed to perform. All of your "software modules" are in that one program, but the program only runs the modules needed to perform the tests the user selects.

 

Sounds like a simple Queued State Machine to me.

========================
=== Engineer Ambiguously ===
========================
0 Kudos
Message 8 of 16
(3,971 Views)

Here's an example I did a long time ago. 

 

Three different tests can be performed, each test has several steps, some are the same for all tests some not

  1. Line Efficiency and Regulation
  2. Inverter Efficiency and Regulation
  3. Dropout Tests

Depending on the test selected the queue is loaded with the test steps in the proper order. All of the "software modules" to run all of the test equipment is integrated into the program.

 

Line Efficiency and Regulation selectedLine Efficiency and Regulation selectedDropout Tests selectedDropout Tests selectedInverter Efficiency and Regulation selectedInverter Efficiency and Regulation selected

 

========================
=== Engineer Ambiguously ===
========================
0 Kudos
Message 9 of 16
(3,962 Views)

@RTSLVU wrote:

 

All of the "software modules" to run all of the test equipment is integrated into the program.


Maybe I have misunderstood what you are trying to say here but there still might be a benefit to being able to load these steps as plugins (then again there might not). It will likely be easier to implement your suggestion at first but if OP is expecting many new steps to need to be created, if they are expecting their users to implement these steps, and if they are distributing this to many labs with little overlap in step requirements it could be beneficial to create templates which the user can create and have their application load dynamically.

 

Of course, we don't really know all of OPs requirements so this is all speculation.

Matt J | National Instruments | CLA
0 Kudos
Message 10 of 16
(3,956 Views)