Briefly summarize The Gaming Room client and their software requirements. Who was the client? What type of software did they want you to design?
For the purposes of this assignment, I worked for Creative Technology Solutions (CTS) as a Technology Consultant. CTS has recently taken on a new client, The Gaming Room. The Gaming Room wants to develop a web-based game that serves multiple platforms based on their current game, Draw It or Lose It, which is currently available in an Android app only.
Draw It or Lose It is loosely similar to the 1980s television game Win, Lose or Draw, where teams compete to guess what is being drawn. Rather than a player drawing images on an easel to help team members guess the puzzle (a phrase, title, or thing), the application will render images from a large library of stock drawings as clues. A game consists of four rounds of play lasting one minute each. Drawings are rendered at a steady rate and are fully complete at the 30-second mark. If the team does not guess the puzzle before time expires, the remaining teams have an opportunity to offer one guess each to solve the puzzle with a 15-second time limit.
The staff at The Gaming Room does not know how to set up the environment. To facilitate the development of the web-based version of the gaming app, they will need your help in streamlining the development. You have been asked to prepare a software design document and begin developing the game application, addressing their software requirements. Keep in mind that the hardware requirements will come later as a result of the software application decisions. Your technical manager will want to review your progress with this client.
I am particularly proud of my breakdown and explanation of the UML class diagram under the "Domain Model" section of the design document. In this section I discuss each individual class, the purpose that class serves, and the ways it relates to other classes in the design of the software.
What about the process of working through a design document did you find helpful when developing the code?
Working through a design document created space for me to decide exactly what problems needed to be solved and what requirements needed to be met. This process made which design patterns would most efficiently solve those problems much clearer. The design document also served as a handy reference when developing the project, allowing me an easy-to-access view of the big picture whenever necessary.
If you could choose one part of your work on these documents to revise, what would you pick? How would you improve it?
My design document formats its 'Evaluation' section as a table. This feels visually clunky but was part of the template for my assignment. Given the chance, I would ideally prefer to format this section by separating it into sections by platform, and then addressing each individual platforms issues as bullet points or indented lists rather than as one table. I feel this change would make the document flow better therefore making it simpler to understand.
How did you interpret the user’s needs and implement them into your software design? Why is it so important to consider the user’s needs when designing?
In order to understand the user's needs, I first carefully reviewed my client's software requirements list that they had given to CTS upon accepting this project. I then considered what would be most important to an end user of this game, taking inspiration from the things that made the original Android game popular. I focused on creating a user-friendly experience that kept the spirit of the original game while also making small tweaks that allowed for smoother play that is not as dependent on the platform the user is playing on. Prioritizing the user’s needs is crucial, as they are the ones interacting with the product. If the product doesn't meet their expectations or provide a positive experience, they are less likely to engage, purchase, or consider other products from the same company.
How did you approach designing software? What techniques or strategies would you use in the future to analyze and design a similar software application?
I believe the process I utilized to design this game is a repeatable process that can be used to create more complex pieces of software applications of all shapes and sizes. I first reviewed my partially completed software design document to remind myself of the requirements my client had for this project. I then began decomposing these broader requirements into specific tasks and procedures that the computer would have to perform in order to create this experience for The Gaming Room's players. During this process I would jot down pseudocode as I thought through all of these processes so that I could begin to flesh out exactly how the code would need to be organized to remain scalable and robust as it became more complex. I then used LucidChart to create UML diagrams that helped further detail the solutions I had come up with. Finally, armed with this knowledge of exactly how the game would be designed, I began writing code, referencing my design document and notes along the way as a guide. As I began implementing my design, I would take note of things that may be refactorable and would iterate on my original notes to ensure I kept redundant code and logic errors to a minimum.