Sari la conținut

Eroare de program

De la Wikipedia, enciclopedia liberă
Pentru a raporta o eroare MediaWiki pe Wikipedia, vezi Wikipedia:Bug reports.


O eroare de program este o eroare, defect sau avarie într-un program pentru calculator sau sistem care cauzează acesta să producă un rezultat incorect sau neașteptat, sau să se comporte într-un mod neintenționat. Procesul de căutare și fixare a erorilor este denumit "depanare" și deseori se utilizează tehnici formale sau unelte pentru a identifica erorile, și din anii 1950, unele sisteme de calculator au fost proiectate să evite, detecteze sau auto-corecteze diverse erori de calculator în timpu operării.

Majoritatea erorilor apar din greșeli și erori făcute sau în designul programei sau codul său sursă, sau în componentele și sistemele de operare utilizate de aceste programe. Careva sunt cauzate de compilatoare care produc cod incorect. Unui program care conține multe erori, și/sau erori care interferă serios cu funcționalitatea sa, i se spune că e eronat sau băgos (defectiv). Erorile pot declanșa avarii care ar putea avea efect de undă. Erorile ar putea avea efecte subtile sau cauza programul să se prăbușească sau să înghețe calculatorul. Alte erori se califică ca erori de securitate și ar putea, spre exemplu, să permită unui utilizator cu intenții rele să ocolească controlul accesului pentru a obține privilegii neautorizate.[1]

Unele erori de program au fost legate de dizastre. Erori în codul care a controlat mașina de radioterapie Therac-25 au fost direct responsabile pentru decesele pacienților în anii 1980. în 1996, racheta prototip Ariane 5 de US$1 miliard al Agenției Spațiale Europene a fost distrusă în mai puțin de un minut după lasare datorită unei erori în programul calculatorului de bord de ghidare.[2] În Iunie 1994, un elicopter Chinook al Forțelor Aeriene Regale s-a prăbușit în Mullul Kintyreului, omorând 29 oameni. Aceasta inițial a fost demisă ca eroare a pilotului, dar o investigare de Computer Weekly a convins ancheta Camerei Lorzilor că posibil a fost căuzată de o eroare de program în calculatorul de control al motorului a aeronavei.[3]

în 2002, un studiu comandat de Institutul Național de Standarde și Tehnologie al Departamentului de Comerț al SUA a concluzionat că "erorile de program, sunt așa de prevalente și așa de detrimentale că ele costă economiei SUA un estimat de $59 miliarde anual, sau cam 0.6 procente al produsului intern brut".[4]

Eroare rezultând dintr-o eroare program afișată pe două ecrane la Stația La Croix de Berny în Franța.

Industria tehnologiilor informaționale a depus mare efort în reducerea numărului erorilor.[5][6] Acestea includ:


Erori tipografice

[modificare | modificare sursă]

Erori deseori apar atunci când programatorul face o eroare logică. Inovații diverse în stil de programare și programarea defensivă sunt designate să facă aceste erori mai puțin probabile, sau mai ușor de descoperit. Unele greșeli tipografice, mai ales al simboalelor sau a operatorilor logici/matematici, permit programului să opereze incorect, pe când alte ca un simbol care lipsește sau un nume pronunțat greșit ar face posibil prevenirea operării programului. Limbajele compilate pot dezvălui unele greșeli de tipar când codul sursă e compilat.

Metodologii de Dezvoltare

[modificare | modificare sursă]

Mai multe scheme asistă în gestionarea activității programatorului încât mai puține erori sunt produse. Ingineria programelor (care la fel adresează probleme de design al programelor) aplică multe tehnici ca să prevină defecte. Spre examplu, specificațiile de program formale precizează comportamentul exact al programelor așa că e posibil de eliminat erorile de design. Din nefericire, specificațiile formale sunt inpractice pentru orice in afară de cele mai scurte programe, din cauza exploziei combinatoriale a problemei și nedeterminismului.

Istoria de erori tipică (datele proiectului GNU Classpath). O eroare nouă trimisă de utilizator e unconfirmed(neconfirmată). Odată ce a fost reprodusă de un dezvoltator, este eroare confirmed(confirmată). Erorile confirmate după aceasta sunt fixed(fixate). Erorile care aparțin altor categorii (nereproductibile, nu vor fi fixate, etc.) deseori sunt în minoritate

Căutarea și fixarea erorilor, sau depanarea, este o parte majoră a programării. Maurice Wilkes, un pioner al programării timpuriu, a descris realizarea sa din sfârșitul anilor 1940 că mult din restul vieții sale va fi cheltuit găsind greșeli în programele lui proprii.[7]

Deseori, cea mai grea parte a depanării îi găsirea erorii. Îndată ce e găsită, corectarea ei de regulă este relativ ușoară. Programele cunoscute ca depanatoare ajută programatorii să localizeze erori prin executarea codului linie după linie, privind valorile variabilelor, și alte funcții de observare a comportamentului programului. Fără un depanator, codul poate fi adăugat așa ca mesajele sau valorile să fie scrise în o consolă sau o fereastră sau fișier de logare pentru a trasa execuția programului sau a arăta valorile.

Chiar și, cu ajutorul depanatorului, locarea erorilor este un fel de artă. Nu este rar pentru fixul unei erori într-o secțiune a programului sa cauzeze eșecuri în secțiuni complet diferite, în așa fel făcânt deosebit de greu trasarea (spre exemplu, o eroare în rutina de redare grafică cauzând rutina I/I a fișierului să cadă), într-o parte a sistemului aparent fără legătură.

