Los ingenieros de la industria aeroespacial necesitan programación para hacer cálculos, análisis y pruebas. Para esto, necesitan herramientas de software más que programación de software, aunque siempre necesitará alguna capacidad de programación básica. Y luego, también necesitan comprender lo suficiente sobre los lenguajes de software para trabajar con los ingenieros de software.
Matlab / Simulink se usa para muchas disciplinas de ingeniería (aeroespacial, controles de vuelo, etc.), cualquiera que tenga que hacer cálculos o simulaciones. Adruno se usa en algunos lugares. Labview a menudo se usa para conectar equipos y pruebas en el laboratorio. Los aerodinámicos que realizan CFD e ingenieros estructurales con varios diseños estructurales y análisis de tensiones tendrán sus propios sistemas de análisis especializados. A menudo, estos son internos y propios de la empresa aeroespacial en particular.
Para los lenguajes, C es esencial en todas partes. A veces se necesitan Python o R o C ++ o Java . A menudo las personas tendrán una computadora con Windows, a veces para hacer todo, a veces solo para enviar correos electrónicos y tarjetas de tiempo mientras usan una caja de Linux para computación seria.
En la categoría general de “conocimiento de programación” también hay cosas como requisitos UML y herramientas de diseño de sistemas, sistemas de informes de problemas, el repositorio de requisitos de DOORS, etc. Los ingenieros aeroespaciales a menudo no tienen que poner su código en repositorios como GIT, pero la gente quienes SÍ necesitan usar GIT son:
Los ingenieros de software son completamente diferentes de las otras disciplinas de ingeniería, porque no les importa por qué tiene que funcionar de la manera en que lo hace, pero todo el software de vuelo es su producto en el vehículo. Necesitan conocer los lenguajes específicos utilizados para hacer software de vuelo, tierra, incrustado, operaciones y mantenimiento, así como procesos formales para la documentación, desarrollo y prueba de software. Por lo general, solo los ingenieros de software crearán un código que realmente vuela, aunque lo que hace está especificado por todos esos otros ingenieros (controles de vuelo, aviónica, ingenieros de sistemas, etc.). El código de vuelo a menudo se escribe en C. Algunas veces C ++ y otras Ada (para proyectos de defensa), pero algunas de las características orientadas a objetos están paralizadas o prohibidas. Deben estar familiarizados con la creación de código incrustado, donde se desarrolla en una estación de trabajo (Windows, Linux), pero el código está dirigido (compilado, etc.) a una CPU especializada incrustada dentro del equipo de aviónica, y el binario se carga en el equipo para pruebas de laboratorio, en tierra y en vuelo. La computadora de destino NUNCA tendrá Windows; a veces ejecutará una versión de Linux, y a veces ejecutará un RTOS como VxWorks. (También hay algunas cajas que no se ejecutan en un sistema operativo: ejecutan código en el metal desnudo, escribiendo su propia función ejecutiva). Deben saber cómo hacer pilas para controlar las transacciones de red Ethernet (aunque los vehículos a menudo tienen otras redes también, como ARINC 429 o MIL-STD-1553B). También necesitan conocer algunos gráficos, como la API de OpenGL.
Es más probable que el código de tierra, operaciones y mantenimiento (que no sea parte de un vehículo de vuelo) esté en un lenguaje de alto orden, a menudo C ++, a veces Java o Ada. He visto algunos Perl y Python.
Los ingenieros de software también son llamados a hacer “programación científica”: implementaciones especiales de ese código de análisis que necesitan los ingenieros de aeronaves. Utilizan software de estación de trabajo o incluso de mainframe o supercomputadora para calcular cargas estructurales, simulaciones dinámicas, propiedades electromagnéticas de materiales, etc., etc., etc. Utilizan lenguajes como el código de tierra anterior. A veces, obtendrá código antiguo en FORTRAN o incluso ensamblado para reescribir.
No suelen llamarse “ingenieros”, pero la última parte importante del software en el sector aeroespacial es la TI . Además de las personas que mantienen las redes en funcionamiento, y la nube, y todas esas estaciones de trabajo, hay desarrolladores que escriben el sitio web externo de la compañía y la intranet interna, aplicaciones de recursos humanos, aplicaciones comerciales, etc., etc., etc.