CD Checker ~ Finished Release 1.0 (Phase 5)


Project by:
John Prince (jprince)
Jean Travers (jtravers)

Project: Checks class dictionaries for TBR violations, undefined parts, classes defined more than once, single inheritance, inheritance cycles, and unique parts names. Also includes class dictionary flattening code. Prints error messages for each error (and only once for the same error) found and then terminates.

Source:
scs.cdThe class dictionary of class dictionaries
scs.prjThe demeterj project file
display.behbehavior for displaying the Cd_graph
main.behThe main function
defined.behBehavior for set the HashSet of all defined classes
inheritCycle.behBehavior for the inheritance cycle check
flatten.behBehavior for flattening a class dictionary
validateParts.behBehavior including a traversal which enforces TBR, single inheritance, and undefined classes
unique.behBehavior for enforcing unique part names
InputOutputDescription
test1.inputOutput This test combines the definition checks in one test.
test2.input Output Test 2 demonstrates the Terminal Buffer Rule. See the input for further notes.
test3.input Output This a test for unique parts
test4.input Output This is a basic test for multiple inheritance
test5.input Output This is a test of cyclic inheritance

Credits:
1. Credit to the source found at; http://www.ccs.neu.edu/research/demeter/DemeterJava/use/latest-demjava/aplib/cd/utils.beh for use with TBR helper functions.
2. Credit to the given class dictionary.

Did we change the generated code? No.

Our development growth plan: (Start easy to familiarize ourselves and then tackle the hard stuff while testing throughout)
Phase 1
1. Undefined classes
2. TBR
Phase 2
3. Single Inheritance
4. Unique Parts Check
Phase 3
5. Inheritance Cycle
Phase 4
6. Flatten the class dictionary
Phase 5
7. Remove Debug Code
8. Combine similar traversals to improve speed

Comments:
The project is finished and meets the requirements of the F00 COM1205 final project with Prof. Lieberher. The project ran extremely smoothly as we were both very familiar with the tasks and solutions. Useful classmates include: Jon Kelley and Earl Kinney. Professor Lieberher was always more than helpful as well.

Future phases should include:
1. Errors that throw exceptions instead of printing to System.out
2. An undefined class check that can look into imported libraries