neprihlásený Utorok, 16. apríla 2024, dnes má meniny Dana, Danica
Programátori NASA denne napíšu iba 76 riadkov kódu

Značky: NASAprogramovanie

DSL.sk, 28.7.2015


Jeden programátor v laboratóriách Jet Propulsion Laboratory spadajúcich pod NASA pri vývoji softvéru pre vozidlo Curiosity na Marse napísal denne priemerne iba 76 riadkov kódu.

Vyplýva to zo zaujímavých informácií o programovaní pre vesmírne misie zverejnených ešte na konferencii HotDep '12 Gerardom Holzmannom, šéfom oddelenia pre kvalitu softvéru, JPL Laboratory for Reliable Software.

Curiosity odštartovalo so softvérom majúcim 3.8 milióna riadkov zdrojových kódov. Podľa Holzmanna sa softvér vyvíjal približne 5 rokov a pracovalo na ňom 40 vývojárov. Pri bežnom počte pracovných dní do roka to dáva cca 76 riadkov kódu na programátora a deň respektíve 9.5 riadkov na hodinu.

Táto rýchlosť je samozrejme ale daná aj veľkým dôrazom na kvalitu a spoľahlivosť softvéru. Ako sme detailne popisovali v tomto článku, JPL má prísne pravidlá pre tvorbu softvéru a tento je následne opakovane preverovaný.

Softvér pre Curiosity sa písal najmä v jazyku C, ktorý sa používa od misie Mars Pathfinder z roku 1996. V C je 96% kódu napísaného v JPL pre vesmírne zariadenia, výnimkou bol softvér sondy Cassini napísaný v ADA. Holzmann ako osoba zodpovedná za kvalitu kódu sa pokúšal presadiť prechod na iný jazyk, táto iniciatíva ale nebola úspešná.

V JPL podľa pravidiel programovania musí byť kód skompilovaný bez akýchkoľvek upozornení pri najcitlivejšom režime kompilácie, čo sa pri kóde pre Curiosity dosiahlo. Celý kód sa kompiloval a preveroval každý deň.


Robotické vozidlo Curiosity pre Mars na Zemi bez viacerých krytov vyvinuté v JPL, kliknite pre zväčšenie (foto: NASA)



Kód sa zároveň pravidelne kontroluje na potenciálne problémy statickými analyzátormi, pričom v softvéri pre Curiosity zostalo 0.7 upozornení statických analyzátorov na tisíc riadkov. Analýza celého kódu trvala 15 hodín, z toho kontrola pomocou codesonar 12 hodín.

Okrem toho kód ešte preverujú iní programátori ako jeho autori, samozrejme sa testuje v simuláciách a najkritickejšie časti kódu boli logicky verifikované pomocou kontroly modelu.

Ďalšie informácie Holzmanna dokumentujú, prečo sa v pravidlách programovania dbá tak výrazne na multithreadovú bezpečnosť. Hoci navonok vesmírne zariadenia typicky realizujú naraz len jednu hlavnú činnosť, na Curiosity beží naraz až 120 paralelných vlákien softvéru. Kód sa skladal pôvodne zo 130 rozličných modulov, neskôr bol zjednodušený na 120 modulov.

Použitým procesorom je RAD750 architektúry PowerPC a operačným systémom VxWorks. Curiosity má kvôli redundancii dva počítače a procesory, pričom jeden sa nevyužíva a je vždy len pripravený spustiť softvér v prípade problémov prvého.

Jedinou výnimkou bolo pristávanie, kde by v prípade problémov nebol dostatok času na spustenie záložného počítača. Počas pristávania tak na ňom bežal špecifický zjednodušený softvér pre pristátie pripravený okamžite prevziať kontrolu namiesto primárneho počítača.

Prednášku Holzmanna si je možné pozrieť na usenix.org.


      Zdieľaj na Twitteri



Najnovšie články:

Batérie vyhodené z vesmírnej ISS neočakávane nezhoreli a poškodili dom v USA
Sprístupnená beta verzia Ubuntu 24.04 LTS
Nový CPU Apple M4 majú dostať všetky Macy, s výnimkou najvyšších najneskôr do jari
Samsung sa v predaji smartfónov vrátil pred Apple
Zatiaľ posledný Star Trek seriál bude mať ďalšiu sériu, ohlásený aj nový film
Nový Android 15 je k dispozícii v beta verzii
Samsung má spustiť výrobu takmer 300-vrstvovej flash tento mesiac, budúci rok dosiahnuť 430 vrstiev
SpaceX použila prvý stupeň Falcon 9 už 20-krát
Apple čoskoro uvedie ďalší sci-fi seriál
Populárna databáza Redis má po zmene licencie ďalší klon, už bol vydaný


Diskusia:
                               
 

iba? uplne v pohode, ked je ten kod kvalitny a funkcny (a hlavne novy, ziadne copy&paste a pod), keby som ja tolko kazdy den napisal :D
Odpovedať Známka: 8.8 Hodnotiť:
 

Ja som cez víkend rád že sa vzkriesim kdesi okolo 11-tej a dokážem odpísať pár znakov do sms-ky :D
Odpovedať Známka: 5.5 Hodnotiť:
 

podobne :) skor by som v nadpise nahradil "iba" slovickom "az" ;)
Odpovedať Známka: 8.3 Hodnotiť:
 

jeeej felix holzmann
Odpovedať Známka: 2.5 Hodnotiť:
 

Sa mi zda, ze na to, ze je to pre vesmirne sondy, je tych riadkov nejak vela. By som typoval skor 20-30 max, a k tomu 50-100 riadkov test kodu.
Odpovedať Známka: 8.0 Hodnotiť:
 

píše sa tipoval...TYP je typ a nie tip
Odpovedať Známka: 7.8 Hodnotiť:
 

Ja napíšem denne tak 100 riadkov som skoro jak cavo z nasa :D
Odpovedať Známka: 6.0 Hodnotiť:
 

typ človeka, tip na víťaza :)
Odpovedať Známka: 10.0 Hodnotiť:
 

Ako každá štatistika - presný súčet nepresných čísiel.

Čo ak tých riadkov bolo dvojnásobok, ale medzičasom ich prepísali kvôli optimalizácii?
A čo ak ich bol štvornásobok?

A inak, vieme, ako často používajú riadkový oddeľovač kódu?

Nadpis článku je fakt divný, ale zrejme bolo zámerom vyvolať diskusiu.
Odpovedať Známka: 8.6 Hodnotiť:
 

akykolvek clanok vyvola diskusiu na dsl.sk
akykolvek.
Odpovedať Známka: 10.0 Hodnotiť:
 

tak ale niektorý viac, iný menej...
Odpovedať Známka: 5.0 Hodnotiť:
 

90% kodu sa poriesi za 10% casu
dalsich 9% kodu za 90%
zvysnych 1% su chyby

Obavam sa, ze v dnesnych kodoch sa tie cisla musia upravit v prospech chyb...

Pociam, ze NASA sa snazi kodit s co najmenej chybami, takze ich nesmieme porovnavat s mrkvoskvostom!
Odpovedať Známka: 10.0 Hodnotiť:
 

No toľko riadkov som písaval v strojáku, ale našťastie v hexa zápise. A naozaj mi to vtedy na 8080/8085 mikroprocesoríkoch dalo zabrať, aby to za nejakých okolností neurobilo hovadinu. Totiž nie všetkým inštrukciám som hneď porozumel dokonale. Niektoré ich fičúrky som doslova objavoval, lebo nebola nikde, v mne dostupnej literatúre, o nich ani zmienka. A to boli procesory len s nejakými 76 inštrukciami!
Odpovedať Známka: 6.2 Hodnotiť:
 

ja napises denne priemerne tak 30 :D a firma stoji
Odpovedať Známka: 8.7 Hodnotiť:
 

Málo kto napíše taký kód aby firma padla.
:-)
Odpovedať Známka: 9.3 Hodnotiť:
 

niekedy staci jeden riadok while(1=1) {}
Odpovedať Známka: 4.5 Hodnotiť:
 

