FINAL PROJECT

Due dates: See below

Informatics 122

Software Design II

Winter 2015

Professor Emily Navarro


Description
* Design and implement an extensible Board Game Server

* With a team of 8 or 9

* The effort should be spread out across multiple sub teams, with each sub team responsible for the design and implementation of its part

* Everyone, of course, is responsible for the overall design and implementation


Requirements
* The Board Game Server should accommodate any board game that involves a grid layout and game elements on this layout, including games such as Chess, Checkers, Tic-Tac-Toe, Gomoku, Connect Four, Nine Men's Morris, Chutes and Ladders, Stratego, Shogi, Pente, Battleship…

* The Board Game Server should make it as easy as possible to create implementations of new games

* The Board Game Server should provide a defined interface that all game plug-ins must follow

* The Board Game Server should be client-server, not Web-based

* The Board Game Server should provide one or more ways for people to find other players

* The Board Game Server should support personal player profiles (the specifics of which are up to you)

* The Board Game Server need only support 2-player games (but you can support more players if you want to)

* The Board Game Server should work by providing a player with a list of games they can play and allow them to choose which one to start


Deliverables
* Board Game Server itself, both its reusable client (if that is part of your architecture) and its reusable server

* Three or more games from the list above as "plug-ins" to the architecture. Note: if you choose Tic-Tac-Toe, Connect Four, or Gomoku, you may only choose ONE of these games because they are so similar.

* Documentation

* Instructions for running the game

* Code (via your CM repository)

* Peer evaluations


Reuse
* Cannot pick up an existing game server implementation

* You can reuse other components, but first double check with the professor


Grading Criteria
* Stakeholder: the player (how is the experience of playing a game?)

* Stakeholder: future developers of the Board Game Server (how is the understandability and quality of the code and design?)

* Stakeholder: game developers (how is the extensibility of the Board Game Server in supporting new board games? how is the experience of plugging in a new game?)

* Stakeholder: you (what are your contributions to the project?)


Miscellaneous
* Mark clearly in your design/architecture the places that are "plug-in" (variable per game) and which are fixed

* Use a configuration management repository (this is good practice, but we will also use it to verify who wrote which code -- check in your own code!). Give the professor and the reader access.

* Don't worry about handling network interruptions, needing to restart the server, saving a game so it can be continued later, etc. If a disconnection occurs, the game is lost, and that's ok. 


Deadlines
March 3: 

* Quick presentations on "plan of attack:" This plan should include: 1) division of work, 2) the major expected components of your solution, 3) intermediate deadlines/milestones, and 4) your communication/meeting plan. Also include in your presentation the high points, low points, and major challenges you experienced in this phase (max 15 minutes per team)

March 5: 

* Preliminary design presentations: Present and explain your design, at whatever level it currently exists. Also discuss your progress to date and your planned next steps. Include high points, low points, and major challenges you experienced in this phase (max 20 minutes per team) 

* Preliminary design document, including UML with description/explanation

March 10:

* Detailed design presentations: Present and explain a detailed design of your Board Game Server. Also discuss your progress to date and your planned next steps. Include high points, low points, and major challenges you experienced in this phase (max 20 minutes per team)

* Detailed design document, including UML with description/explanation, and step-by-step instructions for how to make a new game for Board Game Server

March 12:

* First demo: Run your Board Game Server, as it currently exists, in front of the class. Also discuss your progress to date and your planned remaining steps. Include high points, low points, and major challenges you experienced in this phase (max 20 minutes per team)

* Updated design document, including UML with description/explanation, and step-by-step instructions for how to make a new game for Board Game Server. Also include a description of how and why this updated design evolved from your original design.

March 19 (finals week):

* Presentation on final design and retrospective on design: Present and explain your final design, and discuss how and why it evolved over the course of the project. Include high points, low points, and major challenges you experienced in this phase and in the project as a whole (max 15 minutes per team)

* Final demo: Run your Board Game Server in front of the class (max 15 minutes per team)

* Updated design document, including UML with description/explanation, and step-by-step instructions for how to make a new game for Board Game Server. Also include a description of how and why this updated design evolved from your original design.

* Peer evaluations