The Coming Software Apocalypse

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

The Coming Software Apocalypse

Inlägg av lillahuset »

Användarvisningsbild
HUGGBÄVERN
Tidigare soundbrigade
Inlägg: 32629
Blev medlem: 23 augusti 2006, 22:44:11
Ort: Lilla Paris
Kontakt:

Re: The Coming Software Apocalypse

Inlägg av HUGGBÄVERN »

Avskyr att läsa massa text på datorn men det här är himla intressant faktiskt.

Tänker på en incident när NASA sköt upp en raket, vilken exploderade i luften eller dök rakt ner i havet strax efter start. Programmerarna hade att hantera data från en accelerationsgivare för att kunna styra raketen. Man hanterade data från givaren för att veta om raketen var på väg åt sidan på något sätt och hur fort den accelererade uppåt. Dock hade man inga rutiner för att hantera signaler som betydde att raketen var på väg neråt, eller för att uttrycka det korrekt i sammanhanget - skakade (upp och ner) medan den drog iväg. Nedåtskaket orsakade att programmet kraschade och tog raketen med sig.
Nerre
Inlägg: 26655
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: The Coming Software Apocalypse

Inlägg av Nerre »

Fast idag finns det ju rätt mycket metoder för mjukvaruutveckling just för att fånga upp den där typen av missar.

Oftast delar man upp mjukvaran i mindre block, och varje block testas med alla möjliga invärden för att se att den hanterar alla tänkbara situationer rätt. Man provar att det funkar med 0, negativt, positivt, man kollar vad som händer vid overflow och underflow osv. Det finns också kodningsstandarder för hur man gör tester (t.ex. att man istället för att kolla om nåt blivit noll så kollar man om det är mindre än 1, då fångar man upp om det av nån anledning råkar hoppa direkt från 1 till -1) och liknande grejer.

Det är de som tror att det är enkelt att skriva program som är faran, de tror att såna metoder för utveckling bara är "onödigt krångel".

Med tanke på mängden kod som snurrar runtom i världen så är det faktiskt rätt ovanligt med sådär extrema buggar idag. Tänk hur många datorer det finns i världen, tänk hur mycket programkod de exekverar varje dag. Det måste vara flera hundra miljarder timmars programkörning per dygn. Hur ofta uppstår de där buggarna?

Om vi säger 100 miljarder timmars körning per dygn (4-5 miljarder datorer i drift), det blir 36500 miljarder timmar om året. Om en sån där jättebugg uppstår en gång om året så är sannolikheten alltså en på 36 biljoner...
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: The Coming Software Apocalypse

Inlägg av lillahuset »

varje block testas med alla möjliga invärden för att se att den hanterar alla tänkbara situationer rätt.
:rofl Det var naivt. Det fungerar bara med rent kombinatoriska block.
Nerre
Inlägg: 26655
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: The Coming Software Apocalypse

Inlägg av Nerre »

Ja, det var ju något förenklat beskrivet, man använder ju normalt testvektorer som är framtagna för att testa relevanta kombinationer. Precis som när man testar IC-kretar. En 32-bitars räknare testas ju inte genom att låta den räkna från 0 tills den wrappar utan man bygger ju in testfunktioner för att t.ex. skifta in testvektorer som skiftregister och testa att den beter sig korrekt vid ett dussin utvalda testvektorer.

Vanliga exempel för en räknare (vi tar en 8-bitars) kan vara:
00000000
11111111
01010101
10101010
10000000
00000001
11110000
00001111
00110011
11001100

Man laddar in en vektor, kör en klockpuls och laddar sen ut vektorn för att se att den räknade rätt.

När det gäller programkod så tittar man ju på vad koden gör och tar fram testfunktioner för hur koden ska testas. Hela poängen med detta (t.ex. V-modellen) är att det är omöjligt att testa hela det färdiga programmet (eftersom antalet testkombinationer blir för stort), men om man testar varje block för sig så vet man att blocken fungerar och då ska också hela programmet fungera.

Jämför med räknaren ovan. Om varje vippa fungerar som den ska så kommer också räknaren att fungera som den ska. För varje vippa i en räknare finns inte så många kombinationer att testa, och kan man testa all vipporna parallellt så sparar man enormt med tid. Det blir kanske 8 tester man gör istället för över typ 260 (man måste ju även testa reset etc om man testar hela räknaren).
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: The Coming Software Apocalypse

Inlägg av lillahuset »

Visst, bättre än inget. Men om du ska "bevisa" att ett program är "felfritt" så får du nog nöja dig med ett trivialt program som inte använder några biblioteksfunktioner.
Användarvisningsbild
HUGGBÄVERN
Tidigare soundbrigade
Inlägg: 32629
Blev medlem: 23 augusti 2006, 22:44:11
Ort: Lilla Paris
Kontakt:

Re: The Coming Software Apocalypse

Inlägg av HUGGBÄVERN »

Jag tror att vi gör samma fel som de som "följde" Bret Victor. Det handlar inte om programmeringsverktygen utan HUR programmeraren ser på sitt värv.

Minns att mina kolleger, de som höll på med programmering, på RIFA hade en skön bild uppsatt på väggen. Den föreställde djävulen som låg i schäslongen hos psykiatern och han beskrev orsaken till sitt psykiska tillstånd:
"Did he want booze, did he want money, did he want girls?? No, he wanted 1000 lines of error free code ..."
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: The Coming Software Apocalypse

