Algoritmo de conteo
CAPÍTULO 4 Diseño de la aplicación
4.1 Introducción
En el presente capítulo se desarrollará la explicación correspondiente a la materialización del sistema propuesto. Se presentarán los detalles del diseño e implementación de la aplicación. Además, se incluye la explicación de cómo cooperan los componentes del sistema, como así también la interacción con el usuario.
La estructura del capítulo se presenta de la siguiente manera: en la sección 4.2 se explica en detalle la arquitectura utilizada en el sistema, componentes e interacción de los mismos. En la sección 4.3 se detalla la fase de entrenamiento, explicando las interacciones involucradas en la predicción mediante diagramas específicos. En la sección 4.4 se mostrarán los aspectos relacionados a la etapa de cálculo. La sección 4.5 resume la estructura de datos general de la información almacenada. La sección 4.6 nombra las tecnologías utilizadas para la implementación. En la sección 4.7 se realiza una muestra de la interfaz de la aplicación de conteo y, por último, en la sección 4.8 se muestra el resumen del presente capítulo.
.
4.2. Arquitectura general
En la Figura 4.1 se muestra un diagrama general del sistema desarrollado, mostrando las interacciones entre los componentes principales que participan. Como se puede observar en la figura existe una separación
lógica entre cliente y servidor, la cual indica el estilo arquitectónico
client/server elegido para el sistema.
Figura 4.1 - Diagrama general -
Por un lado se pueden ver las aplicaciones que conforman el lado cliente, estas pueden ser aplicaciones móviles o web. Provee una interfaz de usuario, que permite a los pasajeros ver la posición de los colectivos en tiempo real y consultar la cantidad de personas de cada uno de ellos, mediante peticiones al servidor.
La arquitectura elegida posee la característica de permitir que se agreguen nuevos clientes de manera sencilla como así distintos tipos de clientes, lo que brinda una ventaja en la escalabilidad. Además, permite la centralización del control, es decir, los accesos, recursos e integridad de los
datos son controlados por el servidor de forma que un programa cliente defectuoso o no autorizado no pueda dañar el sistema [14].
Por otro lado, el servidor se encarga de realizar diferentes tareas. Una de ellas es, como se ve en la figura, recibir los eventos de viajes externos que realizan los pasajeros y almacenarlos en la base de datos. A su vez recibe las peticiones de la aplicación cliente, para luego realizar el cálculo de la cantidad de pasajeros de los colectivos correspondientes y enviar la respuesta al cliente. Como último punto, realiza el cálculo de las predicciones de bajada periódicamente analizando el historial de viajes de cada pasajero, las cuales almacena en la base de datos.
La Figura 4.2 ilustra un diagrama de despliegue/deployment (estructural) para poder mostrar el despliegue físico de información generada por el programa de software en los componentes de hardware . 3
Figura 4.2 - Diagrama de deployment -
A continuación se explican brevemente los principales componentes involucrados tanto en el cliente como en el servidor. En los siguientes puntos del capítulo se explicará con mayor detalle los componentes del sistema para
poder explicar de forma más específica la materialización de la aplicación, a niveles de diseño e implementación.
Cliente:
● Interfaz de Usuario: Componente que permite la interacción del usuario con la aplicación. De esta manera, el usuario puede hacer peticiones para que luego este componente pueda plasmar la información requerida en un mapa.
● Peticiones: Conjunto de clases que permiten la comunicación del cliente con el servidor mediante peticiones.
Servidor:
● Captura y procesamiento de eventos: Componente encargado de capturar y procesar los viajes de los pasajeros de manera que éstos puedan ser correspondidos con una determinada zona y etiqueta.
● Almacenamiento de la información: Este componente se encarga de almacenar en una base de datos los eventos de los pasajeros ya procesados y las predicciones realizadas para cada uno de ellos.
● Predicción: En este componente se encuentran el conjunto de clases que permiten analizar el historial de viajes de los pasajeros para luego poder predecir las bajadas de los colectivos.
● Cálculo de pasajeros: Componente encargado de calcular el número de personas dentro de cada colectivo circulante para de esta manera poder enviarle una respuesta a la petición del cliente.
4.3. Fase de entrenamiento
En la presente sección se desarrolla la etapa de entrenamiento que engloba tanto la captura de los eventos de viajes externos producidos por los pasajeros, como las predicciones de bajada para cada uno de ellos.
4.3.1. Captura de la información
Cada vez que un pasajero realiza un viaje de colectivo realiza el pago mediante la tarjeta magnética, la cual permite almacenar los datos del viaje mencionado. En la Figura 4.3 se puede observar a través del diagrama UseCaseMap (diagrama que muestra el flujo de interacción entre los componentes involucrados) como es el flujo de ingreso de información de un viaje específico.
Figura 4.3 - UseCaseMap del ingreso de información ante un evento de viaje -
Como se ve en la Figura 4.3, toda la información correspondiente a un evento de viaje se debe procesar antes de su almacenamiento, es decir, el componente “Captura y procesamiento de eventos” realiza lo mencionado para que luego el componente “Almacenamiento” guarde la información procesada en la base de datos. A continuación, se detallará cómo se realiza el procesamiento antes mencionado.