Software Engineering Group Practical

The Software Engineering Group Practical (SEGP) is running in Semester 1 of the academic year 2006/2007. This is a 10 point Level 10 course. It is not open to Master of Science students.



Welcome to SEGPhault Software! Glad to have you on board. SEGPhault Software is a newly-formed startup company which aims to establish itself as a value-added reseller. That is, the company will improve existing applications by identifying shortcomings and implementing missing functionality. SEGPhault is a Java house.

SEGPhault plans to establish itself by undertaking two pro bono pilots: Dizzy and Prism. SEGPhault will take these two open source Java projects, add value, and release the projects back to the user community to appreciate ``the SEGPhault difference''. In this way SEGPhault intend to establish their brand name and claim their market share.

SEGPhault's plan is high-risk. Not only do the two improved applications have to work, the source code will be open for inspection and enquiry, and needs to be high quality.

The company CEO is Gill Bates. A venture capitalist, philanthropist, and business angel, he has put up the money to fund the initial pilots. A technical developer himself back in the day, Gill made his fortune in the early days of the Internet. A strong believer in well-managed teams, Gill's pet hate is ``programmers with big egos''. He often says ``Check your ego at the door when you fire up your IDE.'' Gill pays your salary.

Well-versed in technical development, and highly motivated by the size of his financial investment, Gill likes to keep an eye on the work of the developers each week. Gill insists on the use of a version control system so that developers can share code updates efficiently. Somewhat old-fashioned as an ex-developer, he insists on CVS.

Gill hates to see implementation work wasted and argues that the best way to prevent two developers independently developing the same code is to commit work incrementally rather than working away in isolation for weeks and then finding that the codebase has changed under your feet. Gill's two stock phrases on version control are ``Commit early, commit often.'' and ``Don't break the tree.'' (That is, don't commit code which doesn't work and do check in all of the files which you have changed, not just some of them.) When Gill doesn't have time to read code he reads the CVS logs to find out who has been doing what. These need to be clear, concise and accurate statements of what has been done.

Gill's observations ...

Gill has expressed great respect for the good technical development done by the developers of Dizzy and Prism and describes those guys as ``heroes''. Based on his use of the Dizzy and Prism applications Gill made the following observations.

... about Dizzy

... about Prism

Gill also says ...

Important message from Gill (Friday 13th October 2006)

Gill has sent two messages. The first reads:
        Prism doesn't need a help menu after all.
This is as close as Gill would ever come to saying that he has changed his mind. The second message reads:
        What's happening with the other versions of Dizzy?


The main Prism download site is The current version is version 3.0 and 3.1 is forthcoming. We're working on version 3.2.


The main Dizzy download site is The current version is version 1.11.4. We're working on version 1.12.

Groups and email lists

There are two groups for the Software Engineering Group Practical. You can find these on the ITO page for the groups. A link is there allowing you to email the members of the group. Group 1 are working on the Prism application and Group 2 are working on Dizzy.

The CVS repositories

There are two CVS repositories, one for Dizzy and one for Prism. The repository which you are allowed to access is determined by your roles, and the two important roles for this practical are segp01 and segp02. Type the command roles s0345678, replacing the name s0345678 with your own username. You should see something like this:

s0345678 : class-cs4 degree-cs module-cg-4 module-ds-4 module-hci-4 module-ppls-4 module-proj module-segp module-vis-4 segp01 year-cs4 year-ug4

In this example we see segp01, meaning that s0345678 is in SEGP group 1.

The Dizzy and Prism repositories have been created as 'ssh', rather than 'pserver' respositories. To access them you will have to use ssh as your remote shell, thus:

export CVS_RSH=ssh

To check out the relevant CVS repository make a new folder and change to that folder. Then issue the appropriate CVS command, either

cvs -d checkout .


cvs -d checkout .

replacing the name s0345678 with your own username, as before.

Using CVS

The CVS repositories for the applications Dizzy and Prism contain binary files, which are not usually found in CVS repositories. These include Java JAR files and GIF format image files. These will checkout successfully on DiCE but may give problems if checking out onto Windows or other platforms. In this case the suggested advice is to checkout the files once onto your DiCE account and then copy them manually from there to your Windows laptop, if that is where you prefer to work.

Another possible problem is that the CVS repositories contain some empty directories where compiled versions of code will be stored. Ensure that your CVS client does not prune empty directories. Under Dice ensure that your ~/.cvsrc file does not contain update -P.

See also James Bednar's guide to CVS.

The Wikis

Two wikis have been established for collaborative working. The Prism Wiki is located at The Dizzy Wiki is located at

The Newsgroup

A newsgroup has been created for the course called eduni.inf.course.segp available from the server Please post SEGP-specific questions here instead of on eduni.inf.ug4.

Resources which might be useful


The deadline for completing the work is Friday, December 15th at 5:00pm. Gill points out that it might or might not be possible to achieve everything on the above lists by this time but on that day and time the SEGPhault version of the applications must be in good shape and ready to ship out.

Stephen Gilmore
Last modified: Wed Dec 13 09:44:38 GMT 2006