project-proposal-2024

Proximity Encounter

Abstract

Feeling tired of scheduling a Teams meeting into your workmate’s calendar just to ask how their weekend’s been? With the arrival of COVID-19, workplaces have become increasingly more remote and offices are turning into barren storehouses for chairs and desks. This removes the possibility of informal interactions. As insignificant as it may seem, those chance encounters in front of the coffee machine are valuable opportunities to build connections within the workplace.

Proximity Encounter aims to bring the collaborative environment of the office into your own home and find the intersection between work and play. Proximity Encounter is a desktop environment that places the user within a virtual space where they are able to access applications and files by navigating their avatar through the space. This environment can be shared amongst teams and users within the same space can talk to each other using proximity-based voice chat. This allows coworkers to feel connected to one another and simulates those accidental crossing paths moments.

Author

Name: Ly Phung

Student number: 46985280

Functionality

The primary objective of this project is to develop a virtual workspace that bridges the gap between the office and home environments, enabling remote employees to engage in spontaneous interactions akin to those of traditional office settings. This is done by creating a desktop environment within a shared virtual space where users will navigate through it to access applications or files and can talk to others through proximity-based voice chat when they bump into each other.

Features

The features that the software system should have are:

- Account and User Groups:

- Graphical User Interface

- Applications and Files

- Proximity-based Voice Chat

- Navigation

Scope

The scope for the MVP of this system will include the following features:

- Account and User Groups:

- Graphical User Interface

- Applications and Files

- Proximity-based Voice Chat

- Navigation

Quality Attributes

Extensibility

Extensibility refers to how easily features or extensions can be added to the software over its lifespan.

Company administrators who are using the application should be able to add additional user identifiers such as various groups and security measures like passwords to the employees’ accounts. This is important as larger companies can have very complex hierarchical structures that require seamless organisation as well as protection for employee accounts. From the developers’ side, features can be easily added to the system as it grows, such as user status, current music playing, etc. As the virtual environment is very flexible by design, in order to support an arbitrary number of applications and files, it also provides an easy development pathway to extend the system for additional features.

Extensibility will be evaluated based on how easily and seamlessly newer features can be integrated into the system.

Interoperability

Interoperability refers to how easily the software can share information and exchange data with internal components and other systems.

This is a very important attribute of the system as the desktop environment requires knowledge of all the applications and file system of the computer as well as communicate between them and pass information in order to display features. As the system grows, certain apps can also incorporate new functionality that adds to the virtual environment and users can create more complex workflows between applications in their system.

Interoperability will be evaluated based on how well the system can support all applications and files available on the user’s computer.

Reliability

Reliability refers to how consistently the software delivers its functionality without failure.

As a system that controls the users’ applications and files, companies will require that this system is consistently available during the work week with no outages and crashes that will interfere with the client’s operations. In the event of a crash or outage of some kind, applications should be safely exited where possible.

Reliability will be evaluated by examining error rates and confirming proper functionality under stress test conditions.

Security

Security refers to how well the software maintains normal operations and functionality even when subjected to attacks. Systems and resources in its environment should remain safe and the attacks are detected and mitigated. Companies often deal with sensitive data, especially concerning clients, and the system will also have access to the users’ own personal data as well. This makes security an essential feature for this system.

Security will be evaluated through various methods such as penetration testing, routine security audits, code analysis and vulnerability scanning using third party cyber security specialists as well as tools such as SonarQube.

Evaluation

Extensibility

To evaluate the extensibility of the system, the code and architecture of the system will be focused on. The system should have a minimal number of foundational components upon which additional features can be added without interfering with the functionality of those components. There should be low coupling between these foundational and additional components. Quantitative criteria will be based on how many hours are required to implement new features of various complexity.

Interoperability

Interoperability will be evaluated based on what percentage of the user’s applications and files are available to be displayed and integrated into the system. This will not include system files and hidden files.

Reliability

To evaluate reliability of the system, system tests such as opening a certain number of applications and files at various thresholds, such as 1 application and 1 file and ramping up, will be run at various loads. These will range from a small team of 4 people to a large-scale team of upwards of 100 people. The success rate of these tests should be examined to ensure that there is no decline at higher loads.

Security

Security will be evaluated through analysing the success rate of common tests such as SQL injections and other code reviews to ensure that there are no potential vulnerabilities. Authentication and authorisation attempts will also be reviewed and monitored to ensure that malicious attempts are caught and prevented. Penetration testing from cyber security specialists will also be carried out to ensure a clean report.