Milestone 1 Report - bounswe/bounswe2023group7 GitHub Wiki

Milestone 1 Deliverables

Requirements

Diagrams

Project Plan

You can access our project plan from this link.

RAM

You can access our Responsibility Assignment Matrix (RAM) from this link.

Communication Plan

You can access our communication plan using this link.

👤 Contributors

Table of Contents

1. Executive Summary

1.1. Project Description

Welcome to our project, a gaming community platform designed for gamers, e-sport players and developers to connect and cooperate. The objective of the project is to create an area where players can discuss different games, read reviews and participate in online events.

We have a forum on our platform that allows users to engage in discussions and share their views on different topics related to games. The platform can be used by developers as an advertising tool for their forthcoming titles, which will also be accessible to all users. Our group finding feature allows users to find friends and form teams to play with, making it easier to connect with likeminded players.

Furthermore, the platform allows for the creation and promotion of online events for gamers, making it easier for them to participate in different events without having to be physically present. Recommendations for new games and communities that are in line with their interests are provided by our recommendation system. User profiles provide a medium for gamers to showcase their gaming interests.

The platform will be available in both web and application form, making it possible to use the platform from anywhere at any time. Finally, the purpose of our community platform is to give gamers, developers and eSports players access to one another. We hope that users will find the platform informative, user-friendly, and helpful in enhancing their overall experience.

1.2. Status of Project

Since the initiation of the project, the team has been highly organized and efficient in their approach. The team's first step was to establish a GitHub repository, which served as a central hub for all communication and cumulative improvement throughout the project's development. The team members also created their own wiki pages at the beginning of the project, which they updated on a weekly basis to document the progress of the project. In addition, the team created a homepage that serves as a source of information and links to all aspects of the project. To facilitate project and issue management, we introduced a system of labels, which greatly enhanced the comprehensibility of the issues page. Additionally, we standardized the format of certain wiki pages by creating templates, thereby ensuring consistency across the project. For instance, we created pages such as issue creation and meeting notes based on these templates. These efforts allowed for a more organized and streamlined approach to project management and helped us to maintain clarity and coherence throughout the development process.

To ensure effective communication among team members, the team devised a communication plan and designated a communicator to facilitate communication between team members. The team also agreed on a weekly meeting time to discuss progress and provide feedback to one another. The team conducted extensive research on gaming and forum platforms, examining other successful projects and inspiring GitHub repositories to determine the project's essential features. After thorough consideration, the team established the base features of the project and then defined functional and non-functional requirements based on their previous notes and research. The team's methodical approach and meticulous attention to detail ensured the success of the project.

To ensure that our project requirements were valid, we took the initiative to compile a list of questions pertaining to them, which we then presented to our client during a scheduled meeting.

We believed it would be helpful to provide mockup scenarios to help our client better understand how the project would look in certain scenarios, so we designed a number of personas and scenarios to guide the design of our mockups. To facilitate the development process and plan our future steps, we created several different diagrams, including Use-Case, Class, and Sequence diagrams. These diagrams were created in a specific order, beginning with the Use-Case diagram, and then moving on to the Class and Sequence diagrams. During this time, we held numerous meetings to review our progress and plan for the future.

As part of our Milestone-1 report, we created a Responsibility Assignment Matrix (RAM) and Project Plan to keep track of individual responsibilities and tasks. After the creation of the RAM table, each team member filled in their respective boxes based on their progress thus far. Lastly, we individually documented our accomplishments in the Milestone-1 report.

1.3. Forward Plan

Firstly, we plan to make some important decisions regarding the scheduling of meetings and assigning reviewers. Our communication with the assistants will continue to be through Discord, which has been our main communication channel so far.

After reviewing the course syllabus, we have realized that we will soon need to develop a test application as a precursor to the actual project. Although there are some uncertainties and concerns about the size of the project, we are still enthusiastic about starting the development phase. To ensure the success of the project, we will need to divide into three teams: Backend, Frontend, and Mobile. Although we have not yet decided on the specifics of how we will divide into teams, we aim to ensure a balanced distribution of skills and experience. Once the teams are established, we will also determine the appropriate technologies and APIs to be used.

As a team that values punctuality, effective communication, and determination, we are confident that we will successfully execute the project and deliver quality results.

