Sprint 1 - EQUIPO-11-CONSTR-APLIC-MOVILES/Team-11-Wiki GitHub Wiki

Contributions

Daniel Escalante Perez's Contributions

MS2

  • Participation in problem selection.
  • Development of own interview structure (introduction, questions and purposes) and it's addition to the wiki.
  • Interview execution and recording.
  • Own interview audio editing to make the summary.
  • Addition of full interview audio and summary to the wiki.
  • Identification of 4 situations for own interview and the inclusion of them in the wiki.
  • Participation in the development and upload of the Gastronomic offer journey map.
  • Leading and participating during the brainstorming process.
  • Participation in the development of the restaurant list, detail, map, review, random and menu screens in the wireframe prototype.
  • Navigation in the figma prototype
  • Participation in the prototype video in the introduction and the restaurant list and detail screens sections.

MS3

  • Rephrasing of the MS2 brainstorming process and listing of ideas.
  • Rephrasing of the MS2 decision process.
  • Development of Nicolas' Empathy Map.
  • Leading and participating in the smart feature brainstorm process.
  • Participation and improvement of persona 1.
  • Participation in the development of persona 3.
  • Writing part of the solution description

MS4

  • Writing of problem and solution description
  • Participation in the making of the analytics persona.
  • Development of 2 PAS
  • Participation in the making of the context canvas
  • Development of 3 questions (type 2, 3 and 5)
  • Design of 3 questions, visualizations and aggregation nodes in the VD map.

Sprint 1

  • Including the selected problem and solution.
  • Value proposal development.
  • Including and refining the PAS diagram.
  • Development of 2 functional scenarios.
  • Feedback on teammates' functional scenarios.
  • Development of 2 quality scenarios
  • 1 minute participation on the ethics component video

Santiago Chamie Rey's Contributions

MS2

  • Participation in problem selection.
  • Development of own interview structure (introduction, questions and purposes) and it's addition to the wiki.
  • Interview execution and recording.
  • Addition of full interview audio and summary to the wiki.
  • Identification of 4 situations for own interview and the inclusion of them in the wiki.
  • Participation in the development and upload of the Gastronomic offer journey map.
  • Leading and participating during the brainstorming process.
  • Participation in the development of the restaurant log in screen in the wireframe prototype.
  • Participation in the prototype video in the restaurant review section.
  • Documentation of the brainstorming process

MS3

  • Rough draft of brainstorming process description
  • Participation and voting in brainstorming for smart features
  • Development of Sara´s empathy map
  • Collaboration in the development of persona 2
  • Structuring, phrasing and cowriting of the solution's description

MS4

  • Development of analytics persona
  • Development of two PAS
  • Collaboration in the context canvas' development
  • Development of three business questions
  • Collaboration in the VD Map's development

Sprint 1

  • Rephrasing the proposal value section
  • Including and refining the PAS diagram.
  • Development of 2 functional scenarios.
  • Development of 2 quality scenarios
  • 1 minute participation on the ethics component video

Diego Ortiz's Contributions

MS2

  • Proposing, adding and detailing the InMobile App in the problems and ideas Padlet.
  • Participation in problem selection.
  • Development of own interview structure (introduction, questions and purposes) and it's addition to the wiki.
  • Interview execution and recording.
  • Lead the hunting of the interviews for the InMobile App idea.
  • Addition of full interview audio and summary to the wiki.
  • Identification of 4 situations for own interview and the inclusion of them in the wiki.
  • Participation in the development and upload of the InMobile App journey map.
  • Leading and participating during the brainstorming process.
  • Participation in the prototype video in the restaurant's product list section for the Gastronomic offer prototype.

MS3

  • Participation and voting in brainstorming for smart features
  • Participation in the Convergence process.
  • Development of Diego´s girlfriends empathy map
  • Collaboration in the development of persona 3
  • Revision and minor corrections of the solution's description.

MS4

  • Development of analytics persona
  • Development of two PAS
  • Collaboration in the context canvas' development
  • Development of two business questions
  • Collaboration in the VD Map's development
  • Collaboration in the VD Map's development

Sprint 1

  • Including and refining the empathy maps.
  • Development of 2 functional scenarios
  • Development of 2 quality scenarios
  • 1 minute participation on the ethics component video

Luis Felipe Torres's Contributions

