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.

and tedious. Specifically, we observed that many tools<br />

disappointed in delivering their promised functionality.<br />

Moreover, the tool that was ultimately chosen because<br />

it performed smoothly during evaluation, posed unexpected<br />

problems during actual laboratory assignments.<br />

We disseminate our experiences and lessons through<br />

this paper, hoping to inform others who may wish to<br />

undertake a similar evaluation.<br />

The paper is organized as follows: Section 2 outlines<br />

the selection criteria. Section 3 presents tool selection<br />

and evaluation. Section 4 shares our experiences and<br />

students’ reactions. Section 5 summarizes the lessons<br />

learned. Section 6 surveys contemporary tools. Section<br />

7 concludes and offers future directions.<br />

2 Selection Criteria<br />

Various types of tools may be used in SE depending<br />

on its emphasis, which in turn depends on when the<br />

course appears in the curriculum. SE may be offered<br />

according to two broad models, namely, “SE early”<br />

and “SE late”. In the early model, SE is offered to<br />

sophomores and juniors, and most often represents the<br />

students’ first opportunity to get acquainted with the<br />

tools used in the construction of software systems. In<br />

the late model, SE is offered to seniors and may even<br />

be merged with the capstone project. SE late students<br />

may have had opportunities to acquire experience in<br />

the processes and tools necessary to build software.<br />

The tools in the SE early approach may cater towards<br />

foundational software development skills, including<br />

requirements analysis, design, testing, and configuration<br />

management. On the other hand, the late SE<br />

course may introduce students to specialized, sophisticated<br />

tools such as those used for debugging, defect<br />

tracking, cost estimation, automatic code generation<br />

and project management. Our approach is SE early<br />

and we sought to expose our students to configuration<br />

management and reverse engineering tools. To shortlist<br />

these two types of tools for further experimentation, we<br />

defined the following criteria:<br />

1. Integrated Environment: Integrated development<br />

environments (IDEs) are recommended in<br />

the industry [10] because such environments, where<br />

a collection of tools interoperate [24], can support<br />

cross-process improvements [10]. Studies also show<br />

that practicing software engineers prefer integrated<br />

tools [18]. Finally, academics report that teaching with<br />

integrated tools can be less distracting from the course<br />

objectives [19]. Thus, we choose to teach SE using an<br />

Integrated Development Environment (IDE).<br />

Our choice of IDE is Eclipse because students have<br />

used it in a previous course, thus we prefer tools that<br />

integrate with Eclipse. Even though we may pick tools<br />

from multiple sources, our first criterion is that the<br />

impression of an integrated workstation for interaction<br />

with the code must be maintained through Eclipse and<br />

its plug-ins. Moreover, the plug-ins should work with<br />

Java, which is the language of the course projects, since<br />

it is the only one commonly known to the students.<br />

2. Open Source: To teach students code comprehension,<br />

maintenance and evolution, a supply of code<br />

which represents legacy software is necessary. Aspects<br />

of this representative software include that it is written<br />

by someone else, preferably a team, has perhaps only<br />

moderately good documentation and design, and does<br />

not follow a uniform style. A certain level of complexity<br />

is desirable, as is appeal to the students. The course<br />

projects are based on open source software because it<br />

offers a rich volume of code that exhibits these characteristics.<br />

Therefore, a significant criterion is that the<br />

tools themselves are open source.<br />

3. Unified Process (UML): The course exercises a<br />

software process, similar to IBM Rational Unified Process<br />

[34], because of UML’s industrial and academic<br />

popularity [16, 29, 33]. The students are expected to<br />

learn class and sequence diagrams. Thus, the chosen<br />

tools should be capable of drawing, and wherever appropriate,<br />

extracting these diagrams from the code,<br />

which we refer to as “reverse engineering”. Static class<br />

diagrams can be extracted without executing the code,<br />

whereas, dynamic sequence diagrams can be extracted<br />

only by executing the code.<br />

3 Tool selection and evaluation<br />

We short listed several configuration management<br />

and reverse engineering tools for further exploration.<br />

This section summarizes these tools and their evaluation<br />

results, subject to the criteria defined in Section 2.<br />

CVS, SVN and Git were the candidate configration<br />

management tools. We included CVS [5] because it<br />

was available in Eclipse as installed in the lab, and<br />

SVN [27] because it was familiar to the course staff.<br />

Although Git [14] was neither installed nor familiar, we<br />

included it because it was comparatively more modern.<br />

Finally, we chose Git and Eclipse plug-in EGit because<br />

of their distrbuted design, scalability, and support from<br />

a worldwide community [14]. This distributed design<br />

would allow students to update from one another, independently<br />

of any central repository.<br />

163

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

Saved successfully!

Ooh no, something went wrong!