2. List and Status of Deliverables

Deliverable Status Description
Up To Date Project Repository Delivered Our works regarding the project are added to the wiki pages and tracked with issues.
Requirements: Software Requirement Specification Delivered Functional and non-functional requirements are listed in the project wiki. They are updated when it is needed.
Scenarios Delivered Four different user scenarios are listed in the project wiki.
Mockups Delivered Screenshots of mockups for web and mobile applications are listed in the project wiki.
Software Design Documents in UML Delivered Use case, class and sequential diagrams are added to the project wiki.
Project Plan Delivered Project plan is added to the project wiki.
RAM Delivered RAM is added to the project wiki.
Communication Plan Delivered Table of the communication plan is added to the project wiki.
Milestone Report Delivered Milestone 1 report is added to the project wiki.

3. Evaluation of the Status of Deliverables

3.1. Project Repository

Our team utilizes GitHub as a central hub for both project management and external communication regarding our ongoing project. The repository for our project, known as bounswe2023group7, serves as a shared workspace for all 11 members who actively contribute to its development. Through the use of GitHub's various collaboration tools, we are able to effectively organize and manage our project, ensuring seamless communication and progress among team members. By leveraging GitHub's capabilities, our team is able to effectively manage and promote our project, driving it towards success.

When you visit the first page of our repository, you will notice a README.md page. This page comprises two sections: a brief description of the project and a list of contributors who have contributed to the project. This README file also features a hyperlink that takes visitors to our wiki page, where they can find more detailed information about our project. Additionally, our repository includes a dedicated folder for an issue template that we use it for creating tasks and issues about our project.

When we started the project, we used the wiki page created on GitHub a lot to put the information we collected, the work we did, the meeting notes we kept. When you click on the Wiki tab, you will first see the home page. In this page there is a short article about our team, a one paragraph summary of our project, a list of participants with links to the personal pages of team members, a list of links to the pages where we keep meeting notes, requirement pages, list of researches, diagrams and mockups. We used Sidebar to access these pages easily and to make management easier by seeing all the pages of our project. The mentioned pages are directly related to the work we accomplished during the semester. As a team, we utilized the issue structure in our repository to organize and monitor our work progress. We frequently created issues regarding the tasks we performed, evaluated them, offered feedback if needed, and marked them as completed after finishing the task. Consequently, our repository encompasses a thorough compilation of our work, including all relevant details.

3.2. Requirements

Suzan Hoca, instructed in the lecture a strategy to divide the project requirements into two main categories: functional requirements and nonfunctional requirements. Moreover, we split the functional requirements into two subcategories: user requirements and system requirements. To create these requirements, we carefully examined the project description and the information we obtained from the client meeting with the help of our assistant. It's worth noting that these requirements weren't set in stone and underwent some changes periodically to meet our evolving needs. Having these requirements in place helped us to stay aligned and proceed with the project smoothly. Additionally, splitting the requirements into separate headings enabled us to distribute the work equitably and impartially among the team members.

3.3. Scenarios

We have developed four distinct scenarios to showcase the key features of our website: Events, Forums, Groups, and Game Pages. Each scenario has been assigned to a designated team member for completion. For each scenario, we have included information on the user persona, their story, goals, and actions. Additionally, we have incorporated user requirements into the acceptance criteria section. To provide visual context, we have included mock-ups of the pages where these scenarios take place. We believe that these scenarios will highlight the unique aspects of our website and demonstrate its value to potential users.

3.4. Software Design Documents in UML

The team worked together to create three different types of diagrams - use case, class, and sequence diagrams - that demonstrate and summarize how our program works in accordance with the project requirements outlined by our course instructors. Each diagram was produced using the features of the Lucidchart software. Although these diagrams have already been designed, we will keep them current by incorporating any changes that may emerge throughout the project's development.

3.4.1 Use Case Diagrams

The use-case diagram is a graphical representation that displays how users interact with the system and the different pathways available for each user type to complete a specific action as outlined in our project requirements. Our diagram identifies three types of users: registered and non-registered users, group administrators, and system administrators, each with their own set of possible pathways. The diagram uses specific arrows to show the relationships and organization of the functionalities, such as the "includes" arrow that indicates the included use case's behavior is part of the base use case, and the "extends" arrow that adds more functionality to the system. By looking at the use-case diagram, anyone can understand the steps each user type needs to follow to use our application's services.

