4. Developer Overview
The modularization of the Grader program has not been specified, as it was thought better to leave it flexible until implementation. The basic modularization should prove fairly intuitive during the implementation phase. The highest level object in the Grader program is the UserWorkSpace. Each UserWorkSpace contains a class and some settings to apply to that class (i.e. undo/redo). The grader program may have more than one UserWorkspace open at once, but only one will have focus. Each class contains two main items: A list of graded items, and a list of students. The Graded Item definition is complex, as it requires a recursive definition, and may point to both parent and children objects of the same type. Each student contains their personal info, as well as a list of StudentGradedItems. The StudentGradedItems contain 2 main fields, a raw point score, and a pointer to the overall graded item that point score should be associated with.
The major operations of the Grader program are fairly straightforward: Opening / creating a new class is the first important operation a user would encounter. After that, adding/editing students and graded items becomes important. Perhaps the most complex operations are those dealing with the visualizations. Making the graphics adjustable, and having the changes to one graphic affect the others as well as the gradebook should prove complicated. Perhaps the most prominent aspect in overcoming this hurdle is getting the correct behavior in how moving one boundary interacts with the other sections of the visualization, as well as dealing with what happens when the user drags one boundary into / past another boundary.
Another item that will require careful consideration is the overall security of the program. The grader contains sensitive personal information, and will be connected to a network, making it vulnerable to attack. Proper encryption and security measures must be implemented. This will be one of the most time consuming aspects of the final implementation.