Está en la página 1de 6

Universidad San Carlos de Guatemala

Facultad de Ingeniería
Escuela de Ciencias y Sistemas
Análisis y diseño de sistemas 2
Ing. Marlon Francisco Orellana López
Tutor: Cristian Alexander Gómez Guzmán

PROYECTO
Fase II
Introducción
El curso de Análisis y diseño de sistemas 2 busca la ampliación del conocimiento de
las buenas prácticas, así como herramientas adecuadas para diseñar y construir un
sistema completo, tomando en cuenta su arquitectura, DevOps, CI/CD. El proyecto
se llevará a cabo en tres fases, cada una iterativa y dependiendo de la anterior.

Configuración del flujo de trabajo


Se deben utilizar las siguientes herramientas para el desarrollo de la práctica:

Jira software
El tablero debe tener como mínimo las siguientes columnas:
● To-Do
● Bloqueadas
● En proceso
● test/QA
● Listo para producción
● Finalizadas

Cada equipo deberá dejar constancia videográfica de las siguientes prácticas de


scrum.
● Daily scrum
● Sprint planning
● Sprint retrospective

Documentación de Sprints
En una página de Confluence, se deberá listar los enlaces de las grabaciones de las
reuniones que realizaron para cada sprint y deben adjuntar el Burndown Chart
para demostrar los puntos que realizaron en el sprint.
Configuración del repositorio
● Husky: Se deben configurar los hooks de pre-commit y pre-push para
ejecutar las pruebas unitarias y para que no se pueda realizar commits en la
rama develop y rama main.
● Jest: Para el backend deberán realizar pruebas unitarias con jest, deberán
probar las nuevas funcionalidades. El coverage mínimo para esta fase es de
70% y para las pruebas de integración deberán utilizar SuperTest.
● Para el cliente deberán realizar pruebas unitarias y deberán realizar pruebas
de integración de las siguientes vistas: login, compra y vista de llaves.

SonarQube

La calidad del software es un elemento fundamental en la industria del desarrollo.


Disponer de herramientas que nos ayuden a evaluar nuestro código se convierte en
una tarea imprescindible para garantizar el desarrollo de una manera correcta y la
aplicación de buenas prácticas. Por lo que se les solicita que al menos un integrante
del equipo debe de instalar SonarQube en su máquina de desarrollo, y configurarlo
para realizar un análisis del código de las APIs.

Las métricas a tomar en cuenta son:

1. Code Complexity
2. Duplications
3. Maintainability (Code-smells, technical debts)
4. Reliability (Bugs, Reliability Rating)
5. Security (Vulnerabilities, Security Rating)
6. Code Size, % comments, functions, statements
Para la implementación del diseño arquitectónico debe tomar en cuenta que
los siguientes requerimientos:

El objetivo es que el estudiante logre contenerizar, crear servicios y a su vez


microservicios en una aplicación web la cual tendrá como objetivo el manejo de la
copa mundial 2026, el cual su funcionamiento será explicado más adelante.

● Se debe de implementar un diseño arquitectónico basado en servicios y


microservicios donde se maneje la lógica de backend de cada una de las
partes del sistema de forma separada.
● Para la implementación de microservicios se debe elegir una parte del
sistema backend que pueda implementarse como servicio y aumentar su
granularidad con los microservicios.
● Almacenamiento de imágenes, deberán utilizar Google cloud storage o un
bucket de Amazon S3.
● Deberán hacer uso de una base de datos caché para mejorar la
disponibilidad de su aplicación, esta deberá estar instalada en una máquina
virtual de compute engine.
● Para cada microservicio deberá dejar documentado sus endpoints con
(Swagger, Insomnia o Postman)
● Seguridad de la aplicación, deberán utilizar JWT
● Los datos sensibles deben ser encriptados en la base de datos.
● Para la base de datos deberán hacer uso de un servicio administrado en la
nube que facilite las tareas de configuración, operación y escalado de una
base de datos.
● Deberán utilizar un registro privado de imágenes de contenedor (Google
Container Registry o Gitlab Container Registry)
● Tienen que alojar su página web en Google App Engine.
Copa Mundial 2026
Su equipo ha sido contratado para realizar mejoras en la plataforma web del
mundial 2026 por lo que a continuación se lista los nuevos requerimientos y
mejoras.

Página principal
Deberán crear un dashboard el cual debe proporcionar información sobre los
partidos próximos a jugar, así como la cantidad de partidos que ya se jugaron y la
cantidad de partidos que faltan por jugar. Deberán mostrar una tabla en donde se
muestran los goleadores y grupos.

