BOSS Online Submission System Thursday, 25 February 2021, 04:46:55 BOSS Online Submission System BOSS Project About History Design Goals Publications Latest Release Screenshots Download Installation and Maintenance FAQ Architecture Model Model Implementation Controller Templates BOSS1 Architecture Documentation Model The Model is an abstract set of interfaces that encapsulate any code in the system that could possibly have multiple realisations. The Model is split into a set of discrete components, each with its own factory for generating classes supporting the defined interfaces. The discrete components currently in the Model are the auto assignment algorithms, the database access objects, sending mail, session authentication, the testing framework, and administrative operations. Factories Each component of the Model has its own factory to generate classes compliant with the interfaces the model defines. A factory Registrar is used to register implementations for particular interfaces. It is the responsibility of a program to register factory interfaces with the Registrar, and the frontend does this by reading a factories.properties file and using introspection. Factories derive from the Factory interface, which requires methods for Factories to explain which configuration options they require, and these are used for automatic configuration the first time BOSS2 is run. Components Auto assignment algorithms Auto assignment algorithms are responsible for assigning markers to students automatically. The Factory provides methods to query what algorithms are available and their class names. The implementing classes themselves provide a single method that takes a list of markers, a list of students, and returns a map of markers to the students that they will mark. Name Package Factory Auto Assignment Algorithms uk.ac.warwick.dcs.boss.model.autoassignment AutoAssignmentMethodFactory Data access objects Data access objects are responsible for brokering persistent storage. The model defines a set of beans that may be stored in the database. and a set of query results that are returned by DAOs tailored for Student, Staff, Marker and Admin operations. The Factory provides methods to initialise storage, begin/end/abort transactions, and obtain objects to broker these beans with the storage. Brokerage is done by a persistent identifier (which is a java.lang.Long). Name Package Factory Data Access Objects uk.ac.warwick.dcs.boss.model.dao DAOFactory Beans defined for storage Name Description Dependencies Comment Assignment An assignment Module, Person, Resource DAO provides access to markers DeadlineRevision A deadline revision Assignment, Person Entity Generic entity in the database No DAO, used internally Mark A mark MarkingAssignment, Person MarkingAssignment A binding of student to marker Assignment, Person MarkingCategory A marking category Assignment Model A model Top level entity in the model tree Module A module Model, Person DAO provides access to students and administrators Person A user of the BOSS2 system Unique identifier doubles up as username Resource A stored resource (file) DAO provides access to data via streams Result A published result Assignment, Person Submission A submission Assignment, Person, Resource Test A test Assignment, Resource DAO provides access to parameters Specialised query results DAO Queries Result Used by IAdminInterfaceQueriesDAO Fetching models to administrate AdminModelsQueryResult Aministrator 'model management' page IAdminInterfaceQueriesDAO Fetching modules for a model AdminModulesQueryResult Administrator 'module management' page IMarkerInterfaceQueriesDAO Fetching assignments to mark MarkerAssignmentsQueryResult Marker 'assignments to mark' page IMarkerInterfaceQueriesDAO Fetching marks for a marking assignment MarkerMarksQueryResult Marker 'marks for a student' page IMarkerInterfaceQueriesDAO Fetching students to mark for an assignment MarkerStudentsQueryResult Marker 'students to mark' page IMarkerInterfaceQueriesDAO Fetching submissions by a student for an assignment MarkerSubmissionsQueryResult Marker 'submissions by student' page IStaffInterfaceQueriesDAO Fetching assignments for a module StaffAssignmentsQueryResult Staff 'assignments' page IStaffInterfaceQueriesDAO Fetching deadline revisiosn for an assignment StaffDeadlineRevisionsQueryResult Staff 'deadline revisions' page IStaffInterfaceQueriesDAO Fetching marking assignments for an assignment StaffMarkingAssignmentsQueryResult Staff 'marking assignments' page IStaffInterfaceQueriesDAO Fetching modules to adminsitrate StaffModulesQueryResult Staff 'modules' page IStaffInterfaceQueriesDAO Fetching results for an assignment StaffResultsQueryResult Staff 'results' page IStaffInterfaceQueriesDAO Fetching submissions for an asignment StaffSubmissionsQueryResult Staff 'submissions' page IStudentInterfaceQueriesDAO Fetching assignments to submit or details for an assignment StudentAssignmentsQueryResult Multiple student pages IStudentInterfaceQueriesDAO Fetching modules that have assignments to submit to StudentModulesQueryResult Student 'modules' page IStudentInterfaceQueriesDAO Fetching assignments you have previously submitted to StudentSubmissionCountsQueryResult Student 'previous submissions' page IStudentInterfaceQueriesDAO Fetching submissions previously submitted to an assignment StudentSubmissionsQueryResult Student 'submissions for assignment' page Sending mail Mail sending is used for communicating with students, typically via email (although IM could easily be used instead). The Factory provides a method to get an object that can send mails. Mails have a recipient, a subject, and a message and are sent asynchronously. Name Package Factory Sending Mail uk.ac.warwick.dcs.boss.model.mail MailFactory Session authentication The Factory provides a method to get an object that can authenticate users or change their authentication credentials. A successful login generates a session which contains the Person that logged in, a preferred locale (currently unused), future test results, and an arbitrary session memory. Note: Future test results should be moved out of the session and into the testing framework at some point. Name Package Factory Session Authentication uk.ac.warwick.dcs.boss.model.session SessionAuthenticationFactory Testing framework The testing framework is responsible for running tests on the submissions. Name Package Factory Test Runner uk.ac.warwick.dcs.boss.model.testing TestRunnerFactory Test Method uk.ac.warwick.dcs.boss.model.testing.methods TestMethodFactory Test Executor uk.ac.warwick.dcs.boss.model.testing.executors TestExecutorFactory Test Runner The test runner is responsible for queuing tests given a submission and a test. It is responsible for unpacking the submission and test resources, running the test executor and feeding the results into the test method. The test runner returns Future TestResult objects for accessing test results when they are complete, and TestRunnerFactory provides a method to generate an object that can queue tests given a submission and a test. NOTE: Future test results are currently stored in the session by the controller. This is bad, and the Test Runner really should handle this. Test Method A test method takes an ExecutionResult object and returns a TestResult object. The TestMethodFactory provides methods to query which test methods are available and their class names. Test Executor A test executor takes a submission directory, a test resource directory, and a command to run and generates an ExecutionResult object. TestExecutorFactory provides methods to query which test executors are available and their class names. Administrative operations An administration operation takes parameters and performs some form of operation, returning an AdminUtilityResult. The AdminUtilityFactory provides methods to query which operations are available and their class names. Name Package Factory Administration Operations uk.ac.warwick.dcs.boss.model.utilities AdminUtilityFactory Copyright © 2004-2009 The University of Warwick About BOSS Accessibility WCAG