Ever wanted to undertake a new hobby or meet new people with similar interests but everywhere you search leads to dead Facebook groups, events in a completely different city or nothing at all? Sometimes you’ve already found some people but you’re unsure how many can make it and you need to book things in advance but you don’t want to be the one having to pay for everything if no ones available.
Eventify is an event organisation and searching application that allows you to do just that. You can search for any planned sport games or hobby meetups at your location without the tedious and potentially futile process. Creating events that all are invited to or just a small get-together with a few friends has never been easier. Although there is a slight overhead in using the application for planning, paid events can automatically calculate and charge all the attendees removing the need for desperately messaging each person for money.
Name: Good Standard
Student number: nnnnnnnn
The system provides a simple application that allows people to host and attend events of varying themes. Whether this is a public event that all are invited to or a small get-together, the application will help manage who’s coming, any payments that are required and notifying attendees of any updates.
The features that the software system should have are:
The scope for the MVP of this system will include the features:
Extensibility refers to how the architecture of the system allows and encourages for extra features to be added. In this case, extensibility is less about users being able to provide extensions but allowing developers to add additional features without the overhead of refactoring the system. Extensibility will allow for quick and easy prototyping and deployment of features.
As the proposed project is very bare in functionality, the architecture should provide an interface that supports additional features such as providing better recommendation services and different payment and cost splitting schemes. For this project, extensibility will be important as the system will be continually added to over its lifespan rather than providing a completed product to ensure that it is well-received before investing more resources. The evaluation of extensibility will depend on how well-defined the interfaces are to implement extra features.
Reliability will refer to how the system is able to consistently provide correct functionality and maintain data consistency between the users and database. Data consistency in this case will mean that all users will be displayed up-to-date and accurate information and there should be time where data has diverged and not synced. To evaluate the reliability of this system, consistency will be ensured and evaluated by metrics provided by error rates and correct behaviour in stress tests.
Reliability is an important attribute for this system as conflicting events such as two people taking the last place in an event can cause undefined and system-breaking behaviour. Users should be able to request that they will attend and not worry that the request failed.
Scalability refers to how a system is able to adapt to varying amounts of concurrent requests or users. This is an important attribute for any system as it ensures a high performance experience to users during high frequency use periods while also preventing redundancy during low frequency periods. The development of a scalable system will require an architecture that supports modular components that can scale independently. In particularly, horizontal scaling will be used as it is better suitable for dynamically scaling by varying the number of instances being run concurrently.
The number of users may vary greatly depending on the time of the year, what types of events are being hosted and where the events are being hosted. By designing the system to be scalable, the system is able to dynamically support increased influx of users within close-by regions without the loss of performance. Evaluation of the scalability will be conducted through the stress-testing tool K6.
Evaluation of the extensibility attribute of the system will be done qualitatively, based on how well defined the interfaces. The architecture of the system should be as bare as possible where the features included in the scope utilise these interfaces. Components should be independent of each other and implementable in isolation.
To evaluate the reliability of the system, basic system tests will be used to ensure that the system is able to provide correct functionality under low-stress environments. The second evaluation metric is to perform these system tests at higher load to test that requests are properly handles rather. System tests should be comprehensive and test all major points of functionality and correctness of the tests at higher load should not drop.
To evaluate how well the system handles high load, the use of qualitative metrics provided by the stress testing framework K6 will be used. To determine that the system is scalable, tests will be performed at varying number of instances to determine how the limits of the system when it has been horizontally scaled. The number of system instances used should scale up and down depending on the request rate.
MVP is slightly ambitious and could be reduced. Proposal is a bit too long, exceeding length limit. Good overview of quality attributes. Evaluation plan is good but needs more detail. How much load are you expecting? What major points of functionality to test?