Registro de usuarios:
Deben requerir el correo, nombre, contraseña, confirmación de contraseña, número
de tarjeta de crédito, código CVV y fecha de expiración.

Nota: Al momento que un usuario se registre en la plataforma, debe de generarse


un correo de confirmación, el cual deberá de llegar al correo electrónico ingresado,
este correo contendrá un código el cual tiene una caducidad de 2 minutos y hasta
no ser confirmado el usuario, no podrá ingresar a la plataforma.

Entradas
Para poder comprar una entrada a un partido, el usuario debe estar registrado en la
página. Al momento de realizar la compra esta será confirmada por correo
electrónico. Un usuario podrá comprar como máximo 6 entradas por cada partido.

Las entradas están disponibles en las siguientes categorías:


● Categoría 1
● Categoría 2
● Categoría 3
● Categoría 4 (Esta categoría está reservada para los residentes de cada país
en el que se esté disputando el partido)
● Entradas de accesibilidad (Estas son reservadas exclusivamente a las
personas con discapacidad y movilidad reducida)
Los precios de las entradas dependen del evento al que se quiera asistir.
Precios en dólares de entradas por evento:

Evento CAT 1 CAT 2 CAT 3 CAT 4 Entradas de


accesibilidad

Partido inaugural 620 350 200 120 120

Partidos de grupo 280 160 70 15 15

Octavos de final 300 200 96 30 30

Cuartos de final 350 280 200 50 50

Semifinales 720 660 360 70 70

Partido por el tercer puesto 425 300 200 50 50

Final 1600 1000 600 200 200

Compra
Es importante que al momento que el usuario ya tenga las entradas seleccionadas y
seleccione su tarjeta, solo se debe de mostrar los últimos 4 dígitos de la tarjeta, al
igual que en la factura, que llegue por correo al usuario.

Olvidé mi contraseña
Se desea permitir a los usuarios recuperar su contraseña.
Flujo:
● El usuario selecciona recuperar contraseña.
● El usuario ingresa su correo electrónico
● Si no hay ningún usuario con el correo, deberá mostrar un mensaje de error.
● Si el correo está vinculado a un usuario, deberán enviar un código de
verificación.
● En la pantalla se requerirá el código de verificación
● Si el código es incorrecto, se mostrará un error.
● Si el código es correcto, se permitirá al usuario cambiar su contraseña.
● Finalmente, se redireccionará al usuario nuevamente a la página de Login.

Ver perfil
En esta pantalla se mostrarán los datos de usuario y podrá cambiar su tarjeta de
crédito (Para realizar este cambio el usuario deberá confirmar contraseña).
Historial de compra:
Deberá contar con una pantalla en donde se listen las entradas que el usuario haya
comprado, los datos que debe mostrar son fecha, hora, cantidad de entradas, total y
el evento para el cual se compró la entrada.

Documentación:
● Diagrama del diseño arquitectónico implementado

Consideraciones
● Google Kubernetes Engine es obligatorio
● Se debe utilizar el control de versiones Gitlab
● La estrategia de branching a utilizar debe ser Git-Flow. Se revisará que hayan
trabajado correctamente con Git-Flow.
● La documentación debe ser almacenada en el repositorio utilizando el
formato markdown.
● Deberán implementar como mínimo 2 sprints.
● Las copias totales o parciales tendrán una nota de 0 puntos y será reportada
a las autoridades correspondientes.
● Se trabajará en equipos no mayores a 5 personas.
● Agregar al auxiliar al repositorio o grupo, usuario: “@cgomez29”.

Recursos:
● https://www.youtube.com/watch?v=sTdNtl9bo-A
● https://www.losmundialesdefutbol.com/
● https://www.fifa.com/fifaplus/es/tournaments/mens/worldcup/qatar2022/teams/
argentina/squad
● https://as.com/futbol/mundial/cuadro-del-mundial-2022-como-son-los-cruces-y
-quien-se-enfrenta-a-quien-en-octavos-cuartos-y-semifinales-n/
● https://www.youtube.com/watch?v=JzZKQzgTA5A
● https://www.fifa.com/fifaplus/es/tournaments/mens/worldcup/qatar2022/knock
out-and-groups

Entregables:
● Link de repositorio de código fuente de GitLab.

Fecha de entrega: Miércoles 21 de diciembre

También podría gustarte