← Volver a Documentación

DIAGRAMAS UML

CEMI Sistema de Gestión Académica

Casos de Uso • Actividad • Clases • Secuencia

Contenido

1. Diagramas de Casos de Uso

Los diagramas de casos de uso representan las interacciones entre los actores del sistema (Alumno, Profesor, Administrativo, Gestor) y las funcionalidades que pueden utilizar.

Actores del Sistema

CU-01: Casos de Uso del Alumno
flowchart LR subgraph Sistema["CEMI Sistema Educativo"] CU1["Iniciar Sesión"] CU2["Ver Dashboard"] CU3["Consultar Cursos Inscriptos"] CU4["Ver Calificaciones"] CU5["Acceder al Classroom"] CU6["Ver Materiales"] CU7["Entregar Tareas"] CU8["Participar en Chat"] CU9["Consultar Estado de Pagos"] CU10["Editar Perfil"] end Alumno((Alumno)) Alumno --> CU1 Alumno --> CU2 Alumno --> CU3 Alumno --> CU4 Alumno --> CU5 CU5 --> CU6 CU5 --> CU7 CU5 --> CU8 Alumno --> CU9 Alumno --> CU10
CU-02: Casos de Uso del Profesor
flowchart LR subgraph Sistema["CEMI Sistema Educativo"] CU1["Iniciar Sesión"] CU2["Ver Dashboard"] CU3["Gestionar Cursos Asignados"] CU4["Registrar Asistencia"] CU5["Cargar Calificaciones"] CU6["Gestionar Classroom"] CU7["Publicar Materiales"] CU8["Crear Tareas"] CU9["Calificar Entregas"] CU10["Chat con Alumnos"] CU11["Ver Lista de Alumnos"] end Profesor((Profesor)) Profesor --> CU1 Profesor --> CU2 Profesor --> CU3 Profesor --> CU4 Profesor --> CU5 Profesor --> CU6 CU6 --> CU7 CU6 --> CU8 CU6 --> CU9 CU6 --> CU10 Profesor --> CU11
CU-03: Casos de Uso del Administrativo
flowchart LR subgraph Sistema["CEMI Sistema Educativo"] CU1["Iniciar Sesión"] CU2["Ver Dashboard Admin"] CU3["Gestionar Alumnos"] CU4["Gestionar Profesores"] CU5["Gestionar Cursos"] CU6["Gestionar Inscripciones"] CU7["Registrar Pagos"] CU8["Consultar Deudores"] CU9["Ver Estadísticas"] CU10["Gestionar Aulas"] end Admin((Administrativo)) Admin --> CU1 Admin --> CU2 Admin --> CU3 Admin --> CU4 Admin --> CU5 Admin --> CU6 Admin --> CU7 Admin --> CU8 Admin --> CU9 Admin --> CU10
CU-04: Casos de Uso del Gestor
flowchart LR subgraph Sistema["CEMI Sistema Educativo"] CU1["Iniciar Sesión Admin"] CU2["Configurar Sistema"] CU3["Gestionar Administradores"] CU4["Ver Logs del Sistema"] CU5["Gestionar Idiomas"] CU6["Gestionar Niveles"] CU7["Backup de Datos"] CU8["Monitorear Sistema"] end Gestor((Gestor)) Gestor --> CU1 Gestor --> CU2 Gestor --> CU3 Gestor --> CU4 Gestor --> CU5 Gestor --> CU6 Gestor --> CU7 Gestor --> CU8

2. Diagramas de Actividad

Los diagramas de actividad muestran el flujo de trabajo de los procesos principales del sistema.

