Lockheed Martin F-35 Lightning II: ¿Qué tipo de programación entra en un avión a reacción militar?

Algunas razones Es probable que haya cientos de sistemas y subsistemas en la aeronave, todos los cuales se programan independientemente uno del otro y se escriben para que puedan interactuar (cuando sea necesario) con otros programas. Todo esto tiene que suceder muy, muy rápido. Es probable que estén escritos en C ++ en su mayor parte, o en C, o una mezcla de los dos. Algunas partes pueden estar escritas en lenguaje ensamblador para un rendimiento aún mayor. Los lenguajes de bajo nivel requieren más líneas de código para hacer las cosas, y el manejo de errores generalmente también requiere un poco más de trabajo. Además, muchos sistemas tienen copias de seguridad a las que fallar. Más código para el sistema de respaldo, MÁS más código para detectar y manejar la conmutación por error.


Los lenguajes de programación de nivel superior facilitan las cosas para los programadores, pero también tienen un costo de rendimiento, sin importar cómo los optimice. También introducen nuevos puntos de falla. Un piloto de F-35 no puede llamar a su mesa de ayuda en medio de un tiroteo porque su radar de control de incendios exige una actualización de Java. Del mismo modo, incluso en un lenguaje de nivel inferior, los programas como este deben estar lo más cerca posible a prueba de balas. Eso significa más código (mi programa C ++ que ejecuta mi pequeña aplicación cliente-servidor financiero puede arrojar un error no detectado y bloquearse una vez en una luna azul y no me importa mucho). Si mi programa C ++ que controla el sistema fly-by-wire en mi F-35 falla, estoy en serios problemas (suponiendo que el sistema de respaldo también se bloqueó o no se produjo una falla en la computadora de respaldo).

Después de haber sido ingeniero de software en la industria de defensa durante más de 30 años, he visto casi todo lo que se usa. La Fuerza Aérea estaba muy interesada en JOVIAL J-73 por sus sistemas embebidos hasta que Ada apareció a principios o mediados de la década de 1980. Yo era un Instructor Ada con base en Keesler AFB, MS y viajé por todo el mundo enseñando a Ada a los diversos servicios (Ejército de los EE. UU., Armada, Fuerza Aérea y Marines). Después de dejar el servicio en 1992, trabajé para una multitud de compañías de defensa (General Dynamics, Boeing, McDonnell Douglas, Lockheed Martin, Raytheon, Allied Signal, Rockwell-Collins y Sperry Marine) haciendo desarrollo de software en todo, desde submarinos (dirección y buceo). estación en el primer submarino Seawolf) para cazas (F-15, F-18, F-22), sistemas de misiles para la Armada (Standard Missile-2) y el lanzador de cohetes MLRS para el ejército de los EE. UU., e incluso sistemas de comunicaciones ( Sistema de comunicaciones satelitales MUOS WCDMA).

La mayoría de todo el software se escribió en ensamblador específico para la CPU utilizada (ensamblador 1750 para el misil antitanque Javelin), o una mezcla de ensamblador y un lenguaje de alto orden (algunos Ada pero en su mayoría viejos y simples C).

Mientras trabajaba en Boeing en el software del avión de radar AWACS, hicieron la transición de JOVIAL a Ada 95 ya que la versión de la OTAN del software tenía una cláusula contractual que requería que Ada se usara para proyectos militares.

El tamaño del código revisado actual para el LOCKHEED MARTIN F-35 es …

… 24 millones de líneas de código !!!!

además de no olvidar el hecho de que escribir y compilar el software ha sido un dolor MAYOR en el a **, y es enormemente responsable de los excesos de costos y demoras.

El software experimentó errores, como reiniciarse cada vez que el avión cruzó la línea de fecha internacional.

Tome un avión con tecnologías de vanguardia absolutas (un radar que puede imitar cualquier sección transversal del radar para engañar a las armas SAM, una alimentación de cámara UHD de 360 ​​grados presentada en un video sin interrupciones a su casco que rastrea los movimientos de su cabeza, sensor de sistema múltiple, etc.) y desarrollarlo para que funcione el cien por ciento del tiempo, en todas las circunstancias, con cero fallas que podrían matar al piloto, dañar o perder el avión, o incluso perder un conflicto con el enemigo

¡Ahora agregue una triple capa de redundancia!

Aquí hay un manual que se publicó en línea hace un tiempo: son los estándares de programación para el F-35 y tiene 140 páginas.

http://www.stroustrup.com/JSF-AV

Bueno, primero hablamos de los lenguajes de programación que intervienen en la construcción de estos.Los lenguajes más populares que se han utilizado durante mucho tiempo incluyen ADA, C ++, etc.Java también ha estado en su competencia últimamente porque la programación orientada a objetos parece adaptarse bien al propósito. Ahora hablando del enorme LOC como se le preguntó. Básicamente, como es típico de la programación orientada a objetos, necesitamos objetos para diferentes partes básicas y las correspondientes definiciones de subrutinas. Como un avión de reacción militar es una gran colección de unidades básicas, por lo que simularlas a través de objetos, funciones, interdependencias correspondientes seguramente tendrá una gran base LOC . Y esta es también la razón por la que tenemos una gran cantidad de ingenieros trabajando en diferentes partes de la base del código y agregando diferentes funcionalidades.

los programadores codifican mucho solo para ejecutar funciones simples. f 35 utiliza el último sistema de vuelo por cable. significa indirectamente que un programa de computadora controla el avión para el piloto. así que para lograr ese increíble rendimiento, 9 millones parecen justificados.

9 millones de SLOC me parecen pequeños

considere, hay más de 15 millones de SLOC solo en el kernel de Linux, a partir de 2013 (sin contar el resto del sistema operativo o cualquier aplicación)

No es programación, es brujería y magia principalmente. Con un toque de la ayuda de Dios.