Tietokonevika)

Vuonna tietojenkäsittelytiede , eli vika ( lausutaan ranskaksi: / b œ g / ) tai bug on suunnittelun puute on tietokoneohjelma aiheuttaa toimintahäiriö .

Vakavuudesta toimintahäiriö voi vaihdella lievästä esimerkiksi aiheuttaa pieniä näyttö vikoja - tässä tapauksessa voimme joskus puhua "  häiriö (es)  " - suuria, kuten järjestelmän kaatuminen voi johtaa vakaviin onnettomuuksiin, esimerkiksi. ensimmäisen Ariane 5 -raketin tuhoutuminen lennon aikana vuonna 1996 .

Virhe voi olla sovelluksessa , tämän sovelluksen käyttämässä kolmannen osapuolen ohjelmistossa tai jopa laitteistokomponentin laiteohjelmistossa , kuten tapahtui Pentium-divisioonan virheen yhteydessä . Laastari on pala ohjelmisto tarkoitettu korjaamaan yhden tai useamman vikoja.

Kuvaus

Virheet ovat yksi syy tietokoneiden virheelliseen toimintaan; muita toimintahäiriöiden syitä ovat:

Terminologia

Englanninkielinen sana bug kuuluu laitteistoinsinöörien ammattikieleen ja edustaa siinä syntyneitä ongelmia. Termin käyttö mekaanisten järjestelmien vikojen kuvaamiseen juontaa juurensa ainakin ennen 1870-lukua . Thomas Edison , muun muassa, käytti sanaa muistiinpanoissaan.

Termiin "vika" viitataan Laroussen online-sanakirjassa määritelmällä: "Tietokoneohjelman suunnittelu- tai tuotantovika, joka ilmenee tietokoneen toimintahäiriöinä. "

Atk Treasury ranskan kielen säilytetään ainoastaan sana "vika" sen merkitys "Spicy kirjekuoren kastanjoita, pyökinpähkinät, hasselpähkinät ja tietyt palkokasvien siemenet".

FranceTerme- sivusto , Office québécois de la langue française ja Direction de la langue française (Belgia) suosittelevat termiä "bug" sekä johdannaisista debug, debug ja debugger

Termi johtuu joskus väärin Grace Hopperista . Hän totesi hänen kunnossapidon päiväkirjaa, säilytetään Smithsonian Institution , päivätty9. syyskuuta 1947, 15  h  45 , releen kaksi kosketinta aiheuttivat Harvard Mark II: n , yhden ensimmäisistä sähkömekaanisista tietokoneista, toimintahäiriön .

Hopper ei löytänyt virhettä, kuten hän myönsi helposti. Operaattorit, jotka löysivät sen myöhemmin, mukaan lukien William "Bill" Burke merivoimalaboratoriosta, tunsivat tekniikan ja huvittivat termin, pitivät virheen merkinnällä "ensimmäinen todellinen vika löytyi".

Se oli termi, jota mekaaniset ja sähköinsinöörit käyttivät, selittäen laitteiden kohtaamia vaikeuksia kauan ennen kuin Grace Hopper kuuli sanasta.

Syyt

Frederick Brooks sanoo vuonna 1987 julkaistussa kirjassaan, että ohjelmistovirheiden esiintyminen ei ole onnettomuus, vaan ohjelmistojen luonteesta, toisin sanoen ohjelmistoissa on virheitä, koska ne ovat ohjelmistoja. Hän sanoi myös, että ei ole ihmelääkettä - ihme työkalu - käsitellä vikoja, mikä viittasi legenda keskiajalla että vain pallo on hopeaa , muistuttaa väri kuun voi torjua ihmissusi .

Ohjelmistot ovat näkymättömiä ja aineettomia tuotteita, niiden muokkaaminen ei vaadi raaka-ainetta. IT-markkinoiden erittäin nopea kehitys luo vahvan muutoskysynnän. Kaikki nämä tekijät tekevät ohjelmistomuutoksista paljon yleisempiä kuin muissa tuotteissa, kuten autoissa tai rakennuksissa .

Tietokoneet ovat kaikkein monimutkaisimpia tuotteita, jotka ihminen on valmistanut, ja siksi niillä on hyvin suuri määrä osavaltioita . Ohjelmisto on monimutkaisempi kuin tietokoneet, ja toisin kuin auto, mikään osa ei ole samanlainen. Monien televiestinnän läheisyyteen liittyvien standardien noudattaminen lisää niiden monimutkaisuutta. Ohjelmisto on lisäksi näkymättömiä tuotteita, joita ei voida esittää geometrisessa tilassa, ohjelmistojen graafiset esitykset sisältävät usein kaksi, jopa kolme tai neljä kaaviota, joista kukin vastaa erilaista todellisuutta.

Seuraukset

Virheet

Virheet voivat aiheuttaa ohjelmiston yrittää suorittaa toimintoja, joita ei voida suorittaa ( poikkeukset ): jako nollalla, etsiä olematonta tietoa. Nämä toiminnot - joita ei koskaan käytetä ohjelmiston moitteettoman toiminnan aikana - käynnistävät sekä laitteiston että ohjelmiston mekanismin, joka deaktivoi sitten viallisen ohjelmiston, mikä aiheuttaa tietokoneen kaatumisen tai palveluneston .

Vahtikoira on itsenäinen elektroninen laite, jota käytetään havaitsemaan häiriöitä. Tätä mekanismia käytetään usein kriittisten järjestelmien ja teollisen laskennan kanssa .

Blue Screen of Death on suosittu puhetapoja ja Microsoft Windows käyttöjärjestelmiin käytöstäpoisto viesti , joka näytetään poikkeus havaitaan ydin käyttöjärjestelmä. Kernel paniikki on viesti näytetään samoissa olosuhteissa UNIX- käyttöjärjestelmän järjestelmissä .

Yleiset toimintahäiriöt

Muisti vuoto on toimintahäiriö aiheuttama virhe esiintyy muistin jakaminen toimintaa . Tämän toimintahäiriön myötä viallisen ohjelmiston käyttämän muistin määrä kasvaa jatkuvasti. Jos viallinen ohjelmisto onnistuu käyttämään lähes kaiken käytettävissä olevan muistin, se häiritsee toisen ohjelmiston etenemistä ja aiheuttaa niiden toimintahäiriöitä.

Segmentointi virhe on toimintahäiriö johtuu viasta toimintojen manipuloimiseksi osoittimia tai muistin osoitteet . Viallinen ohjelmisto yrittää lukea tai kirjoittaa tietoja muistipaikkaan ( segmenttiin ), jota ei ole tai jota ei ole sille valtuutettu. Poikkeuksen tunnistusmekanismi aiheuttaa sitten viallisen ohjelmiston poistamisen käytöstä.

Kokonaisluvun ylivuoto on toimintahäiriö johtuu viasta matemaattisen laskutoimituksen toimintaa. Viallinen ohjelmisto yrittää suorittaa laskutoimituksen, jonka tulos on suurempi kuin suurin sallittu arvo. Poikkeuksen havaitsemismekanismi aiheuttaa sitten viallisen ohjelmiston poistamisen käytöstä.

Puskurin ylivuoto on toimintahäiriö johtuu virheestä. Ohjelmisto, jonka on kirjoitettava tietoja määritettyyn ja rajoitettuun muistipaikkaan ( puskurimuisti ), ylittää tämän sijainnin rajat ja kirjoittaa sitten tietoja muuhun käyttöön tarkoitettuun paikkaan. Tämä odottamaton muutos johtaa ohjelmiston virheelliseen suoritukseen, joka voi päättyy segmentointivirheeseen tai ylivuotoon. Se on yleinen palvelinten tietoturva-aukko , jota hakkerit käyttävät usein hyväkseen . katso Exploit .

Pinon ylivuoto on toimintahäiriö, jossa koko ohjelmisto: n suorittamisen pino ylittää kapasiteetin puskuri , joka sisältää sen, mikä aiheuttaa toimintahäiriöitä samanlainen puskurin ylivuoto . Suorituspino on muistiin tallennettu tietorakenne , joka sisältää ohjelmistoautomatiikan tilan (katso prosessi (tietojenkäsittely) ), tämä rakenne tallennetaan puskurimuistiin, jonka koko on liian suuri. Nipun ylivuoto johtuu virheen aiheuttamasta virheellisestä järjestyksestä.