Inlägg av lillahuset »

För många herrans år sedan tittade vi på processorkort med tillhörande linuxmiljö. Linuxmiljön var svindyr så jag ringde svenska representanten och frågade hur det kom sig att de skulle ha så löjligt mycket betalt? Svaret blev något om att leverantören hade rättat alla buggar i linuxmiljön, därav priset. Vad jag skrattade rått. Det bidde ingen affär.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45175
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: The Coming Software Apocalypse

Inlägg av TomasL »

Läste någonstans om JPL, de som skrev koden till Rymdfärjan bl.a.

De hade två mjukvaruteam som alternerade mellan kodning och buggletning.
Teamen tävlade mot varandra, och det teamet som förlorade fick bjuda det andra på en krogrunda.

Dokumentationen var fantastisk, varenda kodrad var dokumenterad, dels vad kodraden faktiskt gjorde och dels motivet till att den såg ut som den gjorde, varför den fans just där, och motivet till att den överhuvudtaget existerade.
Samma med buggrättning.
Det påstås att de skrev världens mest felfria kod.
Nerre
Inlägg: 26655
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: The Coming Software Apocalypse

Inlägg av Nerre »

lillahuset skrev:Visst, bättre än inget. Men om du ska "bevisa" att ett program är "felfritt" så får du nog nöja dig med ett trivialt program som inte använder några biblioteksfunktioner.
Man behöver inte bevisa att det är felfritt, det räcker med att man kan bevisa att det har klarat alla verifieringar och valideringar.

Om man jämfört programvara med människor så är programvara typ flera tusen gånger mer pålitlig än människor. Människor kan slarva, glömma bort eller helt enkelt strunta i saker, men det gör inte en programvara. Människor kan dessutom drabbas av hallucinationer, synvillor, hörselvillor etc eller missuppfattningar. Det gör inte en programvara.

En bugg kan hittas och elimineras, men mänskliga brister kan bara elimineras genom att ta bort människan ur ekvationen.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: The Coming Software Apocalypse

Inlägg av lillahuset »

Man behöver inte bevisa att det är felfritt, det räcker med att man kan bevisa att det har klarat alla verifieringar och valideringar.
Jamen det var väl lätt fixat. Man får väl ha noll verifieringar och noll valideringar och sedan skriva intyget: "Nerre AB garanterar att programmet klarat alla verifieringar och valideringar." Klart. :badgrin:
Användarvisningsbild
HUGGBÄVERN
Tidigare soundbrigade
Inlägg: 32629
Blev medlem: 23 augusti 2006, 22:44:11
Ort: Lilla Paris
Kontakt:

Re: The Coming Software Apocalypse

Inlägg av HUGGBÄVERN »

Sådär, nu har jag läst hela artikeln. Den var ju otroligt intressant och för att återknyta till mina kolleger, programmerarna på RIFA, var det speciellt en av dem som tänkte i de här banorna.
Hans stridsrop var Top - Down, vilket betydde att man först gjorde en modell, ett flödesschema eller i text beskrev vad man skulle ha gjort - alltså TOP. Sedan plockade man isär sin modell i mindre och mindre delar och kom till slut att hamna med att koda subrutiner - DOWN.
Min kollegas erfarenhet var att många programmera gjorde tvärtom, började med subrutinerna och sedan byggde sig uppåt.


Och jag minns när vi tog in SATTCOs PLC i vår verksamhet och vilken otrolig skillnad det var att titta på olika maskiner och vad de skulle utföra beroende på vilken programmeringsmetod man hade. Vi hade en monteringsmaskin där programmet, skrivet av en kille på SATTCO byggde på förregleringar medan jag efter att nästan fått fingrarna avklippta då jag aktiverat en givare som inte hade med en viss operation att göra, skrev om programmet och lät det arbeta sekvensiellt. Det senare programmeringssättet är ju att göra en modell där man beskriver hur och i vilken ordning saker ska hända i maskinen.

Tack Lillahuset för en bra artikel. Ska läsa den om den förlorade iPhonegenerationen också.
Nerre
Inlägg: 26655
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: The Coming Software Apocalypse

Inlägg av Nerre »

lillahuset skrev:
Man behöver inte bevisa att det är felfritt, det räcker med att man kan bevisa att det har klarat alla verifieringar och valideringar.
Jamen det var väl lätt fixat. Man får väl ha noll verifieringar och noll valideringar och sedan skriva intyget: "Nerre AB garanterar att programmet klarat alla verifieringar och valideringar." Klart. :badgrin:
Din bild av hur utveckling och leverans av komplex mjukvara fungerar verkar väldigt underlig...
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: The Coming Software Apocalypse

Inlägg av lillahuset »

Då är vi helt överens, du tycker min bild är underlig och jag tycker din bild är underlig.
Användarvisningsbild
HUGGBÄVERN
Tidigare soundbrigade
Inlägg: 32629
Blev medlem: 23 augusti 2006, 22:44:11
Ort: Lilla Paris
Kontakt:

Re: The Coming Software Apocalypse

Inlägg av HUGGBÄVERN »

Man behöver inte bevisa att det är felfritt, det räcker med att man kan bevisa att det har klarat alla verifieringar och valideringar.
Om du läste essän, Nerre, så var det bland annat det här man tog upp. Att ha en buggfri kod var viktigare för dagens programmerare än att ha en kod som var kopplad till vad den egentligen skulle göra.
Skriv svar