The RAINBOW test suite is comprised of two separate applications. The instructor client, which allows the professor to create, maintain, publish, and grade tests; and the student client, which allows students to take tests and review test scores. The instructor client is web-based, with all questions and test banks living on a hosted server. The student client can operate in a web-based or client mode, depending on the professor's preferences.
The primary objects in the system are the Tests and Questions. A Test holds all attributes of a test and has subclasses which support a student and instructor version, where the instructor version contains the key and the student version contains a student's answers. The questions on a given test are generated somewhat randomly from a set of parameters provided by the professor. This operation could be quite costly if implemented poorly and will likely take some thought to implement efficiently.
As mentioned previously, the student client can be accessed through either a web interface or a installed client. This depends on whether the professor wishes to lock down the client and enforce that no other programs may be run while the student takes the test. It is recommended that the installed application simply display the web interface in a web view. This will ease implementation of the client, but it is important to note that the "lock-down" feature will likely be a challenge to implement, especially in Java.
Developers looking to implement this suite will need a reasonable background in web technologies and design of REST applications.