web-dev-qa-db-fra.com

Processus de développement utilisé pour le code sur les missions Apollo 11?

Les missions Apollo n'avaient pas une technologie plus compliquée qu'une calculatrice de poche.

Du lien ici , il y a des informations sur Apollo Guidance Computer (AGC)

L'ordinateur de bord Apollo Guidance Computer (AGC) mesurait environ 1 pied cube avec 2 Ko de 16 bits RAM et 36 Ko de mémoire de base câblée avec des fils de cuivre enfilés ou non enfilés dans de minuscules fils). noyaux magnétiques. Les mots de 16 bits étaient généralement 14 bits de données (ou deux codes op), 1 bit de signe et 1 bit de parité. Le temps de cycle était de 11,7 micro-secondes. La programmation était faite en langage assembleur et dans une interprétation langue, en polonais inversé.

Donc, je suis tombé sur du code source lorsque j'ai fait des recherches sur ce qui était là-haut, et j'ai remarqué d'excellents commentaires (par exemple. TEMPORARY, I HOPE HOPE HOPE)

VRTSTART    TS  WCHVERT
# Page 801
        CAF TWO     # WCHPHASE = 2 ---> VERTICAL: P65,P66,P67
        TS  WCHPHOLD
        TS  WCHPHASE
        TC  BANKCALL    # TEMPORARY, I HOPE HOPE HOPE
        CADR    STOPRATE    # TEMPORARY, I HOPE HOPE HOPE
        TC  DOWNFLAG    # PERMIT X-AXIS OVERRIDE
        ADRES   XOVINFLG
        TC  DOWNFLAG
        ADRES   REDFLAG
        TCF VERTGUID

Les programmes réels dans le vaisseau spatial étaient stockés dans mémoire de corde de base , une technologie de mémoire ancienne faite en tissant (littéralement) un tissu/corde, où les bits étaient des anneaux physiques de ferrite. La mémoire "noyau" est résistante aux rayons cosmiques. L'état d'un trépan ne changera pas lorsqu'il sera bombardé par des radiations dans l'espace extra-atmosphérique.

Le logiciel Virtual Apollo Guidance Computer (AGC) est également sur GITHUB!

ne partie de la documentation est ici.

Un autre échantillon de code source avec d'excellents commentaires.

033911,000064: 32,3017    06037        FLAGORGY        TC       INTPRET      #  DIONYSIAN FLAG WAVING

    034090,000243: 32,3241    13247        BZF      P63SPOT4               #  BRANCH IF ANTENNA ALREADY IN POSITION 1
    034091,000244: 
    034092,000245: 32,3242    33254        CAF      CODE500                #  ASTRONAUT:     PLEASE CRANK THE
    034093,000246: 32,3243    04616        TC       BANKCALL               #                 SILLY THING AROUND
    034094,000247: 32,3244    20623        CADR     GOPERF1                               
    034095,000248: 32,3245    16001        TCF      GOTOP00H               #  TERMINATE
    034096,000249: 32,3246    13235        TCF      P63SPOT3               #  PROCEED        SEE IF HE'S LYING


    034101,000254: 32,3251    04635        TC       POSTJUMP               #  OFF TO SEE THE WIZARD ...
    034102,000255: 32,3252    74126        CADR     BURNBABY

Ma question ici est la suivante:

  • Comment les équipes écrivant autant de code ont-elles pu le rendre fonctionnel compte tenu des outils de l'époque?

Parce que si vous compilez autant de code utilisé sur Apollo 11 ... cela prendrait des jours, voire des semaines. Je doute sérieusement que les programmeurs à l'époque aient tout laissé par hasard.

57
Josip Ivic

