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
- Signup -> Verification -> Choose subscription plan -> Start using the appliation
- Login -> Create job -> Enter site information -> Request calcs -> Review -> Complete
- Login -> Search/Open a pending job -> complete site information -> Request calcs -> Review -> Complete
- Login -> Search/Open a completed job -> download detailed report
- Login -> Manage profile.
Features
- New user signup and verification using the SPA web application or a mobile application.
- Manage profile and password reset and recovery.
- Monthly subscription plan using Stripe Payment Gateway.
- Two-Factor authentication
- Manage jobs: create, request calculations , complete or cancel jobs.
- User Dashboard with job listings and metrics for number of jobs completed per month.
- Site pinning: Pin the exact location of the structure on the map when adding site details.
- 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
- Review and adjust calculation results manually.
- Complete and generate reports.
- Allow external systems to manage jobs via API intergrations.
Scope
- 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.
- 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.
- 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
- Review: Users can review the calculated design windspeed and complete the job.
- Report Generation: A simple HTML/PDF report outlining the results will be generated and available for the user to download from the job.
- 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
- Scalability is important to Windemometer because as the user base and their activities increases, the system needs to handle the increased traffic without slowing down. The system needs to be designed to automatically scale up and down on user demand, ensuring that the system can handle a large number of concurrent users, job requests and calculations.
- Scalability can be tested using load testing tools to simulate increasing levels of traffic and hence various metrics can then be used to measure how well the system responds. These metrics are to do with response time, request throughput and error rate at different levels of traffic.
Availability
- Availability is important to the Windemometer system because it needs to always be accessible and functional. The system’s users; which include engineers, architects, builders, and shed sellers; rely on the Windemometer to calculate and provide accurate design wind speeds for their building projects. If the system experiences downtime or experience faults that prevent the user from calculating a design wind speed for a location, it could lead to delays in project timelines and loss of revenue.
- Availability for Windemometer can be tested using ping testing, load and stress testing, simulating errors, failover mechanisms and redundency testing, and the systems ability to recover from a disaster such as cyber attack.
The results from the above can be evaluated using metrics for monitoring uptime, response time, error rate, time to recover and time taken for system to switch to a healthy version of a failing service.
Modularity
- Modularity is crucial for the Windemometer system as it enables the separation of numerous calculations as services, each with its own bounded context and data. This makes it easy to work on individual calculations and deploy them without affecting other services, reducing the risk of system-wide calculation failures. In addition, as the calculations may change over time or adhere to standards of other countries, such as the USA, this modular approach becomes a key factor in accommodating such changes.
- Modularity can be tested by the ability of separating the comprehensive calculations into individual services that can be worked on independently, tested and deployed. This is measurable by the availability of the service, its communication between other services without errors/delays and the response time of the system that it takes for a user request.
Reliability
- Reliability is extremely crucial to the Windemometer system because it will help to ensure that the wind speed calculations are consistent and accurate. Wind speed calculations play a vital role in designing the construction of buildings that are exposed to significant wind loads. If the calculations are inaccurate, it can lead to a flawed design that is not structurally sound, making the building unsafe and prone to failure. It can also lead to over or under design that will lead to higher construction costs or legal issues if the building does not meet the standards.
- Reliability of the calculations can be tested by unit, functional and live testing. This is to ensure that the calculation results are accurate and consistant. Error rate of the calculations can also be reviewed from logs.
Security
- Security is important for Windemometer to prevent unauthorised access or malicious attacks. It also helps to maintain the integrity of the wind speed calculations and ensure that the system is not compromised.
- Testing and measuring security for Windemometer can be done through a combination of manual and automated techniques such as penetration testing, vulnerability scanning, code analysis, and regular security audits. It can be measured by looking at the authentication and authorisation success rates, the percentage of data that is encrypted and vulnerabilty scan results.
Evaluation
Scalability
- 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.
- 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.
- 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.
- 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
- Simulate various scenarios of user traffic and load on the system for a period of time using a tool like k6.
- 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.
- The above results will then be compared with the expected levels to determine if the system has achieved the quality attribute of availability.
Modularity
- Analyse the code structure, dependencies and interations bewteen the calculation and other services to ensure that they are loosely coupled and highly cohesive.
- Measure the maintainability of each service by analysing the code complexity and readability.
- Ability to run unit and functional tests against the modular service.
- Ability to scale up and down the modular services horizontally during load.
- The above will then be compared with the expected levels to determine if the system has achieved the quality attribute of modularity.
Reliability
- Run unit and functional tests to compare design wind speed calulations done by the windemometer with the actual results.
- Run various loads on the system and evaluate the consistency of the results produced for a set of jobs over a period of time.
- Analyse any errors to check if its related to the calculations.
- The above will then be compared with the expected levels to determine if the system has achieved the quality attribute of reliability.
Security
- Monitor the success rates of authentication and authorisation attempts from services to ensure secure access.
- Implement two-factor authentication to provide an additional layer of security.
- Review the code to identify and address potential vulnerabilities and risks, such as SQL injection or cross-site scripting.
- Implement input validation and sanitisation to prevent attacks like buffer overflows or command injection.
- Conduct penetration testing to identify and address any security weaknesses and ensure the system meets the expected security standards.
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.