En esta sección se presentan diagramas UML (Unified Modeling Language) del diseño del sistema. En las subsecciones se detallan el diseño de cada uno de los componentes del sistema. Para describir la interacción que existe entre diferentes objetos del sistema se utilizan diagramas con notación UML.
Diagrama general de interacción
Antes de empezar a definir cada una de las partes, se va a mostrar un esquema general que representa la interacción de la aplicación instalada en los dispositivos móviles que funcionan como agentes, en conjunto con los api’s mediante un diagrama conceptual.
Figura 4.1 Diagrama conceptual de interacción SAVI.
Como se observa en la figura 4.1, como principal elemento se tienen los teléfonos de cada usuario que integra el grupo de alerta vecinal, estos funcionan como agentes. Permitiendo la interacción con cada uno de los integrantes, sin revelar información comprometida, por ejemplo, el agente de un usuario determinado, puede informar si está ubicado o no en su domicilio declarado, sin dar datos comprometidos de su ubicación actual. Cada agente no conoce el todo, interactuando con otros agentes es que se genera una vista del todo.
Diagrama de componentes
Un diagrama de componentes representa cómo un sistema de software es dividido en componentes y muestra las dependencias entre estos componentes. Los componentes físicos incluyen archivos, cabeceras, bibliotecas compartidas, módulos, ejecutables, o paquetes. Los diagramas de Componentes prevalecen en el campo de la arquitectura de
software, pero pueden ser usados para modelar y documentar cualquier arquitectura de sistema.
Debido a que los diagramas de componentes son más parecidos a los diagramas de casos de usos, éstos son utilizados para modelar la vista estática y dinámica de un sistema. Muestra la organización y las dependencias entre un conjunto de componentes. No es necesario que un diagrama incluya todos los componentes del sistema, normalmente se realizan por partes. Cada diagrama describe un apartado del sistema. En él se situarán librerías, tablas, archivos, ejecutables y documentos que formen parte del sistema. Uno de los usos principales es que puede servir para ver qué componentes pueden compartirse entre sistemas o entre diferentes partes de un sistema.
En la figura 4.2 se presenta el diagrama de componentes.
Figura 4.2 Diagrama de componentes SAVI.
Modelo de Casos de Uso
Un caso de uso es una técnica de modelado usada para describir lo que debería hacer un sistema nuevo o lo que hace un sistema que ya existe. Los casos de uso describen bajo la forma de acciones y reacciones el comportamiento de un sistema desde el punto de vista de un usuario, permiten definir los límites del sistema y las relaciones entre el sistema y el entorno. Los componentes primarios de un modelo de casos de uso (case-use model) son los casos de uso (use cases), los actores y el sistema modelado. Los casos de uso son descripciones funcionales del sistema; describen cómo los actores pueden usar un
sistema. Los límites del sistema se definen por la funcionalidad que se maneja en el sistema.
La funcionalidad se representa mediante diversos casos de uso, especificando cada uno una funcionalidad completa (desde su inicio por parte de un actor externo hasta que haya realizado la funcionalidad requerida). Un caso de uso siempre debe devolver algún valor a un actor, siendo el valor cualquier cosa que el actor desee del sistema. El actor es una entidad externa que tiene interés en interactuar con el sistema. A menudo, es una persona que usa el sistema, pero también puede ser otro sistema o alguna clase de dispositivo hardware que necesita interactuar con el sistema.
A continuación, en la figura 4.3 se presenta el diagrama de casos de uso.
Especificación de Casos de Uso
RF-1 Registrarse
Versión 1.0 - 12/04/2018 Objetivos
asociados
Crear una cuenta de SAVI. Ingresando los datos necesarios.
Descripción El usuario instala la aplicación y desear crear una cuenta.
Precondición El usuario no debe tener otra cuenta abierta. Se considera unicidad del campo mail.
Secuencia Normal
Paso Acción
1 El usuario ingresa su correo.
2 El sistema verifica que los datos ingresados sean válidos.
3 El usuario ingresa su nombre de usuario y una contraseña.
4 El sistema verifica que los datos ingresados sean válidos.
Postcondición El usuario queda registrado en el sistema. Excepciones Paso Acción
2.1 Si el correo es invalido se genera una alerta.
Si el correo ya fue asociado a una cuenta SAVI se genera alerta.
2.2 Vuelve al paso 1.
4.1 Se verifica que el nombre de usuario y la contraseña sean
válidos, de no serlo se genera una alerta.
4.2 Vuelve al paso 3.
RF-2 Iniciar Sesión
Objetivos asociados
Se accede a SAVI.
Descripción El usuario accede a las funcionalidades de SAVI.
Precondición El usuario debe tener una cuenta de usuario conocida y habilitada. Secuencia
Normal
Paso Acción
1 El usuario ingresa su nombre de usuario
2 El usuario ingresa su contraseña.
3 El sistema verifica que los datos ingresados sean válidos
Postcondición El usuario queda logueado en el sistema. Excepciones Paso Acción
3.1 Si el nombre de usuario o la contraseña si son incorrectas se emite una alerta.
3.2 Vuelve al paso 1.
RF-3 Modificar Datos
Versión 1.0 - 12/04/2018 Objetivos
asociados
Se modifican los datos del usuario.
Descripción El usuario ingresa sus datos personales y familiares. Precondición El usuario debe estar logueado en el sistema.
Secuencia Normal
Paso Acción
1 El usuario ingresa sus datos personales.
2 El sistema verifica que los datos ingresados sean válidos
4 El sistema verifica que los datos ingresados sean válidos Postcondición El usuario actualiza sus datos.
Excepciones Paso Acción
2.1 Si alguno de los datos personales es invalido se genera una
alerta.
2.2 Vuelve al paso 1.
4.1 Si alguno de los datos familiares es invalido se genera una
alerta. 4.2 Vuelve al paso 3. RF-4 Agregar Domicilio Versión 1.0 - 12/04/2018 Objetivos asociados
Se agrega un nuevo domicilio asociado a la cuenta.
Descripción El usuario ingresa datos del domicilio que desea asociar a la cuenta. Precondición El usuario debe estar logueado en el sistema además de tener los datos
personales y familiar completados. Secuencia
Normal
Paso Acción
1 El usuario ingresa los datos del domicilio que quiere asociar.
2 El sistema verifica que los datos ingresados sean válidos
Postcondición El usuario actualiza los datos de domicilio asociado. Excepciones Paso Acción
2.1 Si el domicilio ingresado no es válido se genera una alerta.
RF-5 Crear Grupo Vecinal Versión 1.0 - 12/04/2018 Objetivos
asociados
Se agrega un nuevo grupo vecinal.
Descripción El usuario elige los datos que van a representar al grupo vecinal. Precondición El usuario debe tener su perfil de datos completo.
Secuencia Normal
Paso Acción
1 El usuario ingresa los datos del grupo respectivo.
2 El sistema valida que no se tenga suscripción a otro grupo.
3 El sistema verifica que los datos ingresados sean válidos
4 Se crea un nuevo grupo con el usuario que lo creó registrado.
Postcondición El usuario crea un nuevo grupo SAVI. Excepciones Paso Acción
1.1 Si alguno de los datos no es válido.
1.2 Vuelve al paso 1.
RF-6 Unirse a Grupo Vecinal
Versión 1.0 - 12/04/2018 Objetivos
asociados
Se agrega al usuario al grupo vecinal.
Descripción El usuario desea suscribirse a las alertas generados por el grupo además de contribuir con las mismas.
Precondición El usuario debe poder escanear el código QR provisto por algún miembro del grupo.
Secuencia Normal
1 El usuario escanea el identificador único del grupo.
2 El sistema verifica que los datos ingresados sean válidos
3 Se asocia al usuario al grupo.
Postcondición El usuario quedará suscrito al nuevo grupo, ya puede ver y recibir las alertas que rigen sobre este.
Excepciones Paso Acción
2.1 Si el identificador del grupo es incorrecto, se genera una alerta.
2.2 Vuelve al paso 1.
2.1.1 Si el usuario no cumple con condición de rango de grupo o el máximo de usuario fue alcanzado.
2.1.2 Se informa dicha situación y se vuelve al paso 1.
RF-7 Emitir Alerta
Versión 1.0 - 12/04/2018 Objetivos
asociados
Se emite una alerta vecinal.
Descripción El usuario desea informar de alguna alerta. Precondición El usuario está suscrito a un grupo vecinal. Secuencia
Normal
Paso Acción
1 El usuario elige para que usuario está dirigida la alerta.
2 El usuario elige que tipo de alerta se desea disparar..
3 Se da curso a la alerta generada.
Postcondición El usuario queda pendiente de las respuestas por parte del grupo. Excepciones Paso Acción
- N/A
RF-8 Responder Alerta
Versión 1.0 - 12/04/2018 Objetivos
asociados
Se responde una alerta generada.
Descripción El usuario desea responder ante el evento de una alerta.
Precondición Debe existir al menos una alerta encendida para un determinado grupo. Secuencia
Normal
Paso Acción
1 El sistema genera una notificación.
2 El sistema muestra los detalles de la alerta.
3 El usuario ingresa la respuesta
4 Se propaga la respuesta del usuario.
Postcondición -
Excepciones Paso Acción
- N/A
RF-9 Informar Autoridades
Versión 1.0 - 12/04/2018 Objetivos
asociados
Informar de alguna situación a las autoridades.
Descripción El usuario desea informar a las autoridades, dependiendo de la alerta respondida, son las autoridades notificadas.
Secuencia Normal
Paso Acción
1 El sistema carga el teléfono, marcando el numero de
emergencia seteado.
2 El usuario presiona llamar.
Postcondición -
Excepciones Paso Acción
- N/A RF-10 Agregar familiar. Versión 1.0 - 12/04/2018 Objetivos asociados Se agrega un familiar.
Descripción El usuario desea agregar un nuevo usuario a su nuevo grupo familiar. Precondición El usuario debe poder escanear el código QR provisto por algún
familiar que tenga creada la cuenta SAVI. Secuencia
Normal
Paso Acción
1 El usuario escanea el identificador único del grupo.
2 El sistema verifica que los datos ingresados sean válidos.
3 Se asocia al usuario al grupo familiar..
Postcondición El usuario quedará suscrito al nuevo grupo familiar, ya puede ver y recibir las alertas que rigen sobre este.
Excepciones Paso Acción
2.1 Si el identificador del usuario es incorrecto, se genera una
alerta.
RF-11 Quitar familiar. Versión 1.0 - 12/04/2018 Objetivos
asociados
Se quita un familiar del grupo familiar.
Descripción El usuario desea quitar un usuario a su nuevo grupo familiar. Precondición Ambos usuarios deben estar agregado al grupo familiar. Secuencia
Normal
Paso Acción
1 El usuario selecciona el usuario a eliminar.
2 El sistema indica la alerta respectiva
3 El usuario confirma la acción.
4 Se elimina la suscripción del familiar.
Postcondición El usuario quedará suscrito al nuevo grupo familiar, ya puede ver y recibir las alertas que rigen sobre este.
Excepciones Paso Acción
3.1 El usuario cancela la acción.
Diagrama de clases
Un diagrama de clases permite representar gráficamente y de manera estática la estructura general de un sistema, mostrando cada una de las clases y sus interacciones (como herencias, asociaciones, etc), representadas en forma de bloques, los cuales son unidos mediante líneas y arcos. Los diagramas de clases son el pilar fundamental del modelado con UML, siendo ampliamente utilizados tanto para análisis como para diseño de sistemas y software en general. Los diagramas de clases son interacciones entre nodos y arcos, que generalmente representan interacciones, relaciones, interfaces y colaboraciones entre las clases, interfaces, notas, restricciones, paquetes y demás elementos que conforman un programa orientado a objetos.
Se muestra el diagrama de clases, en la figura 4.4.
Modelo de Datos NoSQL
La mayoría de los sistemas NoSQL comparten algunas características entre las que destaca que no es necesario definir un esquema que describa la estructura de los datos almacenados, dado que almacenan datos semiestructurados. Esta ausencia de esquema (schemaless) justifica la mayor flexibilidad de estos sistemas frente a los relacionales. Entre las ventajas se destaca que es posible tener datos no uniformes (algunos campos de una misma entidad pueden ser opcional eso tener diferentes tipos) y se facilita la evolución de los datos dado que no es preciso cambiar ningún esquema [29].
Figura 4.5 Ejemplo Base de datos NoSQL
Se observa la captura, figura 4.5, de una instancia de a base de datos. Esta se encuentra distribuida como para clave - valor, es una manera de representarla mediante objetos JSON que luego será interpretado por la aplicación mapeando a instancias de clases del modelo.