Esquema visual del Bloque 2 - Tema 1
Esquema visual
Esquema visual
1. Representación de la información
- bit
- byte
- nibble
- palabra
- decimal / binario / octal / hexadecimal
- ASCII / Unicode
2. Sistema de información
- hardware
- software
- base de datos
- comunicaciones
- personas
- procedimientos
3. Arquitectura de ordenadores
- CPU
- registros
- ALU
- unidad de control
- buses
- datos
- direcciones
- control
- reloj
- memoria
- E/S
4. Modelos y clasificación
- Von Neumann
- Flynn
- SISD
- SIMD
- MISD
- MIMD
- CISC
- RISC
5. Componentes internos
- placa base
- chipset
- BIOS
- microprocesador
- RAM / ROM
- arranque
Diagramas
DFD (Diagrama de Flujo de Datos)
flowchart LR
U[Usuario funcionario] -->|Solicitud| P1[Proceso: Portal de Tramitación]
P1 -->|Consulta datos| D1[(BD Expedientes)]
D1 -->|Datos expediente| P1
P1 -->|Genera validación| P2[Proceso: Motor de Reglas]
P2 -->|Resultado validación| P1
P1 -->|Notificación| U
P1 -->|Intercambio| E1[Servicio AGE]
E1 -->|Respuesta| P1
style P1 fill:#eef2ff,stroke:#6366f1,stroke-width:2px,color:#111827
style D1 fill:#ecfeff,stroke:#0891b2,stroke-width:2px,color:#111827
style P2 fill:#ecfdf5,stroke:#16a34a,stroke-width:2px,color:#111827
style E1 fill:#fef2f2,stroke:#dc2626,stroke-width:2px,color:#111827
ERD o MER (Modelo Entidad-Relación)
erDiagram
OPOSICION ||--o{ BLOQUE : contiene
BLOQUE ||--o{ TEMA : agrupa
TEMA ||--o{ PREGUNTA : incluye
PREGUNTA ||--o{ RESPUESTA : tiene
USUARIO ||--o{ SESION_TEST : realiza
SESION_TEST ||--o{ RESULTADO_PREGUNTA : registra
PREGUNTA ||--o{ RESULTADO_PREGUNTA : evalua
OPOSICION {
string id
string nombre
string cuerpo
}
BLOQUE {
string id
string nombre
int orden
}
TEMA {
string id
string titulo
string bloque_id
}
PREGUNTA {
string id
string enunciado
string dificultad
string tema_id
}
RESPUESTA {
string id
string texto
boolean es_correcta
string pregunta_id
}
USUARIO {
string id
string nombre
string email
}
SESION_TEST {
string id
date fecha_inicio
date fecha_fin
string usuario_id
}
RESULTADO_PREGUNTA {
string id
boolean acertada
int tiempo_segundos
string pregunta_id
string sesion_id
}
Vista lógica resumida
flowchart LR
A[OPOSICION]
B[BLOQUE]
C[TEMA]
D[PREGUNTA]
E[RESPUESTA]
F[USUARIO]
G[SESION_TEST]
H[RESULTADO_PREGUNTA]
A --> B --> C --> D --> E
F --> G --> H
D --> H
classDef info fill:#eef2ff,stroke:#6366f1,stroke-width:2px,color:#111827;
classDef ok fill:#ecfdf5,stroke:#16a34a,stroke-width:2px,color:#111827;
classDef warn fill:#fffbeb,stroke:#d97706,stroke-width:2px,color:#111827;
class A,B,C info;
class D,E ok;
class F,G,H warn;
Diagrama de Clases
classDiagram
class Usuario {
+String id
+String nombre
+login()
+cerrarSesion()
}
class Oposicion {
+String id
+String nombre
+cargarBloques()
}
class Bloque {
+String id
+String nombre
+listarTemas()
}
class Tema {
+String id
+String titulo
+listarPreguntas()
}
class Pregunta {
+String id
+String enunciado
+validarRespuesta()
}
class SesionTest {
+String id
+Date inicio
+Date fin
+iniciar()
+finalizar()
+calcularNota()
}
class MotorCorreccion {
+corregir()
+generarMetricas()
}
Usuario --> SesionTest : realiza
Oposicion --> Bloque : contiene
Bloque --> Tema : contiene
Tema --> Pregunta : contiene
SesionTest --> Pregunta : presenta
SesionTest --> MotorCorreccion : usa
Diagrama de Objetos
classDiagram
class usuarioDiego {
id = "u-001"
nombre = "Diego"
rol = "opositor"
}
class oposicionTAI {
id = "op-TAI"
nombre = "TAI AGE"
}
class bloque1 {
id = "B1"
nombre = "Organización del Estado"
}
class tema1 {
id = "B1-T01"
titulo = "La Constitución Española"
}
class pregunta101 {
id = "P-101"
dificultad = "media"
}
class sesion01 {
id = "S-2026-001"
estado = "en curso"
}
usuarioDiego --> sesion01 : realiza
oposicionTAI --> bloque1 : contiene
bloque1 --> tema1 : contiene
tema1 --> pregunta101 : contiene
sesion01 --> pregunta101 : responde
Diagrama de Despliegue (Deployment)
flowchart TB
subgraph Cliente
A[Portátil opositor]
B[Móvil opositor]
end
subgraph DMZ
C[CDN / WAF]
D[NGINX / Reverse Proxy]
end
subgraph CPD_Apps
E[Frontend Astro]
F[API FastAPI]
G[Servicio Auth]
end
subgraph CPD_Datos
H[(PostgreSQL)]
I[(Redis)]
J[(Qdrant)]
end
A --> C
B --> C
C --> D
D --> E
E --> F
F --> G
F --> H
F --> I
F --> J
Diagrama de Paquetes
flowchart LR
subgraph Presentacion
A1[pages]
A2[components]
A3[layouts]
end
subgraph Aplicacion
B1[services]
B2[use-cases]
B3[controllers]
end
subgraph Dominio
C1[entities]
C2[value-objects]
C3[repositories]
end
subgraph Infraestructura
D1[postgres-adapter]
D2[redis-adapter]
D3[http-clients]
D4[telemetry]
end
Presentacion --> Aplicacion
Aplicacion --> Dominio
Aplicacion --> Infraestructura
Infraestructura --> Dominio
Diagrama de Casos de Uso
flowchart LR
U1[Actor: Opositor]
U2[Actor: Administrador]
U3[Actor: Servicio AGE]
UC1((Registrarse))
UC2((Iniciar sesión))
UC3((Seleccionar oposición))
UC4((Realizar test))
UC5((Consultar métricas))
UC6((Publicar preguntas))
UC7((Sincronizar datos externos))
U1 --> UC1
U1 --> UC2
U1 --> UC3
U1 --> UC4
U1 --> UC5
U2 --> UC6
U3 --> UC7
Diagrama de Actividades
flowchart TD
A[Inicio] --> B[Seleccionar oposición]
B --> C[Elegir bloque o tema]
C --> D[Configurar modo de test]
D --> E[Iniciar sesión]
E --> F[Responder preguntas]
F --> G{¿Quedan preguntas?}
G -- Sí --> F
G -- No --> H[Corregir examen]
H --> I[Calcular nota y métricas]
I --> J[Guardar resultados]
J --> K[Fin]
Diagrama de Estados (Máquina de Estados)
stateDiagram-v2
[*] --> Borrador
Borrador --> Publicado : publicar
Publicado --> EnCurso : iniciar_test
EnCurso --> Pausado : pausar
Pausado --> EnCurso : reanudar
EnCurso --> Corregido : finalizar
Corregido --> Archivado : cerrar_convocatoria
Archivado --> [*]
Diagrama de Secuencia
sequenceDiagram
actor O as Opositor
participant W as Web Astro
participant A as API
participant B as BD PostgreSQL
participant C as Motor Corrección
O->>W: Inicia test
W->>A: Solicita preguntas
A->>B: Consulta banco
B-->>A: Devuelve preguntas
A-->>W: Respuesta JSON
O->>W: Envía respuestas
W->>A: Remite respuestas
A->>C: Corregir examen
C-->>A: Nota y métricas
A->>B: Guarda resultados
A-->>W: Resultado final
W-->>O: Muestra nota
Diagrama de Comunicación (antes Colaboración)
flowchart LR
U[1 Opositor]
W[2 Web]
A[3 API]
C[4 Motor de correccion]
B[5 Base de datos]
U -->|1 Iniciar test| W
W -->|2 Solicitar preguntas| A
A -->|3 Leer banco| B
B -->|4 Devolver preguntas| A
A -->|5 Enviar test| W
W -->|6 Enviar respuestas| A
A -->|7 Corregir examen| C
C -->|8 Resultado| A
A -->|9 Guardar resultado| B
A -->|10 Mostrar resultado| W
Diagrama de Tiempos (Timing)
gantt
title Línea temporal de una sesión de test TAI
dateFormat HH:mm
axisFormat %H:%M
section Sesión
Login :done, 08:00, 5m
Carga de preguntas :done, 08:05, 3m
Resolución bloque 1 :active, 08:08, 20m
Resolución bloque 2 : 08:28, 20m
Corrección : 08:48, 5m
Visualización nota : 08:53, 2m
BPMN (Business Process Model and Notation)
flowchart LR
A((Inicio)) --> B[Recibir convocatoria]
B --> C[Publicar oposición]
C --> D[Alta de temario]
D --> E[Generar banco de preguntas]
E --> F[Validar calidad]
F --> G{¿Validado?}
G -- No --> H[Corregir contenido]
H --> F
G -- Sí --> I[Publicar test]
I --> J[Uso por opositores]
J --> K[Recoger métricas]
K --> L((Fin))
Diagrama de Gantt
gantt
title Plan de implantación de plataforma TAI
dateFormat YYYY-MM-DD
section Análisis
Requisitos :a1, 2026-03-15, 5d
Diseño funcional :a2, after a1, 4d
section Desarrollo
Frontend Astro :b1, after a2, 7d
API y servicios :b2, after a2, 8d
Integración autenticación :b3, after b2, 4d
section QA
Pruebas funcionales :c1, after b1, 5d
Pruebas rendimiento :c2, after c1, 3d
section Producción
Despliegue :d1, after c2, 2d
Monitorización :d2, after d1, 2d
Diagrama de Pert / CPM
flowchart LR
A[Inicio proyecto] --> B[Análisis requisitos]
B --> C[Diseño arquitectura]
C --> D[Desarrollo frontend]
C --> E[Desarrollo backend]
D --> F[Integración]
E --> F
F --> G[Pruebas]
G --> H[Despliegue]
H --> I[Fin]
classDef critical fill:#fdd,stroke:#900,stroke-width:2px;
class A,B,C,E,F,G,H,I critical;
Diagrama de Ishikawa (Espina de pescado)
flowchart LR
A[Fallo en rendimiento del test online]
B[Personas]
C[Procesos]
D[Software]
E[Infraestructura]
F[Datos]
G[Configuración]
B1[Falta de revisión QA]
B2[Errores de carga manual]
C1[Pipeline incompleto]
C2[Sin pruebas de estrés]
D1[Consultas lentas]
D2[Render bloqueante]
E1[CPU saturada]
E2[Latencia CPD]
F1[Preguntas duplicadas]
F2[Índices ausentes]
G1[Cache mal ajustada]
G2[Timeout bajo]
B --> B1 --> A
B --> B2 --> A
C --> C1 --> A
C --> C2 --> A
D --> D1 --> A
D --> D2 --> A
E --> E1 --> A
E --> E2 --> A
F --> F1 --> A
F --> F2 --> A
G --> G1 --> A
G --> G2 --> A
Diagrama de Pareto
xychart-beta
title "Pareto de incidencias en la plataforma TAI"
x-axis ["Duplicados", "Scope roto", "Temas vacíos", "Render MDX", "Cache", "SEO"]
y-axis "Número de incidencias" 0 --> 50
bar [45, 30, 18, 12, 8, 5]
line [45, 75, 93, 105, 113, 118]
Diagrama o esquema de red
flowchart TB
INTERNET[Internet]
FW1[Firewall perimetral]
LB[Balanceador]
WAF[WAF]
WEB1[Web Node 1]
WEB2[Web Node 2]
API1[API Node 1]
API2[API Node 2]
DB[(PostgreSQL HA)]
REDIS[(Redis)]
MON[Prometheus/Grafana]
SIEM[SIEM / Logs]
INTERNET --> FW1
FW1 --> WAF
WAF --> LB
LB --> WEB1
LB --> WEB2
WEB1 --> API1
WEB2 --> API2
API1 --> DB
API2 --> DB
API1 --> REDIS
API2 --> REDIS
WEB1 --> MON
WEB2 --> MON
API1 --> SIEM
API2 --> SIEM
FW1 --> SIEM