Il y avait un beau documentaire que j'essaie de poursuivre sur John 'Jack' Garman a dû "inventer" un "système d'exploitation multiprogrammation prioritaire". Cela peut cependant être lié au module d'atterrisseur. L'histoire était que lorsque vous atterrissiez l'atterrisseur, vous feriez mieux de donner la priorité au guidage parce que d'autres choses, comme la température dans la cabine pendant les 15 secondes suivantes, n'avaient pas vraiment d'importance si vous vous écrasiez et brûliez. Au premier coup, ils ont surchargé l'ordinateur et des alarmes ont commencé à se produire parce que certains sous-programmes n'étaient pas exécutés. Il y en avait trop chargé, mais grâce au concept de priorité, que Garman avait prévu et intégré parce qu'il pensait que c'était une bonne idée, les routines de faible priorité n'empêchaient pas la routine d'atterrissage de priorité plus élevée.

En regardant le documentaire à l'époque, j'ai été frappé de voir comment c'était comme faire une refactorisation majeure du code sans en parler à la direction et presque se faire virer parce que vous étiez en retard sur ce sur quoi vous étiez censé travailler. Dans ce cas cependant, la refactorisation a été révélée lorsque la raison des alarmes a été étudiée. (Et la direction était toujours énervée! :-)

Quelques liens:

Non, une "erreur de liste de contrôle" n'a presque pas fait dérailler le premier atterrissage sur la lune

CONTES DE L'ORDINATEUR DE GUIDAGE DU MODULE LUNAIRE

Comment ils l'ont construit: le logiciel d'Apollo 11

Transcription de l'histoire orale du projet d'histoire orale du NASA Johnson Space Center

Bref historique du programme Apollo de la NASA Extrait: Cinq minutes après la descente et à 1800 m au-dessus de la surface de la Lune, l'ordinateur de navigation et de guidage LM a produit le premier de plusieurs "1202" inattendus et Alarmes de programme "1201". L'ingénieur informatique du Mission Control Center de Houston, Jack Garman, a déclaré à l'agent d'orientation Steve Bales qu'il était prudent de poursuivre la descente. Ces alarmes étaient des indications de "débordements exécutifs", ce qui signifie que l'ordinateur de guidage ne pouvait pas accomplir toutes ses tâches en temps réel et devait en différer certaines.

Rappelant le "saut géant" Extrait: Nous savions ce que c'était et que cela ne devrait pas se produire. Mais nous avions conçu un système qui s'efforçait de se remettre de toute condition de surcharge. Je me souviens donc d'avoir entendu [ingénieur en informatique de la NASA] Jack Garman crier: "Allez, allez!" Et ils ont continué. Ensuite, nous avons écouté Neil voler sur le LEM et essayer de trouver un bon endroit pour le toucher des roues. Notre nouvelle préoccupation était le manque de carburant restant. Mais finalement, nous avons entendu l'avis de contact, puis, "L'aigle a atterri."

Interview de Jack Garman

EDIT: C'était peut-être le documentaire: Apollo 11: The Untold Story (2006)

Interprètes: John R. Garman ...
Lui-meme - Apollo 11 Computer Engineer (comme Jack Garman)

(Entre autres).

Mise à jour: n pirate d'Afrique du Sud vient de sauver le premier ordinateur de la NASA dans l'espace

14
K.Nicholas

Si je comprends bien, le processus de développement a été l'examen par les pairs et l'expérimentation.

L'équipe était composée de gens comme "Math Doctors" - des gens extrêmement dévoués, intelligents, passionnés et soucieux du détail dont la vie était consacrée à leur travail. Donc, quand je dis examen par les pairs, je veux dire de nombreux examens par les pairs au cours de plusieurs mois (plus d'un an).

Ces développeurs "ont exécuté les simulations dans leur tête", "débogué le logiciel sur papier" et travaillé en groupes avec de nombreux développeurs qui regardaient le même code encore et encore jusqu'à ce qu'ils soient convaincus qu'il était correct. Il y avait plusieurs équipes - chacune travaillant sur une partie de l'ensemble.