MS2

  • Participation in problem selection.
  • Development of own interview structure (introduction, questions and purposes) and it's addition to the wiki.
  • Interview execution and recording.
  • Own interview audio editing to make the summary.
  • Addition of full interview audio and summary to the wiki.
  • Identification of 4 situations for own interview and the inclusion of them in the wiki.
  • Small participation in the development and upload of the InMobile App journey map.
  • Leading and participating during the brainstorming process.
  • Participation in the prototype video, showcasing the map section with different restaurants near the user, in the Gastronomic offer prototype.
  • Editing and upload of the prototype video.

MS3

  • Development of Gaby's Empathy Map.
  • Participation and voting in brainstorming for smart features.
  • Participation in the development of persona 3.
  • Revision and minor corrections of the solution's description.

MS4

  • Participation in the making of the analytics persona.
  • Development of 2 PAS
  • Development of 3 business questions (type 2, 3)
  • Design of 3 questions, visualizations and aggregation nodes in the VD map.

Sprint 1

  • Development of 2 functional scenarios.
  • Development of 2 quality scenarios
  • 1 minute participation on the ethics component video
  • Editing and upload of the ethics component video

Samuel Goncalves Vergara's Contributions

MS2

  • Participation in problem selection.
  • Development of own interview structure (introduction, questions and purposes) and it's addition to the wiki.
  • Execution of the interview.
  • Audio editing for the interview summary.
  • Adding the full interview and summary to the wiki.
  • Identification of 4 situations for own interview and the inclusion of them in the wiki.
  • Participation with great ideas in the brainstorming process.
  • Participation in the design of the figma prototype, the login, sign up and profile description screen.
  • Participation in the prototype video, showing the login and sign up page and also explaining the user profile screen.

MS3

  • Development of Juan's Empathy Map.
  • Participation in the Convergence process.
  • Participation and voting in brainstorming for smart features.
  • Participation in the development of persona 2.
  • Revision and minor corrections of the solution's description.

MS4

  • Writing of problem and solution description
  • Participation in the making of the analytics persona.
  • Development of 2 PAS
  • Participation in the making of the context canvas
  • Development of 2 questions (type 2 and 3)
  • Design of 2 questions, visualizations and aggregation nodes in the VD map.

Sprint 1

  • Development of 2 functional scenarios.
  • Development of 2 quality scenarios
  • 1 minute participation on the ethics component video
  • Helped in the finalization of the VD Map

Manuela Pacheco Malagón's Constributions

MS2

  • Participation in problem selection.
  • Development of own interview structure (introduction, questions and purposes) and it's addition to the wiki.
  • Interview execution and recording.
  • Own interview audio editing to make the summary.
  • Addition of full interview audio and summary to the wiki.
  • Identification of 4 situations for own interview and the inclusion of them in the wiki.
  • Participating during the brainstorming process.
  • Participation in the prototype video, showcasing the random restaurant selector.
  • Selection of the wireframe template.
  • Participation in the development of the liked restaurant screen in the wireframe prototype.
  • Revising and fixing design of the wireframe prototype.

MS3

  • Development of Nicolas’ Empathy Map.
  • Participation and voting in brainstorming for smart features.
  • Participation in the development of persona 1.
  • Classifying ideas and smart features

MS4

  • Problem Description
  • Participation in Analytics Persona
  • Development of 2 PAS
  • Development of one Business Question Type 3
  • Development of one Business Question Type 4
  • Fixing VD Map readability

Sprint 1

  • Including Business Questions
  • Including and refining the VD map
  • Development of 2 functional scenarios
  • Development of 2 quality scenarios
  • 1 minute participation on the ethics component video

Problem and solution description

Problem Description

The university area offers a wide range of food options, but students and staff struggle to efficiently discover and access them. There is no centralized platform to explore different cuisines, find meals that cater to specific dietary preferences, or identify consistent places to eat. This lack of organization makes it challenging to find diverse options and adjust choices to fit within a budget. Also, the lack of order limits the visibility of new restaurants, their possibilities of growing in the area, and community members' opportunities to find a new restaurant they might like.

Solution Description

To fix this problem we will provide a centralized source of information regarding the restaurant offer near the university. We will focus on students and staff near the Uniandes area, with the purpose of reducing their time used on choosing restaurants, while introducing variety to their options. It is also important to us to help students take care of their budget, and to give new restaurants the chance to flourish, leading to fresh and more enjoyable meals.

Our solution will compile the information of restaurants near the uniandes area, presenting their details to aid in the restaurant picking process. This way the user will be able to easily check all the options and make a quick but informed decision. Also, it will give the user the whole scope of options and help them with certain tasks, such as finding the route to the restaurant or other relevant information (menu, reviews, schedules, contact information, etc.). This will lead to more satisfaction at the moment of going to the chosen restaurants, and avoid situations like going to a closed restaurant, not liking the food they sell and consequently, wasting time.

