◇ OpenCyber Academy
Ingeniería · Capítulo 46 · Español

Capítulo 46 — Proyecto final de ingeniería II

Aprendizaje gratuito y abierto para quienes desean proteger a las personas y la tecnología. No se necesita una cuenta para estudiar ni consultar las respuestas.

Capítulo 46 — Proyecto final de ingeniería II

Mapa de la lección

Lección 46 publicada. Mapa, ejemplo, EX136.

flowchart TD
  N0["Resultados de aprendizaje"]
  N1["46.1 Congelación"]
  N2["46.2 Verificación"]
  N3["46.3 Documentación"]
  N4["Nota práctica"]
  N5["46.1b Guion de la demostración y traspaso"]
  N6["Nota de campo: atasco en la ejecución silenciosa"]
  N7["Síntesis del capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
  N7 --> EX["Ejemplo resuelto"]
  EX --> Q["Ejercicio EX136"]

Dibujo lógico

flowchart LR
  N0["Resultados de aprendizaje"]
  N1["46.1 Congelación"]
  N2["46.2 Verificación"]
  N3["46.3 Documentación"]
  N4["Nota práctica"]
  N5["46.1b Guion de la demostración y traspaso"]
  N6["Nota de campo: atasco en la ejecución silenciosa"]
  N7["Síntesis del capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX136"]
[Resultados de aprendizaje]
    |
    v
[46.1 Congelación]
    |
    v
[46.2 Verificación]
    |
    v
[46.3 Documentación]
    |
    v
[Nota práctica]
    |
    v
[46.1b Guion de la demostración y traspaso]
    |
    v
[Nota de campo: atasco en la ejecución silenciosa]
    |
    v
[Síntesis del capítulo]
    |
    v
[Ejemplo resuelto] --> [Ejercicio EX136]

Resultados de aprendizaje

Usted podrá (1) terminar la implementación conforme a la propuesta congelada; (2) ejecutar el Laboratorio de verificación II; (3) entregar la documentación para operadores y la titularidad operativa.

46.1 Congelación

La fecha de congelación de funcionalidades es real: después de ella, solo correcciones de seguridad. Las ideas nuevas van a una propuesta de continuación. El proyecto final de Lena se congeló en la v1.0 de su compilador. Tras la congelación, solo corrigió el bloqueo silencioso del cargador de vectores, porque podía ocultar un fallo, y registró cada idea nueva, como el soporte para una segunda planta, en una propuesta de continuación. La fecha de congelación se acordó con su supervisora en la fase de propuesta, así que nadie pudo tratarla como un objetivo flexible cuando las últimas semanas se complicaron.

46.2 Verificación

El proyecto final solo cuenta como verificado tras superar el Laboratorio II (capítulo 40) sobre datos de prueba sintéticos de la planta. Lena volvió a ejecutar el Laboratorio II para el compilador en una máquina limpia construida a partir de la etiqueta v1.0, usando solo datos de prueba sintéticos. La máquina limpia no tenía artefactos de compilación en caché, de modo que cada resultado procedía del código fuente etiquetado. La lista de comprobación la firmaron Lena y su revisor, y el informe enumeraba cada prueba omitida con su motivo. Lena guardó el registro de compilación de la máquina limpia junto a la etiqueta v1.0, y en él consta tanto la ejecución bloqueada del cargador de vectores como la ejecución satisfactoria.

46.3 Documentación

Sección del runbook, ADR, tutorial para operadores con capturas de pantalla de la interfaz sintética, sin datos de la planta. Se requiere la firma de operaciones antes de etiquetar.

"""Lab: alarm load per operator hour before and after rationalisation (synthetic counts)."""
before = {"T-1 high": 140, "T-2 high": 95, "R-101 temp": 30, "pump trip": 6, "comm loss PLC-A": 210, "door open": 75}
remove = {"comm loss PLC-A": 200, "door open": 70, "T-1 high": 110}   # chattering/duplicate alarms removed
hours = 24 * 7
tb = sum(before.values()); ta = tb - sum(remove.values())
print(f"week alarms before={tb} after={ta}")
print(f"per operator-hour before={tb/hours:.2f} after={ta/hours:.2f}")
top = max(before, key=before.get)
print(f"worst source before: {top} ({before[top]/tb:.0%} of load)")

Salida esperada:

week alarms before=556 after=176
per operator-hour before=3.31 after=1.05
worst source before: comm loss PLC-A (38% of load)

Caso sintético — Ashford Batch Plant. Un equipo del Proyecto final II de la cohorte de Lena entregó la distribución firmada de listas de permitidos; Laboratorio II en verde; runbook actualizado el mismo día.

El proyecto de ese equipo era independiente del proyecto final de Lena, el compilador. Su documentación del compilador la firmó operaciones antes de etiquetar, y su tutorial para operadores usa solo capturas del modelo sintético de nueve conductos. Un ingeniero de operaciones siguió el tutorial una vez sobre la copia de banco del modelo de nueve conductos antes de firmar.

46.4 Errores y límites

Una demostración en un portátil que solo describe el fallo cerrado, sin retirar la política en el banco, no aprueba. En la revisión del proyecto final de Lena, la demostración de un compañero mostró una herramienta de políticas funcionando en un portátil, pero no pudo mostrar qué ocurría cuando faltaba el archivo de política. Los examinadores calificaron como no cumplido el requisito de fallo cerrado. La demostración de Lena borró la política en el banco y mostró la denegación con su código de motivo, y después la restauró, porque las afirmaciones sobre el fallo seguro deben demostrarse en situación de fallo, no describirse mientras todo funciona.

Nota práctica

Prueba silenciosa del runbook: un segundo ingeniero sigue el runbook en frío sobre datos sintéticos mientras el autor guarda silencio. Los puntos donde se atasca se convierten en correcciones de la documentación.

46.1b Guion de la demostración y traspaso

La demostración del Proyecto final II sigue un guion sobre datos sintéticos: mostrar el fallo cerrado, mostrar el denominador de la cobertura y mostrar la alcanzabilidad del SIS. La demostración termina restaurando la política y mostrando que el tráfico vuelve a permitirse. Enlace el hash de la grabación de la ejecución silenciosa en el informe del Laboratorio II para la auditoría del director. La revisión del director visiona la grabación de la ejecución silenciosa y registra incidencias de documentación antes de la aprobación. El código de un proyecto final sin un responsable de operaciones en el momento de la fusión está sin terminar. Las incidencias de documentación surgidas de la grabación llevan la marca de tiempo en la que el ingeniero se atascó.

La demostración de Lena siguió este guion al pie de la letra. Su responsable de operaciones firmó en la fusión.

Nota de campo: atasco en la ejecución silenciosa

La ejecución silenciosa del compañero se atascó por la falta de documentación de la clave de política de prueba. La corrección de la documentación se publicó el mismo día. El Proyecto final II no está terminado hasta que alguien que no escribió el código pueda accionar la ruta de parada solo con el runbook.

El traspaso a operaciones nombra al equipo responsable en README y CODEOWNERS antes de la aprobación del Laboratorio II.

Una demostración que se aparta de su guion se repite desde el principio.

46.5 Ejemplo resuelto: congelar y verificar (ABP sintética)

En la congelación del Proyecto final II, Lena etiqueta el compilador como v1.0 y vuelve a ejecutar toda la verificación en una máquina limpia a partir de la etiqueta: 214 pruebas unitarias, 18 conjuntos de vectores de conformidad, la comprobación de equivalencia de alcanzabilidad y la reproducción en el cortafuegos de banco. Una ejecución se bloqueó en silencio porque la API del cortafuegos de banco limitó la tasa del cargador de vectores; la corrección es un tiempo de espera con un mensaje de fallo explícito en lugar de un bucle de reintentos. La documentación incluye el guion de la demostración, la lista de objetivos excluidos y una nota de traspaso que indica qué pruebas requieren hardware de banco, para que un sucesor no confunda las pruebas omitidas con pruebas superadas.

Ejercicios — capítulo 46

Síntesis del capítulo

Congele, verifique, documente, nombre a operaciones; y después opere.

Siga estudiando — capítulo 46 de 50

← Capítulo 45 (borrador) · Índice de capítulos del curso · Capítulo 47 (borrador) →