Cu mulţi ani în urmă, am găsit la biblioteca centrului de Calcul din ASE rapoarte de cercetare de la un centru de cercetări în software din Belgia, unde multe dintre teme vizau corectitudinea programelor. Am început să mă interesez şi am strâns o bogată literatură. Totul era de-a dreptul pitoresc, numai că toate teoriile extrem de elaborate se înţepeneau în a demonstra corectitudinea programului care implementa algoritmul lui Euclid.
Am săpat destul de mult, dar spre dezamăgirea mea, nu am găsit cum se demonstrează corectitudinea unui program scris în FORTRAN sau a unui program scris în limbajul COBOL. Am găcit atunci în revista Acta Informatica un material excelent despre un produs software destinat demonstrării automate a corectitudinii.
Chiar am întrat în corespondenţă cu un mare autor al unei cărţi de corectitudinea programelor, carte de care am făcut rost de la Biblioteca Universităţii Babeş-Bolyai de la Cluj, urmând cu stoicism toate formalităţile căci pe atunci a xeroxa nu era ceea ce este acum când sunt centre de copiere peste tot.
Cu timpul, m-am lămuri că:
- de la teorie la practică drumul este foarte lung,
- numai testarea are rolul de a evidenţia cât de corect este un produs software,
- demonstrarea corectitudinii va rămâne mult timp un vis frumos,
- o abordare realistă trebuie să fie orientată spre chestiuni mai pământene.
Un program este corect sau nu este corect, ar trebui să fie rezultatul în cazul în care printr-un miracol cineva reuşeşte să-i demonstreze corectitudinea.
Realitatea este acum alta.
Un program este testat.
Dacă testarea atinge toate ramurile arborescenţei şi dacă rezultatele date de program sunt identice cu cele din specificaţii, se va spune că programul a fost testat complet şi este de clasă A.
Pe măsură ce pretenţiile de testare scad, se merge spre programe de clasă B, C, D, până se ajunge la programele care nu au fost testate sistematic.
Versiunile BETA sunt programe testat cumva de dezvoltator, dar care sunt date utilizatorilor spre a fi rulate şi aceştia sunt cei care vor identifica erori pe care le vor aduce la cunoştinţa dezvoltatorului, iar acesta le va elimina.
Se îmbină frumosul cu utilul. Utilizatorul primeşte un produs pe care-l utilizează gratis un timp strict delimitat. Dezvoltatorului i se testează de către utilizatorii temporari produsului şi primesc informaţii pentru a-l corecta. Avantajele sunt la amândoi. Mai mult, dezvoltatorul are avantajul că produsul este etstat nu pe exemple ipotetice, ci pe exemple reale, ca în viaţa de zi cu zi.
|