Among the restaurant details the user can check the menu to plan their budget, and choose what better fits their needs. The app will highlight new restaurants to help them grow by and inviting users to try them. The users will also be able to filter restaurants by certain criteria like: average price, seating arrangement, type of food or user ratings. Additionally, the user can use a randomizer to pick a restaurant for them, removing the burden of having to choose. On the other hand, the solution also allows users to interact with each other by sharing reviews and by displaying their favorite restaurants in their profile. Before visiting a restaurant, a user will be able to see their friends' thoughts about it and they will also be able to share their own reviews as well.

Revenue Model

RestaU's revenue model will be based on advertizing, that could come from third party advertisers like Google, or from restaurants who want to promote their business using our platform. Promoted restaurants could appear in the top of search lists or be highlighted in the search map. This source of revenue would be necessary to pay for the backend services and the developer's salaries.

Value proposal

RestaU looks to provide an innovative solution to a problem that persists due to lacking alternatives. Nowadays, when potential users want to search for new restaurants, they have to rely on generic apps that aren't focused on the problem at hand, leaving a lot to be desired. Popular map applications try to solve the restaurant problem, but end up displaying only a selection of the possibilities, along with unreliable and biased reviews. These reviews have no guarantee they come from a real person and could be easily manipulated by businesses to try to boost sales. Another way to pick a restaurant is to rely on personal recomendations, coming from friends or family, who don't necessarily have the same tastes as the one asking. In the end, a user would prefer to go to a restaurant they already know and like, than to walk around and evaluate each restaurant in order to try something new. All these alternatives take time, leave the user unsatisfied or uncomfortable, get the user lost, and cause unnecessary effort and stress.

We seek to help Uniandes area’s students and staff, so they can avoid having to go through a troubling, time-wasting process to find restaurant that satisfies their specific tastes and preferences. The enormous gastronomic offer around campus, as well as the unfamiliarity of the area for new students, are factors that could add to the strain, as well as not having enough reliable or recent information about restaurants to make an informed decision. We understand that users also have different priorities when it comes to eating out, so we'll allow them to filter by budget, quality, location, menu, or schedule. This will also let users seeking dietary variety to accurately search for new restaurants, with a diminishing risk of disappointment.

Our solution solves all these problems, by providing a unified source of up-to-date information, where users will be able to check relevant details and choose a restaurant based on their personal priorities. The information available will include average pricing, as well as the menu and the restaurant's location with instructions on how to get there. Users will be able to filter by the type of food, budget, diet restrictions, sitting arrangements, mode (pick-up or in site consume), if currently open, among others, to find the restaurant that best fits their needs. Additionally, the app will allow users to get a random restaurant from their "liked" list, avoiding the issue of choosing as a whole. All these benefits will be obtained directly through the app, without having to resort to unreliable, biased information. The solution will be also helping new restaurants grow by highlighting them, and inviting users to introduce variety to their meals.

PAS Diagram (Problems-Alternatives-Solutions)

