Metodología
Como metodología de trabajo para el proyecto se empleará Combat Agile2. Esta metodología se basa en el marco de trabajo Scrum3, heredando todas sus fases y productos. Los desarrollos basados en Scrum dividen el trabajo en Sprints, los cuales son etapas de aproximadamente 4 semanas de duración. A lo largo de cada Sprint se realizan una serie de hitos que permiten identificar el trabajo pendiente y auditar si el desarrollo progresa hacia el objetivo.
Los hitos de Scrum son los que se describen a continuación:
-
Sprint Planning:
Se define el trabajo del Product Backlog (PB) que se realizará durante el Sprint. Los desarrolladores desglosan cada ítem del PB seleccionado en tareas concretas llamadas Issues. Durante esta reunión también se establece el objetivo del Sprint para constituir el Sprint Backlog, que incluye el objetivo del Sprint, los PBIs seleccionados y los Issues generados a partir de estos PBIs. -
Daily Scrum:
Reunión diaria de máximo 15 minutos en la que el equipo informa sobre las tareas realizadas, las pendientes y los impedimentos encontrados. -
Sprint Review: Al finalizar el Sprint, se presenta el trabajo completado a todo el personal interesado en este, especialmente al cliente, para recibir retroalimentación y actualizar el PB según sea necesario.
-
Sprint Retrospective:
El equipo analiza cómo ha trabajado durante el Sprint y propone mejoras a implementar en los siguientes Sprints. En esta reunión se abordan únicamente aspectos metodológicos, no relacionados con el producto.
Basándose en los principios del Manifiesto Ágil4 y en Scrum, la metodología Combat Agile se caracteriza por cinco puntos clave:
- Flexible: La configuración del equipo se adapta en función del trabajo que haya que realizar.
- Eficiente: Emplea un enfoque "only-once" que fomenta la autodocumentación y el diseño emergente, siguiendo buenas prácticas y promoviendo la colaboración entre perfiles funcionales y técnicos mediante Behavior-Driven Development (BDD).
- Accesible: Se implementa utilizando la mínima cantidad de herramientas específicas para evitar que surjan barreras técnicas.
- Enfocado: Prioriza las tareas que generan mayor valor y reducen al máximo la incertidumbre del proyecto.
- Lean5: Se revisa cada proceso para optimizar su eficiencia en cada iteración.
Arquitectura
La arquitectura de la aplicación se basará en un enfoque Full Stack6, con el frontend desarrollado en Vue.js versión 37 y el backend utilizando el arquetipo de defensa Medusa (basado en Spring Boot8, el framework más utilizado de Java9) y MySQL10 como gestor de base de datos. Tan solo se desarrollará el cliente web para ordenador ya que no se prevé que la aplicación tenga que ser utilizada desde ningún otro dispositivo.
Tecnología
El frontend en Vue.js ofrece una interfaz de usuario dinámica y receptiva, permitiendo una interacción fluida y eficiente con el backend. Mediante llamadas API RESTful11, el frontend se comunica con el backend para ejecutar operaciones basadas en los permisos de cada usuarios. El backend gestiona la lógica de negocio y las operaciones de datos utilizando el arquetipo Medusa, que integra Spring Data JPA12, su propia seguridad y autenticación contra Active Directory13, y emplea Spring Data REST14 para exponer la API con endpoints HATEOAS de nivel 315. Por último, MySQL proporciona un almacenamiento rápido y eficiente para datos estructurados.
Calendario de plazos
El desarrollo de Deméter se dividirá en diferentes Sprints hasta alcanzar, como mínimo, un MVP16.
| Plazos | Sprint |
|---|---|
| 1 abril - 15 mayo | 1 |
| 20 mayo - 16 junio | 2 |
| 1 - 30 septiembre | 3 |
| 1 - 28 octubre | 4 |
| 29 octubre - 18 noviembre | 5 |
Otras tecnologías y entornos
- FrontEnd: Desarrollo basado en HTML517, CSS18 y JavaScript19, utilizando Vue.js versión 3 con Options API20 y Bootstrap21 versión 5.
- Herramientas de desarrollo: IDE Eclipse22 para Java y Spring Boot; IDE Visual Studio Code23 para el frontend.
- Control de versiones: Uso de Git24 para control de versiones, con repositorio en GitLab25.
- Cliente API REST: Postman26 y Bruno27.