Architecture
System Overview
PASS uses JBoss as the application server. It can hold the Enterprise Java Beans and listen to RMI callis from external systems. In PASS V3, a client lib (passEJB-client.jar) is provided to external systems for access to the features of PASS.
System Architecture
PASS employs a Model-View-Controller architecture built on J2EE application server. Any action caught at the user Web pages are passed to the Web Controllers which control the page flows, and dispatched to the corresponding back-end logic. Web Controllers are built based on Struts, a well-known view framework for Java Web applications. The Web Controllers then pass the actions to the corresponding Application Controllers by means of remote method invocation (RMI), for instance, to invoke Program Management Session Bean (PMSB) to complete the process. By decoupling Web control and application control, PASS can be flexibly plugged to any other view framework or interface if necessary in the future. When an Application Controller gets the action orders, which could come from PASS itself or from an external system, it calls the relevant internal logic to complete the required actions.
Module in PASS
All of the system logics are divided into different modules.
- User Management module is used to create, update, delete and query user account information.
- Course Management module is used to create, update, delete and query course account information.
- Problem Management module is used to create, update, delete and query the problems (exercise or assignment specifications) that are stored in PASS.
- Statistics module is used to record student performance and compute the corresponding statistics.
- Program Management module is used to manage the submission of programs from students. It also manages the query of submission records and results.
- Code Interpreter module is used to handle the compilation and execution of student programs. A common interface for plug-in modules is provided for executing different languages.
- Submission Marker module is used to handle the marking of student programs. A common interface for plug-in modules is provided for marking with custom marker schemes.
- Plagiarism Detector module is used to detect the plagiarism of the code submitted. A common interface for plug-in modules is provided for detecting plagiarism with custom plagiarism detection schemes.

