27.03.2014 Views

SEKE 2012 Proceedings - Knowledge Systems Institute

SEKE 2012 Proceedings - Knowledge Systems Institute

SEKE 2012 Proceedings - Knowledge Systems Institute

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

epository to view the Java classes, then dragging and<br />

dropping these classes onto a diagram canvas. Most<br />

students chose Amateras because they found it extremely<br />

easy. This is not surprising, as dragging from a<br />

list onto a canvas produces the class, and the tool automatically<br />

provides associations such as inheritance.<br />

The diagram produced by the tool was visually appealing.<br />

This experience suggests that the assignment<br />

should ask more than an intelligently arranged display<br />

of classes. For example, the students may be asked to<br />

comment upon class containment and specialization hierarchies,<br />

or to search for implementations of patterns<br />

such as the model-view-controller [12].<br />

The next reverse engineering assignment involved<br />

drawing sequence diagrams for specifying requirements.<br />

The students were expected to describe how<br />

a planned modification of their software would be implemented<br />

with communicating classes. Both Papyrus<br />

and Amateras provided the ability to draw sequence<br />

diagrams from dragging classes and manually entering<br />

messages. The set up for Amateras is simple. One<br />

places the jar files in a directory within the structure<br />

for Eclipse, starts Eclipse, and finds the capability in<br />

place. Papyrus was even easier to install, following the<br />

normal Eclipse procedure to install new software.<br />

The last assignment involved extracting dynamic sequence<br />

diagrams from the code. Diver, the chosen tool,<br />

posed several problems, although it was tested on two<br />

operating systems (Windows/XP SP3 and Vista) and<br />

on all twenty course projects. Moreover, the test of<br />

the installation on laboratory computers, which were<br />

Windows 7, had proceeded far enough to watch the<br />

collection of events. This testing, however, was not<br />

sufficient and a failure mode surfaced where the events<br />

were collected but not being saved. Availability of the<br />

source code was helpful in debugging, and we discovered<br />

where the files were being saved from two working<br />

installations. We first conjectured that a needed writeprivilege<br />

was absent, however, that was not the case.<br />

We then contacted the developers at University of<br />

Victoria, who were very helpful. Simultaneously, we investigated<br />

the problem in house, in coordination with<br />

the course staff and the staff responsible for maintaining<br />

laboratory computers; the latter finally resolved the<br />

issue. Most students could now generate and record<br />

sequence diagrams. On a subset of the projects, a second<br />

difficulty manifested where the ability to restrict<br />

the tracing events to modules did not seem to work,<br />

though this might be due to a lack of understanding<br />

about what is required for this function. For this subset<br />

of projects, students collected events that were generic<br />

to the Java libraries. They did not see sequences of<br />

calls between top-level objects in their projects.<br />

4.2 Students’ Reactions<br />

The students were exposed to one configuration<br />

management and three reverse engineering tools. They<br />

successfully reverse engineered their projects using<br />

these tools, though with different degrees of support.<br />

They became able, during the course, to express themselves<br />

at this level of abstraction.<br />

The students were delighted to learn the value of<br />

sequence diagrams in understanding their code, and<br />

reported that they wished they had learned about dynamic<br />

analysis earlier. The initial resistance, showed<br />

by some students, dissipated quickly, after they had the<br />

opportunity to study the sequence diagrams produced<br />

by the tool. Some students found the notation (object<br />

instance, timeline, lifeline) in sequence diagrams sufficiently<br />

unintuitive to recognize it right away. Thus,<br />

each student team was given a brief tutorial to the sequence<br />

diagram drawing tool. The tutorial also demonstrated<br />

how constructors or how object construction<br />

appeared on the diagram. Overall, the students enjoyed<br />

sequence diagrams more than class diagrams,<br />

probably because they had not seen this diagram before,<br />

and they became involved with annotating the<br />

messages with the note tool. By comparison, the class<br />

diagrams gave them almost no creative activity.<br />

Retrospectively, we felt that the students would have<br />

better appreciated the value of sequence diagrams if<br />

they had extracted these before drawing one for their<br />

planned enhancement. This extraction may have produced<br />

a detailed understanding of the code, and led to<br />

more meaningful and interesting enhancements. Although<br />

the assignments were handed in this order,<br />

the time consuming difficulties encountered with Diver<br />

forced us to flip their series of completion.<br />

5 Lessons Learned<br />

In this section, we summarize the lessons learned<br />

from the exercise of selecting, evaluating and experimenting<br />

with open source tools to teach SE.<br />

• Installation and set up: It took excessive time<br />

to install the set of tools that ultimately worked together<br />

to provide a laboratory environment. Tool<br />

chains, where each tool complies with the interfaces<br />

of its neighbors, may lack documentation<br />

about data transformations, and hence, may require<br />

cumbersome trial and error.<br />

• Functions and capabilities: The definitions of<br />

terms may not be consistent and uniform. Thus,<br />

although a given tool promises a particular function,<br />

its specific implementation may be different.<br />

165

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!