The Covid-19 pandemic has significantly changed the way we communicate. Our reliance on digital applications for communication has increased, and thus, the demand for such applications has also grown. Our team was tasked with designing and implement a messages exchange platform using C++ for our Software Design and Implementation (SDI) module. This project uses QTMQTT to facilitate communication using a Client-Server model. We have based our application on two existing messaging services, Discord and Slack. Discord is a gaming-oriented application with a range of features that allows users to communicate with others while in-game (Discord, 2021). On the other hand, slack is a messages exchange platform service that is geared towards workplace communication (Slack, 2021).
The overall aim of our project is to allow users to log in to our platform using their credentials, connect to the service and begin exchanging messages amongst each other. Users can create and delete chat rooms. Within each room, a user can have multiple discussion channels wherein multiple conversations can run concurrently. The user can switch between these channels depending on which conversation they wish to participate in. Moreover, the application also has admin and moderator roles so that users within a room can control who is added or removed from a room. In addition to this, our team also implemented password encryption capabilities to ensure that user accounts were secure since they had to be stored locally.
Through our team’s evaluation of the project upon completion, we found that we were able to effectively design and implement the application within the given time frame due to our detailed research process and diligent adherence to our project plan. We did conclude that for future iterations of this project it would be more effective to use a database instead of text files as this would improve the overall efficiency of the project and prevent data from being stored in numerous locations.
Our write-ups, diagrams and analysis are broken down into five main submissions. The final submission includes a combination of the previous four in addition to other material. Each category is assigned to a particular role.
- Project Manager - Project Plan
- Software Architect - Project Design
- Software Developer - Reference Manual
- Software Tester - Test Plan
- Final Submission - Documentation