Pautas para la cursada

Se detallan algunos puntos que viene bien (creo) tener en cuenta.

Antes que nada - condiciones de aprobación

Para aprobar cualquiera de las dos materias (o sea Desarrollo de Aplicaciones y PPS) tenemos condiciones grupales e individuales.

Las condiciones grupales son

Las condiciones individuales son

Objetivos de cada sprint

Para Desarrollo de Aplicaciones, se establecen los siguientes objetivos para cada sprint.

Número de sprint Objetivo
Sprint 1 Implementación preliminar que cubra todos los puntos obligatorios, cubriendo cada uno al menos en un 50%.
Sprint 2 Mejoras en la experiencia de usuario, validaciones, datos de prueba.
Sprint 3 Implementación al 70% incluyendo agregados que se puedan proponer en las reuniones anteriores, documentación de tests funcionales.
Sprint 4 Implementación al 90% incluyendo agregados que se puedan proponer en las reuniones anteriores, responsiveness.
Sprint 5 Implementación al 100% incluyendo agregados que se puedan proponer en las reuniones anteriores, documentación de API, presentación.

La evaluación de estos objetivos se hace en forma grupal.

Si un grupo no llega a los objetivos:

Dinámica de la cursada

El desarrollo se tiene que organizar en sprints, esto no es optativo. La mayor parte de los sprints dura tres semanas, probablemente alguno dure dos. Las fechas de inicio de cada sprint están en el cronograma del cuatrimestre. Dentro del sprint, se deben cumplir los objetivos propuestos por el equipo al iniciar el mismo.

El corte de un sprint a otro coincide con el día y hora del encuentro semanal. En el encuentro de esa semana se hace el análisis de fin-de-sprint, y se habla del alcance del siguiente, que después el grupo tiene que plasmar en la ficha de inicio.

La definición y evaluación de cada sprint forma parte de la evaluación de la materia.

El código a presentar se considerará terminado únicamente cuando se haya integrado (mergeado) en la branch de develop (o la rama correspondiente) y esté completamente funcional al momento del cierre del sprint.

Los repositorios deben incluir los archivos de contexto que se suministran al LLM, y archivos de texto con el texto de los prompts principales utilizados para el desarrollo.

No se aceptarán:

Nota
En la página de recursos, están las fichas de principio y fin de sprint que hay que llenar, junto con ejemplos.
En los detalles sobre uso del Trello, se detalla cómo proceder al principio y al final de cada sprint respecto de las tareas definidas.

Manejo de grupo

Los docentes no vamos a inmiscuirnos con la relación entre lxs integrantes de cada grupo. Podemos hacer quejas sobre el comportamiento de un integrante y tomarlas en cuenta para la evaluación que hacemos del funcionamiento del grupo, pero no vamos a intervenir ni intentar resolver cuestiones dentro de un grupo. Lo intentamos con nuestra mejor voluntad en cursadas anteriores, con un resultado muy malo.

Los grupos no se pueden separar una vez comenzada la cursada. Se puede intentar, sin promesas, hacer cambio de grupo hasta la primer semana del sprint 2, después no.

Qué es lo que hay que construir

Una aplicación Web, que prevea que pueda utilizarse (al menos parcialmente) desde celular. O sea, hay que cuidar que la UI sea responsive.

Cómo documentar los requerimientos

Se recomienda fuertemente que los acuerdos que se establezcan con les stakeholders / usuaries se basen en pantallas y flujos de navegación. En la dinámica de implementación con herramientas basadas en IA, se pueden presentar o bien mockups en HTML/CSS, o bien implementaciones preliminares del FE.

Para el sprint 3 se solicita documentar tests funcionales, que son escenarios de uso de la aplicación, indicando la operación que realiza un usuario, y el resultado esperado. Para la redacción de estos tests funcionales también se pueden utilizar herramientas basadas en IA.

Un documento viejo, pero que puede servir, es la lista de requerimientos, una lista de bullets con lo que se espera de la aplicación, donde cada bullet no lleva más de un renglón o dos.

Para llevar la organización del desarrollo

Se propone usar Trello, una herramienta de manejo de tareas liviana y sencilla, basada en listas de tareas. Se va a proponer una organización para el proyecto Trello, eso va a aparecer en este sitio en breve.

Una alternativa es llevar los issues en el mismo repo de GitHub que el código.

Otra alternativa es JIRA … pero no sé si tiene versión en-la-nube. Es más completo, y (bastante) más pesado.

Guía para organizarse - priorizar la funcionalidad específica

Ponerle foco a la funcionalidad, a lo que le interesa a les usuaries, más que a las cuestiones técnicas.

En el desarrollo soportado por herramientas basadas en IA, resulta factible avanzar con FE y BE en paralelo. Si por la dinámica de grupo o por complejidades en el diseño de la BD resultara complicado contar con las funcionalidades de BE requeridas para implementar una parte del FE, se puede utilizar un mock de BE, que responda a los endpoints que se definan, pero con datos fijos o en memoria.

Las cuestiones no ligadas a la funcionalidad específica, como autenticación/autorización, no se encaran al principio.
Si quieren manejar desde el principio interfaces diferenciadas por roles, pueden: definir un atributo rol en la UI, y URLs separadas para cada rol, que definan el valor del atributo y ruteen, p.ej. /admin, /docente, /alumno.

Arquitectura de software

El proyecto tiene que responder a estos dos principios:

  1. frontend y backend separados. Si el back se pone muy gordo, se puede evaluar partirlo en varios (micro)servicios.
  2. comunicación con una API HTTP, el front le hace requests al back. JSON para la representación de información en los payloads de requests y responses.

Se recomienda fuertemente, y se da soporte para, basar tanto frontend como backend en JavaScript (JS) o TypeScript (TS).

Para el frontend, se propone basarlo en React. Entre los recursos incluimos un repositorio que pueden usar de base, basado en JS.

Para el backend, se pueden elegir dos cosas.

  1. si usar una base SQL o bien MongoDB con Mongoose.
  2. si hacerlo en JS o en TS.

Esto nos da cuatro combinaciones: SQL/JS, SQL/TS, Mongo/JS, Mongo/TS.

En el entorno soportado por herramientas que utilizan IA, se recomienda que los proyectos se generen dentro de la interacción con estas herramientas.
Señalamos los repositorios base generados para cursadas anteriores, para ser usados a modo de consulta de ser necesario.

Se pueden proponer otras opciones … pero se pierde el soporte docente.

Atención - evolución de la BD

No olvidar el tema de las migraciones de BD, para que no sea un garronazo el mantenimiento de la BD a medida que avanzan en el proyecto. Esto sobre todo para bases SQL.

Organización del código

En repositorios GIT, creando dos repos, uno para el backend y otro para el frontend. Se puede usar GitHub (les van a resultar más fáciles algunas tareas) o GitLab (repos privados infinitos gratis), también existe BitBucket pero no se recomienda.
En cualquier caso, tienen que incluir a todos los docentes para que al menos puedan ver el repo y hacerle comentarios.

No vale trabajar en un único branch. Se recomienda manejarse con estos branches.

Vale trabajar con Pull Requests para mergear a dev.

Actividades

Vamos a tener una sesión semanal, para la reunión de fin de sprint cuando corresponda, para revisar la marcha y resolver dudas las otras.
Está la intención de ir mechando charlas sobre temas que les vienen bien para el proyecto, eso lo vamos a ir reflejando en la página de actividades.