¿Con qué frecuencia, si alguna vez, se actualizaba el "software" en el transbordador orbital?

Me di cuenta de que el trágico desastre del STS-107 de (mi transbordador favorito) Columbia fue después de más de 20 años de servicio.

Las computadoras en 1981 eran, por supuesto, significativamente inferiores a las que tenía en mi teléfono en 2003. Me imagino a nuestro viejo Tandy 1000 de la década de 1980 con 640k de memoria que sigue operando una increíble nave espacial en 2003.

No estoy seguro de qué software había en los Shuttle Orbiters, pero ¿estaba actualizado? ¿Y hubo pruebas rigurosas para evitar caídas del software?

A ver si alguien con más conocimientos puede responder. Hubo alrededor de 126 actualizaciones del software de Shuttle. Es ampliamente considerado como el software más entendido del mundo. Ha habido bastantes artículos sobre el tema: fastcompany.com/28121/they-write-right-stuff nap.edu/openbook.php?record_id=5018&page=9 Espero que estos ayuden
Los datos, por supuesto, se cambiaban en cada vuelo.

Respuestas (1)

"Pruebas rigurosas" no comienza a describir el proceso utilizado para asegurarse de que no haya errores en el software de Shuttle. Este enorme artículo detalla cómo funciona el proceso .
Algunos puntos destacados:

  • El software Shuttle consta de aprox. 420.000 líneas. El recuento total de errores ronda el 1. En un momento, alrededor de 1996, crearon 11 versiones del código con un total de 17 errores. Los programas comerciales de complejidad similar tendrían miles de errores.
  • El proceso de escribir el software es más que meticuloso. Necesitaban una actualización del software GPS (6300 líneas de código). Antes de realizar cualquier trabajo en el código, escribieron una especificación de 2500 páginas que detallaba los cambios que necesitaban.
  • Cada cambio en el código está documentado.

... la historia del código en sí, con cada línea anotada, mostrando cada vez que se cambió, por qué se cambió, cuándo se cambió, cuál fue el propósito del cambio, qué documentos de especificaciones detallan el cambio. Todo lo que le sucede al programa se registra en su historial maestro. La genealogía de cada línea de código, la razón por la que es como es, está disponible instantáneamente para todos.

  • Cada error se analiza exhaustivamente:

Para cada uno de esos errores, la base de datos registra cuándo se descubrió el error; qué conjunto de comandos reveló el error; quién lo descubrió; qué actividad estaba ocurriendo cuando se descubrió: prueba, entrenamiento o vuelo. Realiza un seguimiento de cómo se introdujo el error en el programa; cómo el error logró pasar los filtros configurados en cada etapa para detectar errores; ¿por qué no se detectó durante el diseño? durante las inspecciones de desarrollo? durante la verificación? Finalmente, la base de datos registra cómo se corrigió el error y si errores similares podrían haberse deslizado por los mismos agujeros.

  • Todo lo que hace el grupo de software está estructurado en procesos, y cada error es motivo para examinar y mejorar estos procesos:

¿Cómo escriben las cosas correctas?

La respuesta es, es el proceso. La creación más importante del grupo no es el software perfecto que escriben, es el proceso que inventaron el que escribe el software perfecto.
...
No solo corrija los errores, corrija lo que permitió el error en primer lugar. El proceso es tan generalizado que recibe la culpa de cualquier error: si hay una falla en el software, debe haber algo mal en la forma en que está escrito, algo que se puede corregir. Cualquier error que no se haya encontrado en la etapa de planificación se ha escapado al menos de algunas comprobaciones. ¿Por qué? ¿Hay algún problema con el proceso de inspección? ¿Es necesario agregar una pregunta a una lista de verificación?

Por lo tanto, el software de Shuttle está escrito con los más altos estándares del mundo. Y esa es solo una capa del sistema que la NASA ideó para evitar que las computadoras de control causen problemas.

El Transbordador está controlado por 5 Computadoras de Propósito General AP-101 . Después de una actualización en 1991, tenían 1 Mb de memoria y funcionaban a 1,4 MIPS. Pero están construidos como un tanque: cada uno pesa 64 libras. Ha sido diseñado para funcionar durante años sin fallar. Sus circuitos de memoria pueden detectar que las celdas de memoria se corrompan debido a la radiación y evitarán que se utilicen los datos corruptos.

Un cambio de software suele pasar por unos nueve meses de pruebas internas en el simulador y luego otros seis meses de pruebas en un laboratorio exclusivo de la NASA antes de que se acepte para el vuelo. ¿Los resultados del extenuante régimen de pruebas? Bueno, han pasado 24 años desde la última vez que un problema de software requirió una solución en órbita durante una misión. En los últimos 12 años, solo han aparecido tres errores de software durante un vuelo. Pero quizás la estadística más significativa es que un error de software nunca ha puesto en peligro a la tripulación, al transbordador o al éxito de una misión.

Cada uno de los 5 GPC puede controlar el transbordador por sí mismo si es necesario .

Cinco computadoras IBM, cuatro de las cuales estaban dispuestas en una configuración redundante, con una quinta computadora actuando como una unidad de respaldo, permitieron que las primeras misiones del transbordador continuaran incluso si se experimentaban múltiples fallas. Las computadoras se verificaron entre sí más de 500 veces por segundo.

Las 4 computadoras redundantes ejecutan el PASS (Sistema de software de aviónica primaria). La quinta computadora ejecuta un programa completamente separado, el BFS (Backup Flight Control System). Tiene las mismas funciones que el PASS, pero está escrito y mantenido por un grupo diferente. Esto agrega otra capa de seguridad: un error no puede afectar a las 5 computadoras al mismo tiempo.