Kilpailutilanne (Englanti kilpailutilanne ) on vika johtuu yleensä virheestä, joka aiheuttaa kaksi yhdessä ohjelmiston automaatio työskentelee samanaikaisesti antavat erilaisia tuloksia mukaan automaatioon päättyy ennen toista.

Umpikuja (Englanti umpikuja ) on, kun vika, jossa useat automaatio odottaa toisiaan, eli ne kumpikin odottavat muiden vapauttaa resursseja se käyttää edelleen. Resurssit pysyvät lukittuina odotusten aikana, mikä voi estää muita automatismeja ja dominoefektillä estää koko järjestelmän. Estomekanismi aiheuttaa toimenpiteen peruuttamisen, kun odotusaika ylittää sallitun aikakatkaisun .

Hakkerien kansanperinteessä

Mitä monimutkaisempi koodi on, sitä vaikeampaa on löytää vika. Vikoja, jotka riippuvat odottamattomien ja epätodennäköisten olosuhteiden yhdistelmästä, on erityisen vaikea löytää. Vuonna hakkeri kansanperinne on luokkia outoja bugeja, joiden humoristinen nimet on johdettu kuin johtavista tiedemiehistä kvanttifysiikan ja matematiikka.

Ohjelmiston vaiheittainen suorittaminen virheenkorjausohjelmalla voi aiheuttaa Heisenbugin yksinkertaisesti siksi, että ohjelmisto toimii hitaammin. Kilpailutilanteet voivat johtaa Mandelbugiin , jossa ohjelman käyttäytyminen on erilainen joka kerta, kun se suoritetaan.

Elinkaari

Kuvaus

Virheet ovat seurausta inhimillisistä virheistä tietokoneohjelmistojen ja laitteistojen määrittelyssä , suunnittelussa , ohjelmoinnissa ja testauksessa . Ohjelmistojen monimutkaisuus, viestintäongelmat, insinöörien koulutuksen puute sekä aikataulujen ja kustannusten paine suunnittelutyön aikana ovat tekijöitä, jotka yleensä lisäävät vikojen määrää.

Ohjelmistojen testaus on ensimmäinen askel torjua vikoja. Käytännön syistä (työn kustannukset ja määräajat) ei ole mahdollista testata ohjelmistoa kaikissa olosuhteissa, jotka se voi täyttää käytön aikana, eikä siksi voida torjua kaikkia virheitä: Microsoft Wordin kaltaisilla ohjelmistoilla on 850 komentoa ja 1600 toimintoa , testattavaksi yhteensä yli 500 miljoonassa olosuhteessa.

Korkean tason ohjelmointikielien käyttö , joka helpottaa insinöörin työtä. Kirjoituskäytäntöjen toteuttaminen on muita ennalta ehkäiseviä tekniikoita, joiden tarkoituksena on vähentää virheiden määrää.

Virheenkorjaus on vikojen diagnosointi ja korjaaminen. Aikana verkossa virheenkorjaus , insinööri toimii ohjelmiston askel askeleelta ja jokaisen vaiheen suorittaa joukko tarkastuksia. Aikana post mortem virheenkorjaus , insinööri tutkii ohjelmiston jälkeen tietokone kaatuu.

Kun virhe havaitaan ja korjataan ohjelmiston jakamisen jälkeen, toimittaja toimittaa usein korjaustiedoston , toisin sanoen sarjan, joka korvaa ohjelmiston vialliset osat korjattuilla.

Virheiden seurantajärjestelmä

Insinöörit käyttävät usein virheenseurantajärjestelmää , eli tietokantaohjelmistoa , johon eri virheet ja kullekin tehty työ syötetään:

Ehkäisevät toimenpiteet

Monet ohjelmointikielet sisältävät mekanismeja toimintahäiriöiden tarkistamiseksi. Vahvistamiseen tarvittavat ohjeet lisätään automaattisesti konekoodiin tai ohjelmiston tavukoodiin kääntämisen aikana . Ohjeet voivat aiheuttaa virheenkorjauksen , virheen diagnosoinnin ohjelmiston automaattisen aktivoinnin .

Koodin tarkastelu on altistaa äskettäin kehitetty lähdekoodin kolmas henkilö, joka lukee sen uudestaan ja etsiä vikoja.

