Skip to content

Requirements

ekremozturk edited this page Oct 6, 2016 · 74 revisions

#Summary

Our project aims to serve people to learn about what they are eating in terms of micro and macro nutrients. There will be two types of user; regular users and food servers. Food servers will enable to create a profile and description of the foods they serve. Regular users will be able to explore the servers, the food, and see the information about the food. They will also able to get the information about ingredients and calories of foods. Furthermore users will be able to tag, comment and rate food as well as the servers. The users will able to view their consumption history. They will also enable to share with other users as well as social media.

#Background

This document shows the requirements of 'Know What You Eat' project with glossary part. Glossary part consists of definition of frequently used keywords in the requirement part. There are two types of requirements which are user and system requirements. These requirements list the features that our application has to implement. There are many subsections of requirements to give better idea about our project.

Glossary

  • Allergy: A damaging immune response by the body to a substance.

  • Block: Stop somebody from interacting with another user.

  • Calorie: A measure of the energy released by food as it is digested by the human body.

  • Celiac Disease: Celiac disease is an autoimmune disorder that can occur in genetically predisposed people where the ingestion of gluten leads to damage in the small intestine.

  • Cholesterol: The most common type of steroid in the body.

  • Comment: Expressing an opinion about food or menus.

  • Consumer: A person who eats something.

  • Diabetes: A disease in which body has a high level of glucose in blood

  • Diet: Eat any food or drink regularly; A particular selection of food, especially as designed or prescribed to improve a person's physical condition or to prevent, treat a disease.

  • Food Preferences: The selection of one food over another.

  • Food Server: Supplier of food to consumers.

  • Gluten: A mixture of two proteins present in cereal grains, especially wheat.

  • Gluten Intolerance: A condition that causes a person to react after ingesting gluten.

  • Ingredient: A food that is used in the preparation of a dish.

  • Macronutrient: A type of food (e.g. fat, protein, carbohydrate) required in large amounts in the diet.

  • Micronutrient: Essential food factors required in only small quantities by the body; e.g. vitamins, trace minerals.

  • Nutrition: The process of taking in food and using it for growth, and health. 

  • Paleo Diet: A diet based on the types of foods presumed to have been eaten by early humans, consisting chiefly of meat, fish, vegetables, and fruit and excluding dairy or cereal products and processed food.

  • Recipe: A set of instructions for preparing a particular dish, including a list of the ingredients required.

  • Threshold: Minimum level or value above which something will take place, and below it will not.

  • Top Customer: A customer who eats from a specific food server regularly become that food server's top user.

  • Unregistered User: A customer which is not registered to system and have only search permission in application/website.

  • User: A registered customer who will interact with a system either directly or indirectly.

Requirements

1. User Requirements

  • 1.1. Unregistered Users

    • 1.1.1. Unregistered users shall be able to do search for meals, other users, food servers, menus and the ingredients of a food.
    • 1.1.2. Unregistered users shall be able to receive filtered results.
    • 1.1.3. Unregistered users shall be able to do semantic search for meals to receive meals with same content with searched meal.
    • 1.1.4. Unregistered users shall be able to sign up by email and password.
  • 1.2. Registered Users * 1.2.1. Account

    • 1.2.1.1. Users shall be able to login by entering their email and password.
    • 1.2.1.2. Users shall be able to change their password.
    • 1.2.1.3. Users shall be able to send a request for new password when they forget their password. * 1.2.2. Profile Page
    • 1.2.2.1. Users shall have a profile page which they can set their profile picture and create bio on.
    • 1.2.2.2. Users shall be able to specify their diet( i.e. Vegan, Vegetarian, Paleo, Gluten Intolerance, Celiac Disase, Lactose Intolerance ) and food preferences (include and exclude specified macronutrients).
    • 1.2.2.3. Users shall have a log of consumed foods on their profile page to keep track of their nutritional and calorie intake.
    • 1.2.2.4. Users shall set daily calorie threshold.
    • 1.2.2.5. Users shall have the list of top food servers according to their ratings and comments on their profile page.
    • 1.2.2.6. Users shall be able to set private their diet, food preferences, log of consumed foods and calorie threshold.
    • 1.2.2.7. Users shall be able to set their profile page as public and private. * 1.2.3. Actions
    • 1.2.3.1. Users shall be able to follow other users to see their profile page.
    • 1.2.3.2. Users shall be able to rate foods and food servers.
    • 1.2.3.3. Users shall be able to comment on foods and food servers.
    • 1.2.3.4. Users shall be able to share what they eat on Twitter and Facebook.
    • 1.2.3.5. Users shall be able to tag following users to show who they are eating with.
    • 1.2.3.6. Users shall be able to report food servers.
    • 1.2.3.7. Users shall be able to block another users.
    • 1.2.3.8. Users shall be able to see recommended restaurants based on user's preferences and monthly check-eats on their home page.
    • 1.2.3.9. Users shall be able to see recommended meals based on user's preferences and monthly check-eats on their home page.
    • 1.2.3.10. Users shall tag meals, recipes and special diets semantically.
    • 1.2.3.11. Users shall be able to "check-eat" which adds the meal as a consumed meal.
    • 1.2.3.12. Users shall be able to add photos when they comment about foods and food servers.
