Guía#

Advertencia

El proyecto debe estar en GitHub y todos los integrantes del grupo deben participar activamente. La calificación será proporcional a la participación. Como es almacenado en GitHub se debe escribir utilizando markdown.

1. Objetivo del Proyecto#

El objetivo de este proyecto es que los estudiantes trabajen en equipo para desarrollar una aplicación Java que resuelva un problema práctico, aplicando los conceptos aprendidos a lo largo del curso. El proyecto busca fomentar el trabajo colaborativo, la organización del código y la implementación adecuada de principios de la Programación Orientada a Objetos (POO).

2. Descripción del Proyecto#

Cada equipo desarrollará una aplicación basada en un problema específico asignado por el profesor o elegido de una lista de temas propuestos. La aplicación debe incluir las siguientes características mínimas:

  • Uso de clases, objetos, y herencia.

  • Aplicación de encapsulamiento, polimorfismo y abstracción.

  • Manejo de colecciones (arrays, listas, etc.).

  • Persistencia de datos (uso de archivos y/o bases de datos).

  • Implementación de una interfaz gráfica simple.

  • Pruebas para asegurar la funcionalidad correcta del sistema.

3. Requisitos Funcionales#

La aplicación debe cumplir con los siguientes requisitos:

  • [Describir el tema elegido, por ejemplo, un sistema de gestión de biblioteca, tienda online, etc.].

  • Módulos principales que la aplicación debe tener (por ejemplo, gestión de usuarios, productos, transacciones, reportes).

  • Interacciones clave entre los usuarios y la aplicación (e.g., agregar/eliminar/actualizar registros).

4. Fases del Proyecto#

El proyecto se desarrollará en las siguientes fases:

  • Fase 1: Investigación y análisis del problema
    Objetivo: Entender el problema a resolver. Cada equipo debe entregar un documento con el análisis del problema, los casos de uso, y los requerimientos funcionales y no funcionales.

    Cada equipo debe entregar un primer reporte de proyecto que incluya:

    • Descripción del problema a resolver (planteamiento, justificación y requerimientos de la solución al problema).

    • Objetivos principal y específicos del proyecto.

    • Posible división de tareas entre los miembros del equipo.

    • Algunas referencias de interés.

Nota

Hasta aquí va la primera entrega. Recuerden que el reporte debe estar en el repositorio del proyecto.

  • Fase 2: Diseño del sistema
    Objetivo: Definir la estructura del código utilizando diagramas de clases UML y diagramas de secuencia. Presentar cómo se aplicarán los conceptos de POO. Definir que entidades se utilizaran para lo solución del problema, una buena implementación es utilizar paquetes para clases que tengan el mismo objetivo (manejar la base de datos, crear la interfaz gráfica, la lógica de negocio, consulta del API, etc).

  • Fase 3: Desarrollo
    Objetivo: Codificar el sistema según el diseño presentado en la fase anterior. Cada equipo debe implementar el sistema utilizando las mejores prácticas de programación (uso de patrones de diseño si es relevante).

Nota

Hasta aquí va la segunda entrega. Recuerden que el reporte debe estar en el repositorio del proyecto y TODOS deben participar activamente. Esta entrega debe tener las clases que interactúan con la base de datos y realicen operaciones CRUD, por ahora inventen una table con algo que tenga sentido y después utilizarán los códigos de sus compañeros. Además, deben utilizar un API para consultar datos o imágenes, parecido al examen donde utilizamos una clase para guardar los datos y poder pasarlos a la base de datos con mayor facilidad. Los diagramas no son necesarios por ahora. Finalmente, agreguen una image simple de como quieren que se vea la interfaz, algo muy sencillo que sea solo las figuras. Todo el proyecto debe estar en un repositorio bien documentado, que contenga información de que se requiere para ejecutar el proyecto, como hacerlos, referencias, explicación del código implementado, etc.

  • Fase 4: Pruebas
    Objetivo: Realizar pruebas de las funcionalidades clave del sistema. Deben documentar los casos de prueba y sus resultados.

  • Fase 5: Entrega Final y Presentación
    Objetivo: Entregar la aplicación funcional con toda la documentación técnica (manual del usuario, manual técnico, y resultados de las pruebas). Cada equipo realizará una presentación del proyecto explicando su diseño y las decisiones técnicas.

5. Criterios de Evaluación#

La calificación del proyecto se basará en los siguientes aspectos:

  • Funcionalidad: El sistema cumple con los requisitos establecidos y funciona correctamente.

  • Calidad del código: Uso adecuado de POO, claridad del código, y comentarios.

  • Pruebas: Implementación de pruebas y cobertura adecuada.

  • Documentación: Claridad y completitud de la documentación entregada.

  • Trabajo en equipo: Participación equitativa de los integrantes del equipo, reflejada en la evaluación por pares.

  • Presentación: Capacidad para comunicar las decisiones de diseño y justificar las elecciones técnicas.

6. Recursos#

Pueden encontrar enlaces de interés en https://github.com/uETITC.

7. Entregables#

  • Documento de análisis y diseño.

  • Código fuente comentado.

  • Pruebas (pantallazos y/o códigos).

  • Documentación técnica y manual del usuario.

  • Informe de evaluación del equipo (opcional).

8. Consideraciones Finales#

  • Los equipos deben usar control de versiones para gestionar el código (GitHub, GitLab, etc).

  • Se evaluará el cumplimiento de las fechas intermedias, por lo que se recomienda planificar y distribuir el trabajo equitativamente entre los integrantes.

9. Fechas Importantes#

  • Inicio del proyecto: [Fecha]

  • Entrega del proyecto final: [Fecha]

10. Recomendaciones#

  • Organícense desde el inicio y asignen responsabilidades claras.

  • Realicen revisiones periódicas del código y usen herramientas de control de versiones para evitar conflictos.

  • Asegúrense de que todos los miembros del equipo comprendan el código y las decisiones tomadas.

  • Documenten el progreso y dificultades para la presentación final.