ACT-01: Proceso de Inscripción a Curso
flowchart TD A([Inicio]) --> B[Alumno solicita inscripción] B --> C{¿Alumno registrado?} C -->|No| D[Registrar nuevo alumno] D --> E[Validar datos personales] C -->|Sí| F[Verificar cupos disponibles] E --> F F --> G{¿Hay cupos?} G -->|No| H[Notificar sin cupos] H --> I([Fin]) G -->|Sí| J{¿Horario compatible?} J -->|No| K[Mostrar conflicto de horarios] K --> L[Seleccionar otro curso] L --> F J -->|Sí| M[Registrar inscripción] M --> N[Generar cuotas pendientes] N --> O[Enviar confirmación] O --> P([Fin]) style A fill:#2ecc71 style P fill:#2ecc71 style I fill:#e74c3c
ACT-02: Proceso de Registro de Pago
flowchart TD A([Inicio]) --> B[Administrativo accede a Pagos] B --> C[Buscar alumno] C --> D[Mostrar deudas pendientes] D --> E{¿Alumno tiene deuda?} E -->|No| F[Informar sin pagos pendientes] F --> G([Fin]) E -->|Sí| H[Seleccionar cuota a pagar] H --> I[Ingresar monto recibido] I --> J{¿Monto correcto?} J -->|No| K[Mostrar error de monto] K --> I J -->|Sí| L[Seleccionar método de pago] L --> M[Registrar transacción] M --> N[Actualizar estado de cuota] N --> O[Generar comprobante] O --> P([ Fin]) style A fill:#2ecc71 style P fill:#2ecc71 style G fill:#3498db
ACT-03: Proceso de Autenticación
flowchart TD A([Inicio]) --> B[Usuario ingresa credenciales] B --> C[Sistema valida usuario] C --> D{¿Usuario existe?} D -->|No| E[Mostrar error: Usuario no encontrado] E --> F[Incrementar intentos fallidos] F --> G{¿Máximo intentos?} G -->|Sí| H[Bloquear por 15 minutos] H --> I([Fin - Bloqueado]) G -->|No| B D -->|Sí| J[Verificar contraseña con bcrypt] J --> K{¿Contraseña correcta?} K -->|No| E K -->|Sí| L[Obtener perfil de usuario] L --> M{¿Tipo de usuario?} M -->|Alumno| N[Redirigir a Dashboard Alumno] M -->|Profesor| O[Redirigir a Dashboard Profesor] M -->|Admin| P[Redirigir a Dashboard Admin] N --> Q([Fin - Sesión iniciada]) O --> Q P --> Q style A fill:#2ecc71 style Q fill:#2ecc71 style I fill:#e74c3c
ACT-04: Proceso de Entrega de Tarea
flowchart TD A([Inicio]) --> B[Alumno accede al Classroom] B --> C[Selecciona curso] C --> D[Ve lista de tareas] D --> E[Selecciona tarea pendiente] E --> F{¿Fecha límite vigente?} F -->|No| G[Mostrar: Tarea vencida] G --> H([Fin - No entregado]) F -->|Sí| I[Subir archivo de entrega] I --> J{¿Formato válido?} J -->|No| K[Mostrar error de formato] K --> I J -->|Sí| L{¿Tamaño permitido?} L -->|No| M[Mostrar error de tamaño] M --> I L -->|Sí| N[Guardar archivo en servidor] N --> O[Registrar entrega en BD] O --> P[Notificar al profesor] P --> Q[Mostrar confirmación] Q --> R([Fin - Entregado]) style A fill:#2ecc71 style R fill:#2ecc71 style H fill:#e74c3c

3. Diagrama de Clases

El diagrama de clases representa la estructura estática del sistema, mostrando las entidades principales, sus atributos y las relaciones entre ellas.

Diagrama de Clases Principal
classDiagram class Usuario { +int id +String username +String password_hash +int perfil_id +DateTime created_at +validarCredenciales() +cambiarPassword() } class Perfil { +int id +String nombre +String descripcion } class Alumno { +int id +String dni +String nombre +String apellido +String email +String telefono +Date fecha_nacimiento +boolean activo +int usuario_id +inscribirse() +consultarCursos() +consultarPagos() } class Profesor { +int id +String dni +String nombre +String apellido +String email +String especialidad +boolean activo +int usuario_id +verCursosAsignados() +registrarAsistencia() +cargarCalificaciones() } class Curso { +int id +String nombre +int idioma_id +int nivel_id +int profesor_id +int aula_id +String horario +int cupo_maximo +boolean activo +obtenerAlumnos() +verificarDisponibilidad() } class Inscripcion { +int id +int alumno_id +int curso_id +Date fecha_inscripcion +String estado +confirmar() +cancelar() } class Pago { +int id +int alumno_id +int inscripcion_id +Decimal monto +String concepto +Date fecha_vencimiento +Date fecha_pago +String estado +String metodo_pago +registrar() +anular() } class Aula { +int id +String nombre +int capacidad +String ubicacion +boolean activo +verificarDisponibilidad() } class Idioma { +int id +String nombre +String codigo +boolean activo } class Nivel { +int id +String nombre +String descripcion +int orden } class Tarea { +int id +int curso_id +String titulo +String descripcion +Date fecha_limite +crear() +calificar() } class Entrega { +int id +int tarea_id +int alumno_id +String archivo_url +DateTime fecha_entrega +Decimal calificacion +String comentario } Usuario "1" --> "1" Perfil : tiene Alumno "1" --> "1" Usuario : tiene Profesor "1" --> "1" Usuario : tiene Alumno "1" --> "*" Inscripcion : realiza Curso "1" --> "*" Inscripcion : tiene Profesor "1" --> "*" Curso : dicta Curso "*" --> "1" Aula : se dicta en Curso "*" --> "1" Idioma : pertenece a Curso "*" --> "1" Nivel : tiene Alumno "1" --> "*" Pago : realiza Curso "1" --> "*" Tarea : tiene Alumno "1" --> "*" Entrega : realiza Tarea "1" --> "*" Entrega : recibe

