Here is the final update of our Box and Line Diagram and explanations of each component and dependency. Also included are an explanation of the differences between the latest version and the previous version, and an explanation of how we maximized cohesion and minimized decoupling.
The final Box and Line Diagram is as follows or with explanations as a pdf here here:
The Restaurant User Interface subsystem contains multiple components. These components are dependent on the Backend. contains one subcomponent with multiple components and two independent components. All of these are dependent on the Backend. The subsystem components and dependencies are further explained as follows:
The Restaurant Profile Interfaces subcomponent contains all the interfaces pertaining to the restaurant user’s profile. The entire subcomponent is dependent on the Restaurant Profile Frontend Communication based in the Backend. The subcomponent’s components are further explained as follows:
The Restaurant Owner Login Page prompts the user to enter their username and password. An error message will appear if the username or password are incorrect.
The Restaurant Owner Summary displays the restaurant owner's profile information, including restaurant name, phone number location, category, description, and image, as well as provides a link to their bingo board and a link to edit their public profile page.
The Create Account Page provides a form in which the new user can add their full name, desired username and password in order to create a new restaurant profile.
The Restaurant Profile Editor provides a form in which the restaurant owner can update their restaurant profile, including restaurant name, location, phone number, category, description, and image.
The Goals and Rewards Customization Page allows for a restaurant user to create customized goals and/or rewards that are unique to them. This component is dependent on the Goals and Rewards Customization Frontend Communication component in the Backend.
The Bingo Board Editor allows for a restaurant user to edit the setup of their bingo board, including the goals on the board and the rewards earned when a customer gets a bingo. This component is dependent on the Bingo Board Frontend Communication component in the Backend.
The Goal and Reward Verification Page allows for a restaurant user verify customer goals and rewards by scanning a QR code or manually entering the code. This component is dependent on the Goal and Reward Verification Frontent Communication in the Backend.
The Customer Interface subsystem contains multiple components. These components are dependent on the Backend. The subsystem components and dependencies are further explained as follows:
The Customer Profile Interfaces subcomponent contains all the interfaces pertaining to the customer’s profile. The entire subcomponent is dependent on the Customer Profile Frontend Communication based in the Backend. The subcomponent’s components are further explained as follows:
The Account Creation Page provides a form in which the new user can add their First Name, desired username and password in order to create a new customer profile.
The Customer Login Page prompts the customers to enter their username and password. An error message will appear if the username or password are incorrect.
The List of Rewards Earned Page shows the user a list of all the rewards that they redeemed.
The List of Favourite Restaurant Boards Page displays the boards that the customer has saved in order for them to access easily.
The Restaurant Information Interfaces subcomponent contains all the interfaces pertaining to the information of the restaurants using the application. The entire subcomponent is dependent on the Restaurant Information Frontend Communication based in the Backend. The subcomponent’s components are further explained as follows:
The List of Restaurant Boards Page shows the user a list of all the restaurant boards that are in progress. A restaurant board that is “in progress” has one or more goals completed.
The Restaurant Board Page shows the user an individual restaurant game board.
The Backend subsystem contains multiple components and two subcomponents. The subsystem components and dependencies are further explained as follows:
The Restaurant Profile Frontend Communication allows the Restaurant Profile Interfaces in the Restaurant User Interface subsystem to interact with the Backend. It is dependent on the Profile Management which is located in the Backend subsystem.
The Goals and Rewards Frontend Communication allows the Goals and Reward Customization Page in the Restaurant User Interface subsystem to interact with the Backend. It is dependent on the Profile Management which is located in the Backend subsystem.
The Bingo Board Frontend Customization Communication allows the Bingo Board Editor in the Restaurant User Interface subsystem to interact with the Backend. It is dependent on the Profile Management which is located in the Backend subsystem.
Goals and Rewards Verification Frontend Communication allows the Goals and Rewards Verification in the Restaurant User Interface subsystem to interact with the Backend. It is dependent on the Profile Management which is located in the Backend subsystem.
The Customer Profile Frontend Communication allows the Customer Profile Interfaces in the Customer Interface subsystem to interact with the Backend. It is dependent on the Profile Management which is located in the Backend subsystem.
The Restaurant Information Frontend Communication allows the Restaurant Information Interfaces in the Customer Interface subsystem to interact with the Backend. It is dependent on the Profile Management which is located in the Backend subsystem.
The Profile Management subcomponent contains all the interfaces pertaining to the profiles stored in the database. The entire subcomponent is dependent on the Restaurant Profile Frontend Communication, Goals and Rewards Frontend Communication, Bingo Board Frontend Communication, Customer Profile Frontend Communication, Restaurant Information Frontend Communication, Goals and Rewards Verification Frontend Communication, and Database Communication components in order to update and maintain the profiles of the application users. The subcomponent’s components are further explained as follows:
The User Authentication component allows for the verification of inputted usernames and passwords.
The User Profile Management component allows for users in general to modify their account information. It is dependent on the User Authentication component to verify that the user login information is valid.
The Restaurant Profile Management component allows for restaurant owner users to modify their restaurant profiles; these modifications include changes to the goals and rewards they want to offer. This component inherits from the User Profile Management.
The Customer Profile Management component allows for customers to access goals and rewards. This component inherits from the User Profile Management.
The Goal and Reward Completion Verification component allows for restaurant owners to verify if a goal is completed by a customer, or if a reward is valid and redeemable by a customer. This component is dependent on Restaurant Profile Manager.
The Goal Modifier component allows for restaurant owner users with public profiles view and update their profile information such as restaurant name, image, address, and contact information. This component is dependent on Restaurant Profile Manager.
The Goal Modifier component allows for restaurant owner users to add, edit, or delete custom goals. This component is dependent on Restaurant Profile Manager.
The Reward Modifier component allows for restaurant owner users to add, edit, or delete custom rewards. This component is dependent on Restaurant Profile Manager.
The Restaurant Bingo Board Modifier allows for restaurant owner users to edit their public bingo boards, such as changing the contents, the size or the expiration date. This component is dependent on Restaurant Profile Manager.
The Customer Favourites Modifier component allows for a customer user to save any of the restaurant bingo boards as a favourite so that they can access easily. This component is dependent on Customer Profile Manager.
The Customer Bingo Board Viewer component allows for a customer user to view a restaurant bingo board as well as their progress for goals, goals they need to complete to receive rewards, rewards they have achieved, QR codes for goals to verify, and QR codes for rewards to redeem. This component is dependent on Customer Profile Manager.
The Data Access subcomponent contains the component related to accessing data from the database. This subcomponent is dependent on the Database subsystem so that it can communicate with the database components as well as the Profile Management so that it can update the information in the database.
The Database Communication allows for the Backend to communicate with the Databases.
The Database subsystem contains multiple components. The Database is dependent on the Database Communication in the Backend subsystem. The components are as follows:
The Restaurant Profile Collection stores restaurant information such as name of the restaurant, the username and password associated with the restaurant, the customized restaurant goals, the customized restaurant rewards, and the user profile.
The Game Goals Collection stores the premade goals used for the bingo loyalty game.
The Game Rewards Collection is used for the storing premade rewards for the bingo loyalty game.
The Customer Profile Database is used for storing customer user information such as username, active game boards, goals completed, and rewards earned.
For this deliverable, we introduced a new subcomponent called Data Access to contain the Database Communication component. This new subcomponent decouples the Database Communication from Profile Management and allows for it to be related indirectly. In addition, it allows for future components related to data access to be introduced without affecting the other components directly. However, this subcomponent is still a part of C)Backend as it resides in the backend of our system.
Also, we changed the names of the Login Interface in A)Restaurant User Interface and Login Page in B) Customer User Interface to Restaurant Owner Login Page and Customer Login Page to help distinguish the two interfaces. We changed the names and kept them separate because even though they are very similar they function differently and belong to different subsystems.
In addition, we added new components such as the Goal Modifier, Rewards Modifier, Restaurant Bingo Modifier, Restaurant Bingo Board Modifier, Goal and Reward Completion Verification, and Public Profile Modifier; for which Restaurant Profile Manager is now dependent on, and Customer Favourites Modifier and Customer Bingo Board Viewer for which Customer Profile Manager is dependent on. We also combined the Goal and Reward Completion Verification as they function the same. We added these modules to reduce coupling.
Furthermore, we added a Goal and Reward Verification Page and a Goal and Reward Verification Frontend Communication so that restaurant users can verify goals and rewards on a separate interface.
Lastly, as mentioned previously, we removed the compete with friends feature, as this was not a direct requirement from our client. The updated box and line diagram shows the removal of this feature and all its relating modules.
In Deliverable 3, the frontend components all shared the same backend communication, both on the A) Restaurant User Interface and the B) Customer Interface. In Deliverable 4, we decoupled these features by creating more specific backend communication components. That is, each feature has its own backend communication. Thus, we minimized coupling in our current system diagram.
We introduced the subcomponents to group together similar components. For example, we introduced the Profile Management subcomponent in the C) Backend which contains the components User Authentication, User Profile Management, Restaurant Profile Management, and Customer Profile Management. These components are all grouped together since they relate to the management of profiles in the system. In addition, User Profile Management serves as a parent component, while Restaurant Profile Management and Customer Profile Management inherit from it. Thus, with the introduction of subcomponents with some inheritance, we maximized cohesion in our current system diagram.