Name: Joe Martino Project: The CD checker works by running a number of tests in a rather linear fashion. The resulting project checks for all 5 required parts. As a design methodology I tried to add as little as possible to the Cd file. All visitors are defined in the code directly. Directory: in fprj of my home directory also in /proj/adaptive3/lieber/com1205-2000/jvm615/ Credits: For some of the parts of the project I looked of the other code and generated something similar to it. I found this necissary especially for the flattening part of the project which gave me considerable difficulty. I didnt use one specifics group's work, but rather examined a few just for general ideas. I also used other projects to learn the syntax of the HashSet and HashMap classes which proved invaluable in the project. Class Dictionary: I used the csc.cd. I havent tested the project with the full cd, though I see no reason why it wouldnt work with it. Growth Plans: All my growth plans are on my Win 98 machine, I didnt copy them here but I will give a brief explanation below. Phase #1: early attempt at flattening, didnt work out quite so well. Functional Multiple inheritance check developed. Phase #2: Worked on and finished the HashSet code to record all defined classes. Got semi-functioning Inheritance Cycle checker. Completed check for undefined classes. Phase #3: fixed inheritance cycle checker. Phase #4: after figuring out a method to flatten the classgraph by looking at some other projects was able to begin Unique Parts checking and TBR checking. Phase #5: Worked primarily on ironing out bugs such as repeated messages for the same error (when something is undefined twice for instance) Overall improvement to interface and error messaging system. Future Development: The Multiple Inheritance checker gives repeat messages when a class has 3 or more super classes. This should be compressed into one large error listing all the super classes instead of multiple two class errors. Also, the Mutliple Inheritance checker (which was developed before I learned how to operate the HashSet class) uses a User-created data structure (named MICheckList) which can be replaced with a standard data structure from the Java Library. This would make the class dictionary totally unmodified. Also, the checks are issued in such a way that an error on an inheritance check stops the whole program, since the Inheritance cycle checker assumes no multiple inheritance and the Flatten Class Graph function assumes no inheritance cycles. A workaround to this would produce an overall better program. Bugs:I dont know of any fatal bugs. Test Inputs: Transferring this project from my Win98 machine, I dont have any specific test cases on my UNIX account, though I have created a few which should prove useful. The Inputs Ive created highlight the capabilities of the program. The input "Multiple Inheritance" shows the small bug in which the inheritance messages are repeated when inheriting from more than 2 classes. Test Output: I dont have DemeterJ set up for use on the UNIX station since I do all my work on another computer so I have not actually compiled it on the UNIX machines and therefore have no test outputs to show. The program works fine however and Im sure u can use it to produce some outputs with whatever test files you have prepared. NOTE: Since I havent inserted the necissary commands to be able to invoke DemeterJ from the UNIX machines, I have only included a copy of the beh files and cd file. I dont know exactly how to set up UNIX to run DemeterJ so all I have provided is the necissary files to build the program. None of the java files were modified so it should run with a simple "demeterJ test" command.