This is the repo for the G51FSE pygame Project for the software engineering module in my first year of computer science at the University of Nottingham In this piece of coursework, I chose observe and implement a software engineering process whilst working with one other in a group (we used agile XTreme with pairs programming for the implementation stages but used the iterative spiral methodology for structuring of the whole project) as follows:
You are tasked to find a partner and to create a 2D Arcade game. You will have a choice over what game you wish to make and a choice of implementation language. Through this process, in your pairs you are to develop the game from its initial specification, through design, protytping, refinement, implementation, testing, and evaluation stages. You are required to deliver a demo for a prototype, a completed game and a portfolio.
Coursework Learning Objectives:
- To perform the process of software engineering from start to completion, demonstrating evidence of ability and aptitude for each stage of the process.
- To be able to program and develop effectively in pairs.
- To demonstrate original thought and creativity in software production.
- To show use of the appropriate software engineering methodologies and diagrams.
- To comply with the attendance procedures specified for the lab sessions.
- To gain experience in working with external code and libraries
- To apply programming knowledge to a new language
- To be able to manage source code through version control systems
We aim to emulate an agile development team working for a small game development company, called NG2 Games. We are required to produce an inventive 2D game, including a prototype and larger full version and all supporting documentation. The game aims to emulate a typical 'space invaders' game crossed with a 'shoot 'em up' such that the enemy will continuously fire randomly and aggressively. The game adopts well known concepts from other similar arcade games such that it satisfies the requirements extracted from the user stories.
We broke down the project into the following areas:
- Requirements Gathering and elicitation - getting requirements, use case and software requirements specification from the users
- Design - creating a basic design and rapid prototype for the proposed system, we made a basic game as a demonstration of concept and refine the requirements for the user.
- Implementation - Most of the user requirements were realised here in order to fully cater for the needs of the user, agile sprints were used to get certain sections done.
- Testing - The code we had written had to be tested to ensure correct and proper functionality. Some of this was done as part of Test Driven Development.
- User Evaluation - We would approach the user at various stages of development in order to gather feedback, more requirements and refine those we already had.
As this project was completed in an iterative manner, (we also used agile pairs programming, and Extreme at different stages); many of the stages were repeated in order to fully cater for all requirements of the user.
Please see 'DesignPortfolioLogicWars.pdf' for a complete report of the process, the final product and decisions along the way