# Problems Alternatives Solutions
1 I need a fast and easy way to consider and choose a restaurant out of the overwhelming amount of options there are. This process is normally time consuming and exhausting. I mentally go over all the restaurants I know and check Instagram influencers to see if a review they made appeals to me. A unified list of currently open restaurants that allows the user to see their details and choose one that appeals to them the most. All of this without going through multiple information sources and resorting to the user's memories.
2 I am unfamiliar with the area and need a way to find the route to a small restaurant a friend recommended for eating regularly at a great price. I normally go on my preferred maps app and find the way to the restaurant but sometimes the app doesn't know about it, so I call my friends and ask them for instructions. An app that uses coordinates to spot a restaurant of your choosing in Google Maps. Now with the pin on your desired restaurant, Google Maps can show you the way there even without information about the location.
3 The restaurant I frequent increased its prices and now what I usually ate is over my usual budget. Eat a smaller portion that now costs the same as the large portion did before. A list of restaurants that serve the kind of food the user enjoys, as well as the range of prices they can expect if going there.
4 My friends have very different preferences when it comes to food, but we want to eat at the same place so we can talk. Choose what most of the friends want and make the others settle for a meal they don't necessarily like. A filter that allows the user to search for a restaurant that meets certain criteria.
5 I want to sit down with my friends and enjoy a meal together, but when we arrive at the restaurant, we find out it only offers pick-up or delivery. I usually end up looking for another nearby place, which takes time and effort, or we settle for eating outside or have to look for a table inside campus where it’s usually crowded. An app feature that clearly indicates the dining options available (dine-in, pick-up, delivery) for each restaurant, with filters to search specifically for places with sit-down dining options.
6 I like to plan my meals ahead of time, but many restaurants don't keep their online menus up to date. I usually stick to my regular places or waste time asking at lunch time and hope for the best. An app where restaurants can easily update their menus and daily specials, ensuring users have the latest information.
7 My friends and I like to support local businesses because we know that it is not easy to get established, but it’s not as easy as we may think to find them. We try to stroll around the university area trying to discover new places to try. Although very pleasant, this is a quest that we cannot always be willing to do due to time limitations. A feature that allows users to tag a new restaurant so that other users can identify it easily and give it a chance.
8 I do not consider myself as a picky eater so from time to time I like to get surprised by trying, unknown for me thus far, new restaurants. Nevertheless, the process of picking a random restaurant based on my preferences is time consuming. Sometimes I surf through internet or social media trying to get tempted to try a new restaurant. However, not all restaurants are accessible for me. The users can lead the app to pick a random restaurant for them from their liked restaurants list
9 I want to avoid long wait times at restaurants, especially during peak hours, but I don't know which places are likely to have shorter queues. I usually take a chance and go to a restaurant, hoping the wait time isn't too long, or I call ahead to ask about the current situation. An app feature that shows real-time data on wait times at nearby restaurants, allowing users to choose places with shorter queues and save time.
10 I often have difficulty finding restaurants that accommodate my dietary restrictions, which makes eating out stressful. I tend to stick to the few restaurants I know cater to my dietary needs, even if I would like to try new places. A filter option in the app that allows users to search for restaurants based on specific dietary preferences (e.g., vegan, gluten-free, halal), making it easier to find suitable dining options.
11 Finding restaurants that cater to specific cultural or ethnic cuisines can be challenging, especially in a diverse area. I usually ask friends for recommendations or search online, which can be time-consuming and may not always yield the best results. An app feature that allows users to search for restaurants by cultural or ethnic cuisine types, making it easier to find specific types of food.
12 I often have difficulty finding restaurants that are open late or during odd hours. I rely on previous knowledge of restaurants that stay open late or check various websites, which can be unreliable and inconsistent. A feature in the app that provides updated information on restaurant operating hours, including late-night and early-morning options, helping users find places open at their desired times.

Context Canvas

contextCanvas drawio Link to the Context Canvas

Personas

Prospective Personas

persona1 drawio

Persona2

persona angela

Analytics Personas

analyticsPersona drawio(1)

Empathy Maps

Untitled_2024-08-22_00-24-38

Untitled_2024-08-22_22-25-27

Empatia map_2024-08-22_21-46-32

Empathy map - Luis Felipe Torres

Empathy map Juan

Untitled_2024-08-21_04-54-35

Business Questions

Type 1 Questions

  • What is the number of Android downloads of our app in the last week?

This a type 1 question since it measures the apps performance by the number of downloads in the play store. Besides this, the answer to this question helps the team to solve internal questions regarding usage of the app and this information won't be presented to final user by our side, nevertheless, it will be used by the develop team to understand the app performance.

  • What features are causing the app to crash unexpectedly?

This is a type 1 question because it concerns the monitoring of the app's performance. In this case it relates to bugs causing the app to crash, that should be revised and fixed. The data for type of question is collected internally.

Type 2 Questions

  • What restaurant(s) have been the most liked or positively reviewed this week?

This is a type 2 question because it looks to improve the users' experiences through highlighting in the list and showing a notification of the restaurant(s) that get a lot of likes and positive reviews, these will be shown when the user is near the Uniandes area. Consequently, the user will get to know, go or try a restaurant that has a great offer or could be having a special event (an offer, a launch, or the offering of a new dish). This question's answer is related to the user's context by location, it uses the users' interactions with a restaurant, uses the system's internal information and will help the user find a restaurant that he/she might like.

  • What percentage of the restaurant's in an area has the user left a review in?

This question is type 2 as it provides information that lets a 'food critic' type user see the amount of restaurants they have already reviewed in an area. This provides value to them as it gives them a measurement of how many restaurants they haven't discovered yet. This improves the user's daily experience and interaction as it provides a goal to accompolish in terms of the amount of restaurants they have left to visit.

  • Is there a new restaurant nearby that matches the user's 'liked' cuisine types?

This is a type 2 question because it enhances the user's dining experience by leveraging their personal preferences to discover new options. By identifying new restaurants that align with the user's 'liked' cuisine types, the app provides personalized recommendations that cater to their tastes. This functionality not only introduces variety but also encourages exploration of new dining experiences, making it easier for the user to find appealing options. The system uses the user's location and historical data to deliver relevant and timely suggestions (via a notification), thereby improving their overall interaction with the app.

  • Has one of the user's 'liked' restaurants recently updated its menu?

