9.2 KiB
9.2 KiB
AN-001: Análisis de Requisitos Funcionales
Proyecto: Sistema de Registro de Estudiantes - Inter Rapidísimo Rol: Analista de Sistemas Fecha: 2026-01-07
1. Resumen Ejecutivo
Sistema web para gestión de inscripciones estudiantiles con programa de créditos académicos. Permite CRUD de estudiantes, inscripción en materias con restricciones de negocio, y visualización de compañeros de clase.
2. Requisitos Funcionales Identificados
RF-001: Registro de Estudiantes (CRUD)
| Atributo | Descripción |
|---|---|
| ID | RF-001 |
| Nombre | Gestión CRUD de Estudiantes |
| Descripción | El sistema debe permitir crear, leer, actualizar y eliminar registros de estudiantes |
| Prioridad | Alta |
| Fuente | Enunciado punto 1 |
Criterios de Aceptación:
- CA-001.1: Usuario puede crear estudiante con nombre y email válido
- CA-001.2: Usuario puede consultar lista de estudiantes registrados
- CA-001.3: Usuario puede actualizar datos de un estudiante existente
- CA-001.4: Usuario puede eliminar un estudiante (cascade con inscripciones)
- CA-001.5: Email debe ser único en el sistema
RF-002: Programa de Créditos
| Atributo | Descripción |
|---|---|
| ID | RF-002 |
| Nombre | Adhesión a Programa de Créditos |
| Descripción | Los estudiantes se inscriben en un programa basado en créditos académicos |
| Prioridad | Alta |
| Fuente | Enunciado punto 2 |
Criterios de Aceptación:
- CA-002.1: Sistema muestra créditos totales del estudiante
- CA-002.2: Créditos se calculan automáticamente según materias inscritas
- CA-002.3: Máximo 9 créditos por estudiante (3 materias × 3 créditos)
RF-003: Catálogo de Materias
| Atributo | Descripción |
|---|---|
| ID | RF-003 |
| Nombre | Gestión de 10 Materias |
| Descripción | El sistema debe gestionar un catálogo fijo de 10 materias académicas |
| Prioridad | Alta |
| Fuente | Enunciado punto 3 |
Criterios de Aceptación:
- CA-003.1: Sistema contiene exactamente 10 materias predefinidas
- CA-003.2: Usuario puede consultar catálogo completo de materias
- CA-003.3: Cada materia muestra nombre, créditos y profesor asignado
RF-004: Valor de Créditos por Materia
| Atributo | Descripción |
|---|---|
| ID | RF-004 |
| Nombre | Asignación de 3 Créditos por Materia |
| Descripción | Cada materia del catálogo equivale a exactamente 3 créditos |
| Prioridad | Alta |
| Fuente | Enunciado punto 4 |
Criterios de Aceptación:
- CA-004.1: Todas las materias tienen valor fijo de 3 créditos
- CA-004.2: Sistema muestra créditos en detalle de cada materia
RF-005: Límite de Materias por Estudiante
| Atributo | Descripción |
|---|---|
| ID | RF-005 |
| Nombre | Máximo 3 Materias por Estudiante |
| Descripción | Un estudiante solo puede inscribirse en máximo 3 materias |
| Prioridad | Alta |
| Fuente | Enunciado punto 5 |
Criterios de Aceptación:
- CA-005.1: Sistema impide inscripción si estudiante ya tiene 3 materias
- CA-005.2: Sistema muestra contador de materias inscritas
- CA-005.3: Mensaje de error claro al intentar exceder límite
RF-006: Asignación Profesores-Materias
| Atributo | Descripción |
|---|---|
| ID | RF-006 |
| Nombre | 5 Profesores con 2 Materias c/u |
| Descripción | El sistema tiene 5 profesores, cada uno dicta exactamente 2 materias |
| Prioridad | Alta |
| Fuente | Enunciado punto 6 |
Criterios de Aceptación:
- CA-006.1: Sistema contiene exactamente 5 profesores predefinidos
- CA-006.2: Cada profesor tiene asignadas exactamente 2 materias
- CA-006.3: Usuario puede ver qué profesor dicta cada materia
RF-007: Restricción de Profesor Único
| Atributo | Descripción |
|---|---|
| ID | RF-007 |
| Nombre | Prohibición de Mismo Profesor |
| Descripción | Un estudiante no puede inscribirse en dos materias del mismo profesor |
| Prioridad | Crítica |
| Fuente | Enunciado punto 7 |
Criterios de Aceptación:
- CA-007.1: Sistema valida profesor al momento de inscripción
- CA-007.2: Materias no disponibles se muestran deshabilitadas con razón
- CA-007.3: Mensaje de error específico: "Ya tienes una materia con este profesor"
RF-008: Visualización de Registros
| Atributo | Descripción |
|---|---|
| ID | RF-008 |
| Nombre | Consulta de Otros Estudiantes |
| Descripción | Cada estudiante puede ver en línea los registros de otros estudiantes |
| Prioridad | Media |
| Fuente | Enunciado punto 8 |
Criterios de Aceptación:
- CA-008.1: Usuario puede ver lista de todos los estudiantes registrados
- CA-008.2: Información visible: nombre (según restricciones de privacidad)
RF-009: Compañeros de Clase
| Atributo | Descripción |
|---|---|
| ID | RF-009 |
| Nombre | Ver Nombres de Compañeros por Materia |
| Descripción | El estudiante puede ver solo el nombre de alumnos con quienes compartirá clase |
| Prioridad | Media |
| Fuente | Enunciado punto 9 |
Criterios de Aceptación:
- CA-009.1: Sistema muestra compañeros agrupados por materia
- CA-009.2: Solo se muestra el nombre (no email ni otros datos)
- CA-009.3: Solo muestra compañeros de materias donde está inscrito
RF-010: Autenticación y Roles
| Atributo | Descripción |
|---|---|
| ID | RF-010 |
| Nombre | Sistema de Autenticación con Roles |
| Descripción | El sistema debe soportar autenticación JWT con roles Admin y Student |
| Prioridad | Alta |
| Fuente | Requisito de seguridad implícito |
Criterios de Aceptación:
- CA-010.1: Usuario puede iniciar sesión con credenciales válidas
- CA-010.2: Sistema genera token JWT con claims de rol
- CA-010.3: Rutas protegidas requieren autenticación
- CA-010.4: Admin puede acceder a gestión de estudiantes
- CA-010.5: Student solo puede acceder a su dashboard personal
RF-011: Flujo de Activación de Estudiantes
| Atributo | Descripción |
|---|---|
| ID | RF-011 |
| Nombre | Activación de Cuenta de Estudiante |
| Descripción | Admin crea estudiantes con código de activación. Estudiantes activan su cuenta para crear credenciales |
| Prioridad | Alta |
| Fuente | Requisito de seguridad y UX |
Criterios de Aceptación:
- CA-011.1: Admin puede crear estudiante y obtener código de activación
- CA-011.2: Código de activación es de 12 caracteres alfanuméricos
- CA-011.3: Código de activación expira en 48 horas
- CA-011.4: Estudiante puede validar código y crear credenciales
- CA-011.5: Sistema genera código de recuperación al activar
- CA-011.6: Código de recuperación se muestra solo una vez
- CA-011.7: Admin puede regenerar código si expira
RF-012: Control de Acceso por Rol
| Atributo | Descripción |
|---|---|
| ID | RF-012 |
| Nombre | Restricción de Acceso por Rol |
| Descripción | El sistema debe restringir funcionalidades según el rol del usuario |
| Prioridad | Alta |
| Fuente | Requisito de seguridad |
Criterios de Aceptación:
- CA-012.1: Admin puede ver y gestionar todos los estudiantes
- CA-012.2: Student no puede acceder a rutas de administración
- CA-012.3: Student solo ve su información y materias
- CA-012.4: Intentos de acceso no autorizado redirigen al dashboard
3. Matriz de Trazabilidad
| Requisito | Historia | Componente Backend | Componente Frontend |
|---|---|---|---|
| RF-001 | US-001 | StudentController, StudentService | StudentFormComponent |
| RF-002 | US-002 | EnrollmentService | DashboardComponent |
| RF-003 | US-003 | SubjectController | SubjectListComponent |
| RF-004 | US-003 | Subject Entity | SubjectCardComponent |
| RF-005 | US-004 | EnrollmentValidator | EnrollmentComponent |
| RF-006 | US-003 | Professor Entity | ProfessorListComponent |
| RF-007 | US-005 | EnrollmentDomainService | EnrollmentComponent |
| RF-008 | US-006 | StudentQuery | StudentListComponent |
| RF-009 | US-007 | ClassmatesQuery | ClassmatesComponent |
| RF-010 | US-010 | LoginCommand, JwtService | LoginComponent |
| RF-011 | US-011 | ActivateAccountCommand | ActivateComponent |
| RF-012 | US-012 | AuthorizationMiddleware | auth.guard.ts |
4. Dependencias entre Requisitos
RF-010 (Autenticación)
↓
RF-011 (Activación) ──► RF-012 (Control Acceso)
↓ ↓
RF-001 (Estudiantes) │
↓ ▼
RF-002 (Programa Créditos) ← RF-004 (3 créditos/materia)
↓
RF-005 (Max 3 materias) ← RF-003 (10 materias)
↓ ↓
RF-007 (Restricción profesor) ← RF-006 (5 profesores)
↓
RF-008/RF-009 (Visualización)
5. Aprobación
| Rol | Nombre | Fecha | Firma |
|---|---|---|---|
| Analista | Sistema | 2026-01-07 | ✓ |
| Product Owner | Pendiente | - | - |
| Líder Técnico | Pendiente | - | - |