Guía#

Advertencia

El proyecto debe estar en GitHub y todos deben participar activamente.

1. Objetivo del Proyecto#

Desarrollar una solución de software que aplique las mejores prácticas y principios de diseño, utilizando patrones de diseño, arquitectura de software, y técnicas de modelado UML. El proyecto debe ser realizado de a uno.

2. Descripción del Proyecto#

Cada uno debe diseñar e implementar un sistema de software que resuelva un problema específico, aplicando conceptos clave del diseño de software. El proyecto debe cubrir las siguientes áreas:

  • Análisis del problema y definición de requisitos.

  • Uso adecuado de patrones de diseño (creacionales, estructurales y de comportamiento).

  • Diseño de arquitectura (ejemplo: arquitectura en capas, microservicios, etc.).

  • Modelado de diagramas UML (clases, secuencia, casos de uso).

  • (Opcional) Implementación de una solución mínima viable (MVP) en código, dependiendo del nivel de la asignatura.

3. Requisitos Funcionales#

El sistema debe cumplir con los siguientes requisitos mínimos:

  • Definir al menos 3 casos de uso completos que guíen el desarrollo del sistema.

  • Uso de mínimo tres patrones de diseño adecuados al problema planteado.

  • Diagramas UML claros que representen la estructura del sistema (diagrama de clases, de secuencia, etc.).

  • Documentación que describa las decisiones de diseño y justifique la elección de patrones y arquitecturas.

4. Fases del Proyecto#

  • 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 y TODOS deben participar activamente.

  • Fase 2: Diseño de la arquitectura

    • Objetivo: Definir la arquitectura del sistema, identificando las capas o módulos principales. Describir cómo las partes del sistema interactuarán entre sí.

    • Entregable: Diagrama de arquitectura del sistema y justificación de la arquitectura seleccionada.

  • Fase 3: Modelado UML y patrones de diseño

    • Objetivo: Crear los diagramas UML que describen el sistema, y aplicar los patrones de diseño apropiados para cada componente o interacción.

    • Entregable: Diagramas UML (casos de uso, clases, secuencia, estados, etc.) y un documento explicando la aplicación de los patrones de diseño.

Nota

Hasta aquí va la segunda entrega. Recuerden que el reporte debe estar en el repositorio del proyecto y TODOS deben participar activamente. En esta entrega deben tener los diagramas de clases, objetos, casos de uso, y de actividades para el problema asignado.

  • Fase 4: Implementación (opcional)

    • Objetivo: Implementar una solución mínima viable (MVP) del sistema diseñado, asegurando la correcta implementación de los patrones y la arquitectura seleccionada.

    • Entregable: Código fuente (si es necesario) y manual técnico.

  • Fase 5: Pruebas y validación del diseño

    • Objetivo: Validar el diseño y los diagramas mediante revisiones de pares, pruebas de concepto o prototipos. Identificar posibles mejoras o cambios.

    • Entregable: Informe de validación del diseño.

  • Fase 6: Presentación final

    • Objetivo: Presentar el diseño final, explicando las decisiones tomadas a lo largo del proyecto, cómo se implementaron los patrones de diseño y cómo se logró satisfacer los requisitos.

    • Entregable: Presentación del proyecto con todos los diagramas y documentación técnica.

5. Criterios de Evaluación#

  • Calidad del análisis de requisitos: Precisión y exhaustividad en la identificación de requisitos.

  • Diseño de la arquitectura: Coherencia y claridad en la definición de la arquitectura del sistema.

  • Uso de patrones de diseño: Elección y correcta implementación de patrones según el problema.

  • Diagramas UML: Claridad y corrección de los diagramas UML presentados.

  • Documentación: Justificación clara de las decisiones de diseño y elección de patrones.

  • Trabajo en equipo: Evaluación por pares y participación activa de cada miembro.

  • Presentación: Capacidad para explicar y defender el diseño y las decisiones técnicas.

6. Recursos#

  • Pueden encontrar enlaces de interés en uETITC.

7. Entregables#

  • Documento de análisis y diseño.

  • Diagramas UML (casos de uso, clases, secuencia, etc.).

  • Documentación justificando las decisiones de diseño.

  • (Opcional) Implementación de una MVP.

  • Presentación final del proyecto.

8. Consideraciones Finales#

  • Los equipos deben usar herramientas colaborativas (e.g., GitHub, Lucidchart) para gestionar tanto el código como los diagramas.

  • Se evaluará el cumplimiento de las fechas intermedias, por lo que es importante planificar el trabajo de manera equitativa y organizada.

  • Los equipos deben validar su diseño constantemente para asegurar su viabilidad y correcta implementación.

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.