CS383 HW#2: Requirements, Part 1

This is a fairly big assignment. Do not put it off, and do not skip class to work on it!

Part I Due: before class Wednesday September 24, via svn repository committal
Part II Due: 5pm Monday September 22 via e-mail (jeffery@uidaho.edu) and paper turnin.
Part II Resubmittal Due: 5pm Tuesday September 30 via e-mail (jeffery@uidaho.edu) and paper turnin.

Part One: SVN, phase 1

Do the following exercises, culminating in setting up our initial SVN repository for our project work.
  1. Skim the Subversion book at http://svnbook.red-bean.com/
  2. Skim the SVN tutorials at
  3. Create a SVN repository. This will serve for demonstration purposes during the first few items in this assignment, then you can delete it.
         cd ~
         svnadmin create 383
         du 383
    
    Note the number reported by "du 383". Approximately how many kbytes does an empty SVN repository occupy? "Empty" repository is kinda big, but no big deal.
  4. Create a (temporary) SVN project in your repository. To do this, make and cd into a temporary directory ~/yourproj, and put a "hello, world" program in a file named (for example) hello.java (or hello.cpp; translate all future examples from ".java" to ".cpp" if you are on the C++ team), and a makefile that can compile that program. Such a program directory is inserted into the SVN repository by running:
         svn mkdir file:///net/ugrads/yourid/383/yourproj
         svn import file:///net/ugrads/yourid/383/yourproj
    
    This will create a copy of your whole directory and any subdirectories, inside the repository. Note that you should make sure you don't have any junk files (.o, .class, .u, etc.) before doing an import. Note that at this step and many later steps, depending on your executing shell and environment, you may get an editor popping up asking for a comment to explain what you are doing, or an error message if svn can't tell what editor to launch. A -m followed by a message in quotes is an alternative way to supply the log with a record of what you were doing. See the example "svn commit" below for an example of using -m.
  5. Test your repository by creating a new copy of your project elsewhere.
         mkdir ~/test383
         cd ~/test383
         svn checkout file:///net/ugrads/yourid/383
    
    This will create a subdirectory under test383, named yourproj, that contains your distribution copy. cd into yourproj/ and "make" the program there. Edit the program (add a std:cout << "hello svn" to its main() function), save your change, and type
          svn diff main.java
          svn update main.java
          svn commit -m "added hello" main.java
    
  6. Delete the test directories you created.
  7. Run the command
    groups
    
    to verify that you are a member of group cs383_svn (you should be already) along with your other groups (group ugrads, etc).
  8. Editor's note: this step and beyond, in the svn part of HW#2, is broken. It will either be corrected shortly, or deferred to HW#3.

    Checkout a current copy of the your project. To do this change to your home directory (or a subdirectory of your choosing) and do the checkout, which will create a project subdirectory.

    Local
    cd
    svn checkout file:///net/classes/cs383_svn/icu
    
    Remote ...preliminary! The following worked for me but may need refinement!
    cd
    svn checkout svn+ssh://username@wormulon.cs.uidaho.edu/net/classes/cs383_svn/icu
    

  9. Add your name to the credits procedure. The following sequence enters your SVN project checkout directory, launches an editor (in which you add a write() statement with your name in it, and save it), builds the project with "make", runs the project to verify you haven't messed up, and when you are satisfied, you commit your code change via svn update (which backs in others' changes into your copy), svn diff (which shows you what you are about to check in), and svn commit.

    Java C++
    cd icu/jicu
    emacs Credits.java
    make
    svn update Credits.java
    svn diff Credits.java
    svn commit -m "added youruserid to credits" Credits.java
    
    cd icu/cicu
    emacs Credits.cpp
    make
    svn update Credits.cpp
    svn diff Credits.cpp
    svn commit -m "added youruserid to credits" Credits.cpp
    
    By the way, if someone else commits their addition in between your "svn update" and your "svn commit" you may need to rerun "svn update".

Closing thoughts: there is nothing "else" to turn in for this homework, if you can get your name into my repository, I will be able to see it next time I "svn update".

Part Two: Dia

1. Download and install Dia on your favorite computer, if it is not there already. If you are having trouble with this step, please see the instructor.

2. Study the UML and MUD materials (via online, or paper copy) in detail. Elicit requirements from the customer (Dr.J) and discuss with teammates.

3. Build up a preliminary requirements analysis document for a software system capable of a shared, collaborative UML drawing experience with MUD-like annotation capabilities. To do this:

Q & A with Dr. J

What are the GUI requirements?
The system must use a GUI. The system should allow simultaneous operation of diagram editor and mud/chat in (probably different portions of) the same window.
What about viewing the world?
Your system should allow some kind of navigation assistance beyond just the current MUD and current diagram, but such assistance can be textual, the "world" of projects available on the current server does not have to have a graphical 2D or 3D map associated with it.