Graja is a Grader for java programs. It verifies functional and non-functional requirements of simple java programs. It is used in the context of programming assignments in university programming courses. Graja was developed due to previous experience with the system Web-CAT, which is based on test-driven development. One of the reasons for the development of Graja as an independent grader is, that we want to integrate the grader in many learning management systems (LMS). This is not easily supported by Web-CAT.
Graja uses JUnit4 tests to evaluate observable behavior of student programs. Graja includes a library, which supports assignment authors in the creation of test drivers. Furthermore Graja performs a static analysis of student code in order to provide feedback about quality characteristics like maintainability. Graja is an ongoing research effort and will include more features in the near future.
Graja does not provide functions that usually are implemented in LMS like Moodle. Graja currently is "student agnostic", i. e. it grades a program without knowledge about the submitting student. The LMS is responsible for accepting a student's submission, passing the submission to Graja, and finally pushing the Graja results to the respective student.
Graja is a standalone program, that can be executed from the command line or from a running java virtual machine (see documentation for details). Graja needs a java development kit (JDK) as its runtime environment (see documentation for details). Assignment authors can use a development and test framework when developing and testing new assignments.
Currently we use Graja in beginner courses for java programming. If you are interested in using Graja, please contact us so we can clarify the details.