Objetivos Restric ReqCalidad - shiomar-salazar/MISW-PF-Grupo1-Backend GitHub Wiki

Objetivos, restricciones y requisitos de calidad

Objetivos de Negocio

  • Descripción del objetivo: SportApp desea posicionarse como líder en el segmento de las aplicaciones de apoyo y gestión a deportistas no profesionales en el mercado latinoamericano, enfocándose en las condiciones físicas, mentales y hábitos de la población hispano parlante.
    Tiempo de cumplimiento: 12 meses
  • Descripción del objetivo: SportApp desea diferenciarse de otras aplicaciones de apoyo a deportistas disponibles en el mercado, proporcionando seguimiento e interacción con los deportistas durante sus prácticas, ofreciendo diferentes servicios y productos, y creando modelos analíticos que tengan en cuenta las características de los latinos y los alimentos disponibles en sus lugares de residencia.
    Tiempo de cumplimiento: 4 meses

Restricciones de Negocio

  • Descripción de la restricción: Se requiere completar la arquitectura del sistema incluidas pruebas de concepto y experimentos de arquitectura en 8 semanas.
    Usuario que expresa esta restricción: SportApp
  • Descripción de la restricción: El desarrollo de la primera versión de la aplicación, tanto a nivel del portal web como de la aplicación móvil, debe completarse en 8 semanas.
    Usuario que expresa esta restricción: SportApp
  • Descripción de la restricción: El presupuesto está limitado para un equipo de arquitectura de 4 personas por 8 semanas y un equipo de desarrollo de 4 personas por 8 semanas.
    Usuario que expresa esta restricción: SportApp

Restricciones de Tecnologia

Se requiere utilizar el siguiente stack tecnológico para el desarrollo del proyecto:

  1. Python 3.8 o superior.
  2. Kotlin 1.9.0 o superior.
  3. Angular 16.0.0 o superior.
  4. Flask Framework: micro framework web.
  5. Flask SQLAlchemy: una extensión de Flask que agrega soporte para el ORM SQLAlchemy, mapeador relacional de objetos que simplifica la interacción con una base de datos SQL.
  6. Flask RESTful: una extensión de Flask para desarrollar API REST con un patrón de diseño orientado a objetos.
  7. Flask Marshmallow: una extensión de Flask que se integra con Marshmallow, una biblioteca de Python para la serialización de objetos.
  8. Flask JWT Extended: agrega soporte para el uso de JSON Web Tokens (JWT) a Flask para proteger las vistas, creación de tokens a partir de objetos complejos u objeto complejo a partir de tokens recibidos, actualizar tokens, entre otras funciones.
  9. Werkzeug: biblioteca completa de aplicaciones web WSGI.
  10. PostgreSQL: Motor open source de base de datos SQL.
  11. Gunicorn: servidor HTTP WSGI para Python y ambientes Unix.
  12. Nginx: servidor web HTTP de código abierto. Ofrece servicios como proxy inverso, balanceador de carga HTTP y proxy de correo electrónico para IMAP, POP3 y SMTP. Se utiliza en conjunto con Gunicorn para desplegar en producción aplicaciones web en Flask.
  13. Docker: plataforma de código abierto que permite crear, desplegar, ejecutar y gestionar contenedores.
  14. Google Cloud Platform: conjunto de servicios de computación en la nube que proporciona una serie de servicios modulares en la nube, tales como cloud source, cloud build, container registry, cloud deploy, compute engine, cloud run, cloud functions, cloud pub/sub, cloud load balancing, cloud SQL, entre otros.

Requisitos de Calidad

Atributo de Calidad En qué situación es importante este atributo de calidad
Latencia SportApp, como líder que desea ser en el segmento de las aplicaciones de apoyo y gestión a deportistas no profesionales, debe garantizar a sus clientes unos márgenes de tiempo ante situaciones críticas como: alertas cuando se detecte una situación de riesgo para el usuario (< 2 segundos), modificación de las sesiones de entrenamientos cuando se detectan cambios de parámetros (< 4 segundos), notificación de indicadores de salud cuando se finaliza una sesión de entrenamiento (< 3 segundos), notificación cuando se agenda una sesión con un entrenador o deportólogo (< 2 segundos).
Escalabilidad SportApp tiene como meta posicionarse como la aplicación líder en el mercado latinoamericano en los próximos 12 meses, por lo que la escalabilidad es crucial para lograr este objetivo. Se debe garantizar que el sistema pueda ser capaz de soportar hasta 1000 registros simultáneos cuando hayan eventos masivos como competencias o salidas deportivas. También es un requerimiento que el sistema pueda soportar hasta 1000 usuarios simultáneos cuando hayan eventos masivos como travesías de ciclo montañismo o maratones, de forma que se puedan notificar alertas y cambios a los participantes en tiempo real.
Flexibilidad SportApp desea ampliar su portafolio con el pasar del tiempo, por lo que es indispensable que el sistema permita modificaciones para agregar nuevos deportes de forma fácil y eficiente, por lo cual se debe garantizar que un cambio o modificación en la aplicación se haga en menos de 20 hora

