CSE 6431: Design Pattern Detection Assignment

Deadline: Friday, November 18

Format: Individual

For this assignment, you will detect design patterns in a Java system of your choice. You can use the same system as in the previous assignment (if not, you will need to repeat the fact extraction step).

Start by obtaining design pattern results from the three tools discussed in class: Finder, Pinot, and SSA.

You can install PINOT locally by following the instructions here.

You can run SSA locally by getting this jar file.

Based on these results, you will have to perform the following tasks:

You are required to perform the above tasks for the following patterns: Factory Method, Composite, Decorator, Observer, State, and Template Method. Bonus marks will be given if further patterns are included in your report.

In the case that a given tool discovers a very large number of instances for a given pattern, you can produce a report of why you think this is happening rather than evaluate all instances. For FINDER, you can look at the rules for each pattern here. For other two tools, you can refer to the paper describing them: PINOT, SSA.

To use the result presentation tool that Shouzheng demonstrated in class, you need this jar file and these usage instructions.

NEW: The jar file above was updated on Nov 8 to include all patterns required in the assignment. See also these additional instructions.

What to submit

You must submit the following documents (the file name for each document is shown in parentheses):

  1. The report (DPDReport.pdf). Your report must mention how to obtain the source code for the system you detected patterns on.
  2. Output from all three tools in ASCII format (finder.out.txt pinot.out.txt ssa.out.txt).
  3. A zipped version of the finder_conf directory (finder_conf.zip)

You can submit by giving something like the following command:

submit 6431 DP DPDReport.pdf finder.out.txt pinot.out.txt ssa.out.txt finder_conf.zip