-
Notifications
You must be signed in to change notification settings - Fork 1
Plan de proyecto
El propósito del proyecto es desarrollar una plataforma de comercio electrónico que aborde las siguientes necesidades específicas:
- Gestión de productos: El sistema debe permitir el registro, actualización y eliminación de productos. Esto incluye la gestión de información detallada sobre los productos como nombre, descripción, categorías, precios, imágenes y niveles de inventario. Además, debe permitir la creación de talles y colores.
- Gestión de usuarios y cuentas: El sistema debe permitir a los clientes registrarse, iniciar sesión y gestionar sus cuentas. Esto incluye la actualización de información personal, la visualización del historial de compras y la gestión de direcciones de envío. Además, debe incluir la capacidad de recuperación de contraseñas y la autenticación de dos factores para mejorar la seguridad.
- Gestión de pedidos: El sistema debe gestionar todo el ciclo de vida de los pedidos, desde la creación del carrito de compras hasta la confirmación del pedido. Esto incluye la capacidad de agregar productos al carrito, seleccionar métodos de pago y envío, generar confirmaciones de pedido, y actualizar el estado del pedido. También debe permitir a los clientes realizar seguimientos y devoluciones de sus pedidos.
- Gestión de Stock:El sistema debe controlar el stock en tiempo real, registrando las entradas y salidas y generando alertas cuando los niveles de inventario se encuentren por debajo de un umbral definido. Además, debe soportar la gestión de inventarios múltiples para aquellos productos que tienen diferentes variantes de talle y color.
- Gestión de promociones y descuentos: El sistema debe permitir la creación y gestión de promociones y descuentos. Esto incluye la capacidad de aplicar descuentos basados en códigos promocionales, ventas temporales, descuentos por volumen, y precios especiales para clientes recurrentes o leales.
- Gestión de pagos: El sistema debe integrar múltiples métodos de pago seguros, como tarjetas de crédito, PayPal, transferencias bancarias, y otros servicios de pago electrónico. Debe proporcionar mecanismos para la verificación de pagos y el manejo de transacciones fallidas.
- Gestión de envíos: El sistema debe soportar la gestión de envíos, incluyendo la integración con servicios de mensajería y la capacidad de calcular costos de envío basados en la ubicación del cliente y el peso del paquete. Debe permitir a los clientes seleccionar diferentes opciones de envío y realizar el seguimiento de sus envíos en tiempo real.
- Informes y estadísticas: El sistema debe ofrecer la generación de informes y estadísticas que permitan a la dirección tomar decisiones basadas en datos. Esto incluye informes sobre ventas, rendimiento de productos, comportamiento de los clientes, y análisis de tendencias. Los informes deben ser exportables y visualizables mediante gráficos interactivos.
- Soporte y atención al cliente: El sistema debe incluir una sección de soporte al cliente que permita gestionar consultas, quejas y devoluciones. Debe ofrecer una interfaz para la comunicación con el equipo de soporte, así como la posibilidad de consultar un historial de tickets y respuestas
Se realizará una aplicación web que le permita al cliente registrarse como usuario y gestionar su cuenta para poder visualizar los productos disponibles, seleccionarlos y agregarlos a un carrito. También permitirá al administrador registrarse y gestionar usuarios y roles así como cargar y gestionar los productos con su respectivo stock, categoría, color y talle. Permitirá también visualizar reportes y estadísticas sobre las ventas realizadas en distintas sucursales y clientes registrados y exportarlos a formatos PDF y Excel.
No incluye gestión de pagos y tampoco permitirá gestionar envíos, seguimiento de estado de pedidos y pagos, gestión de stock de color y talle, promociones y descuentos, atención y soporte al cliente, manejo de transacciones (pagos fallidos y rechazados), integración con servicios de distribución.
Diagrama de contexto
El siguiente diagrama de contexto presenta una visión general del sistema MegaStore y su interacción tanto con los usuarios como con otros sistemas externos. En este caso, se destacan dos tipos de usuarios: el Cliente, quien puede realizar compras y consultar productos, y el Administrador, encargado de la gestión y el mantenimiento del sistema.
El diagrama también muestra las interacciones de Mega Store con otros sistemas externos que complementan su funcionalidad principal
- Sistema de Envíos: Gestiona la logística de los productos comprados.
- Sistema de Pagos: Procesa las transacciones realizadas por los clientes.
- Sistema de Soporte y Atención al Cliente: Provee asistencia a los usuarios y resuelve sus consultas.
- Sistema de Promociones: Maneja las ofertas y descuentos aplicables dentro de la plataforma.

Diagrama de contenedor
Este diagrama de contenedor proporciona una visión detallada de cómo se estructura internamente el sistema de Mega Store, incluyendo los principales componentes, sus funciones específicas y las interacciones entre ellos.
Las decisiones tecnológicas como la elección de una base de datos relacional (Postgres) o la estructura en contenedores para el Frontend y Backend son fundamentales para la operatividad del sistema. Cada contenedor tiene una función específica y se comunica con otros para lograr el funcionamiento del sistema.

