Software Design and Development Final Project


Project by:
Louis B. Asber
(lasber)

Project Description: This project is a Class checker for undefined classes, parts, Terminal Buffer Violations, Multiple Class inheritance, and Inheritance cycles. The checks alert a user of compile-time errors and is specific in indicating what the issues actually are.

Source:   Input: Output:

scs.cd

Class Dictionary

   

scs.prj

Demeter Project File

   

main.beh

Behavior file for main

   

display.beh

Behavior file for displaying the Class Graph

   

defined.beh

Behavior file for un-defined classes check

Test1

Output1

unique.beh

Behavior file for unique parts check

Test2

Output2

terminal.beh

Behavior file for TBR exceptions check

Test3

Output3

inheritCycle.beh

Behavior file for Inheritance Cycles check

Test4

Output4

mult_inherit.beh

Behavior file for Multiple Inheritance check

Test5

Output5

 

 

Credits:

Source code for Vertex contruction was neeeded for the Termination Buffer Rule check. This code was suggested in class. This code can be found in full at: www.ccs.neu.edu/research/demeter/DemeterJava/use/latest-demjava/aplib/cd/utils.beh


Growth Plan:

Phase 1

Begin the check for un-defined Classes. This check should find any classes that are not defined in the class dictionary.

Phase 2

Complete phase 1, begin coding on check for unique parts.

Phase 3

Complete phase 2, begin TBR check

Phase 4

Complete phase 3, complete coding on multiple inheritance and begin on inheritace cycles.

Phase 5

Complete inheritance cycles and complete any unfinished development. Write Flattening function for Class Graphs.


Did I change the generated code?

No, the source code was not changed after the generations took place.


Further Development?

I would have liked to have completed the extension on the class graph flattening function. I was never able to resolve an issue with a vertex edge. I would have also liked to have extended the checks to be capable of scanning imported libraries. To my knowlege, we have no way of currently doing this.

Of course it would also be much more helpful if the checkers actually did something versus printing to System.out. If they were modified to include exceptions like (straight) Java perhaps, that would be a great advantage over the simple warnings messages.

 

Acknowledgments:

I would like to thank Akochi A., Jullian Marks, and Mike Buckley for all their help. They were always willing to give me advice or help look at an issue I was having and give me a hand. Thanks again.


Code Quarks

When checking for undefined classes, my check can return the same error message on the same class. This is because I did not implement a check to insure that when reporting if the class was undefined, the check itself had not reported it before.

The TRB does not work on un-flattened Class Graphs. A function that provided this ability is really needed to get the full use of this and other checks.