CSU Chico, MS Project:
"JINI-Based Test and Measurement Systems"
by David Paulson
Writeup: "JINI-Based Test and Measurement Systems"
( PDF, 1.2Mbyte or Word format, 1.5Mbyte).Source:
only my custom code (zip file, 350k)
all code and libraries (passworded zip 1.6M).Software API and software development metrics
Setup and build instructions.
Note: the software package is called 'jivi' for JINI-based Intranet Virtual Instrumentation. It contains sub-packages for client and server applications. The native device drivers are created in an independant directory, and then the DLL's copied to jivi package root.
This project is an effort to define an application for Sun's JINI network architecture for distributed objects. The intended application is "distributed test and measurement systems" in which hardware instrumentation, like oscilloscopes and signal generators, a remote controllable via a JINI downloadable service.Here is a diagram of the demonstration test system used to test this application:
![]()
The JINI services are running on a service CPU, which could be integrated into the instruments in the future. The client CPU searches for an oscilloscope and signal-generator service, associated with a given 'DUT', or device under test. In this case the client program, 'Testexec', waits for a start signal from a push button, then measures the frequency response of a filter device to be tested. In an industrial application, many combinations of test equipment could be connected to the network, automatically register with JINI to be detected by a test client, and begin fully automated testing. In the fully automatic case, a electro-mechanical device adapter loads a device, possible coming off an assembly line, and sends a start signal to the test client.
The instrument services were modeled after the IVI instrument driver standard in which a specific instrument driver adapter, in this case an instrument specific native DLL driver library, is controlled by a general instrument class. The services are RMI controllable, and the RMI proxy is what is registered with JINI as the proxy downloadable to a client. Here is an object model of the services:
![]()
The services are registered with JINI via a setup program. It also registers a user interface class as an Entry element along with the proxy as shown in this object model:
![]()
Several clients were created, including a basic Scope and SigGen user interface client which each use only a scope or siggen service respectvely. The more complex Testexec client which uses both a scope and siggen service, described above, was also created. The clients are modeled below:
![]()
The Testexec client is detailed below:
![]()
Next are some screen shots of the clients and services in use. First is a picture of the Scope user interface 'ScopeDisplay':
![]()
Next is the Signal-Generator GUI SigGenDisplay:
![]()
The next shot is of the Testexec GUI, TestexecGUI, after succesfully running all tests:
![]()
The next shot shows the setup screen for setting test imits for Testexec, invoked by hitting the 'setup' button above.
![]()
The Testexec console displays measurement and other progress information as it runs as seen below:
![]()
The test 'test2' (FrequencyResponseTest) also displays the gain versus frequency measurements with the following output Dialog:
![]()
Finally, here is a picture of the actual test equipment in use:
And here is an mpeg movie of the FrequencyResponse Test in action:
In this section are some project software metrics (also see detailed analysis) created using demo version of RSM tool. The metric 'effective lines of code' is defined as a line of code which is not stand-alone braces {} or parenthesis ().
Instrument native libs:
C source files = 4
header files=2
total functions = 50
effective lines of code = 1038
physical lines of code = 1524
comment lines = 615JINI client apps:
Java source files = 9
total functions = 229
effective lines of code = 2329
physical lines of code = 3249
comment lines = 714JINI server apps:
Java source files = 9
total functions = 182
effective lines of code = 832
physical lines of code = 1511
comment lines = 599
Code totals: 4200 effective lines of code, 460 functions/methods, 51 classes. Total software effort took about 200 hours over two calender months, plus 200 hours research and writeup.
by David Paulson, April 11, 2000 http://www.ecst.csuchico.edu/~davep/project