project-proposal-2024

Riding in a Share

Abstract

In this post-COVID lockdown era, employers are increasingly mandating office work causing public transportation and roads to be more congested than ever. Many of the cars on the road are not fully utilising their full capacity when many of the only containing one passenger, the driver. This project aims to address this issue by creating a ride-sharing app where users can anonymously pre-plan their trips for others to request to join. This should allow the driver to then cover some of the fuel or battery usage cost in this world where petrol and electricity prices seems to endlessly increase.

The app is designed to plan the most cost-effective routes and only allows users to join rides if it is convenient for the driver. It is built to be highly available and scalable, capable of accommodating a growing number of users.

Security is a quality attribute that is paramount feature of this app. Its architecture will need to be designed to resist attacks and securely store sensitive suer data, such as planned routes. This is to prevent potential misuse by malicious parties.

Author

Name: Pramith Kodali

Student number: 45837056

Functionality

The ride-sharing app should be available on both mobile through an app regardless of the operating system and desktops through a website. The apps interface should be simple and user-friendly allowing users to manage or book rides quick and efficiently. The app should allow each user to have profiles which they can customise with information about themselves and contain ratings and reviews. The app should contain a search feature that does the path finding that considers traffic data. The app should also be able to securely process payments and seamlessly charge customers complete a ride.

Scope

The scope of this project for the Minimum Viable Product (MVP) encompasses the following features:

However, the MVP will not include the following:

Quality Attributes

The project prioritises Availability, Scalability and Security as the three main key quality attributes. While others like Testability, Deployability, Reliability, and Maintainability aren’t explicitly listed, they are still integral and will be incorporated during design and implementation.

Availability => Availability is a critical quality attribute for our app. Given that riders and drivers may plan or request rides at any time, and these plans can change without notice, it’s essential that the app is always available. This ensures a seamless experience and prevents any user from being left without a ride or rider.

Scalability => Scalability is another critical quality attribute. While the app may initially only have a few hundred users, the goal is widespread adoption, which will significantly increase the load on the app and its infrastructure. Therefore, the app must be scalable to accommodate large user increases and economically obtain the necessary resources to handle the load.

Security => Security is another critical quality attribute. Given the sensitive nature of the data stored, the app could attract malicious entities aiming to steal this information. Therefore, the app must be capable of maintaining normal operations during such attacks and ensure the data remains secure.

Evaluation

To assess the success of the project, the initial step involves verifying that the Minimum Viable Product (MVP) has been implemented seamlessly, devoid of any bugs. Subsequently, we would evaluate the system’s availability by simulating a high-load scenario with a variety of actions being tested, ensuring the application remains operational under stress.

In tandem with availability testing, we can also examine scalability by confirming that the application scales effectively in response to varying loads. Utilising the built-in monitoring tools provided by Amazon Web Services, we can ensure that the scaling process remains economically viable.

Lastly, to scrutinise the security measures in place, we would employ known attack techniques in an attempt to access unauthorised data, thereby ensuring the application’s resilience and continued functionality. This comprehensive evaluation approach ensures that our project not only meets but exceeds the standards of a successful implementation.