COMP 303 (Fall 2005) Assignment 3

Please submit an electronic version of your assignment (in PDF or self-contained HTML) using WebCT. The PDF format is preferred. If you choose HTML, please make sure that all the links are internal and work. Do not submit Word documents! Include your name and student ID. This assignment will be marked out of 20. It is your responsibility to hand this assignment in on time. Assignments not submitted on time will not be marked and will receive a grade of 0. By submitting your assignment you acknowledge your understanding of McGill University's academic integrity policy.

Due Date: Tuesday 29 November 11:59am.


To familiarize yourself with program understanding and reverse engineering activities using lightweight tools.

Required Problems

In this assignment you will reverse engineer a feature of the JHotDraw system you used for assignment 2 using ConcernMapper, Eclipse JDT views, and an UML Drawing tool.


  1. Make sure your version of JHotDraw is stable. Import it again if necessary.
  2. Download and install ConcernMapper using the simple instructions you will find at the other end of the link.


One of the features of JHotDraw is to allow users to store drawings in different formats.

  1. Using the Eclipse JDT Views, explore the code of JHotDraw implementing this feature and to reverse-engineer its design.
  2. As you work, use ConcernMapper to record the Java elements associated with the implementation of the Storage feature.
  3. Once you feel you have a good understanding of the implementation of the Storage feature, create a UML class diagram and a sequence diagram modeling the key structure and behavior of the Storage feature. If you want, you can also produce multiple, simpler diagrams. Think about what would work best to convey your understanding of the feature's design.
  4. Answer the following questions:
    1. What's your assessment of the design and implementation of the storage feature? Is is good? Why/why not? Be specific.
    2. For each class involved in the implementation of the storage feature, briefly explain which part you have chosen to include and why. Be specific.
    3. Describe each JDT view you have used. For each, mention whether it was helpful (or not) and why. Be specific.
    4. Describe whether ConcernMapper helped you complete this task and why/why not. Give small examples.

In investigating the storage feature, make sure to look at all aspects, including:

Stuff to Hand In

  1. The xml file describing your concern model (produced with ConcernMapper).
  2. Answers to the questions.
  3. The UML diagrams.