Sistema de captura del Formato 911 para Coordinación General de Vinculación y Cooperación Académica
Tags |
---|
Resumen
La SEP solicita en septiembre a todos los niveles educativos en México datos sobre su infraestructura, empleados y alumnos mediante el formato 911.
Para esto el departamento administrativo
de UABC propone el proyecto911
, sistema software que sistematiza y automatiza los esfuerzos de la generación de reportes del formato 911 para la Coordinación General de Vinculación y Cooperación Académica
por lo que nuestros alcance ellos lo determinan.
Este proyecto se encamarca en la visión universitaria:
UABC
Misión y Visión
Política institucional
Cultura digital
Infraestructura, equipamiento y seguridad
Gobernanza universitaria, transparencia y rendición de cuentas
Acceso
Los sistemas solo funcionan dentro de la red universitaria. En caso de que se quiera accesar desde afuera, debe usarse una VPN.
Enlaces de interés
Palabras clave
RUP, SEP, formato 911
Introducción
Antecedentes
Procedimiento de captura de datos (actual):
https://planeacion.uan.mx/wp-content/uploads/2021/09/Presentacion-formato-911-Nivel-Superior.pdf
https://planeacion.uan.mx/wp-content/uploads/2021/09/ESCUELA-911.9-1.pdf
https://planeacion.uan.mx/wp-content/uploads/2021/09/INFRAESTRUCTURA-911-9I-2.pdf
https://www.planeacion.sep.gob.mx/principalescifras/
http://www.dgei.unam.mx/hwp/metodologia/
http://transparencia.uabc.mx/Estad_e_Indic/IndicadoresCalidad/20082009/DES/DESCsDeportes.pdf
Documentos organizacionales de gestión de proyectos
Caso de proyecto organizacional (Proyectos anteriores, proyectos parecidos internos/externos/,…).
Plan de gestión de beneficios del proyecto.
Objetivos del proyecto
Identificar una propuesta de valor para generar un Sistema de Internacionalización óptimo, que permita desarrollar módulos de información que agilicen las funciones del capital humano, reduzcan tiempos de captura y reportes institucionales.
Aunque la Oficina de Planeación y Desarrollo Institucional está realizando un sistema parecido, nosotros nos concentraremos en terminar los requerimientos anteriores y cumpliremos con lo pedido para nuestro principal cliente que es la maestra Judith (véase el riesgo asociado).
En este orden de ideas nuestro principal propósito es volver funcional el diseño anterior y agregar nuevos requerimientos por parte del PPVC para el Coordinación General de Vinculación y Cooperación Académica.
- El sistema integrará los datos de todos los planteles a través de otros sistemas institucionales, de las unidades académicas y departamentos usando en parte datos generados por nuestro sistema y otros por la API cimarrón.
- El sistema busca la menor intervención humana. La automatización y la transformación digital son el eje central del proyecto. Deseable, pero dispensable.
- El sistema es una fuente de la verdad y una base de datos con todos los buenos criterios: los usuario o explotadores de la datos (minería de datos) encuentran los datos en un solo lugar. Deseable, pero dispensable.
Modelo de dominio
classDiagram
class Modulo {
listar(consulta)
editar(id)
crear()
eliminar(id)
}
Modulo <-- MovilidadAcademicaDeEntrada
Modulo <-- MovilidadAcademicaDeSalida
Modulo <-- IntercambioEstudiantilDeSalida
Modulo <-- IntercambioEstudiantilDeEntrada
Modulo <-- Convenios
Requisitos
Mockups. Guía de estilos gráficos. Layout. Tema.
Componentes
Colores
Aquí listaremos como deben ser los colores y el conjunto de componentes reutilizables.
{
type: 'light',
primary: {
main: '#00723F',
},
secondary: {
light: '#DD971A',
main: '#DD971A',
dark: '#DD971A',
contrastText: '#fff',
},
error: {
main: '#af3c0b',
},
warning: {
main: '#AF870B',
},
info: {
main: '#20419A',
},
background: {
default: '#fcfcfe',
}
}
typography: {
fontFamily: '"Noto Sans", "Monserrat", Arial, sans-serif',
}
Layouts
Inicio de sesión
Lista
Crear
Editar
Menú de usuario
Análisis y diseño
Como los módulos son iguales en cuanto a funcionalidad pero no en cuanto información presentamos un esquema genera por las funcionalidades de cada módulo.
Como en general existen varios componentes y estrictamente no seguimos el paradigma orientado a objetos, mostramos la secuencia de una interacción desde el usuario.
Listar
sequenceDiagram
ModuloLista->>ModuloLista: Renderiza columnas /modulo
ModuloLista->>ModuloIndice: Authorization: Bearer [JWT TOKEN] /api/modulo
ModuloIndice->>ModuloIndice: Verificar credenciales
ModuloIndice->>MongoDB: Listar todos los miembros del modulo
MongoDB--)ModuloLista: Miembros [{"id": "...", ...}, ...]
Buscar
sequenceDiagram
ModuloLista->>ModuloLista: Renderiza columnas /modulo/?filter{q="..."}
ModuloLista->>ModuloIndice: Authorization: GET Bearer [JWT TOKEN] /api/modulo/?filter{q="..."}
ModuloIndice->>ModuloIndice: Verificar credenciales
ModuloIndice->>MongoDB: Listar todos los miembros del modulo que cumplen q
MongoDB--)ModuloLista: Miembros [{"id": "...", ...}, ...]
Crear
sequenceDiagram
ModuloCrear->>ModuloCrear: Renderiza campos /modulo/crear
ModuloCrear->>ModuloIndice: POST Authorization: Bearer [JWT TOKEN] /api/modulo/ body={..campos}
ModuloIndice->>ModuloIndice: Verificar credenciales
ModuloIndice->>MongoDB: Crear
MongoDB--)ModuloCrear: Mensaje de creación exitosa
Editar
sequenceDiagram
ModuloEditar->>ModuloEditar: Renderiza campos /modulo/editar/:id
ModuloEditar->>ModuloIndice: PUT Authorization: Bearer [JWT TOKEN] /modulo/:id body={..campos}
ModuloIndice->>ModuloIndice: Verificar credenciales
ModuloIndice->>MongoDB: Edición de registro :id
MongoDB--)ModuloEditar: Mensaje de edición exitosa
Eliminación
sequenceDiagram
BotonEliminacion->>ModuloIndice: DELETE Authorization: Bearer [JWT TOKEN] /modulo/:id
ModuloIndice->>ModuloIndice: Verificar credenciales
ModuloIndice->>MongoDB: Eliminación de registro :id
MongoDB--)ModuloEditar: Mensaje de eliminación exitosa
Construcción
Ecosistema (conjunto de tecnologías, procesos, … usados)
Para instalar el proyecto debe usarse docker
. En caso de que se necesite usar la CimaAPI, debe configurarse y usarse en toda interacción la VPN proporcionada por la UABC, las credenciales de CimaAPI deberán estar actualizadas y podrán ser solicitadas a Gabriel Aparicio Hernandez.
https://sanchezcarlosjr.github.io/proyecto911/ecosistema
Flujo de trabajo
Git workflow
Nuestra política es Git Flow.
Mantegamos lo simple:
- La rama
main
está prohibida hasta saber que funciona. En el servidor de producción.
- La rama
develop
la usamos para verificar que funciona, con los cambios de todos los integrantes. En el servidor de preproducción.
- La rama de
backend
para los equipos de dominio y datos.
- La rama de
frontend
para los equipos de presentación web.
- Code review.
Referencias
https://www.youtube.com/watch?v=M_3VeKPFi5U&ab_channel=CodelyTV-Redescubrelaprogramación
Pruebas
Pruebas de integración
Usando Cypress probamos la funcionalidad del sistema de manera automática.
Pruebas de aceptación
Con la Coordinación y la maestra Judith con clientes finales, probamos manualmente que el sistema cumpliera las expectativas.
Despliegue
Vault
Para asegurar, almacenar y controlar el acceso a tokens, contraseñas, certificados y llaves de cifrado para proteger secretos y otros datos sensibles los guardamos en Google Drive.
Instalación
Prerequisitos
Asegúrate que tienes acceso a la CIMAPI, para eso necesitas la VPN y las credenciales de acceso. Por favor, consulta la admnistradora para mayor información.
Pasos:
- Clona el repositorio.
git clone https://github.com/sanchezcarlosjr/proyecto911/
- Instala docker y docker compose de acuerdo a tu sistema operativo.
- Cambia el .env.example a .env y escribe tus variables de entorno.
- Crea una carpeta llamada vpn y agrega los 3 archivos de configuración client.conf, ca.crt, ta.key. Ahora necesitamos que los archivos sean compatibles con Gluetun, entonces cambia los archivos (el caption indica cual):
# Keys
# Identity
ca /gluetun/ca.crt
tls-auth /gluetun/ta.key 1
- Ejecuta
docker compose up
- Semilla:
- En caso que estes iniciando desde la BD, también debes subir los archivos que están
database
a Mongo.
Para este tema recomendamos leer:
Gestión
Planificación
Riesgos
- La mayoría de los miembros del equipo nunca han usado el conjunto de tecnologías mencionado en .
- Puede que algunos de los miembros del equipo no estén motivados a realizar sus tareas (y no tienen incentivos para lo mismo). Algunos trabajan.
- Falta de colaboración por parte de los clientes: no acceso a la información actualizada.
- Poca o ninguna colaboración de sistemas/departamentos informáticos debido a que no somos un proyecto institucional.
- Es posible que la comunicación entre el equipo falle.
Legales
Contratos
Patentes
Licencia
Confidencialidad
Términos de uso
Presupuesto y costos
Sobre los miembros del equipo. Relación trabajadores y personas.
Nombre | Trabajador |
---|---|
Edgar Rodriguez Antillon | Sysadmin. Encargado de la infraestructura. |
Omar Alonso Del Rio Peralta | Líder del proyecto “Capa de presentación” y desarrollador de la misma. |
Carlo Alfredo Pano Flores | Desarrollador “Capa de presentación”. |
Francisco Javier Huerta Silva | Desarrollador de “Capa de presentación”. |
Carlos Eduardo Sánchez Torres | Líder del proyecto “Capa de datos y de dominio”, coordinador de ambos equipos y arquitecto. |
José Andrés Herrera Hirales | Desarrollador de “Capa de de datos y de dominio”. |
Jorge Garcia Serrano | Desarrollador de “Capa de de datos y de dominio”. |
Miguel Angel Martinez Alonso | Desarrollador de “Capa de de datos y de dominio”. |
Guías de estilo y acuerdos de equipo
La documentación se escribe en español, se supone leída
Para mantener una comunicación interna fluida, usaremos el español.
El código se escribe en inglés
Para mantener el estándar internacional, usaremos el inglés.
Usaremos un repositorio propio: bifurcación (fork) del proyecto anterior
Porque el equipo anterior está trabajando en sus propios proyectos, es difícil su colaboración en la continuidad del proyecto, por lo que hemos decidido bifurcar el proyecto anterior.
Nuestro proceso de desarrollo de software es RUP
El proceso de desarrollo de software que se adapta a nuestras necesidades es RUP; este fue elegido porque no tenemos todo el conjunto de suposiciones de los procesos ágiles (reuniones todos los días, un cliente disponible, control de los riesgos derivados de los miembros del equipo, los miembros del equipo no manejan pruebas automatizadas, por lo que, mucho menos TDD, ni pensar en que una arquitectura emerja sola) y algunos integrantes opinan que los ágiles poseen demasiada vaguedad.
RUP no es Waterfall.
Comunicación
- Nos reuniremos y comunicaremos los 8 miembros del equipo cada semana en la hora de la clase de los lunes. Después, en el periodo entre semana cada quien usará la herramienta que crea conveniente para comunicarse (WhatsApp, Correo, …) entre sí.
- Nos reuniremos cada dos semanas con el cliente final.
- Las decisiones, los datos o la información deben ser anotadas en el lugar pertinente y no repetirse.
- Seguimos el principio de maximizar la información para todos en todo momento en un único lugar, lo cual significa que el medio debe ser fácil de mantener, de buscar y encontrar.
Requisitos no funcionales implícitos
Seguimos la guía de estilos de la UABC [1].
La interfaz gráfica está pensada en español, aunque no se descarta la puerta para otros idiomas.
Sobre tecnologías y el trabajo en equipo
Los miembros del equipo aceptan el conjunto de tecnologías descritas en .
Pero de ello no se sigue que sepan usarlas.
Como advertencia para nosotros y futuros desarrolladores del proyecto, está documentación no pretende ser un tutorial o explicación de sistemas o librerías externas o subyacentes, suponemos la especialización y el aprendizaje individual como eje central más que el logro del proyecto, por manifestarse en un contexto educativo y no productivo.
En un trabajo «real», los requisitos y el proceso de contratación son una barrera de entrada en cuánto a las habilidades en tecnologías y conocimientos, además suelen filtrar a futuros compañeros problemáticos: tú y tus compañeros no cuentan con estas condiciones, por lo que es un gran riesgo para el proyecto, de esto se sigue el aumento de la probabilidad de no entrega.
Advertencia para futuros desarrolladores o equipos
En la medida de la posible usa estos documentos y nuestro esquema de trabajo.
¡No dudes en pedir los permisos para continuar el proyecto!
Glosario y abreviaturas
SEP. Secretaría de educación pública. https://www.gob.mx/sep
Manual de usuario
https://docs.google.com/document/d/1fBOpZWyohavjpiooqlXq7T-Wbbmm-m9d_7z7UfN5SM8/edit
Minutas
Drive con grabaciones y otros documentos.