This is a type 2 question because it aims to enhance the user's dining experience by notifying them when a restaurant they have previously liked updates its menu. The question leverages the user's personal preferences and past interactions to provide timely and relevant information that could influence their dining choices. This helps the user stay informed about new dishes or changes that may interest them. This notification not only encourages repeat visits to favored spots but also adds value by keeping the dining experience fresh and exciting. The system uses internal data on the user's 'liked' restaurants and menu updates, and the answer is presented directly to the user, enhancing their overall experience by keeping them engaged with their favorite dining options.

Type 3 Questions

  • What are the screens where the users in average spend the least time weekly?

This is a type 3 question because it is helping the business decide if a screen with a set of functionalities is not being used nor accepted by the users. If users aren't really using a screen, the business should think about upgrading it, fixing it or removing it. The datasource for this question would be internal by using the time each user spends in the different screens weekly and doing an average.

  • How often does a user leave a review after using the "randomize restaurant" feature?

This is a Type 3 question because it provides insights into the effectiveness and impact of the "randomize restaurant" feature. By analyzing how frequently users leave reviews after using this feature, the business can assess whether it successfully engages users and encourages interaction. If the feature is not generating the desired level of user feedback, it may indicate a need for improvement or potential removal, guiding decisions about feature updates or enhancements.

  • What are the most common navigation paths users take within the app?

This is a type 3 because it focuses on understanding user behavior within the app to optimize features and user experience. By analyzing the navigation paths, the business can identify which features are most frequently accessed, which paths are less intuitive or problematic, and where users might drop off. This insight helps in making informed decisions about feature placement, streamlining the user journey, and potentially removing or updating features that aren't being used as intended. The ultimate goal is to enhance the app’s usability and efficiency, ensuring it meets user needs effectively.

  • Which filtering options (e.g., price, cuisine type) are most frequently used by users?

This is a type 3 question because it analyzes the usage patterns of different filtering options within the app. By identifying which filters are most frequently used, the business can determine which aspects of the search functionality are most valuable to users. This information can guide decisions on where to focus development efforts, such as enhancing the most popular filters or optimizing the user interface for easier access. On the other hand, if certain filters are rarely used, the business may consider modifying or removing them to streamline the user experience and reduce clutter in the app's interface. The data source for this question would be internal, based on tracking user interactions with the filtering features over time.

Type 4 Questions

  • What are the most searched cuisines or types of food by the users?

This is a type 4 question due to the following considerations: the main purpose of this question involves making a profit since we can sell this data to a third-party organization who can get advantage of that. Next to this, the main source of this data comes from the interaction of the user with the app given that each search by an user is a new piece of data added to the collection.
As mentioned before, this kind of data could be object of selling to third parties as it could help them to create value for the organization, for example, a restaurant chain manager is looking to settle a new business near de campus and wants to target the most preferred gastronomical options by people, this kind of knowledge could be derived from the sold data. Besides this, the answer to this question could help us to put or locate some adds or publicity in our app since the trends extracted from the data could attract potential sponsorships looking for more visibility. Finally, before answering this question it is necessary to find potential stakeholders that could share an interest for the data and eventually benefit for it.

  • What common qualities are shared by the restaurants most frequently added to users' favorites?

This is a type 4 question because it focuses on leveraging user preference data to identify trends and patterns that can create business opportunities. By analyzing the qualities of popular restaurants, the business can understand what attributes users value the most, such as cuisine type, ambiance, price range, or special features. This information can then be used to attract similar establishments for partnerships, targeted advertising, or promotional deals, thereby generating revenue or strategic alliances that benefit both the business and third-party companies. The goal is to monetize user data insights by aligning them with market demand and potential business partners.

Type 5 Questions

  • In what area are the restaurants that are the most liked and positively reviewed?

This is a type 2 question because it will help the users be notified when they are in an area with high quality restaurants according to other users' reviews. Now with that in knowledge they could see around or in the app if there is something that calls their attention for eating. The data source would be internal because we would be using using the restaurants, their reviews and locations. It will be involving the user's position, other users' interactions with the app, and, it will help the user be guided towards good restaurants. This is also a type 4 question because it will be using internal information as mentioned before, and the business will be making profit by sharing the answer with a third party such as an external data analyst interested in investigating the location characteristics of restaurants with high and positive flow.

  • Which of the app's features are the most used?