Ohjelmistojen testaus on ensimmäinen vaihe virheiden käsittelyssä. Ne koostuvat ohjelmiston käytöstä mahdollisimman monissa olosuhteissa. Testien tarkoituksena on havaita erilaisia ​​ongelmia:

Testit toistetaan useita kertoja edistyneenä ohjelmointina ja korjauksina korjausten vahvistamiseksi ja mahdollisten vikojen regressioiden havaitsemiseksi  : virhe ilmeni toisen virheen virheellisen korjauksen seurauksena. Testaus voidaan automatisoida käyttämällä käyttäjän puolesta toimivia ohjelmistoja. Joskus kehitetään toinen ohjelmisto käytettäväksi testeissä.

Yksikkö testit on käyttää ainutlaatuinen ominaisuus ohjelmiston, jotta voidaan havaita toimintahäiriöt. Kotoutumistesteistä sisältävät käyttämällä erilaisia toimintoja ohjaukseen johdonmukaisuudesta. Validointitestejä ovat käyttää kaikkia ohjelmiston arvioida sen soveltuvuutta edellyttämällä ostajalle.

Yksikkö- ja integraatiotestit suorittaa tyypillisesti insinööri, kun taas validointitestit yleensä ostaja tai hänen edustajansa.

Toinen ennalta ehkäisevä toimenpide virheiden välttämiseksi on muodollinen todiste (tai matemaattinen esittely) ohjelman toiminnasta, yleisellä tavalla. Toisin kuin testi, joka varmistaa vain yhden tietyn käyttötapauksen, tällä todistuksella pyritään varmistamaan, että ohjelma toimii kaikissa tapauksissa käyttöolosuhteista riippumatta. Mutta kaikki muodolliset todentamistekniikat ovat hankalia ja monimutkaisia. Absoluuttisesti mitattuna emme osaa tarkistaa minkään ohjelman moitteetonta toimintaa kaikissa tapauksissa. Toisaalta on olemassa ohjelmistojen luomismenetelmiä, jotka ohjelmiston luomisen aikana asettavat elementtejä seuraamaan kulkemista kullekin välivaiheelle toisaalta ohjelmiston eritelmien tai spesifikaatioiden ja lopullisen ohjelman välillä toisaalta. Näiden valvontaelementtien ansiosta tarkastukset ovat mahdollisia, ja eritelmän noudattamisen rajoitukset voidaan asettaa ja lukita.

Alueilla, joilla vika aiheuttaisi ihmisten kuoleman (esimerkiksi ilmailussa), hankalia ja monimutkaisia ​​menetelmiä käytetään osoittamaan ohjelmistovirheiden puuttuminen ohjelmiston suunnittelun aikana. Näin ollen Pariisin automaattisen metrolinjan 14 ohjausohjelmisto tuotettiin alun perin Z-merkinnällä . Kuitenkin Menetelmä B luotiin lopullinen versio. B-menetelmä on myös pidetään paras keino varmistaa, että tietokoneohjelma vaatimusten mukaista hänen käyttäytymisensä. Menetelmän B käyttö todellakin johtaa (automaattisesti) myös matemaattisesti osoittamaan näin luodun ohjelman vaatimustenmukaisuuden, josta tulee siten määritelmän mukaan osoitettu lause.

Tämän menetelmän monimutkaisuus aiheuttaa kuitenkin sellaista ylimääräistä työtä, että yksi ohjelmoija voi tarvita 100 kertaa pidempään ohjelman luomiseen tällä menetelmällä kuin jos hän olisi luonut saman ohjelman perinteisellä tavalla. Tämä tarkoittaa sitten, että ohjelman luominen tällä menetelmällä maksaa 100 kertaa enemmän. Tämän seurauksena tätä menetelmää käytetään sen tehokkuudesta huolimatta vain hyvin harvoin, ja on monia alueita, joilla viat voivat aiheuttaa ihmiskuolemia ja joissa luomme vain ohjelmia täynnä vikoja. Perinteisellä tavalla ja teemme sitten erittäin tiukat testit poistaa suurimman osan siitä. Niin kauan kuin virheen todennäköisyys aiheuttaa toimintahäiriön, joka tappaa ihmisiä, on pienempi kuin todennäköisyys, että ihmisen virhe tekisi samanlaisen toimintahäiriön, sitä pidetään usein "hyväksyttävänä". (Ja menetelmän B käyttämisestä lisäkustannuksia sen varmistamiseksi, ettei kukaan kuole, ei voida hyväksyä.)

