Process Description:
Here is our documented SCRUM process for SCRUMS 1-3:
In our project, we adopted the Scrum methodology to ensure a flexible, collaborative approach to development, which is especially important for our dynamic project requirements. We organized our work into sprints, each lasting two weeks, which allowed us to focus on delivering specific features iteratively and incrementally. This approach helped us adapt to changes quickly and efficiently. We began each sprint with a planning session, where we defined what to accomplish, which helped in setting realistic goals and ensuring everyone was on the same page. At the end of each sprint, we held a review and retrospective meeting. These were crucial for discussing what went well, what didn’t, and how we could improve our processes in the next sprint. This feedback loop was invaluable for our team’s continuous improvement. On the technical side, we carefully selected design principles and patterns that would support the scalability and maintainability of our application. We adhered to SOLID principles, which guided our software design and ensured our code was clean and manageable. For instance, we followed the Single Responsibility Principle by designing classes that had one responsibility, thereby reducing complexity and making the code easier to maintain. We also implemented several design patterns like Singleton for managing database connections and user account operations, ensuring that these critical components had a global point of access in our application. This pattern was particularly useful for maintaining consistency across operations and reducing overhead. We also placed a high emphasis on using Activities to manage different views, ensuring a seamless user experience. This approach aligned well with our use of the Liskov Substitution Principle, where we designed our system so that classes derived from a base class (Person) were substitutable without altering the desirable properties of the program. Moreover, we used a CI/CD pipeline to automate our builds and deployments, which significantly reduced manual errors and improved our productivity. Each code push to our repository triggered automated builds and tests, ensuring that our main branch always remained stable and deployable. In terms of team communication and collaboration, we used Discord for daily stand-ups and other communications, which kept everyone aligned and fostered a strong team spirit despite some of us working remotely. We managed our tasks and progress using a Trello board, which was an excellent visual aid for tracking the progress of different tasks and ensuring nothing was overlooked. Overall, our adoption of Scrum, combined with strategic design decisions and patterns, not only enhanced our project's development process but also contributed to building a robust, user-friendly application.
Here is our UI Flow Diagram for the project:

Here is our Design Class Diagram for the project:
