Entornos y metodologías
Desarrollo
El metabuscador fue desarrollado desde cero, no hace parte de desarrollos previos, y está hecho en un lenguaje de programación abierto. Se apoya en herramientas de software.
Tecnologías y arquitectura
JavaScript (estándar del desarrollo)
NodeJS; versión 14
Para el FRONTEND:
Framework ReactJS; versión 16.13.1
Template Metronic (al cierre de esta documentación, aún se utiliza el template; sin embargo, por no ser de uso libre, posiblemente sea retirado del desarrollo en la versión final).
Para el BACKEND:
MongoDB; versión 5.0.3
ElasticSearch; versión 7.6.2
Framework NestJS (versión 7.1.5), escrito en lenguaje TypeScript (versión 4.2)
Dentro del repositorio, se encuentra una carpeta por cada servicio; se pueden encontrar en:
Es importante tener en cuenta que el backend del metabuscador, aunque en su mayoría está desarrollado en función de servicios, tiene algunos componentes implementados bajo el modelo monolítico; esto es así debido a que el aplicativo se comenzó a desarrollar bajo este patrón. En la medida en que el desarrollo fue creciendo, se comenzó a implementar una arquitectura orientada a servicios, conservando algunas estructuras monolíticas que eran funcionales.
Los archivos que ejecutan los diferentes servicios son: para el backend main.ts
y para el frontend app.js
. Dentro del repositorio, se pueden encontrar en la ruta:
Las ETL van a las bases de datos que se quieren integrar, extraen la información de esas bases de datos, la transforma en la nueva estructura y, automáticamente, la carga en la base de datos de MongoDB.
Durante el tiempo de la Comisión de la Verdad, este proceso se ejecutó diariamente a media noche.
Las integraciones se realizan bajo la tecnología Pentaho Spoon.
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 metabuscador 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:
Historias de usuarios
Definición de tableros y actividades (sprints)
Planeación y seguimientos
Esta metodología se adopta por las condiciones cambiantes de la Comisión. Scrum permite adaptarse a requerimientos cambiantes y permite tomar decisiones de manera rápida; adicionalmente, se nutre de la experiencia de usuario. En entornos de desarrollo, Scrum ha sido apropiada como una buena práctica.
Cuando se inició el desarrollo del metabuscador, se inició con unos lineamientos básicos que fueron cambiando, definiéndose y entendiéndose mejor; de allí la motivación de escoger Scrum frente a otras posibilidades. En últimas, permite presentar avances y versiones funcionales en un corto tiempo.
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.
Última actualización