Virheenkorjaus

Saat virheenkorjaus , tai löytää ja bugien insinöörit käyttää ohjelmistoa, debuggeri , sekä vianseurantajärjestelmä .

Virheenseurantajärjestelmää käytetään virheenkorjaustöiden koordinointiin, sitä käytetään kaikkien havaittujen toimintahäiriöiden keräämiseen, suoritettujen syiden ja korjaavien toimenpiteiden kirjaamiseen ja siten korjausten edistymisen seuraamiseen. Syyt voivat olla vikoja, mutta myös konfigurointiparametrien vikoja tai käsittelyvirheitä. Virheiden seurantajärjestelmää käyttävät viallisen ohjelmiston käyttäjät sekä insinöörit tai järjestelmänvalvojat .

Virheenkorjaus antaa mahdollisuuden analysoida ohjelmiston suoritustila tiettynä ajankohtana, käynnissä olevat toiminnot, muistissa olevat tiedot, avoimet tiedostot jne. Joiden verkossa debuggeri on mahdollista keskeyttää ohjelmiston suoritus milloin tahansa, analysoida valtion ja sitten jatkaa käsittelyä.

Post mortem -vianetsintälaitteella on mahdollista analysoida ohjelmiston suoritustila kaatumisen jälkeen. Analyysi tehdään tiedoston perusteella, joka sisältää kopion muistin sisällöstä kaatumisen yhteydessä. Tiedosto nimeltä core dump siitä Unix käyttöjärjestelmän järjestelmissä .

Korjauksen jälkeen

Ohjelmistoversio on tilaa ohjelmiston tiettynä päivänä, mukaan lukien kaikki korjauksia ja parannuksia, jotka on tehty siihen mennessä. Version sanotaan olevan alfa tai beeta, kun se vastaa ohjelmiston tilaa ennen testien keston päättymistä. Tällainen versio todennäköisesti sisältää virheitä, jotka on tällä välin havaittu ja korjattu.

Kun yksi tai useampi vika on korjattu, ne ryhmitellään korjaustiedostoksi , joka sisältää vain korjatut ohjelmistokomponentit. Sitä käyttävät kuka tahansa, joka omistaa kopion ohjelmistosta, tekemään siihen korjauksia ja sovittamaan sen tiettyyn versioon.

Joitakin kuuluisia vikoja

Astronautiassa

Ariane 5 -raketin avajaislennon epäonnistuminen vuonna 1996 johtui raketin avioniikkalaitteiden , Ariane 4 -raketissa useita vuosia menestyksekkäästi käytettyjen laitteiden, virheestä . Laskun aikana tietokonelaite, joka laski raketin sijainnin kiihtyvyytensä mukaan, ei tue Ariane 5: n kiihtyvyyksiä, 5 kertaa voimakkaampaa kuin Ariane 4: n nopeudet. Kokonaisluvun ylitys aiheutti laitteen kaatumisen. Sokeana autopilotti menetti raketin hallinnan, ja turvalaite sai sen tuhoutumaan muutaman sekunnin nousun jälkeen. Se on yksi historian kalleimmista tietokonevirheistä.

Vuonna 1962 Mariner 1 -matka koki samanlaisen tapahtuman.

Lääketieteen alalla

1980-luvulla PDP-11: n ohjaaman sädehoitokoneen , Therac-25: n ohjelmavirheellä oli traagisia seurauksia, potilaat saivat valtavia säteilyannoksia ja ainakin viisi kuoli.

Vuosi 2000 -vika

Vuoden 2000 virhe , jota kutsutaan myös vuosituhannen virheeksi  : yksi tai useampi ohjelmistovirhe, joka manipuloi päivämääriä, aiheuttaa toimintahäiriöitä, kun päivämäärät ovat 31. joulukuuta 1999 jälkeen. Yksi syy on se, että laskelmat tehtiin päivämäärinä. Vain viimeisenä kaksi numeroa vuodessa.