* **1.2.4. Search & Filter**
 * 1.2.4.1. Registered users shall be able to search as stated 1.1.1, 1.1.2, 1.1.3.
 * 1.2.4.2. Users shall be able to receive filtered foods based on their food preferences, diet and calorie threshold specified on their profile page when they search for specific foods.
 * 1.2.4.3. Users shall be provided with filtered results which are ordered based on user's preferences specified on their profile page when they search for foods.
 * 1.2.4.4. Users shall be able to turn their preferences off when they search. 
 * 1.2.4.5. Users shall be able to change their preferences temporarily when they search.
  • 1.3. Food Servers * 1.3.1. Food servers shall have a profile page which they can publish their menus. * 1.3.2. Food servers shall be able to give recipes to system to determine each food's ingredient and calories on their menu. The food server shall take the photo, name of the meal, recipe To add a meal, food server should do following steps:
    • 1.3.2.1. Food server shall have a menu and they can add meals to that menu.
    • 1.3.2.2. Food server shall add photo, name and recipe of the meal as mandotary.
    • 1.3.2.3. Food server shall choose ingredients from database and add each ingredient's amount as grams. In the database, each ingredient's micronutrients and macronutrients values will be present. * 1.3.3. Food servers shall receive top 10 users weekly based on frequency of users' monthly check-eats. * 1.3.4. Food servers shall be able to receive top 5 meals on menu every week. * 1.3.5. Analysis that food servers receive shall be updated every Monday. * 1.3.6. Food servers shall be able to edit their recipes and menus. * 1.3.7. Food servers shall be able to share their menu on Facebook and Twitter. * 1.3.8. Food servers shall have ratings,comments and top users on their home page.