3.4.2. Class Diagrams

The class diagram is a visual representation that displays the structure of our project by providing a comprehensive list of all classes, their attributes, and methods. This diagram also depicts the connections and relationships between classes, providing a detailed and more in-depth view of the system's functionalities compared to the use-case and sequence diagrams. By using the class diagram, we can easily identify and manage the program's classes and their relationships with one another, allowing for a more structured and organized development process. The class diagram utilizes four types of arrows to show the relationships between classes: Aggregation, Composition, Multiplicity, and Inheritance. Aggregation is represented by a hollow diamond-headed arrow and depicts a "part-of" relationship, where the whole object can exist without the part object. Composition, on the other hand, is represented by a filled diamond-headed arrow and shows a "composed-of" relationship, where the whole object cannot exist without the part object. Multiplicity is represented by an arrow with a numeric range, and it indicates the number of instances of one class associated with a single instance of another class. Finally, Inheritance is shown by an arrow with an unfilled triangle head pointing to the superclass, and it indicates that the subclass inherits all of the attributes and methods of the superclass.

3.4.3. Sequence Diagrams

During system operation, classes and their functions are utilized to carry out tasks, while sequence diagrams are employed to explain object interaction for a specific use case and to highlight class relationships via functions. To illustrate the exchange of information between system states, simple arrows, return arrows, asynchronous message arrows, and conditional message arrows are used. Although sequence diagrams cannot encompass all potential use cases, the 12 distinct ones designed are sufficient to cover the most crucial ones. Consistency between the class diagram, use case diagram, and sequence diagrams is crucial, and the latter are designed accordingly.

3.5. Communication Plan

When our groups were initially formed, we established a WhatsApp group for communication. We deliberated on which communication channel to use, and ultimately agreed on Discord due to its user-friendly audio and video communication features, widespread usage among group members, and convenient mobile application. We set up ten Discord channels, with General, Resources, Meeting Notes, and Templates being the most frequently used. Lounge audio channel was utilized for our meetings, which we aimed to conduct face-to-face on Thursdays or Fridays. In instances where we required urgent communication, WhatsApp was used as it allowed for immediate messaging.

Surveys feature on WhatsApp was also employed for decision-making purposes since Discord lacks this function. Tasks were created, discussed, and reviewed on Github.

Communication with the lecturer and teaching assistants was facilitated through lectures in class, PSs on every monday, and Discord via communicator.

3.6. Project Plan & RAM

When we began preparing this report, we initiated the creation of the Project Plan and RAM. Elif, Yunus Emre, and Muhammet Tayyip convened to establish the project plan, and they utilized meeting notes and the issues list to input the completed work into the Project Libre application. Although the application proved to be challenging to use, particularly regarding date selection, the Gantt Chart was automatically generated as we entered tasks. Similarly, Sena completed the RAM table by consulting the meeting notes and the issues list. Each team member reviewed their own work and filled in any missing information.

4. Evaluation of Tools and Processes

4.1. Evaluation of Tools

We have used various tools to accomplish different goals up to this milestone. When choosing a tool for a specific task, we considered multiple factors. It was important that the tool allowed us to work together collaboratively and monitor each other's progress, as we assigned tasks among team members to ensure everyone contributed equally. Additionally, we prioritized tools that were easy to use and tools that had more free useful features. List and evaluation of the tools that we used can be found below.

4.1.1. GitHub

Our team has been using GitHub for version control and collaboration during the development of our application. We have primarily utilized GitHub's issue and wiki features to manage our project tasks so far.

GitHub's issue tracking feature has been useful for our team's project management (tasks). We have been able to create and assign issues for tasks as well as track their progress and communicate with team members about their status. This has helped us to stay organized and ensure that our project stays on schedule.

GitHub's wiki pages feature has been essential in storing and sharing our project deliverables. We have been able to create pages for our deliverables, and easily share them with team members. This has helped our team to stay organized and on-track during the development process, as well as ensure that everyone has access to the project deliverables.

4.1.2. Discord

Our team has been using Discord for communication during the development of our application. Discord has been the primary communication platform for our team, allowing us to collaborate and communicate in real-time during the development process. Additionally, we used discord to communicate with our teacher and assistant.

