The test software architecture you select may be even more important than the software platforms you choose to build a sustainable test system.
COTS Software Tools
As mentioned, using COTS software tools can significantly increase the sustainability of test systems. COTS tools have wide user bases and are maintained by large, specialized software development teams. This means your software organization’s maintenance effort is significantly reduced. Consider an older application built to work on Windows XP that needs to be ported to Windows 10 as a result of Department of Defense mandates. If the application development environment (ADE) used to develop the code does not support Windows 10, the test program must be completely reconstructed.
Companies that sell high-volume enterprise software tools can also offer tailored purchasing agreements and software subscriptions that meet specific billing needs or defined terms and conditions.
Test Software Toolchain and Interoperability
The ideal software package should minimize the effort to develop and expand the test program and, thus, streamline the productivity of software engineers while minimizing their sustainment effort over the lifetime of the test system.
To match the pace of technology acceleration, maximize engineering efficiency, and minimize software maintenance effort, test systems must be flexible and use ADEs that can withstand structural changes by working with multiple hardware and software platforms. Software developers may be forced to use multiple ADEs for different projects if the tools do not meet the needs or interoperate with the tools of each project. Imagine that your test program requires a new measurement performed by an instrument that is not in the test set. If your development software does not support this new hardware, then you may have to substantially change the application.
To incorporate these changes into the test program easily and quickly, you need scalable software. Examples of tools that improve the programming experience include easy-to-use APIs that minimize the need to learn hardware caveats and ready-to-use example code that serves as a starting point for any application. Software tools should also simplify performing new analysis on data acquired from hardware by providing analysis functions or delivering interoperability with tools like MathWorks MATLAB® or Python, which offer complex data analysis.
Software tools should also include features that maximize the ability to reuse code. Some software tools do this by helping you create libraries or code repositories through interactive configuration utilities or by supporting drivers that use a standard communication protocol to help you program multiple instruments with the same API. NI instrument drivers are built to support multiple families and generations of instrumentation to maintain code compatibility over time.
Modular Software Architecture
Don’t get locked into an inflexible test program by building a monolithic architecture; instead, plan ahead by building layers that perform separate test operations. In a monolithic architecture, the test program for the unit under test (UUT) includes code that manages test flow control, test execution, UUT stimulus, measurement analysis, limit checking, result logging, operator user interfaces, and instrument resource scheduling. This single source of functionality means that any new test requirements that arise because of an obsolescence event force you to revalidate the entire test system.
Instead, create a modular software architecture that has separate code bases for all critical test system functions. Test management software like TestStand handles common test program tasks such as test flow control, test execution, result logging, limit checking, operator user interfaces, and instrument resource scheduling. Test code should be responsible for tasks specific to the UUT like stimulus, measurement, and analysis functionality.
Figure 7. A single code base to handle all test program tasks seems like a good way to develop until it becomes inflated and difficult to change or repair. Using smaller, modular code bases for different tasks keeps a test system more extensible.
Functional Abstraction Layers
Perhaps the most significant software technique to protect a test system against inevitable hardware obsolescence events is using hardware abstraction layers (HALs) and measurement abstraction layers (MALs).
Figure 8. A MAL and HAL empower test engineers to choose the test result needed and allow the test system architect to maintain instrument driver and hardware operability.
Industry-standard instrument drivers like IVI can provide a quick and easy starting point for function abstraction, but they often fall short when you want to use specific features of new instruments that do not conform to standard driver function calls.
MALs help you develop high-level code that performs necessary functions without your defining specific instrument settings or communication. They also give the test system the ability to choose the correct and available resource to deliver a given test function. In some cases, a function in the MAL translates to a specific instrument, but some instrument functions overlap and could be used to complete tests in place of a busy or malfunctioning device. A good example of this is taking current measurements with a DMM. You can use a source measure unit (SMU) to take that measurement in many cases more effectively.
For a MAL to operate properly, you need an abstraction layer that handles instrument selection and communication. This layer is the HAL, which enables the code base to execute the function in the MAL from any specific instrument and device configuration in the system. Building these layers into your code gives you the flexibility to change instruments without altering measurement analysis code, the tester’s user interface, or the overall test structure.
Learn the best practices and see the functional implementation NI test engineering used to develop an effective HAL and MAL architecture.
Technical Support and Training
A best-in-class vendor has on-demand technical support engineers to assist with resolving any obstacles you may encounter or with getting started using hardware. NI offers on-demand technical support, classroom and online courses, and skills certifications programs. Certifications help you as a team leader measure the skills of developers on your team and give you a method to evaluate new engineers or contractors who may join your teams to help complete projects.
Learn more about NI training courses, professional certifications, and on-demand skill certifications in the NI Badge Program.