Software Tools

You will need several tools in this course:

1. Java IDE

You can use any editor, compiler and runtime environment. One option is to install an editor (notepad, wordpad, emacs, vi, vim, etc), and use Sun's JDK and JRE to compile and run the programs. You are strongly encouraged to use the Eclipse Integrated Development Environment to do all the programming activities. The advantage is that Eclipse provides a good editor and debugger. It can also be integrated with version control software. Eclipse is the preferred IDE in our department. You can download Eclipse for free from here.

2. UML Drawing Tools

There are several tools available commercially and in the free software domain for drawing UML diagrams. Examples are Visio, Topcased, Eclipse-Omondo, ArgoUML, Poseidon, Visual Paradigm, and Rational Software Modeler. A list of some UML tools can be found on Wikipedia. Below is a select set of tools that support the modeling activities covered in our software engineering classes (e.g., CS314, CS414). Visio may be the best option for most of you. As long as you use a tool that exports diagrams to image files that can be inserted into a word / PDF document, you should be fine.

2.1 Visio

Microsoft Visio is installed on the Windows PCs in the department. You can also get it for free as described below.

MSDN Academic Alliance Program enables CSU Computer Science faculty members, undergraduate majors, graduate students, and certain classes to acquire software at minimal cost. This service is provided using ELMS (e-academy License Management System) and supports multiple distribution schemes.

Currently there are two distribution schemes available to CSU Computer Science users:

  1. Media Sales: Under this scheme you pay for the cost of the media (cd-roms) and shipping and the disks containing the requested software is delivered to you.

  2. Download: Under this scheme you will download the desired software at no you are issued a product using either distribution scheme you are required to get approval to reacquire that product (even if attempting to use the same scheme). This means that you are entitled to only one copy of a given product.

Anyone taking CS classes has a CS email account. Your CS email address is your CS login added to Password is the same as your CS account.

To get started, visit the ELMS website.

The EID or CSUID plays no part in MSDNAA. Login to MSDNAA is your CS email address. If you have forgotten your password, you can ask MSDNAA to send it to you. Click here. The password will be sent to your CS email account.

Quick access to CS email is available here.

2.2 Topcased

A modeling environment developed as part of an EU project. It was built to primarily support the development of critical embedded software. You can download it from here.

2.3 Papyrus

Papyrus is intended to be the standard eclipse UML modeling environment. The UML features are similar to those found in Topcased. You can download it from here.

2.4 Visual Paradigm

Another option, which has both a free and a trial version (free, time-limited, but has more functionality) is Visual Paradigm's SDE.

This is a pretty good UML tool that integrates with Eclipse, JBuilder, and a few other IDEs. The more functional versions also provide code-generation, so this might help out with the implementation.

3. Version control

Version control and source code control is very useful when you are working in a team. Even if you are not, it still helps to be able to retrieve an older version of a file that used to work when the current version is lost or broken.

3.1. Subversion

You can use subversion, which can be integrated with Eclipse. Instructions were adapted from Prof. Michelle Strout's directions for CS453/CS553 ( and updated by Aritra.

