Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1. Introducción 1
1.1. Equipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Sistema de Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2. Vistas Arquitectónicas 2
2.1. Vista de Descomposición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1.1. Representación en Grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1.2. Representación en Cajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.3. Descripción de la Vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2. Vista de Componentes y Conectores (C&C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.1. Representación Gráfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.2. Descripción de la Vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3. Vista de Modelo de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3.1. Representación Gráfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3.2. Descripción de la Vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4. Vista de Capas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.1. Representación Gráfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.2. Descripción de la Vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5. Vista de Despliegue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5.1. Representación Gráfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5.2. Descripción de la Vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3. Atributos de Calidad 18
3.1. Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2. Interoperabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3. Rendimiento y Escalabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.4. Alta Disponibilidad y Resiliencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1. Introducción tentable, ya sea de manera rutinaria ó esporádica [1]. Si bien, las
diversas alcaldías han aumentando la disposición de bici-carriles para
1.1. Equipo la movilización de los bici-usuarios y puesto en marcha la construcción
de bici-parqueaderos, no ha podido controlar el excesivo aumento de
Nombre: 1C la inseguridad que aqueja a este grupo. Según datos de la Secretaría
Integrantes: de Movilidad, en el 2020 hubo al menos 10.600 casos de denuncias
por hurto de bicicletas, siendo aproximadamente el 51 % robos a mano
• Liseth Yurany Arévalo Yaru- • Danier Elian Gonzalez Ordo- armada [2], lo que no solo pone en riesgo los bienes materiales de los
ro nez bici-usuarios sino que también corre riesgo su integridad física. Ade-
• Cristian Camilo García Ba- • Daniel Camilo Pérez Cerón más, se estima que estás cifras serían inferiores a la cantidad real de
rrera hurtos si se tiene en cuenta que la mayoría de usuarios que son víctimas
• Guiselle Tatiana Zambrano no realizan una denuncia formal.
• Jhonatan Torres Forero Penagos
1.2. Sistema de Software Teniendo como contexto la problemática anterior, nace el sistema de
software BikeSafe, la cual busca brindar a los usuarios alternativas de
Nombre: BikeSafe rutas seguras y rápidas a través de la creación de grupos para trans-
portarse con base en la hora, punto de origen y llegada de los usuarios.
Logo:
Durante la ruta, el bici-usuario tendrá acceso a datos en tiempo real
1
◦ Funcionalidad crear cuenta: Permite al usuario crear una • Funcionalidad Agregar medio de transporte: Permite al
cuenta de usuario nuevo usuario registrar una bicicleta en el sistema de software.
◦ Funcionalidad modificar datos: Permite al usuario modi- • Funcionalidad Agregar características: Permite al usuario
ficar los datos de su perfil ingresar las especificaciones del medio de transporte agregado.
◦ Funcionalidad ver perfil: Permite al usuario ver los datos
• Funcionalidad modificar datos: El usuario podrá actualizar
almacenados de su propio perfil
los datos asociados a su medio de transporte agregado en el siste-
◦ Funcionalidad ver mis seguidores: Permite al usuario ver ma de software.
que usuarios siguen su cuenta.
• Funcionalidad Eliminar medio de transporte: El usuario
◦ Funcionalidad acceder a bandeja de entrada: Permite podrá eliminar un medio de transporte agregado previamente.
al usuario ver los mensajes e le han enviado.
4
ruta compartida seleccionada. mite el usuario ver el listado de las posibles rutas de un tra-
◦ Funcionalidad Ver top de rutas mejores calificadas: El yecto.
usuario podrá ver un listado con las mejores rutas comparti- ◦ Funcionalidad Mostrar indicaciones a seguir: Permite
das de acuerdo a la calificación que los usuarios le hayan dado al usuario ver las indicaciones a seguir según la ruta que haya
a la ruta. seleccionado.
• Funcionalidades compartidas entre los submódulos de rutas y con- ◦ Funcionalidad Ver puntos de mantenimiento cerca-
juntas nos: Permite al usuario ver los puntos de mantenimiento más
cercanos de acuerdo a su ubicación.
◦ Funcionalidad Ver posición actual en la ruta: El usua-
rio podrá ver durante su recorrido la posición actual en la ◦ Funcionalidad Ver detalle de origen, destino, parti-
ruta seleccionada cipante y hora de salida: El usuario podrá ver los datos
asociados a la ruta seleccionada, tales como punto de inicio,
◦ Funcionalidad Reportar problemas durante la ruta:
punto de llegada, participantes, hora de salida, hora de llega-
El usuario podrá reportar problemas tales como:
da y kilómetros.
Robo ◦ Funcionalidad Generar audio de la ruta en tiempo
Congestión vial real: El usuario podrá escuchar en tiempo real las indicacio-
Mal estado de las ciclorutas nes a seguir de acuerdo a la ruta que esté realizando.
2.2. Vista de Componentes y Conectores (C&C)
2.2.1. Representación Gráfica
6
2.2.2. Descripción de la Vista
El sistema de software está conformado por 3 componentes globales: Front-End: Está conformado por dos sub-componentes, uno web y el
Front-End, Back-End y Data. En cada uno de estos, pueden existir 5 ti- otro móvil. La tabla 2 describe las tecnologías utilizadas para el desa-
pos de sub-componetes, los cuales están descritos con más detalle en la tabla rrollo de estas y los integrantes responsables de su implementación, la
1. tabla 3 contiene una descripción detallada de la funcionalidad de cada
uno de estos sub-componentes.
Abreviatura Nombre Descripción
Interfáz de Componente que contiene acceso a un
Nombre Lenguaje Framework Encargado
Programa- conjunto de funcionalidades ofrecidas por
api ción de los microservicios, este es usado como wa_bikesafe
Dart Flutter Todo el equipo
Aplicacio- capa de abstracción por los componentes ma_bikesafe
nes del Front-end. Tabla 2: Tecnologías utilizadas para la creación de los
Contiene la lógica necesaria para sub-componentes del Front-End.
garantizar un conjunto de funcionalidades
ms microservicio de alguno de los módulos o sub-módulos
del sistema (descritos previamente en la
vista de descomposición).
7
Nombre Descripción
Contiene la lógica necesaria para Se encarga de garantizar que el usuario
Base de almacenar y obtener de forma adecuada wa_bikesafe acceda a las funcionalidades completas de su
db
Datos la información procesada por el sistema perfil, medios de transporte y estadísticas.
de software. Se encarga de garantizar que el usuario
Contiene la estructura visual y lógica acceda a las funcionalidades básicas de perfil
Aplicación para interactuar con el usuario y ma_bikesafe
wa y medios de transporte; y completas del
Web garantizar el acceso a las funcionalidades manejo de rutas en tiempo real.
del sistema de software a nivel web.
Contiene la estructura visual y lógica Tabla 3: Descripción de los sub-componentes del Front-End.
Aplicación para interactuar con el usuario y
ma
móvil garantizar el acceso a las funcionalidades
del sistema de software a nivel móvil. Bachk-End: Este componente está conformado por 8 sub-
componentes, 7 de ellos son microservicios y están conectados a un
Tabla 1: Tipo de sub-componentes que conforman el sistema de software API-Gateway de tipo GraphQL, la tabla 4 especifica las tecnologías
utilizadas en la implementación de los sub-componentes y los respon-
A continuación se describirá de forma detallada la funcionalidad de cada sables de realizarla, en la tabla 5 se especifica la función de cada uno
uno de los componentes y sub-componentes definidos para el sistema: de estos.
Nombre Lenguaje Framework Encargado Nombre Descripción
api_gateway JavaScript Express Jhonatan Modela y gestiona la creación de rutas y los
ms_statistic Go Revel Torres ms_route elementos que lo conforman como el manejo
Elian de chats y sus miembros.
ms_account Typescript Express.js
Gonzalez Modela y gestiona la creación de los medios
Daniel ms_transport de transporte usados por los usuarios,
ms_social Java SpringBoot
Perez facilitando la actualización de estos datos.
Cristian Recopila información relacionada con los
ms_real_time Elixir Phoenix
García usuarios para arrojarle de forma
ms_statistic
Tatiana personalizada un ponderado de la actividad
ms_route JavaScript Express
Zambrano de este en la plataforma.
Liseth
ms_transport Python Django Tabla 5: Descripción de los sub-componentes del Back-End.
Arevalo
db_transport
db_real_time
db_route
11
2.3.2. Descripción de la Vista ◦ Seguidores: Esta entidad representa la tabla que relaciona
los registros de usuario como seguido y seguidor.
Modulo Usuario
Atributos:
• Elementos id_grupo: atributo de tipo entero que es la llave prima-
ria de la entidad
◦ Usuarios: Esta entidad representa la tabla que almacena los
id_u_seguidor: atributo de tipo entero que es la llave
datos básicos de los usuarios registrados en el sistema de soft-
foránea que representa la relación con la tabla usuarios.
ware.
Atributos: id_u_seguido: atributo de tipo entero que es la llave
foránea que representa la relación con la tabla usuarios.
id_usuario:atributo de tipo entero que es la llave pri-
maria de la entidad • Relaciones
cédula_usuario: atributo de tipo entero que almace- ◦ Usuarios tiene una relación de uno a uno con Autenticaciones
na la cédula ingresada por el usuario, y además debe ser ◦ Usuarios tiene una relación de muchos a muchos con seguido-
único. res.
nombre_usuario: atributo de tipo string que almacena
el nombre ingresado por el usuario. Módulo de Estadísticas
apellido_usuario: atributo de tipo string que almacena • Elementos:
12
el apellido ingresado por el usuario. ◦ Users: Esta entidad almacena los datos básicos de los usua-
teléfono_usuario: atributo de tipo entero que almace- rios.
na el teléfono ingresado por el usuario. Atributos:
email_usuario: atributo de tipo string que almacena la id: Atributo de tipo entero y llave primaria de la entidad.
dirección de correo electrónico ingresado por el usuario, uid: Atributo de tipo string con el que se identifica al
y además debe ser único. usuario dentro de la interfaz gráfica.
◦ Autenticaciones: Esta entidad representa la tabla que al- ◦ RouteTypes: Esta entidad almacena los tipos de rutas.
macena los datos de autenticación. Atributos:
Atributos: id: Identificador de tipo entero y llave primaria de la en-
id_autenti: atributo de tipo entero que es la llave pri- tidad.
maria de la entidad name: Atributo de tipo string que representa el nombre
id_usuario: atributo de tipo entero que es la llave forá- del tipo de ruta.
nea que representa la relación con la tabla usuarios. ◦ Routes: Esta entidad almacena los datos básicos de cada ru-
usuario_autenti: atributo de tipo string que almacena ta.
el dato usuario para autenticación. Atributos:
clave_autenti: atributo de tipo string que almacena el id: Identificador de tipo entero y llave primaria de la en-
dato contraseña (cifrada) para autenticación. tidad.
routeTypeId : Atributo de tipo entero que es llave fo- startTime : Atributo de tipo datetime que representa la
ránea con la entidad RouteType y representa el tipo de fecha y hora en la que se inició el viaje.
ruta. endTime : Atributo de tipo datetime que representa la
uid: Atributo de tipo string con el que se identifica a la fecha y hora en la que finalizó el viaje.
ruta dentro de la interfaz gráfica.
Modulo Transporte
distanceInKM : Atributo de tipo decimal que represen-
ta la distancia total que mide la ruta en kilometros. • Elementos
createdAt : Atributo de tipo datetime que representa la ◦ Transporte: Esta entidad permite almacenar la información
fecha de creación de la ruta. de los medios de transporte registrados en el sistema de sof-
◦ UserRoutes: Esta entidad almacena las rutas en las que se ware.
encuentra inscrito cada usuario. Atributos:
Atributos: id_transporte:Atributo de tipo entero que es la llave
id: Identificador del invitado o participante. primaria de la entidad.
userId: Atributo de tipo entero que es llave foránea con tipo_transporte: Atributo de tipo string que indica
la entidad Users y representa el usuario que se inscribió cuál es el medio de transporte agregado por el usuario.
a la ruta. carac_transporte: Atributo de tipo string en el cual se
routeId: Atributo de tipo entero que es llave foránea con especifican las cualidades asociadas a el medio de trans-
13
Logic:
En la capa física Logic se encuentra el componente de api_gateway
el cual está conformado por las capas Server, Schema y Provider, la
cual puede hacer uso de los microservicios ms_statistic , ms_account,
ms_social, ms_real_time , ms_route, ms_transport. Los microservi-
cios ms_social, ms_real_time y ms_route, tienen una subarquitectura
basada en model, controller y view. El microservicio ms_statistic tie-
ne una subarquitectura hexagonal, el microservicio ms_transport con-
tiene las capas View, Serializer y Model, por ùltimo el microservicio
ms_account tiene una subarquitectura de capas las cuales son Resol-
16
ver, Types y model. La capa Logic hace uso de la capa física Data.
Data:
La capa física Data contiene las componentes de bases de datos
db_statistic, db_user, db_realtime, db_transport y db_route. Cada
uno de estos contiene sus respectivas capa de Database.
2.5. Vista de Despliegue
2.5.1. Representación Gráfica
17
2.5.2. Descripción de la Vista 3. Atributos de Calidad
3.1. Seguridad
3.2. Interoperabilidad
3.3. Rendimiento y Escalabilidad
3.4. Alta Disponibilidad y Resiliencia
La vista de despliegue contiene la definición de los componentes descritos
en la vista C&C, especificando el entorno de ejecución, el contenedor y el Referencias
nodo en el que se encuentra cada componente y el puerto que se utiliza para
realizar el despliegue. [1] Más del 50 % de robos de bicicletas en Bogotá se dan por atraco a mano
armada. Disponible en: https://www.infobae.com/america/colombia/
2021/02/18/mas-del-50-de-robos-de-bicicletas-en-bogota-se-
dan-por-atraco-a-mano-armada/
En el Nodo1 se encuentran desplegados todos los microservicios, el api [2] El 51 % del hurto de bicicletas en Bogotá se da por atraco con arma. Dis-
y el componente web, cada uno en su respectivo contenedor. En el Nodo2 ponible en: https://www.lafm.com.co/bogota/el-51-del-hurto-de-
se encuentran desplegados los componentes de bases de datos desarrollados
18
bicicletas-en-bogota-se-da-por-atraco-con-arma
en MySql. En el Nodo3 se encuentran desplegados los componentes de ba-
ses de datos desarrollados en PosgreSQL. El componente de base de datos [3] Discovery and Visualization of NoSQL Database Schemas. Diego Sevilla.
db_route_prod se implementó en el servicio Atlas. El componente móvil se (25 de Mayo de 2018). Disponible en: https://modeling-languages.
encuentra desplegado en Android. com/discovery-and-visualization-of-nosql-database-schemas/