Backlog de Arquitectura

ASR ALCANCE ATRIBUTO DE CALIDAD ASOCIADO
Como usuario, cuando me encuentre en una sesión de entrenamiento o ejercicio dado que el sistema opera normalmente y se genera un cambio importante en los datos míos, quiero recibir recordatorios de ingesta de líquido y comida para asegurar que me encuentro hidratado en todo momento. Esto debe suceder en menos de 3 segundos. App Móvil Latencia
Como usuario, cuando me encuentre en una sesión de entrenamiento o ejercicio dado que el sistema opera normalmente, quiero recibir información de los diferentes parámetros de salud para asegurar que me encuentro dentro de los límites. Esto debe suceder cada 5 segundos durante la sesión de entrenamiento o ejercicio. App Móvil Latencia
Como usuario, cuando me encuentre en una sesión de entrenamiento o ejercicio dado que el sistema opera normalmente y detecte una situación de riesgo para mí, quiero recibir una alerta para detenerme inmediatamente. Esto debe suceder en menos de 2 segundos. App Móvil Latencia
Como usuario, cuando me encuentre en una sesión de entrenamiento o ejercicio dado que el sistema opera normalmente y detecte un cambio que indique que voy a terminar antes de tiempo, quiero recibir mensajes de motivación para esforzarme y continuar con la sesión de entrenamiento o ejercicio y asegurar el éxito de mi entrenamiento. Esto debe suceder en menos de 2 segundos. App Móvil Latencia
Como usuario, cuando me encuentre en una sesión de entrenamiento o ejercicio dado que el sistema opera normalmente y detecte cambios en parámetros como frecuencia cardiaca, calorías consumidas, etc, quiero que se recalculen los objetivos de la sesión para que el entrenamiento este acorde a mis capacidades físicas. Esto debe suceder en menos de 4 segundos. App Móvil Latencia
Como usuario, cuando termine una sesión de entrenamiento o ejercicio dado que el sistema opera normalmente, quiero ver el cálculo de indicadores de salud como FTP y VO2 max para conocer mi capacidad aérobica y/o la máxima potencia que puedo producir en una bicicleta por hora. Esto debe suceder en menos de 3 segundos. App Web y Móvil Latencia
Como usuario, cuando seleccione un lugar y una fecha dado que el sistema opera normalmente, quiero ver la recomendación de rutas o eventos para conocer las opciones más apropiadas para mi entrenamiento. Esto debe suceder en menos de 2 segundos. App Web y Móvil Latencia
Como usuario, cuando me encuentre en un evento dado que el sistema opera normalmente, quiero obtener alertas si ocurren problemas de seguridad o eventos naturales adversos en el lugar donde se desarrolla el evento para tomar medidas de precaución. Esto debe suceder en menos de 5 segundos. App Móvil Latencia
Como usuario, cuando intente agendar una sesión con un entrenador o un deportólogo dado que el sistema opera normalmente, quiero recibir una notificación de que la operación fue exitosa para poder recibir asistencia profesional sobre los planes de entrenamiento o lesiones deportivas. Esto debe suceder en menos de 2 segundos. App Web y Móvil Latencia
Como usuario, cuando envíe el formulario para registrarme en la aplicación dado que el sistema opera normalmente, quiero obtener una notificación de que la operación fue exitosa y también la clasificación en el grupo de riesgo y recomendación de los planes para iniciar un entrenamiento adecuado, basado en mis características fisiológicas, historial deportivo y lugar de residencia. Esto debe suceder en menos de 3 segundos. App Web Latencia
Como administrador del sistema, cuando hayan eventos masivos, como competencias o salidas deportivas dado que el sistema opera normalmente, quiero que el registro de usuarios pueda darse en grandes volúmenes para que los usuarios tengan una buena experiencia del servicio. Esto debe suceder hasta con 1000 registros simultáneos. App Web Escalabilidad
Como administrador del sistema, cuando hayan eventos masivos, como travesías de ciclo montañismo o maratones dado que el sistema opera normalmente, quiero que se puedan notificar alertas y cambios a los participantes en tiempo real para que los usuarios tengan una buena experiencia del servicio. Esto debe suceder hasta con 1000 usuarios simultáneos. App Móvil Escalabilidad
Como administrador del sistema, cuando se requiera agregar nuevos deportes y sus correspondientes servicios y productos dado que el sistema opera normalmente, quiero actualizar el código fuente para brindar a los usuarios un portafolio de deportes más amplio. Esto debe suceder en menos de 20 horas/hombre. App Web y Móvil Flexibilidad