Le astronavi SpaceX sono gestiste da codice scritto da ingegneri e sviluppatori. Ma chi c’è alle loro spalle? Il team Software Delivery Engineering si occupa di coordinare tutte le pratiche di sviluppo software test in SpaceX. Così facendo si accerta che tutti coloro che devono scrivere il codice per veicoli spaziali utilizzino metodi di controllo appropriati e che ci siano test automatici e umani gestiti in un sistema di integrazione continua (CI).
All’interno del progetto SpaceX, oltre al team Software Delivery Engineering, c’è il team SRE (Software Reliability Engineering), formato da 15 ingegneri. I due team sono addetti alle fasi di sviluppo, test e DevOps. Gli ingegneri hanno a loro disposizione un servizio web che esegue diverse funzioni: acquisisce dati di telemetria da test software e hardware, crea grafici e produce un rapporto sulle prestazioni del software. Il controllo di qualità del software per veicoli spaziali contiene dei requisiti molto più restringenti rispetto a quelli su normali applicazioni di consumo e contiene standard di qualità altamente specifici e severi.
“Ci sono molte cose extra che devi fare durante il processo di sviluppo prima di poterti unire. Abbiamo molti controlli e ricontrolli. Abbiamo condizioni di revisione delle richieste pull che devono essere soddisfatte, anche test post-unione per assicurarci che le modifiche apportate mentre una richiesta pull era in volo non interferiscano con la modifica che abbiamo appena unito”
Ishimoticha, ingegnere del gruppo Software Delivery Engineering della Choctaw Nation of Oklahoma
Il processo di sviluppo in SpaceX prevede la cosiddetta metodologia agile in cui più ingegneri lavorano in modo incrementale al codice. La filosofia alla base vede la presenza di un “ingegnere responsabile “. Egli affronta i problemi scegliendone uno dal backlog, cerca di comprenderlo e analizzarlo in ogni aspetto e successivamente ne progetta la funzionalità ed eventuale correzione. Una volta implementata la soluzione, garantisce la copertura dei test e si occupa dei test funzionali in un ambiente isolato. Nella fase successiva c’è la revisione e nella fase finale l’ingegnere deve assicurarsi che il prossimo test eseguito su master passi in CI. Il CI si base su HT Condor un sistema di gestione del carico di lavoro per lavori ad alta intensità di calcolo creato dall’High Throughput Computing Group presso l’Università del Wisconsin Madison.
L’idea fondamentale è che si può davvero raggiungere la padronanza di ciò che si sta facendo solo se la persona che è in grado di creare il cambiamento è la stessa persona che capisce cosa deve essere cambiato. In questo modo l’ingegnere è stimolato a capire cosa è necessario fare e quindi a trovare una soluzione adatta al problema.
È un processo molto efficiente, simile a come si potrebbe pensare che sia stata costruita una startup. Ci siamo davvero concentrati sul portare i nostri ingegneri il più vicino possibile al sistema effettivo su cui stanno influenzando
Sepanloo, Manager, Software Engineering
SpaceX utilizza linguaggi di programmazione come C e C++ per sviluppare il software dei suoi veicoli. Le librerie utilizzate nel linguaggio di programmazione sono sia di tipo open source che sviluppate internamente. La scelta di usare queste ultime librerie è tuttavia molto limitata a quelle ritenute di ottima qualità dal team di sviluppo. Nel dettaglio il linguaggio C++ è utilizzato per programmare i sistemi di controllo, Python è riservato alla creazione di strumenti di sviluppo, test e all’automazione. Docker è utilizzato per garantire che ogni build venga eseguita in un ambiente pulito. Il sistema operativo utilizzato da SpaceX è Linux con la patch PREEMPT_RT al fine di ottenere migliori prestazioni in tempo reale.