## 2 Proposed Software Architecture
### Software Architecture Design
#### 2.2.2 Component View  
This section presents the component diagrams of both tiers. The component diagrams for each tier illustrate the conceptual design elements of our architecture. These diagrams are based on software architectural patterns and recommended technologies based on specialized literature. Component Diagram for the Manager/Administrator Tier  
Figure 2 shows the component diagram for the manager/administrator tier. This diagram follows the Model View Controller (MVC) architectural pattern, which separates the data and business logic from the user interface and the module responsible for managing events. Within the component diagram shown in Figure 2, the following components were defined:  
* View: This component manages the graphical interface with which the user will interact. * Model: This component maps the information stored or extracted from the server database. * Controller: This controls the application's logic and responds to requests from the graphical interface or some other process. * Cloud: This is a component that allows the management of the information found in a server in the cloud. * Notification: This provides the necessary mechanisms to generate notifications that reach users to inform them of a message or an emergency. The advantages of the MVC are the following: It is the architectural pattern that best suits web applications, the support is more straightforward, it is aimed at a new type of customer, and it allows for grouping related action logic in a controller, making it easier to read and reuse. In our case, the technologies used in the manager tier are the following:  
* Angular [32] is an application design framework and development platform for creating single-page applications; it can also work with different patterns. * PostgreSQL [33] is an open-source relational database system. * Firebase [34] is a Google development platform that helps build and develop apps and games. * Spring Framework [35] is an open-source framework that works for the Java platform. Component Diagram for the Mobile Tier  
On the other hand, Figure 3 shows the component diagram for the mobile tier. This diagram follows the Model-View-ViewModel (MVVM) architectural pattern recommended by Google for Android applications [36], which suggests separating the data presentation logic (views or user interface) from the core logic of the application. Figure 2: Component diagram of the administrator tier architecture. Therefore, within the component diagram of the mobile application, the following elements were defined:  
* View: This element manages the graphic interface with which the user will interact when using the mobile application. * ViewModel: It avoids losing information when changes are made to the application's configuration. * Repository: This element sends the information to the local storage of the device that is operating as a mobile tier. * RemoteRepository: This manages the storage of information in a place external to the mobile device. * Information Abstraction: This component transforms the information into a format that allows manipulation and transmission between the mobile and administrator tiers. * Dependency Injection: This component oversees dependency injection to minimize the impact on the use of mobile device resources and mitigate possible errors in creating the different objects necessary for the system's execution. * Data Access: This is responsible for granting access to the other components or processes of the database. * DataBase: This manages the database on the mobile device. * Model: This allows you to map the information that should be stored or extracted from the mobile device's database. * Communication: This provides communication between the mobile tier and the manager tier.