This repository includes the software design document and README file reflecting on the "Draw It or Lose It" project in my CS230: Operating Platforms course. This project showcases my ability to design a software application and communicate design ideas effectively.
The Gaming Room is a client dedicated to enhancing their existing Android game, "Draw It or Lose It," by developing a web-based version that can function seamlessly across various platforms such as Windows, Mac, Linux, and mobile devices. The game revolves around teams competing to guess images being sketched from a collection of stock photos within a limited timeframe. The core requirements for this project include scalability to handle numerous concurrent users, high performance with minimal latency, robust security to protect user data, compatibility across different platforms, maintainability for easy updates and enhancements, and usability to ensure an intuitive and engaging user experience. Creative Technology Solutions (CTS) was tasked with designing a solution that meets these requirements while ensuring distinct game and team titles and maintaining a single game instance in memory. These requirements reflect the client’s commitment to delivering a high-quality gaming experience to a broad audience.
In developing the software design documentation, I particularly excelled in providing a detailed and comprehensive outline of the project’s scope and constraints. The documentation included a thorough executive summary, a clear enumeration of the client’s business and technical requirements, and an in-depth analysis of the design constraints. I ensured that the document was structured logically, making it easy to follow and understand. Additionally, the evaluation of different operating platforms was meticulously detailed, allowing for a well-informed recommendation that aligned with the client’s needs. The inclusion of UML class diagrams and system architecture views also facilitated a clear understanding of the system’s structure and relationships, which was crucial for guiding the development process.
What About the Process of Working Through a Design Document Did You Find Helpful When Developing the Code?
Working through the design document was immensely helpful in providing a clear and structured roadmap for the development process. It allowed for the identification of potential challenges and constraints early on, enabling proactive planning and mitigation strategies. The detailed requirements and design constraints ensured that the development stayed focused on the client’s needs, maintaining alignment with the project goals. Additionally, the UML class diagrams and system architecture views provided a visual representation of the system’s structure, making it easier to understand how different components interact and facilitating a smoother coding process. This structured approach not only enhanced the efficiency of the development process but also ensured that the final product met the client’s expectations.
If You Could Choose One Part of Your Work on These Documents to Revise, What Would You Pick? How Would You Improve It?
If I could choose one part of my work on these documents to revise, it would be the domain model section. While the UML class diagram provided a solid overview of the system’s structure, incorporating more detailed interaction diagrams and use case scenarios would enhance the documentation’s comprehensiveness. These additions would provide a clearer understanding of how different components interact in various scenarios, making it easier to identify and address potential issues during development. Additionally, adding sequence diagrams could illustrate the flow of operations in a more detailed manner, further improving the documentation’s utility for guiding the development process. This enhancement would ensure that all stakeholders have a precise and comprehensive understanding of the system.
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?
Interpreting the user’s needs involved closely analyzing the client’s requirements and translating them into technical specifications that would guide the development process. This included understanding the need for a scalable, secure, and user-friendly application that functions seamlessly across multiple platforms. By focusing on these needs, the software design ensured that the end product would deliver a high-quality user experience. It is crucial to consider the user’s needs when designing software because it ensures that the final product aligns with the client’s expectations and delivers the desired functionality. This approach not only increases user satisfaction but also enhances the likelihood of widespread adoption and success of the software.
How Did You Approach Designing Software? What Techniques or Strategies Would You Use in the Future to Analyze and Design a Similar Software Application?
The approach to designing the software involved a structured process of requirement analysis, system design, and evaluation of different technologies and platforms. Techniques such as creating detailed design documents, utilizing UML diagrams, and conducting thorough evaluations of various operating platforms were pivotal. In the future, I would continue to use these techniques, along with more iterative and agile methodologies. Engaging in regular feedback loops with the client and stakeholders, and incorporating their input throughout the development process, would ensure that the software remains aligned with user needs and expectations. Additionally, adopting continuous integration and continuous deployment (CI/CD) practices would enhance the development process’s efficiency and quality, ensuring that the final product is both reliable and scalable. This methodology not only bolsters flexibility but also propels the application towards sustained growth and success, establishing a robust foundation for future developmental endeavors.