This is a type 2 questions because it concerns the direct user experience of using the different features of the app. By identifying the most popular features we could highlight them, improving the user experience, making it easier to browse the app. It is also a type 3 question because it regards the features with the purpose of understanding which features should be removed or updated to better increase the user's experience. These hybrid question tries to analize the effectivity of each implemented feature in terms of amount of usage and user satisfaction with it.

VD Map

VDMap drawio(1) Link to VD Map

Functional Scenarios

# What the persona is doing System's response Execution context
1 (Manolo) I want to find a reliable place to eat regularly, so I can enjoy dishes according to my preferences. I press the "All restaurants" filter and go through the restaurant list by scrolling, when I find one that calls my attention I press it and check the details and schedules, then I press the reviews button to see opinions. When the "All restaurants" button is pressed, the app will fetch all the restaurants and display their name and photo in a list in the main screen. When pressing a specific restaurant, the app will fetch and show the details (menu, type, average score, phone number, description, photo and schedules) of the restaurant in a different screen. When pressing the reviews button, the app will fetch the reviews from the selected restaurant and in a different screen display each review with the number of stars, comment and author. When fetching information, the app will update the locally saved restaurant list. The app will be using firestore to fetch information. The user is using an Android device in a internet connected zone. He is already logged in the application due to information saved locally, this is reflected in the state of the app. Firestore is available.
2 (Manuela) I want to find a near restaurant quickly, so I can eat something I like and get to class in time. I press the pin icon and scroll through the map and see general information on nearby restaurants when pressing their pin in the map. When pressing the "Restaurant Page" button in a restaurant's pin information that calls my attention, I will see the restaurant's details in another screen. When pressing the pin button, the system will fetch from firestore the list of restaurants that are currently opened and show a map with the user's location (Query made to the device and then saved locally as "last location") and a pin for each restaurant (using the restaurant's coordinates). For each restaurant, the system will set basic information to be displayed when a pin is pressed. All of these map related operations will be done with the google maps code API. When the "Restaurant Page" button is pressed, the system will fetch the restaurant's details from firestore and show them in a different screen. When fetching information, the app updates it's locally saved information. The user is using an iOS device with internet connection and GPS signal. Firestore is currently available. The user is within a 500m from the Espinosa park. The user is already logged in due to locally saved information and the application's state reflects this.
3 (Angela) I want to find the best hamburguer I haven't tried yet, around campus. I press the 'filter' button and select the 'type of food' filter and select 'Hamburguer' then select 'Sort by rating' and 'Not reviewed by me'. I press the 'search' button and select the first restaurant that appears on the list. When pressing the 'search' button the system will fetch from firestore the list of restaurants ordered by the criteria selected and that meet the user's filters. Each item of the list of restaurants will include its photo, address, price range and rating. When the restaurant is pressed the system will fetch from firestore the detailed information on that restaurant. The user is using an Android device with 5G connection. She is already logged in the application and has published many reviews of different restaurants around campus. Firestore is available.
4 (Manuela) I want to choose a restaurant quickly from the restaurants I already like. I press the 'random' button and get shown a random restaurant. I check its details and evaluate if I want to go there.. If it doesn't I repeat the process. When pressing the 'random' button the system will fetch from firestore a random active restaurant from the database, that is in the user's liked list, and display its image and name. The user is using an Android device connected to the university's internet service. She is near an exit of the campus and can already see some restaurants nearby. Firestore is available.
5 (Angela) I want to find new restaurants that were recently opened so I can help them to get started and besides it find food that I like. To do so, I press the "All restaurants" filter and go through the restaurant list by scrolling. Then, I proceed to identify the restaurants labeled as "new", once I find one that call my attention, I press on it to see all the details regarding it. When the "All restaurants" button is pressed, the app will fetch all the restaurants and display their name and photo in a list in the main screen. There, the system will show the recently added restaurants as 'new', so the user be able to identify they easily. The label 'new' is settled and showed in the UI as long as the restaurant is recorded in the database with the feature of 'new' as an attribute of type. The user is using an Android device in an internet connected zone. He is already logged in the application due to information saved locally, this is reflected in the state of the app. Firestore is available.
6 (Manuela) Once I find a restaurant that calls my attention from the 'All restaurants' list I like to go through the items of the menu to be sure that is what I'm looking for. To do so, press on the restaurant image or label to get access to the restaurant details. Once there, I press over the Menu button, this will lead me to see all the items available on the menu. If I press on the detail button of one item it will open a frame with a description of the item. When the user presses the image or label of a restaurant on the 'All restaurants' screens the app will fetch all the information related to that restaurant including pointers to the menu, schedule and ratings. When the menu button is pressed the app will fetch in the Firestore all the information that was pointed in the restaurant register and that is related to the menu items. The menu follows the same logic with the difference that all the information of an item is saved directly in a relation without pointers. The user is using an Android device in an internet connected zone. She is already logged in the application due to information saved locally, this is reflected in the state of the app. Firestore is available.
7 (Manolo) As a new student at the university, I'm eager to share my dining experiences with peers. After visiting a restaurant near campus, I decide to write a review to help other students. I open the app, navigate to the restaurant's page from my recently visited list, select a restaurant and open the review screen, write a review in the form and clicks in "submit" to submit the review. The app fetches the detailed page of the restaurant from Firestore. It then presents him with a form to rate the restaurant from 1 to 5 stars and a text field to write his comments. After submitting his review, the app updates the restaurant's profile with Manolo's feedback, adding it to the list of reviews displayed to other users. Manolo is using an android device connected to the university's Wi-Fi. His experience is streamlined by the app's efficient UI, which promptly loads his recent activity and facilitates quick access to the review features. Firestore ensures the real-time update and display of the review, helping to build a community of informed diners on campus.
8 (Angela) I want to find a restaurant that offers outdoor seating so I can enjoy a meal with fresh air. I select the option that show restaurants with outdoor seating and browse through the list of restaurants that have this feature. When I find one that looks appealing, I press on it to see the details, including the seating arrangement and the view from the outdoor area. When the "Outdoor Seating" option is pressed, the app will fetch from Firestore the list of restaurants with outdoor seating and display their name, photo, and a brief description of the outdoor area in a list on the main screen. When a specific restaurant is selected, the app will fetch and display detailed information, including seating availability, the view from the outdoor area, and any special amenities for example heating, umbrellas, etc. The app will update the locally saved list of restaurants with outdoor seating. The user is using an Android device with an internet connection. He is logged in due to locally saved information, and the app state reflects this. Firestore is available.
9 (Angela) I want to find a restaurant that fits my specific tastes so I can enjoy my meal. I start by selecting various filters in the app, such as cuisine type, price range, and ratings, to narrow down the options. After applying the filters, I swipe through the list of restaurants to see which ones match my preferences. When a restaurant catches my eye, I press on it to view more details. I then press the "Reviews" button to read what other people think about the restaurant. TThe app fetches a filtered list of restaurants from Firestore based on the selected criteria, displaying each restaurant with a photo, name, and a brief description. Once filters are applied, only restaurants matching those criteria are shown. When a specific restaurant is selected, the app fetches and displays detailed information, including the menu, type of cuisine, average rating, phone number, description, photos, and operating hours. Pressing the "Reviews" button fetches and displays reviews for the selected restaurant, showing the number of stars, comments, and author information. The app updates the locally saved list of restaurants and reviews with the most recent data from Firestore. The user is using an Android device with a stable internet connection. The user is logged in, with saved preferences, making it easier to apply relevant filters. Firestore is accessible to provide real-time data for restaurant options and reviews.
10 (Manolo) I want to eat something within my budget, so I can save money to have some spare for emergencies. I open the app and start swiping through the list of restaurants, looking for ones that seem affordable. When a restaurant catches my attention, I press on it to see more details. I then press the "Menu" button and swipe through the dishes to check their prices, making sure I can find something that fits my budget. The app fetches and displays a list of restaurants from Firestore, with each restaurant showing a photo, name, and an estimated price range. When a specific restaurant is selected, the app fetches and displays detailed information about that restaurant, including the full menu. Pressing the "Menu" button displays the list of dishes, each with its name, description, and price. The app enables swiping through the menu items to view various options, ensuring the user can easily see and compare dish prices. The app updates the locally saved restaurant and menu data with the latest information from Firestore. The user is using an Android device with a stable internet connection. The user is at the university and logged into the app, with saved preferences and past searches. Firestore is accessible for real-time updates on restaurant menus and prices.
11 (Manuela) I want to find a restaurant that fits into my schedule, so I can eat before my evening class. I open the app and go to the main screen. I then use filter to see which restaurants are currently open and match my preferences. Once I find a restaurant that interests me, I press on it to check its details, including the opening hours. The app fetches and displays a list of all restaurants from Firestore, applying the filter to show only those currently open. Each restaurant in the list shows a photo, name, and brief description. When Manuela selects a specific restaurant, the app fetches and displays detailed information, including its menu, type of cuisine, average rating, and current opening hours. IOS device with a stable internet connection. Logged into the app. Firestore is accessible for real-time updates on restaurant availability and schedules.
12 (Manolo) I want to find a good and reliable restaurant to eat regularly. I open the app and in the main screen I look at different restaurants and the food they offer through their menus. When I find a restaurant that interests me, I save it to favourites so that I can visit it regularly. The app fetches and fisplays a list of all restaurants from Firestore. When a restaurant is opened, the app fetches and displays detailed information, including its menu, type of cuisine, average rating, and current opening hours. When the user saves the restaurant to favourites, a petition is made to Firestore to save the restaurant in the user's favourites. Android device with a stable internet connection. Logged into the app. Firestore is accessible for real-time updates on restaurant information, menus, and user favourites.

