Sample XP Style Project
Chat Room

Joseph Bergin
Pace University
jbergin@pace.edu
http://csis.pace.edu/~bergin

Here are the elements of a simple project that is specified in XP style. Note that this is far too simple as a project in CS 631N. In particular it has no persistent storage.

Concept

This project is to develop a very simple chat room using client server architecture. It will manage only a single room of four or fewer members. Each client (chatter) will be able to type lines that are echoed to all connected clients.

Original Stories

The specification was given by a set of stories developed by the client (a person who will be a user of the sytstem). Each story mentions one feature of the desired system. When all stories have been implemented the system is complete. These stories have not been estimated or prioritized. In XP they will be estimated by the developers (time to completion) and then prioritized by the client.

Use Cases

Server Use Cases

Client Use Cases

Scope

For the server we estimate 6 classes with about 30 total methods. The client will require about 3 classes with 12 or so methods.

CRC Cards

Here are the CRC cards for the project.

Design

The final design is available. The preliminary design has been lost. (Examination shows that this can be improved--it has a certain "smell.")

Code

Client code

Client html page -- If the server isn't running this won't show you anything, but you can view its source or download it.

Server code

The actual code has four classes and five total methods in the server and two classes (one inner) and six methods in the client, so the original scope was an over estimate. This does not include system classes and inherited methods, however. The server used arrays and about nine system classes. The client used about 16 system classes.

If you want to run this on your own system, use "localhost" as the server machine in the Applet tag in the html page.

Documents

Administrator handbook

Client handbook

JavaDoc -- Index


 

Last Updated: September 4, 2001