2. System Requirements

  • 2.1. Functional Requirements

    • 2.1.1. The system shall request email address and password in order to register a user.
    • 2.1.2. The system shall be validate email address by sending a unique code.
    • 2.1.3. The system shall encrypt user password with a hashing algorithm before saving user to a database.
    • 2.1.4. The system shall let user log in by confirming given email address and password from database.
    • 2.1.5. The system shall prevent user for 5 minutes after 5 failed log in trials.
    • 2.1.6. The system shall remember user for 60 days if user wants so.
    • 2.1.7. The system shall send a unique code to the user email address(which has been saved in the system) if user indicates that he/she forgot password.
    • 2.1.8. The system shall let user to assign a new password if entered reset code matches with that is sent.
    • 2.1.9. The system shall remove all sessions and cookies about user when password is reset.
    • 2.1.10. The system shall let users upload a profile picture with maximum size of 5 MB.
    • 2.1.11. The system shall let users enter a bio text with maximum of 200 characters.
    • 2.1.12. The system shall keep diet and food preferences of each user.
    • 2.1.13. The system shall save foods consumed by each user.
    • 2.1.14. The system shall keep daily calories threshold of each user.
    • 2.1.15. The system shall send a warning when the user exceeds calorie threshold.
    • 2.1.16. The system shall keeps information about meals like ingredients and calories.
    • 2.1.17. The system shall show recommended meals for each user based on that user's preferences.
    • 2.1.18. The system shall warn users if a recipe has an allergic ingredient.
    • 2.1.19. The system shall show calorie amount in foods.
    • 2.1.20. The system shall show equivalent running distance at a specific pace of total calories in a food.
    • 2.1.21. The system shall permit users to rate foods and food servers.
    • 2.1.22. The system shall permit users to comment on foods and food servers.
    • 2.1.23. The system shall have a filtering feature to restrict certain ingredients when users search for meals.
    • 2.1.24. The system shall allow users to tag foods and friends in posts on Facebook and Instagram.
    • 2.1.25. The system shall provide suggested meals according to users’ consumption.
    • 2.1.26. The system should provide users to be able to construct relationship among between semantic tags.
    • 2.1.27. The system shall let food servers add a meal picture with maximum size of 5 MBs.
    • 2.1.28. The system shall update recommended meals for each user weekly based on their monthly check-eats.
    • 2.1.29. The system shall update recommended restaurants for each user weekly based on their monthly check-eats.
    • 2.1.30. The system shall be determine top meals that food servers receive with weight 0.6(# of check-eats)+0.4(weekly ratings).
  • 2.2. Nonfunctional Requirements

    • 2.2.1. Flexibility
      • 2.2.1.1. The system shall be prepared with modular structure in order to introduce new features.
      • 2.2.1.2. The system shall be designed with Model-View-Controller(MVC) structure.
      • 2.2.1.3. The system shall be coded in a readable way and commented properly.
      • 2.2.1.4. The system shall be coded in a simple way that another developer can easily understand.
    • 2.2.2. Portability
      • 2.2.2.1. The system shall be available on Web and Mobile.
      • 2.2.2.2. The website shall be compatible with Mozilla Firefox, Google Chrome web browsers.
      • 2.2.2.3. The mobile app shall support as early as Android 4.2 Jelly Bean.
    • 2.2.3. Integrity
      • 2.2.3.1. There shall be no legal issues involving privacy of information and intellectual property rights.
      • 2.2.3.2. Sensitive user information such as passwords shall be hashed with an algorithm.
    • 2.2.4. Performance
      • 2.2.4.1. The system shall respond users in at most 5 seconds.
    • 2.2.5. Reliability
      • 2.2.5.1. The system shall not crash more than twice in a month for a single user.
      • 2.2.5.2. The system shall save last user state before crash whenever possible.
    • 2.2.6. Usability
      • 2.2.6.1. There shall be help guides and tips to help new users learn about the usage of the application.
      • 2.2.6.2. No more than 3 push notifications that are not caused by user actions per day shall be sent.
      • 2.2.6.3. The system language shall be English.
    • 2.2.7. Accessibility
      • 2.2.7.1. The system shall provide support for visually-impaired people.
      • 2.2.7.2. The color scheme shall be selected properly so that colors can be differentiable by color-blind people.

References:

http://www.processimpact.com/UC/Module_3/data/downloads/glossary.html

http://www.medicinenet.com/script/main/art.asp?articlekey=4602

Team Members:

#Project: #

  • Requirements
  • [API Docs](API Docs)
  • Plan
  • Themes/Features
  • Personas
  • [User Stories](User Stories and Acceptance Criteria)
  • [Domain Analysis](Domain Analysis)
  • [Responsibility Assignment Matrix](Responsibility Assignment Matrix)
  • [Project Communication Plan](Project Communication Plan)
  • [Test Cases](Test Cases)
  • [Setting Development Environment](Setting Development Environment)

#Diagrams: #

  • [Use Cases and Use Case Diagram](Use Cases)
  • [Use Case Drafts](Use Case Drafts)
  • [Class Diagram](Class Diagram)
  • [Activity Diagram](Activity Diagram)
  • [Sequence Diagrams](Sequence Diagrams)

#Mockups: #

  • [Web Mockups](Web Mockups)
  • [Mobile Mockups](Mobile Mockups)

#Meetings: # Spring Semester

#Milestones: # Spring Semester

  • [Milestone-1 Report](Milestone-1 Report)

      Fall Semester
    
  • [Milestone-1 Report](Milestone-2 Report)

  • [Milestone-2 Report](Milestone-3 Report)

  • [Milestone-3 Report](Milestone-4 Report)

#Group Works: #

#Documentations: #

Clone this wiki locally