Bug

Feilen ( engelsk uttale / bʌg / ; på italiensk / ˈbaɡ / [1] ), på italiensk også baco [2] , i sammenheng med dataprogrammering , er en anomali som fører til feil i en programvare , for eksempel ved å produsere et uventet eller feil resultat, vanligvis på grunn av en feil under skriving av kildekoden til et program . En feil er i hovedsak en funksjonell programvaredefekt, selv om begrepet noen ganger brukes for også å indikere sikkerhetsfeil (sårbarheter) så vel som alvorlige ytelsesmangler. Eksempler på feil er de som fører til Blue Screen of Death Windows , dvs. blå skjermer med feilmeldinger som hovedsakelig påvirket de første versjonene av operativsystemet . Andre typer feil, om enn forskjellige, som kommer i nærheten av feil, er feil og utnyttelser , ofte utbredt i videospill . [3]

Et program som inneholder feil som forstyrrer funksjonaliteten kalles buggy , mens handlingen med å rette feil kalles feilsøking eller feilretting .

Historie

Den utbredte bruken av begrepet bug , som på engelsk generelt indikerer et lite insekt , er knyttet til en merkelig anekdote som dateres tilbake til datavitenskapens pionertid : 9. september 1947 lette løytnant Grace Hopper og hennes gruppe etter årsaken til funksjonsfeilen til en Mark II-datamaskin da de til deres forbauselse innså at en møll hadde satt seg fast mellom kretsene. Etter å ha fjernet insektet (kl. 15:45), en operasjon som ville ha gjenopprettet den vanlige funksjonen til datamaskinen, limte Hopper møllen som ble fjernet på dataregisteret og noterte: «1545. Relé # 70 Panel F (møll) i relé. Første faktiske tilfelle av feil ble funnet ". Denne posten oppbevares på Smithsonian National Museum of American History . [4]

I virkeligheten har begrepet bug i betydningen teknisk problem blitt brukt i det minste siden 1870 : det er nevnt i denne betydningen i et brev fra Edison fra 1878 , sannsynligvis er denne bruken av begrepet av skotsk opprinnelse.

( NO )

"Det har vært akkurat slik i alle mine oppfinnelser. Det første trinnet er en intuisjon, og kommer med et utbrudd, så oppstår vanskeligheter - denne tingen gir seg og [det er] da "Bugs" - som slike små feil og vanskeligheter kalles - viser seg selv og måneder med intens tilsyn, studier og arbeidskraft er nødvendig før kommersiell suksess eller fiasko sikkert oppnås."

( IT )

«Det var slik for alle mine oppfinnelser. Det første trinnet er en intuisjon, og den kommer som en flamme, så vokser vanskelighetene ... ting går ikke lenger og det er da "bugs" - som disse små feilene og vanskelighetene kalles - manifesterer seg, og det tar måneder med intens observasjon, studier og arbeid før kommersiell suksess eller fiasko sikkert oppnås."

( Edisons brev til Puskas [5] )

Typer feil

Under utvikling og utførelse av en kildekode kan det oppstå såkalte «programmeringsfeil» som i hovedsak kan deles inn i tre hovedkategorier: syntaksfeil, feil i utførelse eller kjøretid , og feil i programlogikken.

Det som indikerte å referere til kompilatoren gjelder naturligvis også for tolkede programmer , som Python , PHP , JavaScript , Matlab , for å nevne noen av de mest populære. I disse tilfellene, gitt muligheten til å kjøre kommandoer interaktivt , kan det være lettere å oppdage feil selv uten bruk av en debugger, som fortsatt er tilgjengelig i mange tilfeller.

Svært sjelden kan det skje at en defekt kompilator produserer en feil selv om kildekoden er riktig.

Eksempler

Maskinvarefeil

Mindre vanlig kan begrepet bug indikere en designfeil i en maskinvarekomponent , som får den til å oppføre seg uventet eller på annen måte enn spesifisert av produsenten. For eksempel er en kjent feil i en maskinvarekomponent den som i 1994 rammet den da nyfødte Pentium - mikroprosessoren , som i visse situasjoner ga feil resultater selv i enkle aritmetiske beregninger . De første Pentiums hadde faktisk problemer i FPU ( floating point unit , float point unit eller matematisk koprosessor), på grunn av at de returnerte feil verdier i noen desimaloperasjoner. Først ble det publisert et program som utelukket denne enheten; senere ble alle mikroprosessorene byttet ut.

Effekter

En feil kan ha en rekke effekter. Noen har liten effekt på funksjonaliteten til programmet og kan derfor forbli ukjente i lang tid. Omvendt, hvis feilen er alvorlig nok, kan den føre til at programmet krasjer eller fryser, noe som fører til avslag på den forespurte tjenesten. Andre, kvalifisert som sikkerhetsfeil, kan tillate en angriper å omgå tilgangskontroller for å få uautoriserte privilegier.

