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

  1. 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.
  2. 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.
  3. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides.  Design Patterns. Addison-Wesley Pub Co. January 15, 1995.  ISBN 0201633612.
  4. Marty Hall.  Core Servlets and Java Server Pages. Sun Microsystems Press/Prentice Hall PTR Book.  ISBN 0130893404
  5. Philippe Kruchten. A Rational Development Process. Rational Software, 1996.
  6. Kent Beck.  Extreme Programming Explained, Embrace Change.  Addison Wesley. ISBN 0201616416.
  7. Vijay Ramachandran. Design Patterns for Building Flexible and Maintainable J2EE Applications. http://developer.java.sun.com/developer/technicalArticles/J2EE/despat/. January 2002.
  8. Stephen R. Schach.  Object-Oriented and Classical Software Engineering, Fifth edition.  McGraw Hill.  ISBN 0072395591.
  9. 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