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.
Goals
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.
Setup:
- Make sure your version of JHotDraw is stable. Import it
again if necessary.
- Download and install ConcernMapper using the simple
instructions you will find at the other end of the link.
Task:
One of the features of JHotDraw is to allow users to store drawings in
different formats.
- Using the Eclipse JDT Views, explore the code of JHotDraw
implementing this feature and to reverse-engineer its design.
- As you work, use ConcernMapper to record the Java elements
associated with the implementation of the Storage feature.
- 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.
- Answer the following questions:
- What's your assessment of the design and implementation of the
storage feature? Is is good? Why/why not? Be specific.
- For each class involved in the implementation of the storage
feature, briefly explain which part you have chosen to include and
why. Be specific.
- Describe each JDT view you have used. For each, mention whether
it was helpful (or not) and why. Be specific.
- Describe whether ConcernMapper helped you complete this task and
why/why not. Give small examples.
Hints:
In investigating the storage feature, make sure to look at all
aspects, including:
- Any specialized widgets used to save drawings.
- The mechanism use to toggle between different storage formats.
- The code to save the different drawings.
- Any design patterns that might be used.
Stuff to Hand In
- The xml file describing your concern model (produced with ConcernMapper).
- Answers to the questions.
- The UML diagrams.