-
Aplicación web: Una aplicación web es un software cliente-servidor que permite realizar funciones determinadas en internet, como enviar mensajes, realizar compras, editar imágenes, jugar videojuegos, hacer pagos, entre otras acciones. Fuente: Qué son las aplicaciones web y 8 ejemplos (hubspot.es
-
Usuario: Un usuario es alguien que opera, utiliza o pone algo en acción. En informática llamamos usuario a un individuo que usa una computadora. Esto incluye programadores expertos y principiantes. Las computadoras no son nada sin las personas que las usan, el usuario común y el profesional. Fuente: [Usuario – ¿Qué es usuario en Informática? Definición. Sinónimos. Tipos - CAVSI](https://www.cavsi.com/espanol/blog/usuario-informatica/#:~:text=Un usuario es alguien que opera%2C utiliza o,las usan%2C el usuario común y el profesional.)
-
Norma IEEE 1058: Se describe el formato y el contenido de los planes de gestión de proyectos de software, aplicables a cualquier tipo o tamaño de proyecto de software. Se identifican los elementos que deben aparecer en todos los planes de gestión de proyectos de software. Fuente: IEEE SA IEEE 1058 1998
-
SPMP: Software Project Managment Plan. Un plan de proyecto, a veces llamado plan de trabajo, es un esquema en el que se detallan los elementos clave que el equipo necesita lograr para alcanzar los objetivos del proyecto con éxito. Allí se debe incluir información sobre el programa, el alcance, los plazos y los entregables del proyecto. Además, debe crearse en una plataforma a la que puedan acceder todos los miembros del equipo del proyecto, además del gerente del proyecto principal. Al crear tu plan de proyecto en un sistema de gestión de trabajo, puedes planificar, dar seguimiento e informar sobre el trabajo, todo en un mismo lugar. Fuente: [Plan de proyecto: Cómo crear uno {ejemplos + plantilla} 2024 Asana
-
Backend: Es la parte invisible de una aplicación móvil o una página web, lo que no se ve. Es decir, si pensamos en una tienda física, el backend es el almacén, donde se gestionan los productos, se realiza el inventario y se asegura que todo funcione sin problemas.
Fuente: digizonelabs.com
-
Frontend: Un frontend es la interfaz gráfica de usuario de una página web o una aplicación. El frontend es donde se presenta la información y donde tienen lugar las interacciones del usuario. Fuente: ¿Qué es un frontend? Definición y explicación IONOS MX
-
Discord: Facilita la comunicación en tiempo real y asincrónica entre los miembros del equipo Scrum, con canales específicos para diferentes etapas del proceso.
-
Notion: Organiza y centraliza la documentación, el Product Backlog, y el Sprint Backlog, permitiendo la colaboración en tiempo real.
-
SCRUM: Scrum es un marco ligero de trabajo que ayuda a las personas, equipos y a las organizaciones a generar valor a través de soluciones adaptativas de problemas complejos. Fuente: Guía de Scrum | Guías de Scrum (scrumguides.org)
-
Product Owner: El Product Owner es un miembro del equipo de desarrollo de producto que administra el product backlog; esta es una lista de elementos, ordenados por importancia, en los que el equipo necesita trabajar. El product owner se asegura de que el equipo esté al tanto de todos los entregables, tanto externos como internos, que debe priorizar. Fuente: Product Owner: qué es, funciones y diferencia con product manager (hubspot.es)
-
Scrum Team: Es una unidad auto organizada y multidisciplinar, diseñada para maximizar la flexibilidad y la creatividad en el desarrollo de productos. Este equipo se distingue por su estructura plana, es decir, no existen jerarquías tradicionales que obstaculicen la comunicación o la toma de decisiones. Fuente: Scrum Team: Roles y Funciones (imaginaformacion.com)
-
Scrum Master: El Scrum Master lidera el equipo de Scrum y mantiene a los miembros enfocados en los principios del marco de trabajo. Además, ayuda a los encargados de productos y sus organizaciones al compartir las prácticas de las metodologías Scrum y Agile con otras personas de la organización. En esta guía, exploraremos qué es un Scrum Master y cuál es su función. Fuente: ¿Qué es un Scrum Master y cuál es su función? 2024Asana
-
Sprint: Es un proceso de gestión que reduce la complejidad en el desarrollo de productos para satisfacer las necesidades de los clientes. La gerencia y los equipos de Scrum trabajan juntos alrededor de requisitos y tecnologías para entregar productos funcionando de manera incremental usando el empirismo. Es un marco de trabajo simple. Fuente: ¿Qué es Scrum? | Scrum.org
-
Sprint planning: La planificación del sprint inicia delineando el trabajo que se realizará durante el Sprint. Este plan es creado mediante el trabajo colaborativo de todo el equipo Scrum. Fuente: Scrum Guide | Scrum Guides
-
Product Backlog: Es una lista emergente y ordenada de lo que se necesita para mejorar el producto. Es la única fuente de trabajo del equipo Scrum. Fuente: Scrum Guide | Scrum Guides
-
Retroalimentación: Una retrospectiva del sprint es un tipo de reunión dentro del marco Agile, donde los equipos reflexionan sobre qué salió bien y qué podría mejorarse en el próximo sprint. Estas son esenciales para mejorar continuamente el proceso de sprints y garantizar que se incorporen los aprendizajes clave para el siguiente. Fuente: Guía de retrospectiva Scrum: qué es y cómo hacerla 2024Asana
-
Tester: Es un profesional especializado en el área de pruebas de software que se ocupa principalmente de evaluar la calidad y el funcionamiento de un desarrollo antes de su lanzamiento o implementación. Fuente: Qué es un tester de software y cuáles son sus funciones - icaria Technology
-
Diseño UX: El diseño de experiencia de usuario es el proceso que se encarga de optimizar el punto de encuentro entre usuarios y productos, como los sitios web y aplicaciones móviles. Inicialmente estudia los comportamientos y perspectivas de los usuarios para lograr que esta interacción sea amigable, entendible y útil. Fuente: Qué es el diseño UX, para qué sirve y 5 ejemplos (hubspot.es)
-
Interfaz: Se refiere a la dinámica física y lógica de interconexión entre dos aparatos o sistemas independientes, o bien entre un sistema informático y su usuario humano. Fuente: https://concepto.de/interfaz/#ixzz8jUeUCp3d
- IEEE Std 1058 1998, Standard for Software Project Management Plans: Esta norma proporciona una guía sobre la estructura y contenido de un Plan de Gestión de Proyectos de Software (SPMP).
- Guía Scrum (The Scrum Guide), 2020: Guía oficial que define el marco de trabajo Scrum, describiendo roles, eventos y artefactos.
- Política de Desarrollo de Software de la Organización: Lineamientos y prácticas recomendadas que deben seguirse en todos los proyectos de software dentro de la organización.
- Documentación Técnica de React y Spring Boot: Guías y referencias técnicas oficiales de las tecnologías utilizadas para el frontend y backend.
- Aplicaciones: Aplicaciones o herramientas que sirven como referencia o inspiración para el desarrollo, ya sea por su diseño, funcionalidades o flujo de trabajo: Notion.
En este proyecto, el equipo se organiza bajo el marco de trabajo Scrum, donde cada miembro asume un rol específico dentro del equipo multifuncional. La estructura se compone de los siguientes roles:
- Scrum Master: Responsable de guiar al equipo en la implementación del marco Scrum, asegurando que se sigan las prácticas ágiles (entregas incrementales, reuniones con el cliente, feedback constante) y eliminando cualquier impedimento que pueda afectar el progreso del equipo.
- Product Owner: Responsable de la visión del producto, gestionando y priorizando el Product Backlog para maximizar el valor del trabajo que realiza el equipo de desarrollo.
- Development Team: Un equipo autogestionado que se encarga de desarrollar los incrementos del producto. En este proyecto, el equipo está compuesto por desarrolladores backend, desarrolladores frontend y tester.
No aplica.
A continuación, se presenta el organigrama del equipo encargado del desarrollo del proyecto, organizado bajo una metodología ágil con la figura de un Scrum Master como facilitador.

Scrum Master: Abril Conrero
- Facilitador del proceso: Organiza y facilita las reuniones Scrum, incluyendo Daily Stand-ups, Sprint Planning, Sprint Reviews, y Sprint Retrospectives.
- Eliminador de impedimentos: Identifica y elimina cualquier barrera que pueda obstaculizar el trabajo del equipo.
- Protector del equipo: Asegura que el equipo esté enfocado en el sprint y lo protege de distracciones externas.
Product Owner: Vanzetti Juan José
- Gestor del Product Backlog: Define, prioriza y gestiona el Product Backlog, asegurando que esté siempre alineado con la visión del producto y las necesidades del cliente.
- Interlocutor principal: Actúa como el principal punto de contacto entre el equipo de desarrollo y las partes interesadas, clarificando requisitos y respondiendo preguntas.
- Priorizador del trabajo: Decide qué historias de usuario se trabajarán en cada sprint, basándose en el valor que estas aportan al producto.
- Aceptador de trabajo: Revisa y acepta el trabajo completado por el equipo, asegurando que cumpla con la definición de hecho.
Development Team:
Desarrolladores backend: Juan Pablo Dealbera y Lucía Rosales.
- Desarrollo de funcionalidades: Implementan las características de la aplicación, escribiendo código que cumpla con los requisitos definidos por el Product Owner. Encargados de la implementación del código backend Spring Boot). Cada uno tiene responsabilidades específicas, como el desarrollo de la lógica del negocio, integración con la base de datos PostgreSQL.
- Colaboración continua: Trabajan de manera colaborativa y autogestionada para cumplir con los objetivos del sprint.
- Revisión de código: Entre los miembros realizan revisiones de código para asegurar la calidad y coherencia del código.
Desarrolladores Frontend: Abril Conrero, Rocío Menardi.
- Implementación de Diseño de Interfaz: Convertir prototipos y maquetas en código funcional utilizando HTML, CSS y JavaScript en React.
- Desarrollo de Prototipos: Crear prototipos utilizando herramientas como Figma o Canva para diseñar y compartir prototipos que permitan mostrar la apariencia final de la aplicación.
- Optimización de la Experiencia de Usuario (UX): Trabajar en la usabilidad del producto, asegurando que la interfaz sea intuitiva, es decir, que sea fácil de entender y usar sin necesidad de instrucciones extensas, que su diseño es claro, predecible y se alinea con el comportamiento natural del usuario.
- Pruebas de Interfaz: Realizar pruebas de funcionalidad de los componentes de la interfaz para asegurar que se comporten según lo esperado. Identificar y solucionar problemas en la interacción y la experiencia del usuario basados en pruebas y feedback.
- Aseguramiento de la Responsividad: Desarrollar y ajustar interfaces para que sean responsivas y funcionen en diferentes dispositivos y tamaños de pantalla.
- Integración con Backend: Conectar la interfaz frontend con los servicios backend a través de APIs, gestionando la comunicación y el manejo de datos. Implementar funciones para recuperar, mostrar y manipular datos desde el backend.
- Mantenimiento y Actualización de Código: Mantener el código frontend actualizado y limpio. Implementar cambios y mejoras en el código basado en la retroalimentación del equipo y los usuarios.
Tester: Ramiro Berruezo
- Pruebas funcionales: Realiza pruebas para asegurarse de que cada incremento del producto cumple con los requisitos especificados y no tiene defectos.
- Automatización de pruebas: Desarrolla y mantiene scripts de pruebas automatizadas para agilizar la verificación continua del producto.
- Reporte de bugs: Documenta y comunica cualquier defecto encontrado durante las pruebas, colaborando con los desarrolladores para solucionarlos.
En 5 Bits, nos comprometemos a desarrollar soluciones de software web adaptadas a las necesidades específicas de nuestros clientes. A través de un enfoque ágil basado en entregas incrementales, retroalimentación constante y mejora continua, buscamos entregar valor en cada fase del proyecto, garantizando un proceso colaborativo y transparente.
- Desarrollo y entrega incremental: Implementar las funcionalidades del sistema de manera progresiva, entregando un incremento funcional en un tiempo determinado por el equipo (menor a 1 mes). Cada incremento debe cumplir con los requisitos acordados y pasar las pruebas de calidad correspondientes antes de ser entregado al cliente.
- Cumplimiento de requisitos funcionales: Asegurar que el software desarrollado cumpla con el 100% de los requerimientos funcionales documentados en la especificación de requisitos, tal como lo verifiquen las pruebas funcionales correspondientes.
- Cumplimiento de plazos de entrega: Finalizar y entregar cada iteración del software en el tiempo estipulado, según el cronograma acordado. El retraso en la entrega de una iteración no debe superar el 5% del tiempo previsto.
- Minimización de defectos: Implementar un proceso de pruebas continuas y revisión de código para asegurar que los defectos identificados durante las pruebas unitarias, de integración y del sistema no superen el 1% del total de funcionalidades desarrolladas en cada iteración.
- Adaptabilidad a cambios: Responder a cambios en los requisitos del cliente dentro de un plazo máximo de 3 días hábiles para evaluación y planificación de la implementación del cambio. Los cambios deben integrarse en el software sin afectar más del 10% del código previamente implementado.
- Cumplimiento de los requisitos funcionales y no funcionales: La prioridad máxima es cumplir con todos los requisitos documentados en la especificación de requisitos (SRS). Ninguna entrega será considerada completa si no cumple con al menos el 95% de los requisitos de la iteración, sin defectos críticos.
- Entrega dentro de los plazos establecidos: Aseguramos que cada entrega se realice dentro del plazo acordado.
- Calidad del producto: La calidad del software se medirá por el porcentaje de pruebas exitosas realizadas. Un incremento se considerará de calidad si al menos el 95% de las pruebas automatizadas y manuales son superadas sin fallos.
- Documentación y trazabilidad: Priorizar la creación de documentación detallada y actualizada en cada fase del proyecto. Toda funcionalidad debe estar debidamente documentada, y cada cambio en el sistema debe estar registrado para garantizar la trazabilidad del software.
- Comunicación constante: Mantener reuniones semanales con el cliente y el equipo para revisar el progreso del proyecto y asegurar que no haya desviaciones en los objetivos o en el alcance del proyecto
- Colaboración Activa del Cliente: El cliente participará activamente en la validación de requisitos y la revisión de avances.
- Disponibilidad de Recursos Humanos: Se asumirá que todos los miembros del equipo estarán disponibles durante el proyecto.
- Capacitación adecuada: El equipo estará capacitado para utilizar las herramientas propuestas (Sprint Boot, Postgres, React, javascript, Typescript, Html, CSS)
- Servicios de Terceros: Dependencia de APIs externas e integración con servicios externos.
- Cooperación de Stakeholders: Disponibilidad de feedback y decisiones rápidas por parte del cliente
-
Integración de Herramientas:
- Dependencia de la correcta integración entre el frontend y el backend del sistema.
-
Infraestructura Tecnológica:
- Dependencia del entorno de hosting para el despliegue del sistema.
-
Plazo de Entrega:
- El proyecto debe completarse antes de la fecha acordada con el cliente.
-
Compatibilidad:
- El sistema debe ser compatible con los principales navegadores web y dispositivos móviles.
-
Tecnologías
- No se utilizarán siempre las mismas tecnologías, estas serán determinadas por el equipo de desarrollo teniendo en cuenta la que mejor se ajuste a las necesidades del proyecto.
| RIESGO | DESCRIPCIÓN | TIPO RIESGO | NIVEL | MITIGACIÓN | PROBABILIDAD DE OCURRENCIA | IMPACTO | CONTINGENCIA |
|---|---|---|---|---|---|---|---|
| Fallas en la integración | Problemas en la comunicación entre frontend y backend. | Técnico | Medio | Realizar pruebas de integración continuas. | Media | Alto | Configurar alertas automáticas (correo o SMS) para que el equipo se entere de la falla de inmediato y pueda reaccionar. Dejar un mensaje claro para el usuario con alguna otra alternativa como “intentar más tarde” |
| Corte de energía | Puede que se corte el suministro de energía, privando al miembro afectado de poder continuar con su trabajo. | Técnico | Medio | Contratar un buen servicio de distribución de energía, con buenas reseñas. | Baja | Alto | Adquirir un generador de energía. |
| Disponibilidad de Recursos Humanos | Ausencias o falta de disponibilidad de miembros, que el miembro no cumpla con las tareas a las que se comprometió. | Personal | Alto | Realizar reuniones diarias (daily meetings) y sesiones periódicas para compartir los avances entre los miembros del equipo. Contar con un Scrum Master que supervise y asegure que todos los miembros cumplen con sus responsabilidades conforme a lo planificado. | Media | Alto | Contar con otro miembro del equipo que pueda asumir temporalmente las tareas del ausente. Asegurar de que todos los procesos y tareas estén bien documentados para que cualquier miembro del equipo pueda continuar con el trabajo. Si un miembro no cumple con sus tareas, se redistribuyen sus tareas entre otros miembros de manera temporal para evitar retrasos. |
| Subestimación del Tiempo Necesario | No cumplir con los plazos de entrega debido a funcionalidades que requieren más tiempo del previsto. | Planificación | Medio | Realizar reuniones diarias para monitorear el avance de cada miembro y resolver impedimentos de forma colaborativa. Trabajar de manera iterativa con sprints cortos y sin sobrecargar de funcionalidades complejas. | Media | Alto | Registrar los problemas encontrados y las soluciones aplicadas para evitar la repetición de errores en futuros proyectos. Ajustar las metodologías de estimación de tiempo. Comunicar con la verdad al cliente. Recompensar con alguna bonificación o descuento extra. |
| No conformar al cliente | Al momento de la entrega del incremento, este podría no cumplir con las especificaciones acordadas con el cliente, lo que podría llevar a su rechazo. | Calidad | Alto | Mantener una comunicación constante con el cliente, presentando avances regulares y consultando cualquier aspecto ambiguo o poco claro para asegurar una comprensión completa de los requerimientos. | Media | Medio | Comunicarse con el cliente para llegar a un acuerdo que podrían ser: extender el plazo o una corrección rápida. |
| Falta de testing | Al entregar el producto, podrían surgir numerosos problemas no considerados durante el proceso de pruebas, lo que afectaría la satisfacción del cliente. | Calidad | Medio | Implementar pruebas continuas a lo largo del desarrollo. Involucrar a todo el equipo para identificar y cubrir la mayor cantidad de escenarios de testing posibles. | Media | Alto | Atender al cliente y realizar nuevamente el testing desde cero para solucionar los problemas. |
| Rotura del equipamiento de los miembros | Que alguno de los miembros sufra un desperfecto técnico en su dispositivo, lo que no le permita continuar su trabajo. | Técnico | Medio | Realizar revisiones técnicas cada 3 meses a los equipos y mantenerlos actualizados. | Baja | Medio | Conseguir un dispositivo provisorio hasta que se arregle el dispositivo. Conseguir un nuevo dispositivo. |
| Mal funcionamiento de internet | Que la conectividad sea lenta y mala, provocando que no se puedan realizar reuniones virtuales ni utilizar servicios web de ningún tipo necesarios para el desarrollo de las distintas funciones. | Técnico | Bajo | Contratar un buen servicio de distribución de internet. Tener varias redes disponibles. | Baja | Medio | Si el internet falla, un plan alternativo es que los miembros sigan con su trabajo desde algún lugar con buena conexión como puede ser sus casas. |
| Pérdida de datos | Que se pierda información o trabajo, ya sea por un corte de energía o rotura de algún equipo. | Técnico | Medio | Realizar backups de seguridad una vez a la semana en discos externos. Realizar backups de seguridad diarios automáticos localmente. Contar con almacenamiento redundante. | Baja | Alto | Contar con un procedimiento de recuperación de datos. |
| Fallas técnicas de integración en la Sprint Review | Existe la posibilidad de que el frontend y el backend no estén conectados o no hayan sido probados conjuntamente antes de las revisiones programadas del proyecto. Esto podría dificultar la demostración funcional del software y la detección temprana de problemas de integración. | Técnico | Alto | Probar y conectar el sistema antes de reunirse con el cliente. | Media | Alto | Posponer la reunión y hablar con el cliente. |
- La velocidad de desarrollo de los equipos se evaluará mediante la comparación entre el trabajo planeado y el trabajo completado en sprint. Se utilizarán métricas como las historias de usuario completadas, puntos de historia y el cumplimiento de los plazos establecidos.
- Se realizará un seguimiento continuo de las estimaciones de esfuerzo comparadas con el esfuerzo real empleado en cada tarea. Esto permitirá evaluar la precisión de las estimaciones iniciales y ajustar los planes según sea necesario.
- Se utilizará la técnica de análisis de variación para detectar diferencias entre el esfuerzo planeado y el esfuerzo real.
Cada equipo de desarrollo contará con roles claramente definidos. Los equipos tendrán la siguiente composición:
Desarrolladores FrontEnd:
Responsables de realizar prototipos de interfaces gráficas y codificarlas, asegurándose de que la experiencia del usuario (UX) sea intuitiva y atractiva y que las interfaces sean funcionales y alineadas con los requisitos del cliente.
Desarrolladores Backend:
Encargados de desarrollar la lógica de la aplicación, gestionando bases de datos, servidores y la integridad de los sistemas.
Testers:
Se encargan de realizar los tipos de pruebas necesarios para asegurar la calidad (definido en el punto 6.0 Planificación de la calidad) del software, tanto en el frontend como en el backend. Los testers identifican defectos, garantizan la fiabilidad del sistema y colaboran con los desarrolladores para corregir errores.
Scrum Master:
Responsable de guiar al equipo, remover impedimentos y asegurar que se sigan los principios ágiles. El Scrum Master facilita la comunicación y colaboración dentro del equipo, garantiza que los procesos fluyan y se cumplan los plazos.
Además de la asignación de roles, es fundamental prever y gestionar situaciones en las que la disponibilidad del personal pueda verse comprometida. A continuación, se detallan los procedimientos y acciones a seguir en tales casos:
Ausencias Temporales (Enfermedad, Licencias, etc.):
En caso de que un miembro del equipo se ausente temporalmente, se seguirá un proceso de reasignación de tareas para garantizar la continuidad del proyecto:
- Las tareas del miembro ausente serán distribuidas temporalmente entre otros miembros del equipo, teniendo en cuenta las capacidades y disponibilidad de cada uno.
- El Scrum Master será responsable de reorganizar el flujo de trabajo para mitigar los retrasos.
Renuncia o Abandono del Proyecto:
Si un miembro abandona permanentemente el equipo, se seguirán los siguientes pasos:
- El Scrum Master y el equipo de gestión identificarán qué tareas o responsabilidades quedan vacantes.
- Se evaluará si los miembros del equipo que siguen disponibles pueden tomar la responsabilidad del miembro ausente, sin comprometer el proyecto y los plazos de entrega. Si esto no se cree posible, se abrirá un proceso de contratación para reemplazar al miembro perdido.
- Mientras se realiza la búsqueda del reemplazo, las tareas críticas serán asignadas a otros miembros con la supervisión directa del Scrum Master para evitar cuellos de botella.
Capacitación y Transferencia de Conocimiento:
Para asegurar que los proyectos no dependan de una sola persona, se implementará un proceso continuo de transferencia de conocimientos entre los miembros del equipo:
- Se promoverá la documentación de cada fase del desarrollo.
- Se realizarán reuniones de revisión y capacitación para compartir conocimientos sobre las áreas clave del proyecto.
- En situaciones de cambio de personal, el nuevo integrante recibirá una capacitación específica sobre el estado actual del proyecto.
Para minimizar los riesgos relacionados con el personal, se tomarán las siguientes medidas:
- Planificación de Capacidad: Se evaluará regularmente la carga de trabajo y la capacidad del equipo para evitar sobrecargas y garantizar que haya suficiente personal disponible para cualquier contingencia.
- Equipo Multifuncional: Fomentar que los miembros del equipo se capaciten en áreas fuera de su especialización para tener más flexibilidad en la reasignación de tareas si fuese necesario.
- Uso de Herramientas de Colaboración: Implementar herramientas que faciliten la comunicación y colaboración remota (por ejemplo, Discord, Slack, Jira) para asegurar que los equipos puedan seguir trabajando aun si algún miembro no puede estar físicamente presente.
- Programas de Capacitación Continua: La empresa se compromete a ofrecer cursos y talleres regulares para el desarrollo de habilidades técnicas y blandas de todos los empleados, para que estos puedan fortalecer sus conocimientos en sus respectivos puestos.
- Rotación de equipos: Permitir a los empleados trabajar en diferentes equipos para adquirir una visión integral y desarrollar nuevas habilidades.
- Equipos de proyectos transversales: Formar equipos temporales con miembros de diferentes áreas para trabajar en proyectos específicos, promoviendo la colaboración, retroalimentación y el aprendizaje interdisciplinario.
- Bonos y beneficios: Ofrecer bonos, aumentos de sueldo y otros beneficios a aquellos que completen programas de desarrollo profesional con éxito.
- Mentoría: Implementar programas de mentoría para apoyar el desarrollo de las habilidades y experiencia para los empleados nuevos o de menor experiencia en áreas específicas.
- Evaluaciones continuas: Se realizarán evaluaciones de manera continua para medir el desempeño de cada trabajador, basadas en criterios objetivos previamente establecidos. Esto permite analizar las habilidades y cualidades de cada empleado, e identificar áreas con potencial de desarrollo.
El modelo de desarrollo del proyecto se basará en algunos principios del modelo ágil Scrum, el cual se basa en la entrega incremental de valor. Scrum fomenta la adaptabilidad y la flexibilidad en el desarrollo, permitiendo la priorización de las tareas según el valor que aportan al cliente. Las características principales del modelo que implementaremos incluyen:
- Sprint Planning: Planificación de sprints cortos (generalmente de 1 mes), donde se seleccionan las tareas prioritarias del Product Backlog.
- Daily Standup: Reuniones diarias breves para revisar el progreso del equipo e identificar impedimentos.
- Sprint Review: Presentación del trabajo completado al final de cada sprint para obtener retroalimentación inmediata.
- Sprint Retrospective: Revisión de lo que funcionó y lo que no funcionó durante el sprint, buscando mejoras para el próximo ciclo.
Este enfoque asegura que el equipo pueda adaptarse a los cambios en los requisitos y entregar funcionalidades utilizables de manera rápida y frecuente.
Las principales tareas del proceso de desarrollo de software son:
-
Recolección de Requisitos:
- Análisis de las necesidades del cliente y stakeholders.
- Definición de user stories y requisitos funcionales y no funcionales.
-
Diseño del Sistema:
- Creación de diagramas de arquitectura del sistema.
- Diseño de la base de datos y diagramas de entidad-relación.
- Prototipado de interfaces de usuario con herramientas como Figma o Canva.
-
Desarrollo Backend:
- Implementación de la lógica de negocio utilizando Spring Boot.
- Creación y gestión de la base de datos PostgreSQL.
- Desarrollo de APIs RESTful para la interacción entre frontend y backend.
-
Desarrollo Frontend:
- Creación de la interfaz de usuario en React, utilizando HTML, CSS y TypeScript.
- Implementación de componentes responsivos.
- Integración de la interfaz con las APIs backend.
-
Pruebas y Verificación:
- Pruebas unitarias y funcionales.
- Pruebas de interfaz de usuario .
-
Despliegue y Mantenimiento:
- Despliegue de la aplicación en un servidor web.
- Monitoreo y mantenimiento de la plataforma, aplicando mejoras y corrigiendo errores.
Los productos entregables del proyecto incluyen:
- Documentación de Requisitos: Detalle de todas las funcionalidades y especificaciones técnicas mediante Users Stories.
- Prototipos de Interfaz de Usuario: Maquetas visuales del frontend desarrolladas en Canva.
-
Código Fuente:
- Backend: Código de la aplicación, incluyendo controladores, modelos y servicios.
- Frontend: Código de la interfaz de usuario desarrollado en React.
- Base de Datos: Estructura de la base de datos con los esquemas y tablas necesarias.
- Informe de Pruebas: Resultado de las pruebas ejecutadas con detalle de errores detectados y corregidos.
- Sistema de Gestión de Comercio Electrónico: Producto final entregado y funcional.
Estaciones de trabajo para el equipo de desarrollo:
- Procesador: Intel Core i5 o superior.
- Memoria RAM: 8 GB mínimo (recomendado 16 GB).
- Almacenamiento: 256 GB SSD mínimo.
- Pantalla: Resolución Full HD (1920x1080) o superior.
- Conectividad: Acceso a internet estable, es decir que permita mantener reuniones virtuales de manera fluida sin interrupciones.
-
Backend:
- Lenguaje de Programación: Java 21 (JDK v21LTS).
- Framework: Spring Boot 2.5 o superior.
- Base de Datos: PostgreSQL 12 o superior.
- Sistema Operativo del Servidor: Linux.
- Entorno de desarrollo: IntelliJ IDE.
- Herramienta de API Testing: PostMan.
-
Frontend:
- Framework: React 17 o superior.
- Lenguajes: HTML5, CSS3, JavaScript (ES6+).
- Herramientas de Desarrollo: Vite 5 o superior.
- Entorno de desarrollo: Visual Studio Code.
- NodeJS v20 LTS.
- MUI: Material UI (https://mui.com/material-ui/).
-
Otros:
- Herramienta de Control de Versiones: GitHub.
- Servidor web: DonWeb.
- Herramienta de gestión: Docker.
-
Desarrolladores Backend:
- Número de Personas: 3
- Requisitos de Capacitación: Experiencia en desarrollo con Java y Spring Boot. Conocimiento de bases de datos relacionales y SQL.
-
Desarrolladores Frontend:
- Número de Personas: 2
- Requisitos de Capacitación: Experiencia en desarrollo con React y tecnologías web front-end (HTML, CSS, JavaScript).
-
Tester:
- Número de Personas: 1
- Requisitos de Capacitación: Experiencia en pruebas de software y uso de herramientas de automatización de pruebas.
-
Scrum Master:
- Número de Personas: 1
- Requisitos de Capacitación: Conocimiento en el marco de trabajo Scrum y habilidades de gestión de equipos ágiles.
-
Product Owner:
- Número de Personas: 1
- Requisitos de Capacitación: Experiencia en gestión de productos y habilidades para definir y priorizar requisitos.
No aplica. Ya especificado en Requisitos de Hardware.
No aplica. Ya especificado en Requisitos de Software.
Utilizamos la herramienta de “Notion” para la gestión de proyectos, aprovechando sus funciones gráficas como:
- El calendario para organizar tareas, lo que facilita la planificación y el seguimiento de plazos importantes en el proyecto.
- Tablas para poder visualizar mejor los contenidos como las users que incluimos en el proyecto y las que no.
- Comentarios y menciones, para mejorar la comunicación y colaboración en los proyectos.
Además elegimos esta herramienta por su capacidad de facilitar la colaboración en equipo. Esto nos permite organizar tareas, monitorear el progreso y trabajar de manera eficiente en un entorno compartido con el equipo.
- Versión web: https://www.notion.so
-
Estructura del Equipo:
- Desarrolladores Backend: Ramiro Berruezo, Juan Pablo Dealbera, Lucía Rosales.
- Desarrolladores Frontend: Abril Conrero, Rocío Menardi.
- Tester: Emanuel Monjes.
- Scrum Master: Abril Conrero.
- Product Owner: Vanzetti Juan José.
-
Roles y Responsabilidades:
- Desarrolladores Backend: Desarrollo y mantenimiento del backend, implementación de la lógica del negocio y APIs.
- Desarrolladores Frontend: Desarrollo y diseño de la interfaz de usuario, integración con el backend.
- Tester: Realización de pruebas de software, automatización de pruebas, reporte de bugs.
- Scrum Master: Facilitación del proceso Scrum, eliminación de impedimentos, coordinación de sprints.
- Product Owner: Definición y priorización de requisitos, comunicación con las partes interesadas.
-
Capacitación:
- Desarrolladores Backend: Formación en Spring Boot y PostgreSQL si es necesario.
- Desarrolladores Frontend: Capacitación en React y técnicas modernas de desarrollo frontend.
- Tester: Entrenamiento en herramientas de automatización de pruebas y técnicas de pruebas funcionales.
- Scrum Master y Product Owner: Revisión de prácticas y principios Scrum, y técnicas de gestión de proyectos ágiles.
No aplica, ya especificado en 4.4 Requisitos de Hardware y Software.
A continuación se presenta el cronograma propuesto para el desarrollo del proyecto:
Para visualizar mejor el cronograma del proyecto, se ha creado un diagrama de Gantt, el cual muestra las principales fases y tareas del proyecto, junto con sus duraciones estimadas y dependencias. Las fechas son aproximadas y pueden ajustarse según las necesidades del proyecto:
Link al Cronograma: https://www.notion.so/10c9b2a44d548095b51ad1db5802389c?v=949e3fb6f5494df4bcb15309580bfd9a&pvs=4Definición de Objetivos de Calidad:
Los objetivos de calidad definen las metas específicas que el proyecto debe alcanzar para asegurar que el producto final cumpla con los estándares requeridos. Estos objetivos están alineados con las necesidades y expectativas del cliente y pueden incluir:
-
Funcionalidad:
- Exactitud y Completitud: El sistema debe cumplir con todos los requisitos funcionales especificados, incluyendo la gestión de productos, usuarios, pedidos, stock, promociones y reportes.
- Compatibilidad: La aplicación debe funcionar correctamente en diferentes navegadores (Chrome, Firefox, Safari) y dispositivos (ordenadores, tablets, móviles).
-
Desempeño:
- Tiempo de Respuesta: Las acciones del usuario en la aplicación deben tener un tiempo de respuesta de menos de 2 segundos para operaciones críticas, como agregar un producto al carrito o procesar un pedido.
- Eficiencia de Recursos: El sistema debe utilizar los recursos del servidor de manera eficiente, evitando sobrecargar la infraestructura y manteniendo el rendimiento incluso con una alta carga de usuarios.
-
Seguridad:
- Protección de Datos: La aplicación debe proteger la información personal y financiera del usuario mediante cifrado y autenticación segura.
- Autenticación y Autorización: Implementar autenticación de dos factores para mejorar la seguridad de las cuentas de usuario y roles administrativos.
-
Usabilidad:
- Interfaz Intuitiva: La interfaz de usuario debe ser intuitiva y fácil de navegar, minimizando la curva de aprendizaje y mejorando la experiencia del usuario.
- Accesibilidad: La aplicación debe cumplir con las pautas de accesibilidad web para usuarios con discapacidades, asegurando que todos puedan utilizar el sistema de manera efectiva.
-
Mantenimiento:
- Código Limpio y Documentado: El código debe estar bien estructurado y documentado para facilitar el mantenimiento y la evolución del sistema.
- Actualizaciones y Corrección de Errores: Debe haber un plan para la actualización continua del sistema y la corrección de errores detectados durante el uso.
Descripción del Plan de Aseguramiento de Calidad:
El plan de aseguramiento de calidad define las actividades y procedimientos que se seguirán para garantizar que el producto cumple con los objetivos de calidad. Incluye:
-
Revisión de Requisitos:
- Análisis de Requisitos: Revisar los requisitos del producto para asegurar que sean claros, completos y que puedan ser implementados de manera efectiva.
- Revisión de Documentación: Asegurarse de que toda la documentación del proyecto esté actualizada y sea precisa.
-
Control de Calidad en el Desarrollo:
- Revisiones de Código: Implementar revisiones de código regulares para asegurar la calidad y consistencia del código desarrollado. Estas revisiones pueden ser realizadas por miembros del equipo y se documentan para referencia futura.
- Pruebas Unitarias: Cada módulo o componente del sistema debe ser probado de manera individual mediante pruebas unitarias automatizadas para verificar su funcionalidad.
- Definition of Ready (DoR): Antes de que cualquier tarea o historia de usuario pueda comenzar a desarrollarse, debe cumplir con el “Definition of Ready”. Esto asegura que todos los requisitos, dependencias, y criterios de aceptación estén claramente definidos y entendidos por el equipo. Clickea este enlace para verlo
- Definition of Done (DoD): El “Definition of Done” define los criterios mínimos que debe cumplir una tarea o historia de usuario para considerarse completa y lista para ser entregada al cliente o pasar a producción. Estos criterios aseguran que el producto cumpla con los estándares de calidad acordados. Clickea este enlace para verlo
-
Pruebas y Validación:
- Pruebas de Integración: Verificar que los diferentes componentes del sistema funcionen correctamente juntos y que la integración entre el frontend y el backend sea fluida.
- Pruebas de Aceptación: Realizar pruebas de aceptación para asegurarse de que el sistema cumple con los requisitos del cliente y está listo para su despliegue.
- Pruebas de Usabilidad: Evaluar la facilidad de uso de la aplicación y realizar ajustes basados en la retroalimentación de los usuarios.
-
Gestión de Defectos:
- Registro y Seguimiento de Defectos: Establecer un proceso para registrar, clasificar y rastrear defectos detectados durante las pruebas. Utilizar herramientas de gestión de defectos para garantizar que se aborden de manera efectiva.
- Resolución de Problemas: Priorizar y resolver los defectos identificados, realizando un seguimiento continuo para asegurar que todos los problemas se resuelvan antes del lanzamiento.
-
Revisión de Calidad Continua:
- Auditorías de Calidad: Realizar auditorías de calidad periódicas para asegurar que los procesos de desarrollo y pruebas estén cumpliendo con los estándares establecidos.
- Mejora Continua: Implementar un proceso de mejora continua basado en los hallazgos de las auditorías y la retroalimentación del equipo y los usuarios.
Explicación del Proceso de Revisión y Prueba:
-
Revisión de Productos:
- Revisión de Requisitos: Asegurarse de que todos los requisitos funcionales y no funcionales han sido implementados correctamente y son verificables.
- Revisión de Diseño: Verificar que el diseño de la aplicación se ajusta a los requisitos y es coherente con la arquitectura del sistema.
-
Pruebas:
- Pruebas Unitarias: Realizar pruebas unitarias para cada componente individual del sistema para verificar su correcto funcionamiento en aislamiento.
- Pruebas de Integración: Validar que los diferentes módulos del sistema se integran correctamente y que los datos se transfieren adecuadamente entre ellos.
- Pruebas de Sistema: Evaluar el sistema en su totalidad para asegurarse de que cumple con todos los requisitos especificados y funciona correctamente en un entorno realista.
- Pruebas de Aceptación del Usuario (UAT): Permitir que los usuarios finales prueben el sistema para confirmar que cumple con sus expectativas y necesidades antes del lanzamiento.
- Pruebas de Regresión: Ejecutar pruebas de regresión para asegurarse de que los cambios recientes en el sistema no hayan introducido nuevos defectos o afectado funcionalidades existentes.
-
Documentación y Reporte:
- Documentación de Resultados: Registrar los resultados de las pruebas, incluyendo cualquier defecto o problema identificado.
- Reportes de Pruebas: Crear reportes detallados sobre el estado de las pruebas, el progreso del proyecto y cualquier defecto crítico que deba ser resuelto.
-
Retroalimentación y Corrección:
- Retroalimentación del Equipo: Revisar y discutir los resultados de las pruebas con el equipo de desarrollo para identificar áreas de mejora y posibles soluciones.
- Implementación de Correcciones: Realizar las correcciones necesarias en el sistema y ejecutar nuevamente las pruebas para validar que los problemas han sido resueltos
Definido en el siguiente link: PLAN DE COMUNICACIÓN
No aplica.
- Iniciador: Cualquier miembro del equipo, el Product Owner, o un stakeholder puede solicitar un cambio de requerimiento o de prioridad de requerimientos.
- Formato: Se utilizará un formulario estándar de solicitud de cambio que incluirá la descripción del cambio propuesto, la justificación, el impacto esperado y la urgencia.
- Registro: Todas las solicitudes de cambio se registrarán en el documento de Notion, dentro del archivo “Registro de cambios”. Además se realizara entre todos los miembros del equipo una reunión para decidir si adgregarlas al Product Backlog y así poder priorizarlas de acuerdo a lo que el cliente considere más urgente, para luego implementar ese cambio.
- Equipo Evaluador: El equipo estará compuesto por el Scrum Master, el equipo de desarrollo y, si aplica, el Product Owner.
-
Criterios de Evaluación:
- Impacto en el alcance, tiempo y costo del proyecto.
- Riesgos asociados al cambio.
- Beneficios esperados y alineación con los objetivos del proyecto.
- Decisión: Se decidirá si el cambio es aprobado, rechazado o necesita más información. Esta decisión se documentará y comunicará a todas las partes relevantes.
- Planificación: Si el cambio es aprobado, se especificarán las user para su posterior implementación al incluirlas en un sprint, que incluirá las tareas necesarias y los responsables de realizarlas.
- Ejecución: El equipo de desarrollo llevará a cabo el cambio durante el sprint definido anteriormente. Durante la implementación, se controlará el progreso y se reportarán problemas a través del proceso de gestión de proyectos.
- Verificación: Una vez implementado, el cambio será verificado mediante pruebas específicas para asegurar que cumple con los requisitos y que no introduce nuevos problemas. Si es necesario, se realizará una revisión post-implementación para evaluar el éxito del cambio.
DOCUMENTACIÓN GENERAL
- Exclusiones
- Herramientas de Tracking
- Meetings
- Plan de Proyecto
- Plan de Comunicación
- Product Backlog del Proyecto
- Product Backlog del MVP
- Plan de Testing
- Plan de Gestión de la Configuración
- Investigación IOT
- Backlog de fallas
- Backlog de cambios
- Backlog de sugerencias
SPRINT N°1
SPRINT N° 2
SPRINT N° 3
DOCUMENTACIÓN FRONTEND
DOCUMENTACIÓN BACKEND