4. Diagramas de Secuencia

Los diagramas de secuencia muestran la interacción entre objetos a lo largo del tiempo para procesos específicos.

SEQ-01: Inicio de Sesión
sequenceDiagram actor Usuario participant Frontend participant API as API Auth participant DB as Database Usuario->>Frontend: Ingresa credenciales Frontend->>Frontend: Validar campos Frontend->>API: POST /api/auth/login API->>DB: SELECT usuario by username DB-->>API: Usuario encontrado API->>API: bcrypt.compare(password) alt Contraseña correcta API->>DB: SELECT perfil, datos DB-->>API: Datos completos API-->>Frontend: success: true, user Frontend->>Frontend: Guardar en localStorage Frontend-->>Usuario: Mostrar Dashboard else Contraseña incorrecta API-->>Frontend: error: Credenciales invalidas Frontend-->>Usuario: Mostrar error end
SEQ-02: Inscripción a Curso
sequenceDiagram actor Admin participant Frontend participant API as API Server participant DB as Database Admin->>Frontend: Selecciona Inscripciones Frontend->>API: GET /api/alumnos API->>DB: SELECT alumnos activos DB-->>API: Lista de alumnos API-->>Frontend: Alumnos disponibles Admin->>Frontend: Selecciona alumno y curso Frontend->>API: GET /api/cursos/:id API->>DB: SELECT curso con cupos DB-->>API: Datos del curso API->>API: Verificar cupos API->>DB: SELECT inscripciones DB-->>API: Cantidad inscriptos alt Hay cupos API->>DB: INSERT inscripcion DB-->>API: Inscripcion creada API->>DB: INSERT pagos cuotas DB-->>API: Cuotas generadas API-->>Frontend: success: true Frontend-->>Admin: Confirmacion else Sin cupos API-->>Frontend: error: Sin cupos Frontend-->>Admin: Mostrar error end
SEQ-03: Entrega de Tarea en Classroom
sequenceDiagram actor Alumno participant Frontend participant API as API Server participant Storage participant DB as Database Alumno->>Frontend: Accede al Classroom Frontend->>API: GET /api/classroom/cursos/:id API->>DB: SELECT tareas del curso DB-->>API: Lista de tareas API-->>Frontend: Tareas con fechas limite Alumno->>Frontend: Sube archivo de tarea Frontend->>Frontend: Validar formato y tamaño Frontend->>API: POST /api/classroom/entregas API->>Storage: Guardar archivo Storage-->>API: URL del archivo API->>DB: INSERT entrega DB-->>API: Entrega registrada API-->>Frontend: success, entrega_id Frontend-->>Alumno: Confirmacion de entrega
SEQ-04: Registro de Pago
sequenceDiagram actor Admin participant Frontend participant API as API Server participant DB as Database Admin->>Frontend: Accede a modulo Pagos Frontend->>API: GET /api/pagos/pendientes API->>DB: SELECT pagos pendientes DB-->>API: Lista de deudas API-->>Frontend: Pagos pendientes Admin->>Frontend: Selecciona pago y monto Frontend->>API: POST /api/pagos/registrar API->>API: Validar monto API->>DB: UPDATE pago estado pagado DB-->>API: Pago actualizado API->>DB: INSERT log transaccion DB-->>API: Log registrado API-->>Frontend: success, comprobante Frontend-->>Admin: Mostrar comprobante