CS121 Software Development

Final Project




In the third and final project, you will conceive, design, and develop a game of your choosing. You will present your game during the last class period of the semester. At that point your game and all documentation/artifacts must be submitted via the cs121submit program.

As in previous projects, your team grade will be based on the game (50%) and the process (50%). Your personal grade will be the team grade multiplied by a factor that reflects your contributions.

You are expected to use good software development practices and design principles in the project. For example,
  1. You should use CVS to manage your documents and code. Here is a tutorial to get started.
  2. You should use the team wiki to link all documents, executable, and personal logs.
  3. To develop your concept, you should identify use cases, elaborate important ones, and develop a set of requirements that are described in a game design document. This document should include a development schedule in which you set out the major milestones of the project.
  4. You should design before you develop. While your high-level design may evolve over the course of the project, it is important to have one. Document your design and its changes using UML class diagrams, sequence diagrams, and whatever other tools you find useful.You are expected to use good object-oriented design and, when appropriate, design patterns. You should document how design patterns are used in your game.
  5. You should practice incremental design and development. Get a rudimentary game working early on then work to fill in the details. Use prototyping to test ideas quickly.
  6. Your process should be driven by risk analysis. You should produce risk reports at least once a week that elaborate the major risks and how they will be tackled. You should specify concrete and specific objectives to demonstrate that the risk is resolved. Your risk report should state who is assigned each risk and discuss back up plans in case the risk cannot be resolved. Last but not least, the report should also provide a detailed update on the risks identified in the previous report.
  7. You are expected to use good object-oriented programming practices and good style.
  8. If you are personally responsible for producing some code, you must also document your unit test plan for the code. When you check new or modified code into cvs, you are responsible for making sure the project compiles and that your code has not broken anything that worked before.
  9. You need to write a users' guide. Since this project will be graded after you've gone home, it is extremely important that I am able to understand how your game works.
  10. You should build a web page that links a game executable (zipped) and the users' guide so others can access the game in the future.
  11. You should write a final report that (at least) describes your final game, its design, known problems, and future enhancements.
If you are unclear on any of these issues, or if I failed to address an issue, please see me. It is up to you and your team to plan and execute this project. I am more than willing to advise you but I will not set your deadlines or plan your project. If personnel issues arise, please let me know. I will be happy to intercede. If you have any problems, concerns, or questions contact me.