Uneori, o eroare nu este un defect isolat, dar reprezintă o eroare de gândire sau planificare din partea programatorului. Așa erori logice necesită o secțiune a programului să fie revizuită sau rescrisă. Ca parte de revizuire a codului, pășirea prin cod și imaginarea sau transcrierea procesului de execuție deseori poate găsi erori fără necesitatea de a rula programul și de a le reproduce.

Mai tipic, primul pas în locarea erorii este reproducerea ei sigură. Din moment ce eroarea e reproductibilă, programatorul ar putea folosi un depanator sau altă unealtă în timp ce reproduce eroarea ca să găsească punctul în care programul s-a dus hăisa[necesită citare].

Volumul și tipul de prejudicii o eroare de program poate să cauzeze în mod natural afectează luarea de decizii, procesele și polițele în privința calității programelor. În așa aplicații ca zborul spațial uman sau siguranța auto, deoarece defectele programelor au potențialul să cauzeze vătămări umane sau chiar moartea, așa programe vor avea mult mai multă scrutinitate și control al calității ca, spre exemplu, un sit pentru cumpărături în rețea. În aplicații ca sfera bancară, unde defectele program au potențialul să cauzeze serioase prejudicii financiare băncii sau clienților săi, controlul calității este la fel mai important decât, să zicem, într-o aplicație de editare foto.

Erori bine cunoscute

[modificare | modificare sursă]

Un număr de erori de program au devenit bine cunoscute, deseori din cauza severității sale: example includ variate prăbușiri al aeronavelor spațiale și militare. Posibil cea mai renumită eroare este problema anului 2000, mai cunoscută ca eroarea Y2K în engleză, în care s-a temut că colapsul economic mondial s-ar întâmpla la începutul anului 2000 ca rezultat al calculatoarelor să creadă thinking că era anul 1900. (În fine , nici o problemă majoră nu a avut loc.) O eroare renumită era disrupția tranzacționării cu acțiuni din 2012 care a implicat incompatibilitatea dintre IPA(API în engleză)-ul vechi și IPA-ul nou.

În cultura populară

[modificare | modificare sursă]
  • În ambele romanul 2001: O odisee spațială din 1968 și filmul corespunzător din 1968 2001: O odisee spațială, calculatorul de bord al corabiei spațiale, HAL 9000, încearcă să ucidă toți membrii echipajului său. În romanul continuare din 1982, 2010: A doua odisee, și filmul care îl acompaniază din 1984, 2010, revelația e că această acțiune a fost cauzată de aceia ca calculatorul a fost programat cu doua obiective conflictuale: să dezvăluie complet toate informațiile sale, și să țină scopul adevăraț al zborului în secret de la echipaj; acest conflict cauzează HAL să devină paranoid și eventual omicidal.
  • În versiunea engleză al cântecului formației Nena din 1983 99 Luftballons (99 Baloane Roșii) ca rezultat a unei "greșeli în program", o lansare a unui grup de 99 baloane roșii e confundat cu o lansare de rachete nucleare al inamicului, necesitând o lansare răspuns echivalentă, rezultând într-o catastrofă.
  • In comedia americană din anul 1999 Office Space, trei angajați încearcă să expluateze preocuparea companiei lor cu fixarea erorii de calculator a anului 2000 prin infectarea sistemului de calculatoare al companiei cu un virus care trimite bănuți rotunjiți către un cont bancar separat. Planul crează probleme încât însăși virusul are o proprie eroare, care trimite prematur mari sume de bani în cont.
  • Romanul din anul 2004 The Bug, de Ellen Ullman, este despre încercarea programatorului să găsească o eroare eluzivă într-o aplicație de bază de date.[8]
  • Filmul canadian din 2008 Control Alt Delete este despre un programator la sfârșitul anului 1999 care se chinuie să fixeze erori la compania sa relatate de problema anului 2000.


  1. ^ Mittal, Varun; Aditya, Shivam (). „Recent Developments in the Field of Bug Fixing”. Procedia Computer Science. International Conference on Computer, Communication and Convergence (ICCC 2015) (în engleză). 48: 288–297. doi:10.1016/j.procs.2015.04.184Accesibil gratuit. ISSN 1877-0509. 
  2. ^ „Ariane 501 - Presentation of Inquiry Board report”. www.esa.int (în engleză). Accesat în . 
  3. ^ Prof. Simon Rogerson. „The Chinook Helicopter Disaster”. Ccsr.cse.dmu.ac.uk. Arhivat din original la . Accesat în . 
  4. ^ „Software bugs cost US economy dear”. . Arhivat din original la . Accesat în . 
  5. ^ Huizinga, Dorota; Kolawa, Adam (). Automated Defect Prevention: Best Practices in Software Management. Wiley-IEEE Computer Society Press. p. 426. ISBN 978-0-470-04212-0. Arhivat din original la . 
  6. ^ McDonald, Marc; Musson, Robert; Smith, Ross (). The Practical Guide to Defect PreventionNecesită înregistrare gratuită. Microsoft Press. p. 480. ISBN 978-0-7356-2253-1. 
  7. ^ Maurice Wilkes Quotes
  8. ^ Ullman, Ellen (). The Bug. Picador. ISBN 978-1-250-00249-5. 


Legături externe

[modificare | modificare sursă]