4 Executive Summary
Testtool contains a few important objects and operations. For this tool, the objects are somewhat more important than the operations. Testtool's main object is Question, and its related entities, TestQuestion, AnsweredQuestion, and GradedQuestion. Also, QuestionDatabase, which is made up of one or more Questions, is an important object. Another significant object in Testtool is the TestWizard, this is used in generating the actual test. Since one of the major jobs of Testtool is creating tests, making sure this object is high in the priority list would be a good idea. Testtool contains one major operation, Add, for adding questions to the database.
One of the most important concepts is the lifecycle of a question. At first you have a Database Question, this contains the least information. Included in the Database Question are ClassName, Length, Keywords, Week, QuestionString, Author, DateLastUsed, Difficulty, Answer, DBNumber. While most of these are self explanatory it is worth noting that the length refers to the amount of time the question should take, and the DBNumber needs to be unique from other questions in the database. The question database is made up of one or more DatabaseQuestions. The next level of question would be a TestQuestion, this happens once the Database Question is placed into a test. The additional information included in a Test Question is the points the question is worth, and which number on the test the question is. One thing worth noting, is that the Length field for a TestQuestion must be changed to fit the overall test so as to not give a student a false sense of security. A test is composed of one or more of these TestQuestions. Once a student answers the question it becomes an AnsweredQuestion, incorperating the additional information of the students answer as well as a comment. An Answered Test is composed of one or more Answered Questoins. The final stage a question can reach is that of becoming a GradedQuestion. This takes the AnsweredQuestion and adds on an instructor comment and the score recieved. A GradedTest is comprised of one or more GradedQuestions.
Generating a test is one of the main purposes of TestTool, to do this we have created a TestWizard. The TestWizard needs certain information to help it generate a correct test, it needs the Length of the test (in hours and minutes), which class the test is being generated for, the number of questions on the test, and a QuestionBlock. The QuestionBlock does not contain only questions, but also information about question constraints. The constraints to help filter through questions are: number of questions, length, when it was lasted used, the type of question, and which week of the class. The fastest way to search through these would be to look at the constraints which eliminate the most questions, such as class, week of class, and type of question. A question block starts with no questions, but as a test is generated, questions are added to it, this could be done in linked list fashion. Operations such as remove question could then be just deleting a node out of the linked list for ease. A metadata block could be included at the front of the linked list to contain information about all of the questions currently in the question block, such as the total time.
Add is the most significant operation and it is key to this project. Add has many components to fill in for each question including the questions Answer, Author, ClassName, Difficulty, Keywords, Length, the QuestionDatabase its going to, QuestionString which is the question, and Week of the question in the class. The database would not have any questions, nor would the test without the Add operation.
Prev: Test Taking
| Next: Out of Class Take-Home
| Up: index
| Top: index