- Explain design principles including of least privilege and fail-safe defaults, separation of concerns, information hiding, coupling and cohesion, and encapsulation.
- Describe the design process for a software development project for each of the main softwaredesign methods
- Create appropriate system models for the structure and behaviour of software products from their requirements specifications
- Use a design paradigm to design a simple software system, and explain how system design principles have been applied in this design.
- Select an appropriate software architecture as the design basis for a given software requirements specification, justify the selection based on its advantages over alternative architectures.
- Create software programs that make use of appropriate design patterns.
- Create user interface software using either event driven or callback based designs
- Explain the importance of Model-View controller to interface programming.
- Discuss the properties of good software design including the nature and the role of associated documentation.
Implemented Requirements
A handful of the functional and non-functional requirements have already been capitalized onto and implemented in the prototype version of the application. The application is about a minesweeper game. It is a game where the player is needed to click on the buttons from a grid of boxes. There are placed a random number of bombs under a few of these boxes. The user or the player is needed to click on these boxes to reveal if there is actually a bomb underneath. If there is no bomb or mine present in any of the vicinity boxes of the clicked box, a green patch of land would appear, otherwise, the number of boxes in the vicinity will be displayed within the clicked box. The player is required to play with his wit and calculations to click on all safe boxes and end the game without hitting any mine, this will lead to a victory. On clicking a box with a hidden mine, the user will be bombed and the game will be over. The user needs to complete the game with minimum number of clicks and most importantly minimum amount time consumed.
The protoype has already fulfilled the following requirements:
- It already has a game board and allows the users to play as necessary, but only in a easy game board with 6*6 cells and 10 mines placed.
- The number of clicks are available with every click of the user. This can even be updated into the end screen information where the gamer can view the number of clicks that he survived the game in case of a defeat.
- The user can freely restart the board at any point of time. This will allow the user to refresh his or her mind and play in a new board with a newer set of mine placements and the entire board will be cleared. The restart option can also be availed using the Restart option from the End screen.
- The End screen also fruitfully displays the congratulations or defeated message according to the ending of the game.
However, some of the crucial requirements could not be implemented into the preliminary prototype version of the software application. The development process for these implementations are still in process and will be completed and deployed in the final project. These on-going requirement designs are as follows:
- Timer: The project is yet to be implemented with a timer that keep tracks about the time that a particular game is going on for.
- Multi-sized boards: The development for multiple difficulty levels is in process. On implementation, the game will have two types of boards. Apart from the 6*6 that it already has, a 12*12 massive board will be introduced with more mines and increased difficulty. This will certainly induce more user interest into the game.
- Reveal all connected blank boxes: This is one of the most important implementations that is yet to be implemented. Through this functionality the game will be able to reveal all the connected boxes within the board with no bombs in the vicinity.
As mentioned in the requirement analysis phase, few of the functional use cases has been already implemented however a lot remains. These will allow the project and the software to be scaled up to a recommendable gaming application for all android application users. The use cases that have been implemented have already been described in the requirement fulfillment phase above, however, the unfulfilled use cases are as follows:
- Choosing the difficulty level is still now allowable in the prototype version. The prototype will allow the users to play on the easy board of 6*6 boxes.
- Saving and viewing high scores is a coveted use case for any gaming applications or software. This application too needs to have this feature. Through this feature, the user will be able to analyze the time taken by him to play the game in the past and compete against his past performances to attain newer achievements.
- The project is yet to be implemented with a timer that keep tracks about the time that a particular game is going on for. This will be necessary for the scalability of the gamer’s performance over the game and allow him or her to compare with the competitors.
The project has been developed in the Android Studio Platform using the Java programming language. Java is the most commonly used programming language in the world and when it comes to android programming it is generally the first and foremost choice for any programmer or app developer. The programming language offers the best of Object Oriented Programming features and functionalities. This application too had the utmost need of implementing the OOP or object oriented programming features like inheritance, polymorphism and data hiding. Most importantly the use of classes and objects has been extremely helpful in this process.
Unfulfilled Requirements
The application as mentioned before has been designed and developed on the Android Studio platform which is the Google approved and developed first choice application for android app development. This platform has tons of features, tools and functionalities that allow the smooth design of development of project within it. The platform not only gives the developers the scope to design and develop programs, but also allows the testers to test the programs based on various test case analysis tools and techniques.
The game’s interface has been designed using the XML layouts. XML or eXtensible Markup Language was designed for the purpose of storing and transporting data. XML was primarily designed to be both machine-readable and human-interpreted. Later, android started the use of XML parsing to create interface layouts. This allows the implementation of various layout patterns with design based and alignment rules and techniques. It also has the functionalities to import buttons, images and other necessary widgets that are necessary for the designing of a complete software application interface. This creates the View of the program.
Using Java was the primary choice of all other programming languages that are available. Java provides the best use of OOP features. In this project too, object and classes have been extensively used. Every entity in the project is determined and represented as classes and objects. For the game development process, the Box class has been designed to represent each box within the boards. The matrix Board [ ] [ ] is made to hold multiple instance of the Box class. Each box object has been created with a special set of attributes that determines whether it a mine of a safe land. Multiple single dimensional arrays and multidimensional arrays have been used to simulate the game and help in the data collection and calculation process for the game. The methods have been made private within the BoardActivity class to keep it out of access from the outside classes. This helps in maintaining security, which is a crucial feature of OOP. Intents have been created and passed between various activities to convey data from one page of the app to the other. This represents the controller of the program with the logical implications.
In the future, a model based level will be added to the project which will deal with the data. SQLite database is to be implemented to hold the scores of the user playing on a particular device. Doing so, will allow the easy access of data whenever necessary for score calculations. Further, threads are to be implemented within Java to allow the timer to be executed flawlessly in the background while the user is busy in the game.
The project has been implemented in the prototype without much need of data access or security features. This is because the project is yet to be connected to any database with sensitive user information. The interface design has been done keeping in mind almost all sizes of screens. It was necessary as the program was being developed for the mobile devices and there are various sizes available nowadays. The interface has buttons and clickable icons wherever necessary. This allows to exhibit a rich user interface with quality graphics and interactive medium. The program has been so developed to display Toast messages in case of all notifications that the use requires. This is one of the information access feature that the program has already achieved in its prototype version.
As of now there is only one type of user that plays the game and therefore access control and security measures have been overlooked. However in the future with the implementation of the database and user login abilities, these will be induced. The entire process will be repeated and the implementations will be done based on the Agile Development process.
The prototype has been thoroughly tested using the tools and techniques provided by Android Studio. The program has been tested not only for the feasibility of the functionalities but also has the interface flexibility has been tested for various resolution screens. This has been done with the help of the emulator that is provided by Android Studio.
The unit testing technique had been primarily used to test the application’s individual units and activates. On successfully testing the modules individually, the project was tested using the Black Box testing methods to check for fulfilment of the complete functionality integrations.
The BoardActivity java page of the application is being highlighted in this section to describe the software design patterns.
Apart from the above java programming part, there is also the layout xml file that was coded in order to design the interface of the activity. The code for the xml is being attached below.
The layout has been designed with the help of multiple image buttons placed inside a grid of linear layouts.
To export a reference to this article please select a referencing stye below:
My Assignment Help. (2021). Design And Implementation Of A Minesweeper Game Application Essay.. Retrieved from https://myassignmenthelp.com/free-samples/2805ict-principles-of-software-engineering/design-documentation-for-a-variety.html.
"Design And Implementation Of A Minesweeper Game Application Essay.." My Assignment Help, 2021, https://myassignmenthelp.com/free-samples/2805ict-principles-of-software-engineering/design-documentation-for-a-variety.html.
My Assignment Help (2021) Design And Implementation Of A Minesweeper Game Application Essay. [Online]. Available from: https://myassignmenthelp.com/free-samples/2805ict-principles-of-software-engineering/design-documentation-for-a-variety.html
[Accessed 04 October 2024].
My Assignment Help. 'Design And Implementation Of A Minesweeper Game Application Essay.' (My Assignment Help, 2021) <https://myassignmenthelp.com/free-samples/2805ict-principles-of-software-engineering/design-documentation-for-a-variety.html> accessed 04 October 2024.
My Assignment Help. Design And Implementation Of A Minesweeper Game Application Essay. [Internet]. My Assignment Help. 2021 [cited 04 October 2024]. Available from: https://myassignmenthelp.com/free-samples/2805ict-principles-of-software-engineering/design-documentation-for-a-variety.html.