Entornos y metodologías
Desarrollo
El desarrollo del archivo del esclarecimiento es un desarrollo original que parte desde cero. Construye sus propios organismos que interactúan entre sí para generar las páginas; y se apoya en Material-UI para el uso de moléculas y átomos preconstruidos.
Tecnologías y arquitectura
Para el FRONTEND:
ReactJS; versión 17.0.2
Material-UI; versión 5.5
Para definir las rutas se usa la librería React-Router (versión 6.2); con esta librería se define visualmente qué se muestra con base en la URL.
Para el manejo del estado de las aplicaciones se usa la librería de JavaScript Redux; con esta librería se busca que los estados queden persistentes.
React-Redux; versión 7.2.6
ReduxJS; versión 4.0.4
Redux Persist; versión 6.0.0
Los archivos duck de Redux pueden ubicarse dentro de la aplicación en:
Para el archivo del esclarecimiento se usa museo.duck
, dentro del cual está la variable central activeCollection
.
Para algunos desarrollos como los tableros de visualización, visualizaciones geográficas y/o interfaces experimentales de navegación, se utilizan Web Components. De esta manera, estos desarrollos independientes pueden ser definidos como recursos de la base de datos y/o pueden integrarse al frontend del archivo del esclarecimiento renderizándose mediante una arquitectura microfrontend.
Para el BACKEND:
MongoDB
Entorno de programación NodeJS; versión 14.16
NestJS; versión 7.0.11 (backend basado en servicios; escrito en TypeScript versión 3.9.2)
Para la indexación se utiliza ElasticSearch; versión 7.6.2
Se usa MongoDB porque es la base de datos que se ha usado con el metabuscador de la Comisión de la Verdad, y es la que permite editar y agregar nuevo contenido; sin embargo, las consultas que se hacen al archivo del esclarecimiento reposan en el indexador ElasticSearch. En este sentido, toda la interacción y toda la recuperación de datos, se hace a través de este índice.
La decisión de este proceso se lleva a cabo en función de los tiempos de respuesta de ElasticSearch frente a MongoDB; en efecto, el indexador responde mucho más rápido a criterios de consulta complejos (como las búsquedas geográficas, por ejemplo).
Tecnologías usadas en el módulo EDITA:
Para la creación de texto enriquecido, se usa la librería DraftJS; versión 0.11.7
Para la creación de mapas, se usa la librería React Leaflet.js; versión 2.6.1
LeafletJS; versión 1.6.0
Para la edición de audios, se usa la librería WavesurferJS; versión 5.2.0
Para visualizar la onda de audio, se usa la librería @foobar404/wave; versión 1.2.7
Para el manejo de galerías, se usa la librería React Image Gallery; versión 1.2.7
El módulo EDITA es un módulo interno usado por la Comisión de la Verdad para crear colecciones temáticas a partir del acervo documental de la entidad. Para acceder a este módulo se requiere un perfil de creador de contenido, ya que no está disponible para la ciudadanía ni para la entrega. Se deja indicado en la documentación, ya que hace parte del aplicativo para la creación de las colecciones que son visibles en el home del archivo del esclarecimiento.
Dentro de esta ruta, se puede encontrar search.service.ts
; allí se ubica el subservicio simpleMuseo
, que es el servicio que hace las búsquedas para el archivo del esclarecimiento.
Desde el frontend se hace el llamado a los servicios del backend; los controladores principales para este proceso son: SearchService.js
, BookmarkCollectionService.js
, CollectionService.js
. Se pueden encontrar en:
Metodologías
Modelo atómico: bajo esta metodología se definen: páginas, organismos, moléculas y átomos, que luego pueden ser reutilizados en otros desarrollos. Todos los componentes del archivo del esclarecimiento desarrollado por la Comisión de la Verdad, usan esta misma estrategia con el fin de tener una estructura homogénea.
Programación Sprint Scrum: con esta metodología se buscó priorizar desarrollos; cada desarrollador ayudó en esa priorización detectando elementos que debían ser prioritarios.
Historias de usuarios
Definición de tableros y actividades (sprint)
Planeación y seguimientos
Buenas prácticas
Programación Scrum: se recomienda trabajar bajo la metodología de programación Sprint Scrum, dado que es una metodología que permite la articulación fácil y rápida de modelos simples y funcionales, los cuales pueden ir evolucionando con el feedback y las necesidades del cliente.
Bajo esta metodología estaremos en función de un desarrollo iterativo o incremental, el cual consiste en dividir el trabajo en pequeñas partes o bloques temporales (sprint). Al final de cada etapa se entrega una funcionalidad completa. Para estructurar la evolución se recomienda crear el Mínimo Producto Viable (Minimum Viable Product, MVP): producto con suficientes características para satisfacer a los clientes y proporcionar retroalimentación para el desarrollo futuro.
MVP: herramienta que permite aprender mientras se desarrolla. Gracias a la iteración, el producto evoluciona y se reduce el tiempo para la validación de nuevas ideas.
Estandarizar código: definir unas reglas de trabajo; es decir, estandarizar la manera en que se van a crear y llamar las funciones, los métodos, las variables, los atributos, etc. La normalización del código es fundamental para el mantenimiento óptimo del desarrollo.
Comentar el código: es una buena práctica comentar el código a fin de que se convierta en un texto legible, autoexplicativo y facilite las modificaciones y el mantenimiento.
Interacción con usuarios: es una buena práctica tener entrevistas previas con los usuarios del sistema; dichos encuentros permiten entender los requerimientos puntuales y las funcionalidades concretas sobre las que debe basarse el desarrollo. Además, se recomienda encontrar un lenguaje común entre lo técnico del sistema y el requerimiento del usuario, a fin de no generar reprocesos y lograr comunicar fácilmente las funcionalidades del sistema.
Pruebas unitarias (Unit Testing): es una buena práctica realizar pruebas para comprobar que fragmentos de código funcionan correctamente. Es un procedimiento que se lleva a cabo en casi todas las metodologías ágiles de trabajo. Consiste en aislar un fragmento de código y comprobar que funciona a la perfección. Se recomienda crear pruebas unitarias para aquellos módulos que se consideren prioritarios o fundamentales dentro del desarrollo.
Uso de software para la gestión de versiones: el uso de software para el control de versionamiento es fundamental, más si se trabaja de manera colaborativa en un mismo proyecto. El software de gestión de versiones usado por la Comisión de la Verdad es GitLab. Se recomienda usar GitLab y generar un flujo de trabajo por ramas (metodología GitFlow).
De acuerdo con la experiencia del equipo desarrollador, GitFlow, por sí solo, no es suficiente para evitar conflictos y/o borramiento de código dentro de un proyecto. Es necesario recurrir a los Merge request, con el fin de que una sola persona sea la encargada de identificar los conflictos y hacer las fusiones (merge) dentro de la rama principal.
Última actualización