Rent-a-Park
Abstract
Are you frustrated with being charged through the roof to park near your workplace? Or do you want to use your extra parking space to make money for you?
Rent-a-park allows residents and businesses to easily rent out surplus parking spaces. Resulting in cheaper prices for customers and extra cash for providers. You can search for parking spaces in your area, book ahead and sign up for long-term fixed rates.
Author
Name: Lachlan Harnett
Student number: 45804339
Functionality
The core features of the application are listed below:
Accounts
- User accounts for providers and customers.
Listings
- Providers should be able to create listings with details of their parking spaces.
Search
- Ability to find appropriate parking spaces based on location, price, availability and other factors.
Booking
- The system should allow bookings and keep track of when parking spaces are available
Payment
- The application should securely facilitate payment between parties.
Communication
- The application should provide a method of communicating with the other parties.
Scope
The scope for the MVP of this product will include the following features:
Accounts
- An identity access management system will need to be implemented to ensure user information is secure.
- A login and sign up system for users to access the application.
- Ability to switch between a customer and provider view.
Listings
- A way for providers to list parking spaces for rent.
- Providers should also be able to edit and delete listings.
Search
- Find appropriate parking spaces based on filters such as location, price and availability.
- Sort listings based on the parameters above.
Booking
- Make, manage and view bookings.
- Handle simultaneous bookings without clashes.
- Show when parking spaces are available.
Quality Attributes
The three most important quality attributes are listed in order below, along with specific security considerations for this application.
Availability
Since this is a customer facing application, real-time access is essential and it is therefore vital to ensure the application is available at all times. Users attempting to book parking while the system is down would cause frustration and wasted time.
Additionally, whilst the system is unavailable, providers cannot manage their listings or confirm bookings, and customers will not be able to access important information. Ensuring functional user access to the application provides clear criteria for evaluation.
Deployability
This application will constantly be expanding into new regions and multiple local deployments will be required to provide a high level of performance. There may also be differences in regional configurations of the application so a high degree of deployability will ensure updates can be seamlessly deployed across many regions.
Deployability refers to how easily and efficiently the system can be deployed, updated, and managed in different environments. A well-deployed system ensures fast releases, minimal downtime, and easy rollback mechanisms.
Scalablity
Parking demand changes greatly across different times of the day, week and year, so the system will need to handle highly varying workloads. Due to this ebb and flow of user activity, the system will also need to ensure that resources are economically utilised across a spectrum of user activity. Customers expect a high degree of performance, and scalability ensures that the system function with low response times.
The scalability of the system determines how well it can handle an increasing number of users and data while maintaining performance. An evaluation should focus on resource efficiency, system limits, and functional stability under varying loads.
Security
As this application will handle payment data, it will require a high degree of security. Additionally, it is important that users are not allowed to spoof other users or repeatedly create bogus accounts to waste users time. As users may be listing parking spaces in their personal residence, they may also wish to hide other personal information, and this information should not be exposed to other users.
A well secured system protects data, user privacy and system integrity against unauthorized access, attacks and misuse.
Evaluation
Availability
- The availability of the system can be evaluated by ensuring the application performs expectedly at a reasonable maximum load, A load testing tool such as Locust can be used to subject the system to a certain load and ensure that availability of the site is sufficiently maintained.
- Measurements should be taken of the uptime of the system and the time taken to restart the system if it is subject to downtime.
Downtime required for developers to launch new versions of the system should be measured. Each of these should be evaluated against reasonsable benchmarks.
- The system should also incorporate logging using a tool like Prometheus and these logs should be analysed to ensure the system is able to recover from minor failures.
Deployability
- The deployability of the system can be evaluated qualitatively by investigating the ease of the deployment process as well the required manual steps.
- Quantitative evaluation would incorporate how quickly the system can be deployed in a new region.
- Evaluation should also cover how quickly service can be restored in the case a failed deployment is released.
- The ease in which the system can be replicated in a different environment should also be evaluated.
- Deployability across cloud platform providers could also be analysed by investigating the level of dependency on the chosen cloud provider.
Scalability
- Ensure the system is appropriately scaling to meet user demand, and investigate the resource efficiency of the system at varying loads.
- The maximum concurrent users of the system before service substantially degrades should also be measured.
- Declines in the performance of the functionality of the system at various load levels should be measured.
- User testing should be undertaken to establish reasonable benchmarks that the previously mentioned measurements can be compared to.
Security
- A vulnerability assessment should be undertaken of the application, and the system should protect against common attack vectors.
- The system should ensure that any sensitive information is protected from unauthorised access through encryption.
- A static analysis of the application’s code should be undertaken to identify potential exploits.
- Common protections such as login lockouts, throttling and multi-factor authentication should be successfully implemented.
Functionality
- Account functionality can be tested by successfully signing up and logging into an account. Listings should be created to ensure users can only manage their listings.
- Listing functionality can be tested by successfully creating a listing and ensuring it is available to other users. Listings should also be able to be deleted and edited.
- Search functionality can be tested by ensuring all appropriate listings are shown when search filters are selected. Sorting can be tested by checking the ordering of listings.
- Booking functionality can be tested by attempting to access the booking availabilities and ensuring these are correct. Tests should also incorporate a large number of users attempting to make the same booking simultaneously, and ensuring that only one user is able to make the booking.