project-proposal-examples

Good: Windemometer (wind speed calculator)

wind + anemometer (World’s first windspeed calculator equipment built in the 14th century. Anemometer comes from the greek word anemos which means wind)

Abstract

To develop a highly scalable and reliable Design Wind Speed Calculation SaaS application (Windemometer) for the building industry, targeting thousands of Engineers, Architects, Builders, and Shed Sellers across Australia and New Zealand.
Design wind speed is a crucial factor in structural engineering, as it is used to determine the appropriate design of buildings, bridges, towers, and other structures to withstand wind loads.
All calculations will be based on the AS/NZ1170.2:2021 standard and will be designed in a modular way so that they can be managed independently. The secure web and mobile application will be available from the Internet and will allow its users to generate detailed reports that can be signed by engineers and escalated for council approval.

Author

Name: Good Standard
Student number: nnnnnnnn

Functionality

Overview of numerous flows

Features

  1. New user signup and verification using the SPA web application or a mobile application.
  2. Manage profile and password reset and recovery.
  3. Monthly subscription plan using Stripe Payment Gateway.
  4. Two-Factor authentication
  5. Manage jobs: create, request calculations , complete or cancel jobs.
  6. User Dashboard with job listings and metrics for number of jobs completed per month.
  7. Site pinning: Pin the exact location of the structure on the map when adding site details.
  8. Request auto calculations. The following will be automated:
    • Wind region classification: determine which region the site is located in
    • Topography factor: effect of wind due to building location and height of hill, ridge or escarpment
    • Terrain category factor classification: machine learning service that determines the terrain types for all cardinals
    • Shielding factor: based on nearby obstructions such as houses, buildings, trees and vegetation
    • Regional wind speed: the peak gust wind speed at 10 metres above ground surface in open terrain with a sufficiently uniform long fetch in all directions
    • Earthquake factor and detect fault lines nearby
    • Use all the above results to calculate a design wind speed
  9. Review and adjust calculation results manually.
  10. Complete and generate reports.
  11. Allow external systems to manage jobs via API intergrations.

Scope

  1. User Login: Create a SPA web application that allows users to login using Two-Factor authentication and create a new job in Australia. The assumption is that users have already gone through the registration and verification process.
  2. User Dashboard: Shows a list of Pending and Completed jobs. Users can filter between Pending and Completed Jobs. Allow users to open existing jobs or create a new one from their dashboard.
  3. New Job:
    • Allow users to enter job details
    • Enter site details
    • Enter client details
    • Enter all of the calculations/factors manually except for the design windspeed
    • Request to calculate design windspeed
  4. Review: Users can review the calculated design windspeed and complete the job.
  5. Report Generation: A simple HTML/PDF report outlining the results will be generated and available for the user to download from the job.
  6. Existing Job: Load job with all data including any previously calculated results. Prevent user from making any changes if the job has been completed.

Quality Attributes

Scalability

Availability

Modularity

Reliability

Security

Evaluation

Scalability

  1. Test the system’s ability to handle increased load: Increase the load on the system incrementally and use metrics to evaluate the system’s average response time. Analyse the results to determine whether the system is able to handle increased load while maintaining an acceptable level of response time. If the system can handle increased load without a significant decrease in performance, it can be deemed scalable.
  2. Determine maximum throughput: Determine the maximum number of requests that the system can handle per second and compare it against the performance requirements. If the system can handle the required number of requests without issues, it can be deemed scalable.
  3. Analyse error rate: Monitor the error rate during the load testing phase. Look for any issues that may be impacting system performance and determine whether they need to be addressed before the system can be deemed scalable.
  4. Ensure that the necessary services are horizontally scaling during load. This will help to ensure that the system can handle increased load and maintain performance.

Availability

  1. Simulate various scenarios of user traffic and load on the system for a period of time using a tool like k6.
  2. Using monitoring tools, metrics and logs:
    • Analyse the uptime or the time the system was available during the period of the various loads and calculate the percentage of uptime.
    • Analyse the downtime and its effect on the system.
    • Analyse the response time it takes to respond to user requests and whether it meets expectations.
    • Analyse the errors and faults and their occurrence rate.
  3. The above results will then be compared with the expected levels to determine if the system has achieved the quality attribute of availability.

Modularity

  1. Analyse the code structure, dependencies and interations bewteen the calculation and other services to ensure that they are loosely coupled and highly cohesive.
  2. Measure the maintainability of each service by analysing the code complexity and readability.
  3. Ability to run unit and functional tests against the modular service.
  4. Ability to scale up and down the modular services horizontally during load.
  5. The above will then be compared with the expected levels to determine if the system has achieved the quality attribute of modularity.

Reliability

  1. Run unit and functional tests to compare design wind speed calulations done by the windemometer with the actual results.
  2. Run various loads on the system and evaluate the consistency of the results produced for a set of jobs over a period of time.
  3. Analyse any errors to check if its related to the calculations.
  4. The above will then be compared with the expected levels to determine if the system has achieved the quality attribute of reliability.

Security

  1. Monitor the success rates of authentication and authorisation attempts from services to ensure secure access.
  2. Implement two-factor authentication to provide an additional layer of security.
  3. Review the code to identify and address potential vulnerabilities and risks, such as SQL injection or cross-site scripting.
  4. Implement input validation and sanitisation to prevent attacks like buffer overflows or command injection.
  5. Conduct penetration testing to identify and address any security weaknesses and ensure the system meets the expected security standards.

Comments

Great proposal but verbose and far too long, exceeding length limit. Potentially interoperability could be a quality attribute to think about, importing data from other sources importing/exporting calculations from engineering tools. Usually you should have specific evaluation targets to hit, but the evaluation plan given is robust where you could figure out the evaluation ranges from running the tests.