Mon professeur de méthodes numériques à l'Ohio State University (printemps 1996) a écrit le code qui a décidé quand lancer une étape de la fusée d'appoint. Il a décrit l'impression comme étant la taille de l'annuaire téléphonique (donc, peut-être 2,5 à 3,5 pouces d'épaisseur de papier 8,5 x 11 pouces - il n'a pas décrit la taille de la police) du code Fortran.

Une fois convaincus, ils ont lancé un missile sans pilote (les roquettes n'ont techniquement pas de gyroscopes) avec une radio à bord qui a émis un bip à intervalles réguliers. Ils ont écouté les bips jusqu'au point où ils s'attendaient à ce que la radio impacte la lune (s'écrase dessus et se détruise) et arrête de biper. Ils savaient que s'ils manquaient, la radio continuerait de sonner longtemps après l'heure calculée de l'impact. L'impact s'est produit 15 secondes après le temps calculé.

Cette histoire, certes anecdotique, sont mes souvenirs d'une visite au bureau avec le médecin. Il était très vieux et c'était il y a longtemps. Ceci est mon meilleur souvenir.

32
Lyle S.

L'AGC est contrôlé avec des verbes et des noms

Le logiciel de commande Apollo n'est écrit dans aucune syntaxe que les utilisateurs reconnaissent aujourd'hui. Les astronautes saisissent les commandes numériquement, chaque nombre à deux chiffres représentant un verbe ou un nom. Le verbe décrivait l'action à effectuer et le nom spécifiait les données à affecter par l'action du verbe.

Les astronautes détestaient la configuration du verbe et du nom

Ramón Alonso, l'un des développeurs de matériel AGC d'origine, a déclaré que l'interface avait été inventée pour impressionner les visiteurs de leur laboratoire, mais qu'elle était restée pour les vols lorsque personne n'avait développé une meilleure interface. Les critiques ont dit que ce n'était pas "scientifique", et les premiers astronautes - tous les pilotes de jet Elite - préféraient les cadrans et les commutateurs, similaires à un panneau de commande d'avion.

"L'AGC a été très lent, mais très fiable et très petit pour l'époque de l'histoire des ordinateurs numériques. Ce fut le premier à utiliser des circuits intégrés."

Le logiciel tel qu'il a été conçu a été construit à partir de zéro par le MIT.

Vous pouvez télécharger et installer le programme d'émulation Apollo Guidance Computer sur votre ordinateur personnel, sans problème. Voici à quoi cela ressemble sur Mac OS X.

enter image description here

15
Josip Ivic

Comme à peu près tous les autres projets logiciels, il a été réalisé dans des délais très serrés et sous une pression de qualité. Heureusement un ne grande archive de matériel du chef de projet logiciel Howard W. "Bill" Tindall, Jr. est disponible ici .

Si vous échantillonnez les mémos, vous pouvez avoir une très bonne idée du conflit normal entre le temps, les fonctionnalités et les défauts. Il convient de noter que le développement s'est déroulé sur un certain nombre d'années comme le reste du projet.

La conception du système a commencé au deuxième trimestre de 1961, et la NASA a installé une version Block I dans un vaisseau spatial le 22 septembre 1965. La sortie du logiciel original (nommé CORONA) a eu lieu en janvier 1966, avec le premier vol le 25 août. 1966. Moins de 3 ans après cela, les concepteurs ont atteint l'objectif final du programme ( http://history.nasa.gov/computers/Ch2-5.html )

Je ne trouve pas de références spécifiques sur la façon dont le logiciel a été créé, mais étant donné la date, je ne peux que supposer qu'une grande partie a été effectuée sur un stylo et du papier, avec des "simulations" faites manuellement. Il semble qu'il y ait un système pour charger des programmes dans l'AGC avec des cartes perforées, vraisemblablement pour des tests "rapides" sur le terrain sans avoir besoin de fabriquer une mémoire de corde.

8
pjc50