Skip to content

System Requirement Specification V1

Ryan Trickett edited this page Jun 5, 2023 · 1 revision

User Stories Overview

For the system FridgeToPlate, the User stories would be from the perspective of the end-user.

The end-user in this regard would be the actor that will be using the application as per the business requirements. That is, for the purposes of generating a recipe from the food ingredients available within their inventory.

The end-user will use the application as such:

  1. The user authenticates their identity using the Authentication subsystem depending on if they have already registered their details on the system (Login functionality) or if they are creating a new account (Signup functionality)

  2. Upon successful authentication they will be granted access to the rest of the system. Wherein they would be able to edit their preferences and available ingredients using the Profile Management subsystem as well as the Recommendation management subsystem.

  3. The user would also be able to get generic recommendations not based on their available ingredients. As well as use the Recommendation Management subsystem to perform a step-by-step process to generate a recipe based on their preferences as well as the available ingredients.

  4. Upon the successful generation of a set of tailored recipes, the user can then click the recipe to start the process of preparing the recipe or save it to their profile to do so at a later time or share.

As per use case diagrams, the user stories would be as follows for each subsystem:

User Stories

Authentication

  1. As an end user, I would like to be able to sign up on the platform so that I can have my credentials and preferences stored on the system and access them when I use the system.
  2. As an end user, I would like to be able to login on the platform so that I can access my credentials and preferences stored on the system when I use it.
  3. As an end user, I would like to be able to logout from my profile on the platform so that I can have my credentials and preferences securely stored on the system and access them when I next use the system.

Profile Management

  1. As an end user, I would like to be able to view my favorite recipes so that I can access them whenever convenient for me.

  2. As an end user, I would like to be able to edit my personal preferences so that I can have a personalized experience using the application.

  3. As an end user, I would like to be able to edit my user details so that I can have my credentials up to date with my current details.

Recommendation Management

  1. As an end user, I would like to be able to add ingredients available in my inventory so that I can be able to get recipes that are tailored to my available ingredients.

  2. As an end user, I would like to be able to get suggested recipes based on my preferences and ingredients so that I can prepare the recipe or save it for later should I wish.

  3. As an end user, I would like to be able to filter suggested recipes so that I can better choose recipes based on other criteria.

Recipe Creation Management

  1. As an end user, I would like to be able to add a custom recipe to the platform so that I can share my recipe with other users and explore other users’ recipes.

  2. As an end user, I would like to be able to add and edit recipe steps so that I can instruct other users how to prepare the recipe.

  3. As an end user, I would like to be able to upload recipe images to accompany custom recipes so that I can show other user’s the intended outcome of the recipe.

Functional Requirements

  1. Authentication:

    1. Sign up
    2. Login
    3. Logout
    4. Forgot password
  2. Profile Management:

    1. View favourited recipes
    2. Edit user preferences
    3. Edit user details
  3. Recommendation Management:

    1. Add/edit search ingredients
    2. Display recipes that have specified ingredients
    3. Display recipes that have one more ingredient than specified
    4. Filter recommended recipes
  4. Creation Management:

    1. Add/edit recipe ingredients
    2. Add/edit recipe steps
    3. Add/edit recipe images
  5. Search Management:

    1. Search by recipe categories
    2. Search by name
    3. Show popular recipe searches
  6. Recipe Management:

    1. Add recipe review
    2. View recipe ingredients, images, and steps
    3. Favourite recipe

Use Case Diagrams

High Level

Authentication Subsystem

Profile Management Subsystem

Recommendation Management Subsystem

Recipe Creation Management Subsystem

Search Management Subsystem

Recipe Management Subsystem

Quality Requirements

  • Performance: Responsive for most user devices
  • Security: Data stored securely and encrypted where necessary
  • Privacy: The app must adhere to privacy regulations
  • Availability: Minimal downtown
  • Reliability: All actions performed by the user perform the results intended
  • Usability: Natural user experience, where new users easily understand the application
  • Maintainability: The app should be modular for easy updates and modifications
  • Scalability: Able to handle a high volume of concurrent users without slowdown
  • Compatibility: Usable across most user devices

Architectural Patterns

Design Patterns

  • Observer Pattern: This pattern is used to model the changing state of the Profile state, toalert necessary parties affected by the Profile state.
  • Command Pattern: This pattern is used to model 2 sub-system, namely: (1) Authentication and (2) Recipe Recommendation sub-systems
  • Strategy Pattern: This pattern is used to model the Search sub-syste; being able to search by different type of methods
  • Factory Method Pattern: Used to model the creation of recipes.
  • State Pattern: This pattern is used in conjuction with the Factory Pattern to know for which dietary plan to create a recipe; The states are then the various dietary plans
  • Decorator Pattern: This model the functionality of Review and favourites; these are the addons added as the recipes are viewed or displayed
  • Proxy Pattern: This pattern is used to model the manner of access to the database, which is through the APIs
  • Façade Pattern: This provides are gentle user interface and makes the user experience seamless.
  • Singleton Pattern: This is used to model the Database; only a single instance of the database should be running when the system is operational
  • Memento Pattern: This pattern is used to model the persistence of data to the database and how such is handled.

Constraints

Proposed System Overview

Class Diagram

Class Diagram