Mahdolliset ongelmat mennessä 31. joulukuuta 1999 lähtien ensin ennakoida Bob Berner vuonna 1971. He yllyttivät merkittävä liikkeelle ohjelmistotuotannon yrityksille muutamaa vuotta ennen määräaikaa ja kokonaiskustannukset kontrolli- ja valvontatyötä. Ennakoivan huollon on arvioidaan olevan yli 600 miljoonaa dollaria.

Vuonna 2002 Michiganin Pyhän Marian armo-sairaalan tietojärjestelmä ilmoitti virheellisesti 8500 tosiasiallisesti elossa olevan potilaan kuoleman lähettämällä kodeilleen laskun ja ilmoituksen kuolemasta sekä ilmoituksen kuolemastaan ​​vakuutusyhtiölle ja Yhdysvaltain sosiaaliturva. Kesti useita viikkoja, ennen kuin nämä kuolemat peruutettiin eri hallintojen kanssa.

Muodollinen lähestymistapa: muodolliset menetelmät

Virhe voi olla joko:

Erittely voi olla vapaamuotoinen ja epämääräinen (esimerkiksi: "ohjelmisto on tekstinkäsittelyohjelma, joka ei aiheuta runtime virheitä"), tai muodollisia ja tarkka ( "sort ( t ) on permutaatio t kuten lajittelu ( t ) tilataan suhde <»), mukaan lukien matemaattisten kaavojen saamisen piste. Olettaen, että määrittely on mahdollisimman kattava, buginen ohjelma on sellainen, jonka toteutus ei täytä määritelmää.

On kyseenalaista, onko olemassa yleismaailmallisia, virheettömiä ja automaattisia menetelmiä, joita sinun tarvitsee vain noudattaa saadakseen selville, onko ohjelma buginen vai ei. Vastaus on ei. Jos tällainen menetelmä olisi olemassa, se olisi mahdollista automatisoida tietokoneella, toisin sanoen analyysiohjelmistolla. Tämän analysaattorin tulisi toimia kaikilla analysoitavilla ohjelmilla, ja sen tulisi esimerkiksi vastata seuraavaan kysymykseen: "Voiko ohjelman lopullinen tila olla virhetila ajon aikana vai onko se välttämättä tila?" Oikea (tai ei- irtisanominen) ”. Ricen lause sanoo kuitenkin, että tähän kysymykseen ei voida vastata äärettömässä valtiojärjestelmässä. Yleisemmin eritelmälle liittyviä kysymyksiä lopullinen tila ohjelma on ratkeamaton , toisin sanoen, että ohjelmisto tai automaattinen menetelmä voi vastata sitä, paitsi kysymyksiä joihin vastaus on aina totta vai aina pidä paikkaansa. Epätosi.

Voidaan vastustaa, että tietokoneet ovat rajallisia tilajärjestelmiä: jokaisella tietokoneella on rajallinen määrä muistia. Hyvin pieniä järjestelmiä lukuun ottamatta tietokoneita tulisi kuitenkin harkita analysoinnissa rajoittamattomina muistijärjestelminä. Tilan rajallisuutta käyttävät analyysitekniikat pyrkivät todellakin enemmän tai vähemmän pyöristetyllä tai optimoidulla tavalla luetteloimaan järjestelmän tilat. Järjestelmässä, jossa on n muistibittiä, on 2 n tilaa; nykyisessä henkilökohtaisessa tietokoneessa n on luokkaa 238 . Siksi voimme nähdä, että kaikki yritykset tilojen luetteloimiseksi on tuomittu epäonnistumiseen.

Virheiden yleisen automaattisen etsinnän mahdottomuus on siis perustavanlaatuinen ongelma eikä nykyisen tekniikan rajoitus.

Kuinka päästä eroon siitä?

Ohjelmistokehitysteollisuus löytää paljon töitä löytääksesi virheitä aiheuttavia ohjelmoijavirheitä.

Virheiden löytäminen ja korjaaminen tai virheenkorjaus on tärkeä osa ohjelmisto- ohjelmointia . Tietokoneiden edelläkävijä Maurice Vincent Wilkes kuvailee saavutuksiaan 1940-luvulla sanomalla, että suurin osa loppuelämästään vietetään virheiden korjaamiseen omissa ohjelmissaan. Kun tietokoneohjelmat muuttuvat yhä monimutkaisemmiksi, virheet yleistyvät ja niitä on vaikea korjata. Joskus ohjelmoijat käyttävät enemmän aikaa ja vaivaa virheiden löytämiseen ja korjaamiseen kuin uuden koodin kirjoittaminen.

Yleensä virheenkorjauksen vaikein osa on löytää virheen aiheuttanut koodin osa. Sen löytäminen on usein helppoa. Debuggereiksi kutsuttuja ohjelmia on olemassa auttamaan ohjelmoijia löytämään virheitä. Jopa virheenkorjaimen avulla virheen löytäminen on usein erittäin vaikea tehtävä.

Yleensä ensimmäinen vaihe virheen löytämisessä on löytää tapa helposti toistaa se. Kun vika on toistettu, ohjelmoija voi käyttää virheenkorjainta tai muuta työkalua tarkkailemaan ohjelman suoritusta tavallisessa yhteydessä ja mahdollisesti etsimään ongelman. Toisaalta virheen toistaminen ei ole aina helppoa. Jotkut johtuvat ohjelmiston syötöstä, jota ohjelmoijan voi olla vaikea toistaa. Muut voivat kadota, kun ohjelma käynnistetään virheenkorjaimessa  ; näitä kutsutaan heisenbugeiksi (viitaten leikillisesti Heisenbergin epävarmuusperiaatteeseen ). Lopuksi, rinnakkaisten ohjelmien (jotka koostuvat useista samanaikaisesti käynnissä olevista moduuleista, esimerkiksi useilla prosessoreilla) virheitä on usein vaikea toistaa, jos ne riippuvat koneen laskelmien tarkasta aikataulusta.

Huumori ja kuuluisia lainauksia, jotka liittyvät virheisiin

Usein vastaus (ja huumorintaju) ohjelmistokehittäjiltä käyttäjille.Vuodesta Murphyn laki soveltaa computing.Pieni virhe ohjelmistossa voi johtaa lukuisiin seurauksiin "lumipallo" -vaikutuksen kautta."Nolla virhe" -tavoite vaatii yleensä hyvin pitkän kehitysajan ohjelmiston odotettuun elinikään verrattuna.

Videopeleissä

Termi vian videopeleissä on jo ensisijainen merkitys virheen oletetaan kurssin kanteen. Virheen lopputulos ei aiheuta samaa epämukavuutta sen intensiteetistä riippuen. Pelaajan kädellä, joka rikkoo seinän FPS: ssä, ei ole samaa haittaa kuin kyvyttömyydellä suorittaa roolipelin päätehtävä .

Virheiden olemassaolo ei tuo vain negatiivisia pisteitä:

Termi vika sisältää muut käsitteet, joita käytetään vähemmän bugin nimen suosion vuoksi . Olisi viisasta nimetä joitain virheitä "unohtamalla" eikä virheenä.

Huomautuksia ja viitteitä

Huomautuksia

  1. Ääntäminen englanniksi ranskaksi transkriptoituna foneemisesti API- standardin mukaisesti .
  2. Suositellaan Ranskassa jonka yleisen valtuuskunnan Ranskan kieli ja kielten Ranska (DGLFLF), Kanadassa ja Belgiassa. Katso terminologia .
  3. Virhe, joka vaikutti prosessorin varhaisiin versioihin.
  4. alku juoni kalvon Brasilia on esimerkki tästä tarinan: hyönteinen aiheuttaa oikosulku kone, muuttaen nimi Tuttle osaksi Buttle  ; tässä vika päivittää byrokratian liialliset piirteet.
  5. Harvinaisempia oikeinkirjoituksia ovat myös virheenkorjaus , virheenkorjaus tai jopa virheenkorjaus .
  6. Katso artikkeli Dokumentoimaton ominaisuus  (sisään) , oletukset lausekkeen alkuperästä.

Viitteet

  1. Edison - Puskas,13. marraskuuta 1878Edison paperit, Edison National Laboratory, US National Park Service, West Orange, NJ, mainittu (in) Thomas Hughes , amerikkalainen Genesis: Vuosisata Keksintösäätiön ja teknologisen Innostus, 1870-1970 , New York, Penguin Books,1990, 529  Sivumäärä ( ISBN  978-0-14-009741-2 , OCLC  20318685 ) , s.  75.
  2. "  bugi  " , Larousse-sanakirja (käytetty 31. tammikuuta 2017 ) .
  3. Sanan ”bug” leksikografiset ja etymologiset määritelmät ranskan tietokoneavusteisessa kassakirjassa , kansallisen teksti- ja leksikaalisten resurssien keskuksen verkkosivustolla
  4. Ranskan kielen rikastuskomissio , "  bogue  " , FranceTerme , kulttuuriministeriö (tarkastettu 31. tammikuuta 2017 ) .
  5. "  bugi  " , Le Grand Dictionnaire terminologique , Office québécois de la langue française (käytetty 26. lokakuuta 2020 ) .
  6. Direction de la langue française, "  Bogue  " , osoitteessa franca.cfwb.be (käytetty 26. lokakuuta 2020 ) .
  7. "  Log Book With Computer Bug  " , National Museum of American History (luettu 10. maaliskuuta 2017 ) .
  8. “  bug  ” , osoitteessa catb.org (käytetty 10. maaliskuuta 2017 ) .
  9. "BYTE.com" (versio 6. tammikuuta 2008 Internet-arkistossa ) ,6. tammikuuta 2008.
  10. (in) "The First Bug" (versio 6. tammikuuta 2008 Internet-arkistossa ) , BYTE.com ,Huhtikuu 1994.
  11. Laurence Gardner, Sormuksen herrojen valtakunta: Graalin etsinnän myytit ja taika ,2012, 383  Sivumäärä ( ISBN  978-2-84454-195-6 ).
  12. (en) NW Heap et ai. , Tietotekniikka ja yhteiskunta: lukija , London Thousand Oaks, Kalifornia, Sage Publications yhdessä avoimen yliopiston kanssa,1995, 436  Sivumäärä ( ISBN  978-0-8039-7981-9 , OCLC  32666928 , online-esitys ).
  13. (in) Guy Hart-Davis, masterointi Microsoft VBA , Hoboken, NJ, Wiley,2005, 2 nd  ed. , 707  Sivumäärä ( ISBN  978-1-4294-6784-1 ja 978-0-471-79064-8 , OCLC  124065945 , lue verkossa ).
  14. (en) Andreas Zeller , miksi ohjelmat epäonnistuvat: Opas järjestelmälliseen virheenkorjaukseen , Amsterdam / Boston, Morgan Kaufmann,2009( ISBN  978-0-12-374515-6 , lue verkossa ).
  15. (in) Jon Shemitz , NET 2,0 Delphi ohjelmoijat , Apress,2006, 544  Sivumäärä ( ISBN  978-1-59059-386-8 , lue verkossa ).
  16. Debasis Pradhan , “  10 parasta syytä miksi ohjelmistossa on virheitä / vikoja!  » (Pääsy 11. kesäkuuta 2019 )
  17. "  Ohjelmistovirheen anatomia - Buggin 'My Life Away  ", osoitteessa blogs.msdn.microsoft.com ( luettu 11. kesäkuuta 2019 )
  18. (in) "  Ohjelmiston testauksen peruskäsitteet  " .
  19. Katso: B-menetelmän toteutus .
  20. "  29 tietokonevikettä, joilla on katastrofaaliset seuraukset  " , Rocket Projectissa ,5. joulukuuta 2016(käytetty 11. kesäkuuta 2019 )
  21. Simson Garfinkel , ”  Historian pahimmat ohjelmistovirheet  ”, langallinen ,8. marraskuuta 2005( ISSN  1059-1028 , luettu verkossa , käytetty 11. kesäkuuta 2019 )
  22. http://sunnyday.mit.edu/papers/therac.pdf
  23. Baura, Gail D. , tekniikan etiikka: teollinen näkökulma , Elsevier Academic Press,2006( ISBN  0-08-045802-5 , 9780080458021 ja 012088531X , OCLC  76822524 , lue verkossa )
  24. (in) "  Pääsy kustannukset vuosituhannen vaihtumiseen  " päälle stanford ,5. kesäkuuta 98.
  25. (in) "  sairaalan elvyttää sen" Dead "Potilaat  " päälle Baselinemag

Katso myös

Bibliografia

Aiheeseen liittyvät artikkelit

Katso myös luokka Nuvola-sovellukset kpager.svg  Ohjelmistokehitys 

Ulkoiset linkit