For more info on subversion, see

  1. FIRST read chapters 2 and 3 in the subversion manual at

  2. Suppose you have a project with just one file to begin with:
    class Main
        public static void main(String args[])
           System.out.println("Hello World!");
    Put into a file hierarchy with the following structure:

    This tree of files in the Project.svn directory you just created is just for having something to initialize the repository. You can delete the Project.svn after you have imported it to the repository (step 4).

  3. Create a subversion repository for your class projects
    // Make sure to replace $HOMEDIR with your own unix home directory.
    // For example, /s/parsons/d/fac/ghosh
    // Replace $MACHINE with a CS unix machine that you use often.
    // Replace $USER with your username.
    // creating the repository on a CS unix machine
    // NOTE: Each project will have its own repository.  
    // All the project repositories for CS314 will be in 
    // $HOMEDIR/SVNRepositories/CS314_Projects/.
    % cd $HOMEDIR
    % mkdir SVNRepositories
    % mkdir SVNRepositories/CS314_Projects
    % svnadmin create $HOMEDIR/SVNRepositories/CS314_Projects/ProjName.
  4. Initilize the repository by importing from your tree of files created in step 2
    % cd ProjName.svn
    % setenv SVN_SSH 'ssh -l $USER'
        // if you are using bash do the following:
        % export SVN_SSH='ssh -l $USER'
    % svn import . svn+ssh://$$HOMEDIR/SVNRepositories/CS314_Projects/ProjName -m "Initial import"
    $USER@$'s password: 
    Adding         trunk
    Adding         trunk/src
    Adding         trunk/src/
    Adding         tag
    Adding         branch
    Committed revision 1.

    Irrespective of whether you are using the Subclipse plugin (Subversion plugin for eclipse) or the command line, step 1 through 4 are same. The plugin will not help in setting up the repository and initializing it.

  5. Create eclipse projects as working copies of the repository

    Once the repository has been created, any of the team members can create eclipse projects in their own workspace and connect to the repository

    • First create an eclipse project.
      Suppose the name of the project is NewEclipseProject. Make sure that eclipse creates separate directories for source files and class files.
    • Connect the project to the repository by checking out a working copy of the repository into the source directory of the eclipse project.

      If you are using the command line,

      % cd $PATH_TO_YOUR_ECLIPSE_WORKSPACE/NewEclipseProject
      % setenv SVN_SSH 'ssh -l $USER'
          // if you are using bash do the following:
          % export SVN_SSH='ssh -l $USER'
      // for some reason the below command requires your password three times
      // I have seen this on other subversion servers as well
      % svn co svn+ssh://$$HOMEDIR/SVNRepositories/CS314_Projects/ProjName/trunk src
    • Refresh the eclipse project. Any commit or update has to be made by first going to the src folder in your NewEclipseProject.

      If you are using the Subclipse plugin,

    • To add the repository in eclipse go to Window->Open Perspective->Other->SVN Repository Exploring.
    • Click on Window->Show View->SVN Repository.
    • On the SVN Repository view right click on the empty space and click on New->Repository Location.
    • You will be asked for the repository URL. The repository URL is the path to the repository according to some syntax. The general form of the repository URL you will be using is this : svn+ssh:// You can use any other CS machine. The path to the repository has to be the complete path. In our current example the repository URL is svn+ssh://YOUR_USRNAME@$$HOMEDIR/SVNRepositories/CS314_Projects/ProjName/
    • Once you enter the repository path you will be asked for the password that you use to log in to the CS machines.
    • If the password is accepted eclipse will recognize the repository. You can now browse the repository in eclipse.
    • Collapse the repository, right click on the trunk folder (because that is the folder where your source files are) and click on Checkout->Checkout as a project in workspace.
    • As you develop the project you can update or commit files within eclipse using the GUI.
  6. Commands you will need while working:

    svn commit
    When you want to save the changes that you have made
    svn add
    To add a file or a directory
    svn update
    Pull down any changes that have been committed to the repository by your partner.
    svn info
    To check which repository and the revision number this working directory is associated with. This information is most accurate after an svn update.
    svn status
    To obtain file and directory status - added, deleted, merged, ...
    svn diff
    To compare differences between file paths
    svn log
    To display commit messages for repository
    Subversion Quick Reference Card

  7. Working with a partner (optional)

    If you want to work in a team for the design project, let us know, and we will assign a unix group name to your team. They will be of the form cs314a, cs314b, etc. Each team will have an account space corresponding to their team letter in the directory: /s/bach/a/class/cs314. Thus, cs314a will have its account space in /s/bach/a/class/cs314/cs314a, and so on. Whether you choose to use this space or not, and how, is up to each team. To access this shared area, connect to the CS department linux machines (e.g., and using ssh and then type:

    cd /s/bach/a/class/cs314/cs314a
    Replace the letter "a" with an appropriate letter for your team.

    Make sure that the permissions on the repository are set so that everyone in your unix group can write to the repository. Assume that your unix group is cs314x. Your group will have a directory at ~cs314/cs314x. Note that the "~" automatically expands to /s/bach/a/class/. Here are the commands you need to perform to set up a repository in your group directory.

    % cd ~cs314/cs314x
    % mkdir SVNRepositories
    % svnadmin create ~cs314/cs314x/SVNRepositories/Project2
    // check the permissions, the cs314x, SVNRepositories, and Project2
    // directories should all have group rws permissions
    % ls -al 
    % ls -al SVNRepositories/
    // if they don't them change the permissions
    % cd SVNRepositories
    % chmod g+rwxs .
    % find . -type f -print | xargs chmod g+rw
    % find . -type d -print | xargs chmod g+rwxs

3.2. Subclipse

You can also use the plugin Subclipse, which provides support for Subversion within the Eclipse IDE.