Program - conform GOST 19781-90 - date destinate managementului componentelor specifice ale sistemului de procesare a informației în vederea implementării unui anumit algoritm. În consecință, potrivit lui Thayer, programul are proprietatea de fiabilitate în măsura în care este capabil să îndeplinească în mod satisfăcător funcțiile pentru care este destinat. Fiabilitatea software-ului poate fi definită ca o proprietate a programului, care este exprimată în performanța funcțiilor specificate în condițiile de operare specificate și pe un computer dat.
Ce înseamnă că programul nu își îndeplinește funcțiile? Ce este o eroare în program? Faptul este că diferiți oameni înțeleg diferit ce este un bug în software-ul.
sistem de detectare timpurie a rachetelor balistice de rachete balistice sistem de avertizare trebuie să respecte obiectele în mișcare spre SUA, iar în cazul în care nu a fost identificat obiectul, începe o serie de măsuri de protecție - de la încercarea de a stabili o legătură cu obiectul de a intercepta și distruge. Una dintre primele versiuni ale sistemului au confundat luna în creștere peste orizontul proiectilului, zboară peste emisfera nordică. Este o greșeală? Din punctul de vedere al utilizatorului (Departamentul Apărării al SUA) - da. Din punctul de vedere al dezvoltatorului sistemului - poate că nu. Dezvoltatorul poate insista că, în conformitate cu specificațiile acțiunii de protecție care urmează să fie inițiată în ceea ce privește orice obiect în mișcare care apare deasupra orizontului și nu este identificat ca un avion liniștit.
Software-ul conține o eroare dacă:
• comportamentul său nu respectă specificațiile.
Dezavantaje: se presupune implicit că specificațiile sunt corecte. Aceasta, dacă este corectă, este rară; pregătirea specificațiilor este una dintre principalele surse de eroare. Dacă comportamentul produsului software nu respectă specificațiile sale, probabil există o eroare. Cu toate acestea, dacă sistemul se comportă în conformitate cu specificațiile, nu putem spune că nu conține erori.
· Comportamentul său nu corespunde specificațiilor atunci când este utilizat în limitele de proiectare. Această definiție este chiar mai rea decât prima. Dacă sistemul este folosit accidental într-o situație neintenționată, comportamentul acestuia ar trebui să rămână rezonabil. Dacă nu este, conține o eroare. De exemplu, sistemul de control al traficului aerian, conform specificațiilor, trebuie să controleze mișcarea a până la 200 de aeronave la un moment dat. Dar odată, în zonă au apărut 201 de aeronave. În cazul în care comportamentul sistemului este nerezonabil - de exemplu, ea a uitat despre unul dintre avioanele sau nu, sistemul conține o eroare, deși, și este utilizat în afara limitelor stabilite de proiectare.
· Software-ul nu se comportă în conformitate cu documentația oficială și cu publicațiile trimise utilizatorului.
Și dacă sunt incluse erori în program și în publicații? Sau dacă manualul descrie numai lucrul așteptat și planificat cu sistemul. De exemplu, este scris: "Pentru a obține ceva, faceți clic pe o singură dată". Să presupunem că un utilizator apasă accidental ceva de două ori și sistemul eșuează, deoarece dezvoltatorii nu au oferit o astfel de situație. Sistemul conține, evident, o eroare, dar se comportă în conformitate cu publicațiile.
· Sistemul nu este capabil să acționeze în conformitate cu contractul inițial și cu lista cerințelor utilizatorilor. Această declarație nu este, de asemenea, lipsită de dezavantajele acesteia, deoarece cerințele scrise ale utilizatorului sunt rareori suficient de detaliate pentru a descrie comportamentul dorit al software-ului în toate circumstanțele posibile.
Definiția finală: Există o eroare în software-ul dacă nu face ceea ce se așteaptă în mod rezonabil de la utilizator. Eșecul de software este o manifestare a unei erori în acesta.
Erori în software-ul sunt toate discrepanțe posibile între caracteristicile demonstrate ale calității sale și cerințele prescrise și, uneori, așteptările utilizatorilor.
În literatura de limbă engleză se folosesc mai mulți termeni, adesea tradus ca "greșeală" în limba rusă.
· Defect - cea mai frecventă încălcare a oricăror cerințe sau așteptări, nu sunt neapărat manifestate în exterior (se referă la defecte și încălcări ale standardelor de codificare, lipsa de flexibilitate a sistemului și așa mai departe.)
· Eșecul - încălcarea cerințelor, manifestat într-un scenariu real de software, este mai mult manifestarea unei erori
· Defecțiune - o eroare în codul programului care cauzează încălcări ale cerințelor atunci când lucrează (eșecuri), apoi locul care urmează să fie stabilit. Deși acest concept este folosit destul de des, în general nu este destul de clar, deoarece pentru a remedia încălcarea, puteți repara programul în mai multe locuri. Ceea ce trebuie corectat depinde de condițiile suplimentare, a căror îndeplinire vrem să asigurăm în același timp.
· Eroare - folosită în două sensuri.
Prima este o greșeală în modelul mental al programatorului, care îl face să facă erori în cod (defectele).
Al doilea înțeles este valoarea incorectă a datelor (ieșire sau internă), care apar atunci când există erori în program.
Software-ul, precum și defecțiunile tehnice, sunt exprimate în pierderea performanței de către obiect. În ciuda similarității externe a manifestărilor defecțiunilor echipamentelor și a defectelor software, mecanismele de formare a acestora sunt de natură diferită. Pentru programele fundamentale este ideea defectelor de proiectare, iar teoria fiabilității tehnologiei ia în considerare defecțiunile datorate uzurii, îmbătrânirii sau altor cauze care modifică caracteristicile dispozitivelor în timp. Eșecul software-ului se datorează neconcordanței software a sarcinilor atribuite. Nonconformitatea poate apărea din două motive: dezvoltatorii programului au încălcat specificațiile - cerințele tehnice pentru program sau specificația este inexactă sau incompletă.