Shipping buggy code: The most critical skill for a programme

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
bearing
Inlägg: 11265
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Shipping buggy code: The most critical skill for a progr

Inlägg av bearing »

Även om koden gör precis som tänkt under alla omständigheter, kan det ju vara så att "tänket" var fel från början. Denna aspekt tycker jag att det fokuseras alldeles för lite på. Spelar ju ingen roll ifall koden passerar alla tester (med hjälp av testmjukvara för miljontals kronor) om detta är fallet.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Shipping buggy code: The most critical skill for a progr

Inlägg av lillahuset »

Men det är ju en så jobbig tanke så den vill ju de flesta undvika. :D
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43178
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Shipping buggy code: The most critical skill for a progr

Inlägg av sodjan »

Ja, väldigt mycket utveckling sker idag utan en riktig förståelse av
den miljö och de processer där det hela ska användas. Ett fenomen
som ökar med konsulter i fel roller och tillfälliga utvecklare från
firmor runt halv jordklotet.

Ett exempel på hur det kan gå. Känner en del som jobbar/jobbade där...
https://computersweden.idg.se/2.2683/1. ... rojekt-nbg
Användarvisningsbild
swesysmgr
Inlägg: 14188
Blev medlem: 28 mars 2009, 06:56:43
Ort: Göteborg

Re: Shipping buggy code: The most critical skill for a progr

Inlägg av swesysmgr »

lillahuset skrev:Det som förbryllar mig mest är att det finns en massa (nåja ett gäng iallafall) folk här i forumet som verkar ha väldigt svårt för konceptet att det är i stort sett omöjligt att BEVISA att ett program är FELFRITT.
Vad jag menar är att du gör en modell i något strikt deklarativt modelleringsspråk och sedan bevisar matematiskt att din modell är fullständigt korrekt. Då finns det inga undantag eller "oj jag tänkte inte på det". Används för t.ex. telefonväxlar, mobilnät och kritiska saker i bilar som bromssystem.

Buggar kan naturligtvis uppstå senare i implementationen men blir lättare att hitta eftersom du har en garanterat korrekt modell att jämföra med.

Prolog och logikprogrammering fanns väl redan när farbror var student? Se det som en utvecklig på det spåret.
bearing
Inlägg: 11265
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Shipping buggy code: The most critical skill for a progr

Inlägg av bearing »

Vad är det som är så speciellt med en modell som gör att den kan "garanteras"?
Användarvisningsbild
Andax
Inlägg: 4373
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Shipping buggy code: The most critical skill for a progr

Inlägg av Andax »

Det finns säkert vissa typer av modeller/strukturer som man kan bevisa vissa egenskaper hos. Dock kan det ju faktiskt vara så att man väljer en sådan typ av modell just av den anledningen trots att den kanske beskriver det verkliga problemet sämre än en annan modell som inte går att visa matematiskt. Har man då vunnit någon säkerhet?
hummel
Inlägg: 2269
Blev medlem: 28 november 2009, 10:40:52
Ort: Stockholm

Re: Shipping buggy code: The most critical skill for a progr

Inlägg av hummel »

Ska se om jag kan få fram någon kod att visa vad jag försöker beskriva.
Användarvisningsbild
swesysmgr
Inlägg: 14188
Blev medlem: 28 mars 2009, 06:56:43
Ort: Göteborg

Re: Shipping buggy code: The most critical skill for a progr

Inlägg av swesysmgr »

bearing skrev:Vad är det som är så speciellt med en modell som gör att den kan "garanteras"?
Du gör en matematiskt/logiskt baserad modell som sedan kan bevisas med samma metoder som matematiska bevis.

Fungerar inte på allt men kan du logiskt specificera t.ex. en elektronisk krets eller paketkärnan i dit mobilnät då kan du även verifiera och bevisa att modellen alltid kommer att fungera korrekt.
Användarvisningsbild
Andax
Inlägg: 4373
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Shipping buggy code: The most critical skill for a progr

Inlägg av Andax »

Swesysmgr, men problemet kvarstår fortfarande om modellen representerar verkligheten/problemställningen tillräckligt bra?
Gör den inte det kan man visserligen klappa sig på axeln och säga att modellen garanterat uppför på ett predikterbart sätt, men kanske inte som behövs för att lösa problemet.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45304
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Shipping buggy code: The most critical skill for a progr

Inlägg av TomasL »

Det finns ett obegränsat antal icke simulerbara händelser i alla system, vilka kan få systemet att uppträda helt oberäkneligt.
Användarvisningsbild
Icecap
Inlägg: 26149
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Shipping buggy code: The most critical skill for a progr

Inlägg av Icecap »

För att verifiera ett system ska man i grunden simulera alla möjliga inputs till det.

Det riktigt svåra är att man sedan ska VETA hur systemet ska reagera för ett givet input!

Att ett system fungerar korrekt enl. specifikationerna MÅSTE betyda att specifikationerna ska vara alltomfattande!

Har man kört "skarp" programmering - alltså på viktiga funktioner - bör man ha insett att det svåra är inte att få en sekvens till att köra, det svära är att fånga felen (in-värden utanför spec.) och få systemet till att reagera lämpligt.