Quality Scenarios

# Scenario name Quality attributes App status and context Changes in the context System's reaction
1 Using the app with a lack of connection. Eventual connectivity, resilence. The app has no internet connection, and thus, no connection to the backend services. The user opens the application or tries to get information on restaurants (Tries to see or filter the restaurant list, see the nearby restaurants, see a restaurant's detail, menu or reviews) The app will notify the user about the lack of connection and fetch the locally saved information on restaurants if the user has been connected before.
2 Spanish speaking user. Internationalization, Usability. The app is made in english, it is closed and the mobile device has spanish as the default language. The user opens the application. The app should use the spanish language static values for making the app understandable by the spanish speaking user.
3 Foldable screen phone GUI Responsiveness The app is running on a foldable phone. The user folds or unfolds their phone. The app should realize the phone has been folded or unfolded and adapt its GUI to fit the new sized screen.
4 Code injection attack Security The app has internet connection, therefore connected to the backend services. The user sends a malignant search query looking to perform a code injection attack. The app should be inmune to the attack and display no successful search results.
5 High Traffic Load Scalability, Performance The app is experiencing a surge in user activity, such as during a university event where many users are searching for restaurants simultaneously. The number of concurrent users significantly increases, leading to a higher load on the backend services and the database. The app leverages Firebase's built-in scalability features, which are designed to handle elasticity and high traffic seamlessly. Firebase automatically scales based on the app's demand, ensuring consistent performance during peak times without manual intervention.
6 Battery Saver Mode Energy Efficiency, Usability The app is running on a device in battery saver mode. The user continues to use the app while the device is in battery saver mode. The app detects the battery saver mode and responds by not loading images within the app to significantly reduce energy consumption, ensuring the functionality remains unaffected for essential tasks like viewing restaurant details and writing reviews.
7 Device has not granted location permissions to the app. Usability Although being connected to internet, the app is trying to access the device's location without success. The user open the app and tries to apply the filter of restaurants near him. The app will notify the user that due to the lack of permission the app is unable to complete the request. So, it's necessary for him to enable the location access for the app.
8 Inaccesible media content Accessibility The app has enough internet connection to load images The user is trying to check a piece of media in the app, for example a pic of a restaurant establishment, however, is to small for him to see it on detail The app offers the user the option of opening that piece of media in a mobile browser tab so it's possible to zoom it up or see in detail
9 High Luminosity Environment Usability, GUI Responsiveness The app is being used outdoors in bright sunlight. The user is trying to read restaurant details and reviews, but the screen is hard to see due to the glare. The app should detect the high luminosity using the device's ambient light sensor and automatically adjust the interface to a high-contrast mode. It should also provide an option for the user to manually switch to a dark mode or a high-contrast mode if automatic adjustments are insufficient.
10 App Running on Different Screen Sizes GUI Responsiveness, Usability The app is being used on devices with various screen sizes, from small smartphones to large tablets. The user opens the app on different devices, requiring the UI to adapt to various screen resolutions and orientations. The app should have a responsive design that automatically adjusts the layout, font size, and UI elements to fit the screen size. It should ensure that all features are accessible and that the user experience remains consistent across devices, whether in portrait or landscape orientation.
11 App Running on Low Battery Performance, Usability The app is running on a device with low battery. The user's device battery is critically low, which may affect performance and cause the app to close unexpectedly. The app should notify the user about the low battery and suggest enabling a battery-saving mode within the app to extend usage time. The app saves locally any temporary information such as review drafts.
12 App Handling Unexpected Downtime Availability, Resilience The backend services are temporarily down, preventing access to real-time restaurant data. The user tries to fetch restaurant details or reviews but encounters errors due to the backend being offline. The app should display a user-friendly message indicating the service is temporarily unavailable and offer offline access to previously cached data where possible.

Ethics Video

Video Link

⚠️ **GitHub.com Fallback** ⚠️