Dans un premier temps, nous avons parlé des ordinateurs qui tournent sur Linux et des commandes gérées par écrans tactiles. Et si nous nous intéressions aux équipes de développement logiciel ?
Les ingénieurs logiciels de SpaceX avaient procédé à une FAQ il y a sept ans où ils ont donné au public plus d’information sur ce qu’ils faisaient. Ils ont par exemple indiqué qu’ils sont répartis en quatre équipes :
- L’équipe Flight Software : Au moment de l’échange, elle était constituée de 35 ingénieurs. Ce sont eux qui sont chargés d’écrire tout le code pour les applications Falcon 9, Grasshopper et Dragon. Ils s’occupent également du cœur de la plateforme. Ils écrivent aussi le code des logiciels de simulation, des tests de vol, du logiciel de communication et d'analyse qui est déployé dans les stations SpaceX et au sol. Cette équipe travaille également dans le contrôle de mission pour soutenir les missions actives.
- L’équipe Enterprise Information Systems : Cette équipe construit les systèmes logiciels internes qui font fonctionner SpaceX. Elle porte de nombreuses casquettesx, mais le produit phare qu’elle développe et commercialise est une application Web interne que presque toutes les personnes de l'entreprise utilisent. Les ingénieurs expliquent que « cela inclut les personnes qui créent les bons de commande et remplissent l’inventaire de pièces, les ingénieurs qui créent des conceptions et des bons de travail avec ces pièces, les techniciens au sol qui pointent et voient quel sera le travail d'aujourd'hui selon ces conceptions... et littéralement tout le reste ».
Bien qu’ils reconnaissent qu’il existe des produits disponibles dans le commerce qui font cela, ils sont persuadés que leur outil convient beaucoup mieux à SpaceX : « SpaceX se transforme d'une entreprise de recherche et d'ingénierie en une entreprise de fabrication - ce qui est essentiel à notre succès - et notre équipe est à l'avant-garde pour y arriver. Nous tirons parti de C# / MVC4 / EF / SQL; JavaScript / Knockout / Handlebars / LESS / etc et une API REST super sexy ». - L’équipe Ground Software : Au moment de l’échange, elle était constituée de 9 ingénieurs. Elle code principalement en LabVIEW. Elle développe les interfaces graphiques utilisées dans le contrôle de mission et de lancement, pour que les ingénieurs et les opérateurs surveillent la télémétrie des véhicules et commandent les fusées, les navettes spatiales et les équipements de soutien des pads. « Nous poussons des données à large bande passante autour d'un système hautement distribué et mettons en œuvre des interfaces utilisateur complexes avec des exigences strictes pour garantir que les opérateurs peuvent contrôler et évaluer les engins spatiaux en temps opportun ».
- L’équipe Avionics Test ; L'équipe travaille avec les concepteurs de matériel avionique pour écrire des logiciels pour les tests. « Nous détectons des problèmes avec le hardware tôt ; quand il est temps pour l'intégration et les tests avec le logiciel de vol, il vaut mieux que ce soit une unité fonctionnelle ». L'objectif principal de cette équipe est d'écrire un logiciel très complet et robuste pour pouvoir automatiser la recherche de problèmes avec le matériel à haut volume. Le logiciel s'exécute généralement pendant les tests dans un environnement mécanique.
Certifications logicielles
La plupart des logiciels importants dans les infrastructures critiques passent par différentes certifications. Par exemple, vous ne pouvez pas exécuter de logiciel aléatoire sur un avion. Même le code du système de divertissement doit satisfaire à diverses certifications. L'une de ces certifications est la norme DO-178B (Software considerations in airborne systems and equipment certification) qui fixe les conditions de sécurité applicables aux logiciels critiques de l'avionique dans l'aviation commerciale et l'aviation générale.
La partie certification et correction est facilitée par l'utilisation d'outils de vérification logicielle. Un tel outil est Astrée. Il s'agit d'un analyseur de code statique qui vérifie les erreurs d'exécution et les bogues liés à la concurrence dans les projets C. Cela nous amène également à la réponse pour laquelle beaucoup de code critique est écrit en C. C'est parce qu'il existe de nombreux analyseurs statiques et outils de vérification de logiciels pour C.
SpaceX a également utilisé Chromium et JavaScript pour l'interface de vol de Dragon 2. Un ingénieur qui a participé à l’échange suppose que cela a été autorisé, car pour chaque entrée critique sur l'écran, il y avait également un bouton physique sous l'écran. Donc, en cas de dysfonctionnement de l'écran, les astronautes pourraient potentiellement utiliser les boutons physiques. Vous pouvez vois les boutons physiques sur cette vidéo, ils sont situés en dessous des écrans tactiles.
Concernant l'utilisation de Chrome et JS, un autre a commenté en ces termes : « De plus, seule l'application d'affichage graphique réelle utilise Chromium / JS. Le reste du système est entièrement en C++. Le code d'affichage a une couverture de test de 100%, jusqu'à la validation de la sortie graphique (par exemple, si vous avez une barre de progression et que vous la définissez sur X%, les tests vérifient qu'elle est réellement dessinée correctement) ».
Les astronautes expliquent comment le système fonctionne et ce qu'ils font en cas de dysfonctionnement de l'interface utilisateur dans cette vidéo.
Les infrastructures
Les infrastructures pour les missions critiques se servent également de système d'exploitation temps réel (en anglais RTOS pour real-time operating system). Ces systèmes d'exploitation ont des garanties spéciales qui pourraient ne pas être fournies par les systèmes d'exploitation ordinaires. Par exemple, une réponse d'interruption plus rapide et une meilleure protection de la mémoire. Un RTOS fournit des garanties en temps réel qui sont essentielles pour de tels logiciels.
Comme exemple nous pouvons citer VxWorks, système d'exploitation temps réel multitâche, généralement utilisé dans les systèmes embarqués. Ce système d'exploitation propriétaire, développé par la firme Wind River (acquise par Intel en 2009), a été employé par la NASA pour les missions spatiales du programme Discovery, Mars Pathfinder, Stardust, Messenger, Dawn, les rovers martiens (Spirit, Opportunity et Curiosity) et la sonde Mars Reconnaissance Orbiter. Il a également été utilisé par l'Agence spatiale européenne sur le satellite PROBA-1 mais aussi par SpaceX sur le Dragon.
Bien entendu, avoir autant de certifications ne signifie pas que les bogues ne peuvent pas apparaître. Apparemment, les rovers mars 2003 ont rencontré un bogue dans leur pilote de mémoire flash, mais il a été résolu en envoyant une mise à jour depuis la Terre.
Source : billet sur SpaceX
Et vous ?
Qu'en pensez-vous ?
Voir aussi :
SpaceX et l'armée américaine auraient signé un accord pour tester le haut débit Starlink pour l'usage militaire
Elon Musk : la version bêta privée de Starlink commencera dans environ trois mois et la version bêta publique dans six mois, alors que SpaceX a demandé l'approbation des orbites encore plus basses
SpaceX lance avec succès le dernier lot de 60 satellites en orbite, la constellation compte désormais 420 satellites
Le ransomware DoppelPaymer a été utilisé par des hackers pour voler les données appartenant à Tesla, SpaceX, Boeing, ainsi qu'à d'autres sociétés clientes de l'américain Visser Precision