to by bol compile error. ked uz, tak while(1 == 1) {}

a preco tak zlozito, ked staci while(1) {}
Odpovedať Známka: 3.8 Hodnotiť:
 

for(;;){}
Odpovedať Známka: 2.5 Hodnotiť:
 

Bodkociarka je kde?

while(1) {};
Odpovedať Známka: -6.0 Hodnotiť:
 

#define true false
Odpovedať Známka: 10.0 Hodnotiť:
 

define NULL (::rand() % 2)
Odpovedať Známka: 10.0 Hodnotiť:
 

Neboj, pri programovani CNC strojov sa daju napachat dobre skody
Odpovedať Známka: 7.5 Hodnotiť:
 

však práve preto stojí! :P
...keby si písal denne aspoň 50, vieš, kde už firma mohla byť? ...snáď aj pri Saturne. ;)
Odpovedať Známka: 10.0 Hodnotiť:
 

To su take kvantitativne informacie. Ked nieco nefunguje, tak je programaror frajer aj ked napise za den iba jeden riadok a da to do poriadku
Odpovedať Známka: 9.0 Hodnotiť:
 

jasne, ideme porovnavat vykon programatora podla poctu riadkov. Lenze z tych managerov si nikto neuvedomuje, ze jedna fungcia sa da napisat na 20, ale aj na 200 riadkov, pricom robia to iste.
Ale optimalizacia je o tom, zredukovat to na co najmensi pocet riadkov, tak aby to bolo prehladne a efektivne.
Ja byt plateny podla poctu riadkov, tak skrachujem :)

Odpovedať Známka: 9.0 Hodnotiť:
 

aké pjekné...že vraj funkcia funGuje tak si rovno napísal funGcia...fasa
Odpovedať Známka: 2.0 Hodnotiť:
 

enterprise programatori to radi roztiahnu do X tried pospajanych cez IoC kontainer.
Odpovedať Známka: 10.0 Hodnotiť:
 

HasThisType PatternTriedToSneakIn SomeGenericOrParameterizedTypePatternMatchingStuff AnywhereVisitor
visitor = new HasThis TypePatternTriedToSneakIn SomeGenericOrParameterizedTypePatternMatchingStuf fAnywhereVisitor();
type.traverse(visitor, null);
Odpovedať Známka: 4.5 Hodnotiť:
 

Pokial berieme za priklad Mars Curiosity, tak tam softver pozostaval z 3 milionov riadkov kodu, pricom 75% bolo vygenerovanych:

http://tinyurl.com/pxubzdx

vid. hned druhy stlpec. Vacsina projektov bude mat vygenerovany kod vopred, takze toho kodu co napisu programatori je iste menej. V jednotkach za den.

Zaujimave je, ale ake naroky boli pri pisani softveru pre raketoplany. Tam neslo konkretne ani aky nastroj, ale dolezity bol proces vyvoja.

http://tinyurl.com/c3w8wj7

Je to zaujimave citanie, odporucam.


Odpovedať Známka: 2.0 Hodnotiť:
 

76 riadkov? Ja ich denne urobim cca 100 bez chyby..
Odpovedať Známka: -7.5 Hodnotiť:
 

Povedz mi, ako si jeden človek tak naivne môže myslieť, že niečo robí bez chyby???
Odpovedať Známka: 10.0 Hodnotiť:
 

Kde je problem ? Ked nic nerobia, nic nepokazia :-D
Odpovedať Známka: 0.0 Hodnotiť:
 

Ale to ste napísali sprostosť, pretože to sa jednoducho nedá takto rozpočítať, ale musíte pri tom zohľadniť Parkinsonove zákony.
Odpovedať Hodnotiť:
 

Statistika s 0 vypovednou hodnotou, ked uz nieco, tak treba udavat pocet zmien v kode nie pocet riadkov..
Odpovedať Hodnotiť:
 

inac minule sa mi podarilo vymazat cely komp ze ho netvorkaci pravovali 3 dni :D
stopol som v polke prikaz sudo apt-get -f install :D
Odpovedať Hodnotiť:

Pridať komentár