Software y Tecnología en SpaceX

Jun 9, 2020 · 4 minutes read · [SpaceX] [JavaScript] [Chromium]

No es secreto que SpaceX usa una gran cantidad de software y herramientas para sus proyectos. Hace unos días atrás, una parte del equipo de SpaceX encargado del desarrollo y despliegue de software que permitió enviar dos astronautas(Bob y Doug) hasta la Estación Espacial Internacional, revelaron más detalles técnicos sobre la tecnología que usan dentro la compañía.

Photo by SpaceX, Crew Dragon Launch Escape Demonstration

Chromium y JavaScript

Chromium es un proyecto open-source patrocinado por Google. Muchos navegadores actuales se basan en este proyecto, como es el caso de Google Chrome y el reciente Microsoft Edge.

SpaceX usa Chromium como motor de renderizado, además de JavaScript, HTML y CSS para el software que opera en las pantallas táctiles de la misión Crew Demo-2.

Chromium

También hacen uso de componentes web en gran medida y no usan LESS como preprocesador de CSS.

Junto con JavaScript, hacen uso de una librería de programación reactiva, que ellos mismos desarrollaron.

Dependiendo el equipo, los editores de código son variados. Hay desarrolladores que usan Visual Studio Code dentro de SpaceX.

Pruebas de Software y Hardware

SpaceX implementa pruebas unitarias(unit testing), pruebas de integración en contenedores(¿Docker?). Todo esto se ejecuta localmente, en la máquina del desarrollador, incluyendo una simulación física completa.

En cuando a pruebas de hardware, hacen uso de pruebas completas HITL(Hardware-in-the-loop) en equipos de hardware real, nuevamente, con una simulación completa.

Develaron que la combinación de software de vuelo con el simulador es la herramienta más poderosa en cuanto a pruebas, especialmente cuando este se ejecuta con hardware real.

SpaceX tiene la capacidad de simular una misión completa, e incluso están en la capacidad de simular con detalle algún escenario fallido junto al hardware situado en la mesa de su laboratorio.

Antes del despliegue(deploy) de software, SpaceX ejecuta un gran conjunto de pruebas. Esto se realiza antes de tomar nuevos cambios del software en un vehículo de producción o para el vuelo. Se aseguran de ejecutar pruebas unitarias en el código y pruebas funcionales, para garantizar que el software funcione según lo previsto.

Proceso de Desarrollo

En cuanto al proceso de desarrollo, SpaceX sigue un proceso ágil, tomando en cuenta una barra muy alta para la cobertura de pruebas unitarias(unit testing) junto a las pruebas de integración(descritas en la sección anterior).

También verifican y documentan manualmente cada una de las funcionalidades para asegurarse de que funcionen según lo previsto siendo que no hacen regresión.

Lenguajes de Programación

Además de JavaScript, SpaceX menciona que, a nivel de aplicación, el software autónomo está escrito en C++. Hacen uso del paradigma de Programación Orientada a Objetos.

También hacen uso de librerías open-source, principalmente la librería estándar de C++, además de otras. Sin embargo, limitan el uso de librerías abiertas a sólo aquellas que sean de muy alta calidad.

SpaceX también hace uso de Python como lenguaje de programación en las tareas de testing y desarrollo de herramientas.

Núcleo Linux

Los sistemas de vuelo hacen uso de un kernel de Linux personalizado. No hacen uso de alguna distribución GNU/Linux en particular sino que tienen una propia.

¿Por qué Linux? SpaceX menciona que lo usa para tener una mejor rendimiento en tiempo real. Al mismo tiempo, mencionan que han aplicado pequeños cambios al kernel a lo largo de los años, principalmente para agregar controladores(drivers) personalizados para la interacción con su hardware.

¿Cómo Trabajar para SpaceX?

Ya conoces que tecnologías usan en SpaceX ¿Te gustaría saber qué habilidades y conocimientos necesitas para poder trabajar en esta gran compañía?

El equipo de SpaceX

Sigue las recomendaciones del equipo de SpaceX:

  • Obtén tu título universitario en Ciencias de la Computación(o similar).
  • Dedica tiempo para asegurarte de saber de cómo funcionan las cosas. Los ingenieros que obtienen buenos resultados en SpaceX son meticulosos en su comprensión de cómo funciona su código, de cómo funciona la red de computadoras, cómo funciona Linux, cómo funciona el hardware, etc.
  • Obtén experiencia en el mundo real. Resuelve problemas complejos, ya sea a través de pasatiempos o en pasantías.

Fuente: We are the SpaceX software team, ask us anything!

Si te gustó el post, compártelo con tus amigos.

Puedes seguirme en Twitter y GitHub para conocer más de mi trabajo.

¡Gracias por leer!
Luis Aviles

tweet Share