| S  | D  | N  :     SLASHDOT  ·  FRESHMEAT  ·  THEMES.ORG   
 OSDN - Open Source Development Network

 Source Forge

PalmPGN Links

Project Page    >
Main Page    >
Screenshots    >
Relelase Schedule    >

FAQ    >
Public Forums    >
Announcement List    >

Downloads    >
Documentation    >

Design Scenarios    >
Requirements    <
Interaction Diagrams and Use Cases    >
Class Diagram    >

Credits    >
About the GPL    >


PalmPGN - Software Requirements Specification (SRS)


"Egad, Dave, are you trying to see how many $0.25 words can you tie together?!" No, not really, it's supposedly an industry term, I'm just using it. What this is about is organizing the scenarios into individual line items that can be met by design and code, and verified by testing. This whole list should also be complete, consistent, flexible and allow me to trace each feature through each stage of the project.

  • 1. Starting the Application
    • 1.1. On the initial load of the program, the app will display the initial position on the chess board.
    • 1.2. On subsequent program loads, the app will display the most recently viewed game, and the current database will be set to the most recently used database.
    • 1.3. If the user modified the most recently viewed game before closing the app, the modifications will still be present upon program load.
  • 2. Loading a Game
    • 2.1. The user will be able to select an initial position. This acts as if a game with no moves was loaded, clearing the move list and starting afresh.
    • 2.2. The user will be able to select a database to be the current database.
    • 2.3. The user will be able to select any game from the current database.
    • 2.4. The user will be able to select the most recently viewed game/position from the active database.
    • 2.5. The user will be able to select the next/previous game/position from the active database, with relative to the current or most recently viewed game.
    • 2.6. The user will be able to setup the board with a desired position (selecting to setup the board will put the app into setup mode):
      • 2.6.1. The current position (including the initial position, if so indicated by the user) will be displayed upon entry into setup mode.
      • 2.6.2. The user will be able to clear the board, removing all pieces except the two kings, which will be placed at their initial positions (e1 & e8).
      • 2.6.3. The user will be able to set the board to the initial position.
      • 2.6.4. The user will be able to select a piece to place on the board, and then place that piece at any legal position.
      • 2.6.5. The user will be able to move any piece currently on the board to any legal position.
      • 2.6.6. The user will be able to remove any piece from the board (except either king).
      • 2.6.7. The user will be able to indicate board settings:
        • 2.6.7.1. Which side is to move next
        • 2.6.7.2. Which castling is legal
        • 2.6.7.3. Which square may be captured 'en passant'
      • 2.6.8. The user will be able to indicate completion of board setup, and return to game mode.
    • 2.7. PalmPGN will never discard the user's changes without giving the user the chance to save them, (unless the user selects 'revert', indicating a desire to remove all changes from the current game).
  • 3. Viewing a Game
    • 3.1. The user will be able to display the moves of the currently selected game on a 2d chess board, with a graphical representation of the pieces (i.e. similar to a printed diagram in a chess book).
    • 3.2. The user will be able to view the PGN notation for the current move for white (if it is currently black's move) or white and black (if it is currently white's move).
    • 3.3. The user will be able to scroll through the currently loaded game in both directions, move by move.
    • 3.4. The user will be able to move directly to the first and last move of the currently loaded game. The first move of the game will be the initial position for a complete game, or the initial position for a loaded position.
    • 3.5. The user will be able to select the board orientation, (i.e. white pieces at the top or bottom of the chess board)
    • 3.6. If the user has loaded a position, and that position has an attached solution, the user may opt to display that solution.
  • 4. Modifying a Game
    • 4.1. The user will be able to enter new moves into a game.
      • 4.1.1. If the current move is the last move of the game, the newly entered move will be added onto the end of the game.
      • 4.1.2. If the current move is not the last move of the game, the newly entered move will be added after the current move, and all previous moves after the current move will be removed.
      • 4.1.3. The user will be able to undo/redo the last move edit made. This will restore a list of moves removed by entry of a move into the middle of the game.
      • 4.1.4. The user will be able to revert to the original state of the game. This implies that the game was loaded, and not entered by the user.
    • 4.2. The moves entered by the user will be validated according to the common rules of chess. (Chess variants need not be supported.)
    • 4.3. The user will be able to add personal annotations to the game. These will include:
      • 4.3.1. Symbol annotations, as recognized by PGN, (i.e. '+', '++', '#', '?', '!', etc.)
      • 4.3.2. Text annotations, as entered by the user. This will be simple, freeform text such as will fit into a small edit box.
    • 4.4. The user will be able to enter peripherial game data. This will include standard PGN data such as event, site, date, round, white's name, black's name, result, etc.
  • 5. Storing a Game
    • 5.1. The user will be able to store the current game in a game database.
      • 5.1.1. The user will be able to overwrite an existing game in the current database.
      • 5.1.2. The user will be able to create a new game in the current database.
      • 5.1.3. The user will be able to overwrite an existing game in a different database.
      • 5.1.4. The user will be able to create a new game in a different database.
      • 5.1.5. The user will be able to create a new game in a new database.
    • 5.2. The user will be able to name each game as it is being stored.
      • 5.2.1. The first time a game is being stored, it will be given a default name of "^lt;White> v <Black> #n", where <White> will be replaced with the name of the white player, or "unk" if none was entered, <Black> will be replaced with the name of the black player, or "unk" if none was entered, and "n" will be replaced with a number one higher than the number of games in the current database with the same White/Black players, or will be omitted if this is the first game recorded in the current database with these players as White/Black.
      • 5.2.2. Subsequent saves of a game will use the name given to the game on its first save as the default, allowing the user to change the name as desired.
    • 5.3. The user will be able to store all related game data with the game:
      • 5.3.1. Game moves
      • 5.3.2. Symbol annotation
      • 5.3.3. Text annotation
      • 5.3.4. PGN tags
      • 5.3.5. Board orientation
  • 6. Using Game Databases
    • 6.1. The user will be able to manipulate game databases:
      • 6.1.1. The user will be able to create a new database.
      • 6.1.2. The user will be able to rename an existing database.
      • 6.1.3. The user will be able to delete an existing database, (whether the database contains games or not). The user will be required to confirm such a deletion, and will be told how many games are about to be deleted.
    • 6.2. The user will be able to manipulate games in a game database and between game databases:
      • 6.2.1. The user will be able to copy a game from the current database to the same or to a new database.
      • 6.2.2. The user will be able to move a game from the current database to the same or to a new database.
      • 6.2.3. The user will be able to rename a game in the current database.
      • 6.2.4. The user will be able to delete a game from the current database.
  • 7. Communication Features
    • 7.1. The user will be able to convert the current game to PGN text and store this game in a PalmPilot Memo. (This requirement assumes the feasibility of programmatically accessing a PalmPilot Memo entry.)
    • 7.2. The user will be able to send the current game as PGN text via email, by means of the PalmPilot email program. (This requirement assumes the feasibility of programmatically accessing the PalmPilot email program.)
    • 7.3. The user will be able to transfer databases to/from the desktop computer using the standard PalmPilot tools available for each desktop platform.
    • 7.4. The user will be able to transfer the current game to another PalmPilot via the I/R port (also known as 'Beaming').
    • 7.5. The user will be able to transfer selected games from the current database to another PalmPilot via the I/R port.
    • 7.6. The user will be able to transfer individual databases to another PalmPilot via the I/R port.
  • 8. Conversion Features
    • 8.1. The user will be able to convert to/from PGN files from/to PalmPGN format via a Java-based desktop application. (See the item under Communication Features for transferring this file to the user's PalmPilot.)
  • 9. Exiting the Application
    • 9.1. The app will note the current game and database, and will make those setting available for use on the next app startup.
    • 9.2. The app will preserve any changes that the user has made to the current game before exiting, making those changes available for loading on the next app startup.

 

VA Linux Systems and SourceForge are trademarks of VA Linux Systems, Inc. Linux is a registered trademark of Linus Torvalds. All other trademarks and copyrights on this page are property of their respective owners. For information about other site Content ownership and sitewide terms of service, please see the SourceForge Terms of Service. For privacy policy information, please see the SourceForge Privacy Policy. Content owned by VA Linux Systems is copyright 1999-2000 VA Linux Systems, Inc. All rights reserved.