Effektene av insekter kan være ekstremt alvorlige: på åttitallet , i Canada og i USA , førte noen feil i kontrollprogramvaren til en strålebehandlingsmaskin , Therac-25 , at enhetene først leverte en overdreven mengde stråling uten aktive beskyttelsessystemer og deretter aktiveres når det ikke er nødvendig, noe som gjør seg direkte ansvarlig for døden til noen pasienter. Siden den gang har slike hendelser ofte blitt brukt som eksempler for å vise og forstå hvilke farer dårlig programmering kan medføre, spesielt i programvare med praktiske formål. [6]

I 2002 beregnet National Institute of Standards and Technology at feil og programvarefeil forårsaket et tap på 59 milliarder dollar i USA , tilsvarende 0,6 % av BNP . [7]

Forebygging

Under programvaredesign , dataregistrering eller oversettelse ( kompilering , tolkning eller sammenstilling) av kildekoden, kan det oppstå feil (for det meste som stammer fra menneskelige faktorer som forglemmelser eller unøyaktigheter) i den oppnådde kjørbare filen , som må utgjøre feilene .

Feilen som forårsaker en feil er neppe en syntaksfeil, fordi kompilatoren umiddelbart vil advare programmereren ved å stoppe kompileringsprosessen; av denne grunn er logiske feil i utformingen av algoritmen mye mer "lumske" .

Programvareindustrien er kontinuerlig engasjert i forskning for å forhindre introduksjon av feil under programskriving, for å lette skrivingen og redusere utviklingstiden. De vanligste tilnærmingene og metodene er:

Hvis en datainkonsekvens oppdages i et program mens det kjører , kan det stoppe umiddelbart, slik at feilen blir lokalisert. Alternativt kan programmet ganske enkelt varsle brukeren, vente på rettelsen og fortsette å kjøre.

Det finnes flere systemer for å administrere programmeringsaktiviteter for å sikre at antallet feil som produseres er så lavt som mulig. Denne aktiviteten er en del av programvareingeniørdisiplinen og formålet er å eliminere feilen allerede i programvaredesignfasen .

Programmeringsspråk inkluderer ofte funksjoner som hjelper programmerere å unngå feil. For eksempel, hvis en programmerer bruker en variabel av feil type, klarer ikke koden å kompilere selv om den er syntaktisk korrekt.

Det finnes kodeanalyseverktøy for å hjelpe utviklere med å sjekke programtekst, for eksempel at kompilatoren kan oppdage potensielle problemer.

Feilsøking

Vanligvis er det første trinnet i å identifisere en feil å finne en måte å enkelt reprodusere den. Når feilen er reprodusert, kan programmereren bruke en debugger for å spore utførelse i den defekte regionen og finne hvor programmet feiler. Noen ganger handler ikke en feil om et enkelt utsagn, men er en konseptuell feil fra programmererens side. Når feilen er identifisert, blir korrigeringen eller elimineringen utført.

Rett opp

På dataengelsk, nå utbredt også på andre språk, er reparasjonen korrigeringen som er reparasjonen av en feil. Fix er et generisk begrep som tilsvarer ulike endelige løsninger, avhengig av tilfelle. En løsning som ikke fikser feilen, men som inneholder dens effekt, er løsningen .

Feilhåndtering _

Det er vanlig å publisere et program med kjente feil som ikke anses som alvorlige; senere kan feilen fikses med en ny versjon eller gjennom en patch .

Annen terminologi

Flere produsenter (for eksempel Microsoft), på sine bulletiner, bruker det engelske uttrykket addesses an issue (lett. "faced a question", oversatt i italiensk versjon med solved a problem ) for å indikere et noe bredere konsept av en feil eller ikke til å ty til en spesialistterm for bruker-forbruker. Google bruker et hybriduttrykk ( fix for issue ), andre produsenter som har løst et problem , med vanlig betydning.

Merknader

  1. ^ Luciano Canepari , bug , i Il DiPI - italiensk uttaleordbok , Zanichelli, 2009, ISBN 978-88-08-10511-0 .  
  2. ^ Baco , i Treccani.it - ​​Treccani Vocabulary online , Institute of the Italian Encyclopedia. Hentet 24. mars 2017 .
  3. ^ Hva er en feil? , på ionos.it . Hentet 24. mai 2022 .
  4. ^ Feil fra Smithsonian Institution
  5. ^ Thomas P. Huges, American Genesis: A History of the American Genius for Invention , Penguin Books, 1989, s. 75.
  6. ^ Historiens verste programvarefeil _
  7. ^ Programvarefeil koster 59,6 milliarder dollar årlig arkivert 5. juni 2012 på Internet Archive .

Bibliografi

Relaterte elementer

Andre prosjekter

Eksterne lenker