project-proposal-2025

NextBook

Abstract

If you like reading books and finding it difficult to find a book to read next then the NextBook app will benefit you. Often finding other people who like reading similar books may help you find the next book to read from their reviews or ratings. With the NextBook app you can follow other people who like similar books, view thier reviews and ratings, which may help you decide on your next book to read. You can also view recommendations of books to read based on your ratings of books you have read. With an app that will be scalable, extendable with new features in the future, and highly available, easily find your next book to read.

Author

Name: Christopher Chudleigh

Student number: 33077055

Functionality

The distributed system will consist of a client app, web interface and backend. The system will enable users to rate and review books they have read, view other users ratings and reviews, follow other users who may like reading similar books, and view recommendations based on their ratings of books they have read.

They can register, authenticate and update their user profile. The user can browse or search for books and also have a currently reading and wishlist of books to read. Users could purchase books that they want to read through the app. With an extendable design, other features could be easily added in the future or expanded according to popularity such as realtime chat.

Scope

For the MVP:

Quality Attributes

Scalability

Scalability refers to how well the system performs as the number of requests increases.

The system need to scale according to demand, as the number of users may vary due to popularity of the app, and could rapidly change. This is a very important quality attribute for the system as the more users the system has, the more likely they can find their next book, and the more popular the system may become.

Availability

Availability, for the NextBook system, refers to users being able to access the system functionality on demand.

For the full system, on demand refers to the functionality to be available on any platform, at any time. For our MVP, on demand only refers to anytime as only the web client interface will be developed.

Availability is important for NextBook, otherwise users may not want to use the system if it is unavailable, and as a result the popularity of the system may decline which would be very detrimental as this system depends on lots of users to be successful.

Extensibility

Extensibility refers to the NextBook system being able to have new features easily added to allow NextBook to evolve and adapt over time according to what features are popular or in demand from its users.

This quality attribute is important, as what features are popular may change over time. Also adding new features to NextBook over time would maintain and increase the popularity of the system. If the system is extensible it would lower the cost and make it easier to add new features and enable the system to grow if it becomes mroe popular.

Evaluation

Scalability

Load testing software can be used to simulate various types of scenarios to see how well the system functionality responds to various loads.

Possible scenarios could include measuring performance statistics:

Availability

Monitoring uptime through a cloud monitoring service can give statistics on how available the service is such as uptime and load. The system requires good availability but not 100% which would probably not be worth the cost. This could change over the system’s lifetime but for this project, 99% would be the target to start with. This may be able to be combined with the load testing scenarios to test the availability under different loads as well and see if the system is still usable by a user by measuring the latency as well.

Extensibility

Reviewing what changes are required to be made to the NextBook system to add a new feature and how many steps are involved to add a new feature will indicate how extensible the system is. Extensibility will also be meaasured by seeing if changes to existing apis and core code are kept low when adding new features.

Functionality

User testing of the features such as search and browse functionailty, creating reviews and ratings for books, quality of recommendations suggested to user, and following/unfollowing other users can be done to see if the NextBook system meets the functional requirements. Some unit testing could also be used to check functionality.