project-proposal-2024

UniBasement

Abstract

Test preparations is one of the most arduous times of University; the stress and struggle of having an upcoming test but having no answers for past exam papers. This not only creates stress for the students preparing for the exam, but it creates additional work for the teaching staff. UniBasement is an open-source platform to connect university students with past exam answers to ensure that they can improve the efficacy of their study!

UniBasement is designed to empower students to understand the concepts in a deeper manner, at the forefront of the platform is the desire to enable students to have a deeper understanding of the content they are taught and to work with their peers to develop their collective understanding. Within the modern world, studying is more than ever stressful and makes student anxious, easy access to materials to enable students to study in a more effective manner is essential and UniBasement intends to make studying for final exams an easier affair.

Author

Name: Tristan Duncombe

Student number: 47020982

Functionality

UniBasement’s functionality should consist of the following:

Scope

The MVP’s scope will include all expected functionality as well as add some units to esnure that the behvaviour of the platform is as expected. In the MVP off the shelf solutions (such as Auth0) may be used to enable rapid development and to ensure that the MVP is feasible.

Quality Attributes

Availability is the measure of the whether or not a software system will execute assigned taks when they are required. Often it is measured as a system’s available time as compared against the time it is expected to perform which is to say. Hence, it is very important that UniBasement is available to users whenever possible as it affect one’s ability to study. The system should not be bottle-necked during normal usage and thus, availability is a key quality attribute.

Reliability is the ability for a software system to behave as expected and under diverse situations. Reliability is often measured in errors (or reported unexpected behaviour) over a period of time. This is essential as UniBasement is open-source, mitigating issues is a necessity to enable a better over all experience and it is essential that it can function as expect with little intervention.

Maintainability is the ability for a software system to have its performance improved, have faults corrected, or otherwise update or add features to an existing software system. As UniBasement is an open-source project, ensuring that it is maintainable is essential in order to encourage contribution and to mitigate future cost of improvements for the system. This additionally, reduces the likelihood of UniBasement being abandoned.

Evaluation

UniBasement will be expected to meet the functionality requirements as outlined within the Scope of the MVP.

UniBasement’s ability to meet the quality attributes set will be evaluated based on the following criteria:

  1. Availability
    • UniBasement should maintain a measured uptime of over 99%.
    • Necessary downtime (if scheduled) should occur at convenient times for users (e.g., early in the morning).

    Success Criteria: Over 99% uptime over a measured period.

  2. Reliability
    • UniBasement should have unit tests covering the core functionality of the system.
    • Tests should ensure that the system maintains expected behavior.
    • Testing irrelevant or static components is unnecessary.
    • All core functionality must be thoroughly tested.

    Success Criteria: All core functionality tested.

  3. Maintainability
    • UniBasement should follow industry standards for project structure and technologies.
    • Documentation should be provided to enable easy contribution.
    • Developers should have access to tools (e.g., GitHub actions) to improve the developer experience.
    • Components should not exceed a few hundred lines to enhance readability and maintain independence.

    Success Criteria:

    • Comprehensive documentation covering how to begin contributing and key aspects of the system.
    • Availability of developer tools.
    • Components limited to no more than 300 lines.