Ett enkelt exempel: farthållare till fordon.
Att fixa en hastighetshållning är inte så svårt, det svåra är alla ting som sker och vad som ska hända då.
* Krock.
* Dålig hastighetssensor (t.ex. ABS-ringen som börjar bli dålig)
* Över/undervarv.
* Växel blir ryckt ur.
osv.
bearing
Inlägg: 11265
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Shipping buggy code: The most critical skill for a progr

Inlägg av bearing »

swesysmgr skrev:
bearing skrev:Vad är det som är så speciellt med en modell som gör att den kan "garanteras"?
Du gör en matematiskt/logiskt baserad modell som sedan kan bevisas med samma metoder som matematiska bevis.

Fungerar inte på allt men kan du logiskt specificera t.ex. en elektronisk krets eller paketkärnan i dit mobilnät då kan du även verifiera och bevisa att modellen alltid kommer att fungera korrekt.
Jag är lite insatt, och har förstått att modellbaserad utveckling ses som något "fantastiskt", och lösningen på "alla" problem i säkerhetskritiska applikationer. Men min erfarenhet är att ju säkrare modellen ska vara, ju mindre beståndsdelar måste den byggas upp av, för att kunna att garantera att varje beståndsdel är felfri. I slutändan hamnar man i ett grafiskt programmeringsspråk, som måste programmeras på liknande sett som ett vanligt textbaserat språk. Det kommer ner på nivån att varje typomvandling måste finnas med. I mina ögon är den enda fördelen med detta grafiska programmeringsspråk att det har väldigt hårda kontroller av "koden" innan kompilering, ungefär som de verktyg som finns för att följa MISRA. Det är helt omöjligt att skriva till oönskade adresser i RAM och så vidare. Men bortsett från sådana saker, kan man göra misstag i modellen, precis som i ett vanligt handskrivet program.

Misstagen kommer säkert upptäckas av de matematiska metoder du beskriver. Men jag tror att det bara är en väldigt liten del av ett stort program som kan verifieras på det sättet.
Användarvisningsbild
swesysmgr
Inlägg: 14188
Blev medlem: 28 mars 2009, 06:56:43
Ort: Göteborg

Re: Shipping buggy code: The most critical skill for a progr

Inlägg av swesysmgr »

Andax skrev:Swesysmgr, men problemet kvarstår fortfarande om modellen representerar verkligheten/problemställningen tillräckligt bra?
Gör den inte det kan man visserligen klappa sig på axeln och säga att modellen garanterat uppför på ett predikterbart sätt, men kanske inte som behövs för att lösa problemet.
Jo så är det och det är därför det kan bli dyrt med formell validering när du behöver göra mycket mer omfattande kravfångst och specifikation samt kanske köpa dyra verktyg. Är nog därför det främst används för kritiska system som ligger långt från användaren :)
Användarvisningsbild
swesysmgr
Inlägg: 14188
Blev medlem: 28 mars 2009, 06:56:43
Ort: Göteborg

Re: Shipping buggy code: The most critical skill for a progr

Inlägg av swesysmgr »

TomasL skrev:Det finns ett obegränsat antal icke simulerbara händelser i alla system, vilka kan få systemet att uppträda helt oberäkneligt.
Nej varför det? Du har begränsat med input och du vet exakt hur ditt system kommer att bete sig. Skall din krets som du verifierat bestrålas i rymden eller köras utanför specat temperaturområde då går det nog inte.
Användarvisningsbild
swesysmgr
Inlägg: 14188
Blev medlem: 28 mars 2009, 06:56:43
Ort: Göteborg

Re: Shipping buggy code: The most critical skill for a progr

Inlägg av swesysmgr »

bearing skrev:
swesysmgr skrev:
bearing skrev:Vad är det som är så speciellt med en modell som gör att den kan "garanteras"?
Du gör en matematiskt/logiskt baserad modell som sedan kan bevisas med samma metoder som matematiska bevis.

Fungerar inte på allt men kan du logiskt specificera t.ex. en elektronisk krets eller paketkärnan i dit mobilnät då kan du även verifiera och bevisa att modellen alltid kommer att fungera korrekt.
Jag är lite insatt, och har förstått att modellbaserad utveckling ses som något "fantastiskt", och lösningen på "alla" problem i säkerhetskritiska applikationer. Men min erfarenhet är att ju säkrare modellen ska vara, ju mindre beståndsdelar måste den byggas upp av, för att kunna att garantera att varje beståndsdel är felfri. I slutändan hamnar man i ett grafiskt programmeringsspråk, som måste programmeras på liknande sett som ett vanligt textbaserat språk. Det kommer ner på nivån att varje typomvandling måste finnas med. I mina ögon är den enda fördelen med detta grafiska programmeringsspråk att det har väldigt hårda kontroller av "koden" innan kompilering, ungefär som de verktyg som finns för att följa MISRA. Det är helt omöjligt att skriva till oönskade adresser i RAM och så vidare. Men bortsett från sådana saker, kan man göra misstag i modellen, precis som i ett vanligt handskrivet program.

Misstagen kommer säkert upptäckas av de matematiska metoder du beskriver. Men jag tror att det bara är en väldigt liten del av ett stort program som kan verifieras på det sättet.
Du kan specificera med hjälp av kod i ett språk gjort för det, finns inget krav på att köra dra-och-släpp programmering varken för verifiering eller implementation så den invändningen förstår jag inte.
Skriv svar