En el Transbordador, cuatro AP-101B idénticos funcionarían simultáneamente como un conjunto cuádruple redundante durante las fases críticas de la misión, como el ascenso y el reingreso, procesando la misma información, derivada de buses de datos completamente separados, en sincronización precisa. Si surgiera un conflicto entre las cuatro computadoras principales, la mayoría gobernaría, votando la unidad en conflicto fuera del circuito. Ninguna de las computadoras, por sí sola o en masa, podía apagar a ninguna otra; ese paso se dejó en manos de la tripulación.

Para garantizar que el BFS fuera lo más independiente posible, la NASA contrató a Rockwell para que lo escribiera, e incluso se especificaron diferentes entornos de desarrollo y sistemas de gestión de configuración.

El software está escrito en lenguaje HAL/S , que fue diseñado específicamente para uso aeroespacial.

Los tres principios clave en el diseño del lenguaje fueron la confiabilidad, la eficiencia y la independencia de la máquina. El lenguaje está diseñado para permitir que las tareas relacionadas con la industria aeroespacial (como la aritmética de vectores/matrices) se realicen de una manera que sea fácilmente comprensible para las personas que tienen conocimientos de vuelos espaciales, pero que no necesariamente tienen conocimientos de programación informática.

HAL/S se diseñó para no incluir algunas construcciones que se cree que son la causa de los errores. Por ejemplo, no hay soporte para la asignación de memoria dinámica. El lenguaje proporciona soporte especial para entornos de ejecución en tiempo real.

Por supuesto, esto no es barato :

En una industria donde la línea de código promedio le costaba al gobierno (en el momento del informe) aproximadamente $ 50 (escrito, documentado y probado), el software del sistema de aviónica primaria le costó a la NASA un poco más de $ 1,000 por línea. Se pagó un total de $ 500 millones a IBM por el desarrollo inicial y el soporte de PASS.

Si quieres saber más:

¡¡Muy minucioso!!
¿Podemos bifurcarlo en GitHub?
Debido a las regulaciones de ITAR, es poco probable que el software se publique alguna vez. Y necesitaría una computadora compatible con IBM System/360 para ejecutarlo.
Podría valer la pena agregar que este nivel de rigor tenía un costo muy alto: una línea de código por programador por día.
Esta respuesta aborda la parte de "pruebas rigurosas" de la pregunta, pero realmente no veo cómo aborda la otra parte (que también es la pregunta del título) de la frecuencia con la que se actualizó el software (solo indica que el software recibió cambios).
He añadido el número de lanzamientos (último párrafo).
slideshare.net/JamesOrr4/… tiene una diapositiva en la página 16 con las asignaciones de OI a vuelo. De ese gráfico, parece que cada misión voló un código diferente. Si lo estoy leyendo correctamente Y esos datos son precisos.
Trabajé en el software PASS desde el '89-95-ish. La respuesta es precisa. El proceso fue certificado como CMM-5 (optimizando). El equipo en el que estaba tenía reuniones semanales de mejora de procesos. Todo se revisó, cualquier problema/error se sometió a un análisis de causa raíz. Las listas de verificación se modificaron para detectar errores similares en el futuro. Sin depuradores interactivos. La compilación y las pruebas se realizaron por lotes. Las compilaciones se realizaron una vez a la semana. Siempre había una larga cola para configurar el escenario de prueba y ejecutarlo. Nunca he visto ningún otro entorno de desarrollo que fuera similar. El proceso de desarrollo de SW es ​​propietario.
Puedo atestiguar, trabajo en una compañía Fortune 100, en un sistema hemos tenido no menos de 142 defectos en toda su vida útil. Usted pregunta, incluso desde el nacimiento? Sí. Cuando se diseñó, asumió las limitaciones de la implementación anterior... La NASA debe ser piadosa en el ámbito de las pruebas para lograr un límite tan bajo como este. Especialmente cuando funcionan de la misma manera, con implementaciones anteriores que logran ser tan limpias como las más nuevas.
El número de defectos tiene que estar relacionado con la complejidad del software o no tiene sentido. La NASA no escribió ningún código ni realizó ninguna de las pruebas de nivel inferior.
“Cada cambio en el código está documentado”, por lo que usaron un administrador de control de fuente en 1996, mejor que “Solo los débiles usan copia de seguridad en cinta. Los hombres REALES simplemente cargan sus cosas importantes en ftp y dejan que el resto del mundo las refleje”, pero no es evidencia de estándares rigurosos.
Consulte también wired.com/2004/12/linux-fewer-bugs-than-rivals , que tendría apropiadamente 70 errores para la misma cantidad de líneas de código, con una complejidad mayor en mi opinión. No es por criticar ni sus habilidades ni su proceso, pero aunque tenía más "errores", estoy más impresionado con Knuth (de la fama de TeX) y Linux como producto.
@jmoreno, un administrador de control de fuente, no ofrece información sobre por qué se cambió el código. Solo registra que el código fue cambiado.
Esa es la política y el proceso, ningún software puede imponer comentarios o documentación significativos. Mi punto es que el uso de un SCM y mensajes de compromiso significativos no hace que los programadores o el proceso sean excepcionales. Una especificación de 2500 páginas es excepcional y es más que meticulosa, pero no estoy seguro de que sea beneficiosa incluso con el dinero y las vidas en juego. Preferiría tener más pruebas que más especificaciones.