Estructura¶
Visión de Conjunto¶
El sistema se encuentra compuesto por tres componentes principales; Backend, Frontend Web, Aplicación Móvil, agregando otras dos partes adicionales; un motor de base de datos y una colección de sensores.
El Frontend web tiene Componentes Visuales que le permiten a los usuarios interactuar gráficamente con ellos, contienen vistas y controladores. Los Ocultadores de Componentes Visuales controlan la forma en la que ciertos componentes se despliegan al usuario.
La Aplicación Móvil se describe de una forma bastante similar, pero este al no tener un acceso a navegador por URL no requiere Ocultadores de Componentes para impedir el acceso a ciertos componentes de URL.
Los Servicios del Frontend y la Aplicación Móvil se comunican con el Spring Servlet del Backend utilizando el protocolo HTTP, por lo que aquí se encuentra presente un Estilo de Arquitectura Orientada a Servicios (SOA), específicamente REST. Las solicitudes pasan por varios filtros (Pipes and filters), uno de ellos es el filtro de Autenticación el cuál extrae credenciales a las peticiones de los usuarios.
Las peticiones que llegan al Spring Servlet son derivadas a los Controladores, los cuales conocen la intención de la solicitud y generan una respuesta dependiendo de la operación que se requiere. Para generar tal respuesta, los Controladores solicitan datos al componente Repository, el cuál contiene diversas interfaces que permiten gestionar la información de la Base de Datos (Estilo de Arquitectura Repository). Sin embargo, Repository no puede hacer esto directamente ya que no conoce exactamente cuál motor de base de datos se encuentra utilizando, por lo que deriva tal tarea al Hibernate Entity Manager, para generar los procedimientos de comunicación con la Base de Datos.
El Sensor es un componente técnico que puede comunicarse directamente con la Base de Datos para almacenar información respecto a las medidas que este obtiene.
Los Modelos tienen el propósito de dar a conocer la estructura de los datos que se deben almacenar en la Base de Datos, por lo que Hibernate Entity Manager los utiliza principalmente para conocer la forma de los datos.
Sección de Componentes¶
En esta seccion se describe cada uno de los componentes pertenecientes a cada una de las las arquitectura que componen nuestro sistema.
Componente Frontend Web¶
| Componente | Frontend_Web |
| Responsabilidades |
|
| Colaboradores |
|
| Notas | El componente se crea una sola vez y persiste durante todo el tiempo. |
| Problemas |
Componentes Visuales¶
| SubComponente | Frontend_Web_Componentes_Visuales |
| Responsabilidades |
|
| Colaboradores |
|
| Notas | El sub-componente se crea una vez y persiste mientras el sistema esta en uso. |
| Problemas |
Servicios¶
| SubComponente | Frontend_Web_Servicios |
| Responsabilidades |
|
| Colaboradores |
|
| Notas | El sub-componente se crea se crea una sola vez y se inyecta en los componentes visuales. Pueden existir distintas instancias del componente. |
| Problemas |
Ocultadores de componentes visuales¶
| SubComponente | Frontend_Web_Ocultadores_De_Componentes_Visuales |
| Responsabilidades |
|
| Colaboradores |
|
| Notas | El sub-componente se crea una vez y persiste mientras el sistema esta en uso. |
| Problemas |
Componente Aplicación Móvil¶
| Componente | Aplicación_Móvil |
| Responsabilidades |
|
| Colaboradores |
|
| Notas | El componente se crea una sola vez y persiste mientra el sistema está en ejecución. |
| Problemas |
Componentes Visuales¶
| SubComponente | Aplicación_Móvil_Componentes_Visuales |
| Responsabilidades |
|
| Colaboradores |
|
| Notas | El sub-componente se crea una vez y persiste mientras el sistema esta en uso. |
| Problemas |
Servicios¶
| SubComponente | Aplicación_Móvil_Servicios |
| Responsabilidades |
|
| Colaboradores |
|
| Notas | El sub-componente se crea se crea una sola vez y se inyecta en los componentes visuales. Pueden existir distintas instancias del componente. |
| Problemas |
Componente Backend¶
| Componente | Backend |
| Responsabilidades | Se encargar de recicibir todas las peticiones del componen |
| Colaboradores |
|
| Notas | El componente se crea una vez y persiste todo el tiempo para el sistema. Existe solo una instancia del componente en la arquitectura. |
| Problemas |
Spring Servlet¶
| SubComponente | Backend_Spring_Servlet |
| Responsabilidades |
|
| Colaboradores |
|
| Notas | El sub-componente se encuentra disponible (persiste) durante todo el tiempo para el sistema. Existe solo una instancia del sub-componente. |
| Problemas |
Autenticación¶
| SubComponente | Backend_Autenticacion |
| Responsabilidades |
|
| Colaboradores | |
| Notas | El sub-componente se crea una sola vez y persiste por siempre para el sistema. Existe solo una instancia del componente en la arquitectura. |
| Problemas |
Controladores¶
| SubComponente | Backend_Controladores |
| Responsabilidades |
|
| Colaboradores |
|
| Notas | El sub-componente controladores se crea una sola vez y es persistente la ejecución del sistema. Se instancia una sola vez en la arquitectura. |
| Problemas | Las referencias ciclicas en los modelos generan conflictos al generar el JSON. |
Repository¶
Entity Manager¶
| SubComponente | Backend_Entity_Manager |
| Responsabilidades |
|
| Colaboradores |
|
| Notas | El sub-componente Entity Manager se crea una sola vez, y esta instancia persiste para todo el sistema mientras esta funcionando. |
| Problemas |
Modelos¶
| SubComponente | Backend_Modelos |
| Responsabilidades |
|
| Colaboradores | |
| Notas | El sub-componente es creado a medida que es necesitado por el Entity Manager y es destruido una vez ya no se necesita. Existen muchas instancias del componente en la arquitectura. |
| Problemas |
Base de Datos¶
| Componente | Base_de_datos |
| Responsabilidades |
|
| Colaboradores | |
| Notas | El componente se crea una sola vez, y existe solo una instancia de este en sistema la cual persiste durante todo el tiempo. |
| Problemas |
Sensor¶
| Componente | Sensor |
| Responsabilidades |
|
| Colaboradores |
|
| Notas | Existen muchas instancias del componente sensor, sin embargo, cada una de persiste una vez es creada. |
| Problemas |
Sección de Interfaces¶
En esta sección se describen y especifican los servicios o interfaces que provee el sistema.
Usuario¶
| Interface | Usuario_controller |
| Descripción | Permite acceder, eliminar, crear y actualizar un usuario. |
| Operaciones |
|
|
|
|
|
|
|
|
|
| Protocolo | No existen restricciones en el orden de las operaciones |
| Notas | Esta interface es provista en el componente servicios del frontend y el componente servicios de la aplicación movil |
| Problemas |
Pregunta¶
| Interface | Pregunta_controller |
| Descripción | Permite acceder, eliminar, crear, actualizar y listar por preguntas aprobadas y no aprobadas. |
| Operaciones |
|
|
|
|
|
|
|
|
|
|
|
|
|
| Protocolo | No existen restricciones en el orden de las operaciones |
| Notas | Esta interface es provista en el componente servicios del frontend y el componente servicios de la aplicación movil |
| Problemas |
Respuesta¶
| Interface | Respuesta_controller |
| Descripción | Permite acceder, aprobar, eliminar, ademas de listar por respuestas no aprobadas. |
| Operaciones |
|
|
|
|
|
|
|
| Protocolo | No existen restricciones en el orden de las operaciones |
| Notas | Esta interface es provista en el componente servicios del frontend y el componente servicios de la aplicación movil |
| Problemas |
Medida¶
| Interface | Medida_controller |
| Descripción | Permite acceder, guardar, listar y encontrar medidas entre un rango de fechas. |
| Operaciones |
|
|
|
|
|
|
|
| Protocolo | No existen restricciones en el orden de las operaciones |
| Notas | Esta interface es provista en el componente servicios del frontend y el componente servicios de la aplicación movil |
| Problemas |
Grafico¶
| Interface | Grafico_medidas |
| Descripción | Permite graficar las medidas registradas, cambiar el rango de fechas a a partir de una lista de medidas |
| Operaciones |
|
| Protocolo | No existen restricciones en el orden de las operaciones |
| Notas | Esta interface es provista en el componente de Forntend, especificamente en el sub-componente componentes visuales. |
| Problemas |