mboost-dp1

NASA

Curiositysoftware fik fjernet 2.000 fejl inden afsendelsen

- Via The Register - , redigeret af Net_Srak , indsendt af thimon

Før roveren Curiosity blev sendt afsted til Mars, blev softwaren, der styrer roveren, tjekket for fejl. Til dette formål havde NASA hyret firmaet Coverity, der blev bedt om at finde alle mulige fejl i koden. Koden bestod af 2 millioner linjers C, og noget C++.

Chris Adlard fra Coverity udtaler, at NASA ønskede at bruge flere test, da det kan være svært at rette fejl på Mars.

Chris Adlard, Coverity skrev:
You can’t really test the Mars landing, so NASA wanted to use every possible way of pruning out mistakes, that’s why they were using a lot of methods.

Ifølge Andy Chou fra Coverity blev der fundet 2.000 fejl i de to millioner linjers kode. Dette er dog ikke usædvanligt for software, der typisk har 1 fejl for hver 1.000 linjers kode. Softwaren, som blev undersøgt, er software som styrede Curiosity til Mars, og som nu styrer roveren.


Coveritys analyseværktøj blev udviklet på Stanford University, og analyserer C, C++, Java og C# kode under kompilering for at finde resurselækager, korruption af hukommelsen og tilgang til NULL pointers. Desuden blev koden også afviklet for at opdage fejlagtig opførsel.

Selvom Coveritys værktøjer kan finde mange fejl, indrømmer Andy Chou, at de ikke ville have fundet den fejl i Mars Climate Orbiter i 1999, som skyldes forkert brug af enheder. Coveritys værktøjer har også været brugt til at finde fejl i den software, som styrer LHC. Her fandt Coverity 40.000 fejl i 50 millioner linjers kode.





Gå til bund
Gravatar #1 - Manthraxx
27. aug. 2012 06:17
Jah man kan kun reducere ned til de 5 sidste fejl, men så er det også software af en god kvalitet :)
Gravatar #2 - GrillBiller
27. aug. 2012 06:24
Hmm.... Er det mon "Karl koder" der hat stået for softwareudviklingen?
Gravatar #3 - Petrander
27. aug. 2012 06:30
So can it run Crysis now?
Gravatar #4 - Petrander
27. aug. 2012 06:32
Hvorfor arbejder 'Jimmy' hos NASA?
Gravatar #5 - Etherial
27. aug. 2012 06:35
GrillBiller (2) skrev:
Hmm.... Er det mon "Karl koder" der hat stået for softwareudviklingen?


Nej, han arbejder hos Playdead for tiden :)
Gravatar #6 - cryo
27. aug. 2012 06:53
Faktisk lidt underligt at man vælger et så typesvagt og "error prone" sprog som C til missionskritiske systemer. Man burde bruge noget hvor man har en chance for at ræsonere om korrekthed.
Gravatar #7 - Montago.NET
27. aug. 2012 07:16
#6

Fordi de ikke har råd til en Core i5... Roveren har jo kun en 200 MHz PowerPC 750 CPU... Så hvis ikke al performance skal gå til hele det overhead et Managed sprog har. Så er man nødt til at køre C eller C++

Dernæst er C og C++ nogle af de eneste 'realtime' sprog
Gravatar #8 - 1000tusind
27. aug. 2012 07:34
Var der ikke planer om at opdatere koden efter landing eller husker jeg forkert?


#6 Bare af interesse: Hvilket sprog vil du foreslå?
Gravatar #9 - HenrikH
27. aug. 2012 07:40
#8: Jo, på turen derop havde den software til turen og landingen - den skulle have skiftet det ud med det den skulle bruge til at køre rundt og analysere ting og sager.
Gravatar #10 - Hack4Crack
27. aug. 2012 08:22
Ja, dengang med Spirit var det ikke sjovt.

http://newz.dk/spirit-rebooter-konstant
Gravatar #11 - Mnc
27. aug. 2012 08:54
Montago (7) skrev:
Fordi de ikke har råd til en Core i5


Jeg tror nu nok at NASA har råd til en i5'er, spørgsmålet er nok nærmere om en i5'er er bygget til at kunne tage de tæv som en tur til og på Mars vil give den. :)
Impact, radiation, etc.
Gravatar #12 - troldefar
27. aug. 2012 09:41
Det har tidligere været oppe hvorfor NASA bruger en ældre CPU.

Se disse links:
http://newz.dk/curiosity-anvender-powerpc-cpu-fra-...
http://en.wikipedia.org/wiki/Curiosity_rover
Gravatar #13 - Skuffe
27. aug. 2012 11:05
Mnc (11) skrev:
Jeg tror nu nok at NASA har råd til en i5'er, spørgsmålet er nok nærmere om en i5'er er bygget til at kunne tage de tæv som en tur til og på Mars vil give den. :)
Impact, radiation, etc.