Discord has met our communication needs by providing a variety of communication options, including text, voice, and video chat. This has allowed us to have real-time discussions about the project, share ideas, ask questions, and provide feedback to each other. The accessibility of Discord on multiple devices and operating systems has also been convenient for team members to stay connected and communicate regardless of their location.

4.1.3. Whatsapp

In addition to using Discord as our primary communication tool, our team has also utilized WhatsApp to communicate so far. WhatsApp has primarily been used for quick updates and informal communication between team members.

The most important benefit that encouraged us to use Whatsapp was its convenience. The app is easily accessible on mobile devices, making it easy for team members to communicate on-the-go or outside of scheduled meetings. This has allowed for quick updates and informal communication to take place without disrupting the flow of work.

4.1.4. Lucidchart

Our team has used Lucidchart as a tool for creating use case, sequence, and class diagrams for the application. Lucidchart is a web-based diagramming and visualization tool that allows for collaborative diagramming in real-time. Its ease of use (especially drag and drop interface and pre-built templates) and collaborative capabilities encouraged us to use it. We have worked on the same page together to create use-case and class diagrams.

4.1.5. ProjectLibre

Our team used ProjectLibre, an open-source project management software, for creating our project plan for the development of the application. ProjectLibre offers a range of features for project scheduling, resource allocation, and tracking progress.

ProjectLibre allowed us to easily create our project plan as a Gantt Chart by inputting our project tasks, their durations and assignees.

4.1.6. Figma

Our team used Figma for all the designs of the mockups. We created out web and android samples in Figma. Figma is a web-based interface design tool that allows users to create, collaborate, and share design mockups and prototypes. It is popular among UX/UI designers and design teams for its real-time collaboration features, cloud-based storage, and accessibility across different platforms. Figma provides a range of design tools, including vector editing, prototyping, and design system creation. It also allows for version control and commenting on designs, making it easier for teams to work together and iterate on designs

Figma allowed us to create higher class mockup design and work together effectively.

4.2. Evaluation of Processes

4.2.1. Team Meetings

Our team has held meetings once or twice a week so far. The purpose of these meetings was to discuss project progress, address challenges, and plan next steps.

Our team meetings were well-structured and organized. Before each meeting, team members were encouraged to write down topics they felt should be discussed. During the meeting, a moderator guided the discussion, making sure that everyone had a chance to contribute and every topic was discussed. A designated note-taker kept track of the topics discussed and the decisions made. This helped keep the meeting on track and ensure that everyone was focused on the same objectives.

The status of the tasks was discussed during each meeting. New tasks were identified and assigned to team members. This helped ensure that everyone had a clear understanding of what needed to be done and who was responsible for each task. Additionally, the note-taker published the meeting notes to the GitHub wiki, which helped ensure that all team members were aware of what was discussed and the tasks assigned.

4.2.2. PS & Customer Meetings & Lectures

We had a meeting with our assistant, Büşra Oğuzoğlu, on March 9 via the communication channel, Discord. The meeting's goal was to clarify our shared project definition, which had already been reviewed before the scheduled meeting. We created a list of questions in advance of the meeting to help us sort out any ambiguities we had about the project. Our assistant helped us during the meeting by answering our questions and helping to resolve any confusion we had about the project.

Additionally, each week the groups' repository was inspected in the PSs organized, and we tried to incorporate the feedback they got into our project. Our repository was examined on March 27 at the PS, and we presented our requirements, particularly our mock-ups, which were examined and assessed by the assistants, who provided us with helpful input.

We communicated with our assistant, Büşra Oğuzoğlu, via the assigned channel on Discord throughout the project if we had any problems or needed comments on our weekly assignments, and we benefited from her feedback. The discussions we had during the course and the arguments provided by the project groups for their work were also helpful in the project process.

4.2.3. Issue Management

Our team has effectively utilized GitHub issues for managing the tasks in the project. By assigning a reviewer to each issue and labeling them with colored tags based on type, status, priority, and effort required, we have been able to efficiently track and manage progress. Additionally, we have been using an issue template, prepared by Melih Gezer, to ensure consistency in the way issues are reported and managed. To sum up, the approach to issue management in GitHub appears to be well-organized and effective for the needs of our project.

5. Individual Contribution Reports