Behind SpaceX: programming languages ​​and test software

SpaceX spaceships are run by code written by engineers and developers. But who is behind them? The Software Delivery Engineering team is responsible for coordinating all software development and testing practices in SpaceX. Doing so ensures that everyone who needs to write spacecraft code uses appropriate control methods and that there are automated and human tests managed in a continuous integration (CI) system.

test software and programming languages ​​in SpaceX
Behind SpaceX: test software and programming languages

SpaceX, control and overhaul: the key factors

Within the SpaceX project , in addition to the Software Delivery Engineering team, there is the SRE (Software Reliability Engineering) team, made up of 15 engineers. The two teams are involved in the development, test and DevOps phases. Engineers have at their disposal a web service that performs several functions : it acquires telemetry data from software and hardware tests, creates graphs, and produces a software performance report. The quality control of spacecraft software contains much stricter requirements than those on normal consumer applications and contains highly specific and stringent quality standards.

“There are a lot of extra things you need to do during the development process before you can join. We have a lot of checks and double-checks. We have pull request review conditions that need to be met, including post-merge testing to make sure changes made while a pull request was in flight don't interfere with the change we just merged. "

Ishimoticha, an engineer with the Choctaw Nation of Oklahoma Software Delivery Engineering group

control center and test software in SpaceX
Control center and test software in SpaceX

SpaceX and test software: the methodology used

The development process in SpaceX involves the so-called agile methodology in which multiple engineers work incrementally on the code. The underlying philosophy sees the presence of a "responsible engineer". He addresses the problems by choosing one from the backlog , tries to understand it and analyze it in every aspect and subsequently designs its functionality and possible correction. Once the solution is implemented, it ensures test coverage and takes care of functional testing in an isolated environment. In the next phase there is the review and in the final phase the engineer has to make sure that the next test performed on the master goes into CI. The CI is based on HT Condor a compute-intensive workload management system created by the High Throughput Computing Group at the University of Wisconsin Madison.

The basic idea is that you can only truly achieve mastery of what you are doing if the person who is able to create the change is the same person who understands what needs to be changed . In this way the engineer is stimulated to understand what needs to be done and therefore to find a suitable solution to the problem.

It's a very efficient process, similar to how you might think a startup was built. We have really focused on getting our engineers as close as possible to the actual system they are influencing on

Sepanloo, Manager, Software Engineering

SpaceX: programming languages

SpaceX uses programming languages ​​such as C and C ++ to develop the software for its vehicles. The libraries used in the programming language are both open source and internally developed. However, the choice to use these libraries is very limited to those considered to be of excellent quality by the development team. In detail, the C ++ language is used to program control systems, Python is reserved for the creation of development, test and automation tools. Docker is used to ensure that each build runs in a clean environment. The operating system used by SpaceX is Linux with the PREEMPT_RT patch in order to obtain better performance in real time.

The article Behind SpaceX: Programming Languages ​​and Test Software comes from Tech CuE | Close-up Engineering .