Design Problem


For this exercise each student will create a very high-level design of a software product. The design will be presented as a single UML diagram showing the overall structure of the system. The diagram should contain only class names no state or methods and the relationships among the classes (inheritance, association, aggregation, and possibly cardinality and role labels). A separate section of the document should give brief (1-2 sentence max.) descriptions of the responsibilities for each class. The total document size, including diagrams, must not exceed 3 pages.

Feel free to work with each other during the remainder of the first class and before the second class to develop ideas and strategies. However, each individual is responsible for handing in his or her own design sketch at the start of the second class, and this sketch will contribute 5% to your final grade. Students who make a good faith effort to develop a robust design can expect to receive 4 or 5 points, even if the design itself is suboptimal. The goal is to start students on the path to reflecting about design at a higher level than individual classes and methods.

The second class will be divided into three sub-sessions. In the first sub-session, small groups (3-4 students each) will quickly sketch consensus designs that incorporate the best aspects of their individual designs. In the second sub-session, several teams will present their sketches to the class as a whole (5-10 minutes per presentation). In the final sub-session, we revisit the problem and the designs to show how patterns might make it easier to create, discuss, and evaluate designs.

The Problem

You are to design a framework to support the playing of two player board games such as checkers, chess and backgammon.

Two-Player Board Game Framework Requirements

  1. The framework must support the following two playing modes, at a minimum:


    Two players playing at the same machine by exchanging the computer controls to make their individual moves.


    One player located on a remote machine connected via the network to the second player's machine.  You do not need to design the remote system though if you think a single design can accommodate both the local and remote players indicate how this is done.

  2. The framework will allow for saving the state of a game and returning to it at a later point.

  3. The framework will allow for game moves to be saved and later replayed one move at a time.

  4. The framework will allow a player to select the output modality as either text or graphical.  In addition, a remote player has the option to play from a cell phone.

  5. The framework will allow a player to select the input modality as text, GUI or voice.

  6. Clearly indicate in your design which aspects of the framework remain the same for different game implementations and which are game-specific.

  7. Your instructor is free to clarify, modify, or amplify these requirements based on discussions during the first class session. It is highly unlikely that two sections running in the same term will end up designing to identical requirements.

Revision: $Revision: 1.1 $, $Date: 2005/03/08 04:16:25 $