Nu er det ikke et økonomisk spørgsmål, men snarere i forhold til f.eks strømforbrug samt overhead mm i software arkitekturen som #7 også er inde på...
Gravatar #14 - morsing
27. aug. 2012 12:16
Montago (7) skrev:
Fordi de ikke har råd til en Core i5...


og @13

Tror mere det handler om at det hardware skal være bygget specielt til at kunne overleve en tur i rummet, der er jo enorme mængder af kosmisk stråling, solstorme og lignende som kan give problemer for standard hardware..

Desuden begyndte de byggeriet af Curiousity for 7 år siden (mener jeg det var), og tror ikke bare de lige uden problemer kan lave store ændringer på hardware fronten i det sidste minut.
Gravatar #15 - arne_v
28. aug. 2012 14:59
cryo (6) skrev:
Faktisk lidt underligt at man vælger et så typesvagt og "error prone" sprog som C til missionskritiske systemer. Man burde bruge noget hvor man har en chance for at ræsonere om korrekthed.


Jeg undrede mig også over det valg.

Montago (7) skrev:
Roveren har jo kun en 200 MHz PowerPC 750 CPU... Så hvis ikke al performance skal gå til hele det overhead et Managed sprog har. Så er man nødt til at køre C eller C++


Det argument holder ikke.

1) Managed sprog har ikke nævneværdigt ekstra CPU forbrug (de har dog et forholdsvis stort opstarts memory forbrug).

2) Der er masser af andre unmanaged sprog end C og C++.

Montago (7) skrev:
Dernæst er C og C++ nogle af de eneste 'realtime' sprog


De kunne sagtens have et krav om rimeligt gode realtime egenskaber.

Men også her er der alternativer.

1000tusind (8) skrev:
Bare af interesse: Hvilket sprog vil du foreslå?


Ada virker ret oplagt.

Stærk type sikkerhed.

God support for real time.

Lang tradition for brug i "ting".
Gravatar #16 - lorenzen
28. aug. 2012 16:03
Men arne_v det er dog også et uddøende sprog - så det kan være de har vurderet at det var risikoen værd at bruge c da udbudet af arbejdskraft ville være større.
Gravatar #17 - arne_v
28. aug. 2012 16:11
#16

Det har aldrig været et af de helt store sprog.

Og brugen af det er faldet meget siden DoD droppede kravet om brug af Ada i 1997.

Men hvis man virkeligt ville bruge det, så tror jeg godt at NASA kunne finde folk.


Gravatar #18 - arne_v
28. aug. 2012 16:24
#Ada alternativ

Erlang kunne også være en mulighed.
Gravatar #19 - kasperd
28. aug. 2012 16:28
lorenzen (16) skrev:
det er dog også et uddøende sprog - så det kan være de har vurderet at det var risikoen værd at bruge c da udbudet af arbejdskraft ville være større.
Til sådan et projekt bruger man nok udviklere, der har evner nok til at lære et nyt sprog.

Så man bør sammenligne hvad kvalitet af kode man kan forvente fra hhv. udviklere med erfaring fra andre sprog, som bliver sat til at udvikle Ada kode og på den anden side kode skrevet i C++ af en udvikler med erfaring i sproget.

Et sprog som giver mulighed for begynderfejl, som kan få katastrofale følger på et senere tidspunkt ville være et dårligt valg. Sådan et sprog ville også være et dårligt valg, hvis man kan finde erfarne udviklere. For selv erfarne udviklere kan begå fejl, og det er ikke altid, at man kan gennemskue, hvor meget erfaring en potentiel medarbejder reelt har.

Jeg er selv mere end én gang blevet ansat til at udvikle i sprog hvor jeg havde meget lidt eller slet ingen erfaring. Og det er vel at mærke situationer, hvor arbejdsgiveren har været fuldstændigt klar over, hvor lidt erfaring jeg havde med det pågældende sprog.
Gravatar #20 - dauer962c
31. aug. 2012 14:11
arne_v (18) skrev:
#Ada alternativ

Erlang kunne også være en mulighed.


Det er svært at skrive et styresystem i Erlang, der er man nødt til at bruge sprog som C/C++ eller assambler.

Man kunne godt skrive applikationerne i Erlang men lige så snart du skal snakke med hardware skal du over i C/C++.
Gravatar #21 - arne_v
31. aug. 2012 14:32
#20

Hardware interface kræver native kode.

P.g.a. *nix og Windows bliver C/ C++ ofte opfattet som sproget for OS.

C er da også ret velegnet til formålet, da sproget er designet til formålet.

Men der er masser af eksempler på brug af andre sprog:

Multics - PL/I

MPE - Pascal

Bliss - TOPS, RSX, VMS etc.
Gravatar #22 - arne_v
31. aug. 2012 14:34
#20 & 21

Erlang kan iøvrigt generere native kode.

Hvorvidt det er brugbart i OS sammenhæng ved jeg ikke nok om Erlang til at kunne sige.

Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login