System Architecture and Control Flow
For full score, it was necessary for the criteria and arguments to be reasonable and also for the rationale to be properly arranged. Simply writing a paragraph explaining your argument was not adequate. Furthermore the information in each part of the rationale had to be appropriate. It is not correct to put arguments in the Criteria or the Decision sections.
Statechart
The statechart did not have to have many states, but it did have to show these features of negotiation:
Class Diagram
Some diagrams included attributes and methods. These were ignored. It is important for relationships between classes to be represented in some way. Associations, generalizations (inheritance) and dependencies should all be employed. Furthermore, associations should have names and cardinality constraints. Exception classes are not usually related to other classes by associations. When methods of a class throw an exception, the class is related to the Exception class by a dependency relationship.
Design Patterns
There should be a separate rationale for each design pattern being used. There should be several of these. It is not adequate to have a single rationale for all of your design patterns, as the arguments are then ambiguous. As in the case of the Control Flow rationale, it is necessary for the rationale to be properly arranged, with the various parts clearly labeled and information in each part appropriate for that part.
Components
The requirements do not have to be lengthy, but they should be precise and specific. Here are some examples:
Specification | Comments |
---|---|
A database is required. | Much too vague. Poor specification. |
A relational database supporting SQL is required. | Better but misses all of the performance requirements. |
A relational database supporting SQL and capable of processing 10 standard transactions per second with a maximum response time of 100 milliseconds. | This is the right level of detail. |
All components must be specified:
Javadoc Construction
The Javadoc processing should not generate any warnings or errors. Some warnings were minor, but others were more serious. For example, it is a serious error to specify in Javadoc that a method throws an exception but the method does not actually throw that exception.
Design Evaluation
Issues here included compatibility with the Class Diagram and having a sufficient number of classes (including Exception classes).
Other Issues
The preconditions, postconditions and invariants were mostly not adequate. However, it takes a long time to learn how to formulate these, so no points were deducted for this.
The formula for the grade was computed as follows:
score[i]
be the score on part i
.
grade[1]
be the sum score[1] + ... + score[5]
.
grade[2]
be the sum score[1] + ... + score[7]
.
max (grade[1] + 10, (grade[2] + 10) / 80 * 60)
.