| |
Using Open Source Software Development
Tools In Introductory Software Engineering
Jason Madar
Capilano College
ABSTRACT
Topics in introductory software engineering courses usually include Object
Oriented analysis and design, UML, design patterns, software testing methods,
and software development methodologies. While all these topics are essential
to all software engineers, students usually find that the subject theoretical
in nature and very difficult to apply the skills learned in the course due to their limited experience in
software development.
One way to keep students interested in the introductory software engineering course is
to have a project component where students can apply what they learned in a
group environment, simulating a real world software project. However, since
many of the introductory software engineering courses are offered at the
second year level, course projects usually end up using technologies from
previous courses rather than real world technology.
This paper will present a solution to the aforementioned dilemma in
introductory software engineering. In particular, the tools,
techniques, and course structure used in COMP213, Introductory to Software
Engineering, at Capilano College will be presented as an example of a course
that achieves a balance between theoretical material and real world
technology.
Keywords: Software Engineering, Open source software,
ArgoUML, NetBeans IDE, Servlets, JSP.
1 Introduction
Topics in introductory software engineering courses usually include Object
Oriented analysis and design, UML, design patterns, software testing methods,
and software process methodologies. While all these topics are essential
to all software engineers, students usually find that these topics are very theoretical
in nature due to their limited experience in
software development.
One way to keep students interested in the software engineering course is
to have a project component where students can apply what they learned in the
lectures in a group environment, simulating a real world software project.
However, since many of the introductory software engineering courses are
offered in the second year level, course projects usually end up using
technologies from previous courses rather than real world technology.
There exist many powerful commercial tools to help software developers in
using advance technologies. These tools are very powerful, easy to use,
and very costly. The cost of acquiring these tools make it unlikely that
students can start their own projects after learning the technologies. In
COMP213, a selection of open source tools are used to provide students with the
functionalities and ease of use of commercial software, without the high cost
that is usually associated with such software.
The rest of the paper is structured as follows. Section 2 outlines the
topics that are covered in COMP213. Section 3 discusses the tools that are
used in the course. The structure of the course is described in section
4. Sections 5 and 6 contain students feedback and information on a
follow-up project.
2 Course Overview
At Capilano College, our introductory software engineering course -
COMP213, appeals to students with projects that use real world
technologies. Since these are second year students, learning new
technologies may be very difficult for them, especially if they also have to
learn all the theoretical background in software engineering. The
solution is to pick tools that are very easy to use and create an environment
where students can use these new technologies effortlessly, usually with very
limited technical knowledge.
In addition to the traditional topics, COMP213 also covers the following
topics:
- Rational Unified Process (RUP) and Extreme Programming (XP) - While
students learned about the traditional software development methodologies
from the textbook, RUP and XP serve as practical examples of how software
development can be done in the real world. As a heavy weight process,
RUP specifies how large organizations develop software effectively.
XP, a light weight process, give students ideas on how to take advantage of
the agility of being in a small team.
- AntiPatterns - AntiPatterns capture "bad solutions" the
same way design patterns capture "good solutions". By
studying anti-patterns, students gain an understanding of what not to
do in real life projects.
- Web programming using Servlet and JSP - Servlet and JSP technology,
coupled with the Model-View-Controller architectural pattern, demonstrates
how design patterns can be used with real world technology to create a well
structured piece of software.
- Using middleware - Learning Servlet and JSP inevitably leads to a
discussion of using middleware. Topics like n-tier architecture,
application servers, and frameworks are covered briefly.
3 Tools Selection
With such large a number of diverse topics to cover, COMP213 may become too
overwhelming for second year students. Finding the proper
software engineering tools to support students in their learning is therefore
very important. The criteria for tools selection are
as follows:
- Must be easy to learn and use so that they can appreciate how
professional software development is done.
- These tools must contain the same powerful features available in commercial
software.
- Make it easy to introduce practical programming skills (i.e. web
programming).
- Give students confidence in knowing that they can start their own
software project with very little initial investments.
- Help to promote open source software.
In recent years, open source software has evolved from a
hacker sub-culture into mainstream, with companies like IBM pushing open
source software into the corporate world. By choosing to use open source
software in COMP213, students can appreciate the usefulness of the open source
process.
3.1 UML tool
Since UML is introduced early in the term, a good UML modeling tool is
needed. Code generation is also required as it gives students a practical incentive for using UML.
As it turns out, there is only one open source UML tool avaiable -
ArgoUML (http://argouml.tigris.org), which uses the BSD licence. When I first evaluated ArgoUML for
course use in the Spring of 2002, I found that it was lacking in some features
(some UML diagrams were missing). There were also a number bugs that
prevented it from being used commercially.
PoseidonUML from Gentleware (http://www.gentleware.com) is a commercial UML package based on ArgoUML.
For reasons of stability and
additional features, PoseidonUML was chosen as the main modeling tool. The binary distribution of PoseidonUML CE is free.
Since Spring 2002, ArgoUML has improved and now contains all the features
necessary for COMP213. However, the software is still lacking in stability
and code generation is still not as good as PoseidonUML.
3.2 IDE
Every software developer needs an IDE to support the coding and testing
process. There are two main open source IDE for Java: Eclipse (from
IBM, http://www.eclipse.org) and NetBeans (from
SUN, http://www.netbeans.org). Both IDEs share a number of common
features. For instance, other than just a simple IDE, both Eclipse and
NetBeans are generic frameworks that developers can use to build their own
applications. Both projects also encourage development of
"plug-in" modules to enhance the functionalities of the IDE and both
projects has a large number of free modules available.
The main differences between the two IDE's are as follows. NetBeans was
open sourced by SUN in June of 2000, while Eclipse was open sourced by the
Eclipse consortium (spearheaded by IBM) in November of 2001. The base
distribution of NetBeans contains more features than Eclipse, and NetBeans is
written in pure Java with Swing while Eclipse uses SWT (which is only available
in Windows and Linux) as its graphical user interface component.
NetBeans was chosen as the IDE for COMP213 for two reasons. First, at
the time of the course offering (Spring 2002), Eclipse had just started and the
number of available plug-in modules were small. Second, NetBeans is
shipped with an integrated web application development environment. This
environment makes it very easy for students to write applications using Servlet
and JSP technology.
Eclipse has been gaining popularity very quickly since its inception and many
plug-in modules are now available, including a module for web application
development. I have yet to evaluate the usefulness of Eclipse's web
application development module.
3.3 Testing tool
JUnit (http://www.junit.org) has been gaining popularity as a valuable automated testing tool for
software developers. JUnit is available as a plug-in module for both
NetBeans and Eclipse.
4 Course Structure
COMP213 revolves around 3 activities: Lectures, Labs, and
Assignments/Project
Lectures (4 hours / week) - In addition to delivering theoretical content,
some lectures contains live demonstration of CASE tools and key technologies.
Labs (2 hours / week) - Students practice using the tools and technology.
Assignments/Project - Assignments and projects are done in groups of 3 or 4
and is designed to mirror real
world software development. There are a total of 3 assignments and 1
project.
- Assignment 1 - Students are required to write a rapid prototype in Java
without the help of any advanced development tools. The goal of this
assignment is for students to gain an understanding of using the
command-line java complier, as well as give them an appreciation of CASE
tools later on in the course.
- Assignment 2 - Using PoseidonUML, students practice object oriented analysis
with use cases, class diagrams, and interaction diagrams.
- Assignment 3 - Students design a software system using appropriate design
patterns, to be documented in UML.
- Term Project - Students are allowed to develop their own web based
project (with instructor's approval). These projects are to be created
using servlets and JSPs (a subset of J2EE) with the help of NetBeans IDE.
This web based project has to follow the Model-View-Controller
architecture, which is the proper architecture for developing java based
web applications. A sample of the projects include an online
calendar, online casino game, game score ranking system, online course website,
online chat, and a real time classroom feedback system for instructors.
5 Students Feedback
While the pace of COMP213 is fast and there is a great deal of information
to assimilate, students are generally very pleased with the course. Some
students have chosen to learn more in a follow-up project (see the next
section), some have
started developing their own software, and virtually all have expressed satisfaction
with the course. In particular, students felt that design patterns, UML,
and web application development were the best parts of the course. Many
students also felt that coverage of database technology is desirable as they
wanted to develop their own database driven website.
6 Follow-up project
In the summer of 2002, many of the students of COMP213 (13 out of 26) has
chosen to participate in a voluntary summer software project. In this project,
SourceForge was used to show students how real world open source projects
run. SourceForge includes many features that are essential to any
software development process including document management, bug tracking, a CVS repository, project website hosting, and developers forums.
7 Conclusion
Traditional introductory software engineering courses focus on basic material
on software engineering and is often not very engaging for students. With
COMP213, a course has been designed to integrate theoretical material with
practical software development. The tools and techniques used in this
course mirror ones that are used in professional software development.
Upon completion of the course, students get a sense of accomplishment, not only
did they acquire
basic software engineering principles, but they also learned a collection of tools
that are used in the real world. In addition, students are
properly equipped to start their own small scale software development projects.
References
- Jason E Robbins, David M Hilbert, David F. Redmiles. "Argo: a design
environment for evolving software architectures". Proceedings of
the 1997 International Conference on Software Engineering. Boston, MA, USA,
17-23 May 1997 pp. 600-601.
- William J. Brown, Raphael C. Malveau, Hays W. "Skip" McCormick,
Thomas J. Mowbray, AntiPatterns: Refactoring Software, Architectures, and
Projects in Crisis. John Wiley & Sons. March 20, 1998. ISBN
0471197130.
- Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design
Patterns. Addison-Wesley Pub Co. January 15, 1995. ISBN 0201633612.
- Marty Hall. Core Servlets and Java Server Pages. Sun Microsystems
Press/Prentice Hall PTR Book. ISBN 0130893404
Philippe Kruchten. A
Rational Development Process. Rational Software, 1996.
- Kent Beck. Extreme Programming Explained, Embrace Change.
Addison Wesley. ISBN 0201616416.
- Vijay Ramachandran. Design Patterns for Building
Flexible and Maintainable J2EE Applications. http://developer.java.sun.com/developer/technicalArticles/J2EE/despat/.
January 2002.
- Stephen R. Schach. Object-Oriented and Classical Software
Engineering, Fifth edition. McGraw Hill. ISBN 0072395591.
- Timothy C. Lethbridge and Robert Laganiere. Object-Oriented Software
Engineering. McGraw Hill. ISBN 0077097610.
Name: Jason Madar
Department: Computing Science
Institution: Capilano College
Postal address: 2055 Purcell Way, North Vancouver, British Columbia, Canada V7J 3H5
E-mail address: jmadar@capcollege.bc.ca
Web address (optional): http://merlin.capcollege.bc.ca/jmadar
|