CALITATEA PROGRAMELOR
Conceptul de calitate
Caracteristici de calitate
Complexitatea software
Fiabilitatea software
Portabilitatea
Corectitudinea
Mentenanta
Metrici software
Optimizarea calitatii
Managementul calitatii software
Conceptul de calitate
Programele sunt produse ca orice alt produs.
Un program este creat pentru a fi intrebuintat.
Calitatea unui program este data de:
- totalitatea insusirilor fizice cu care acesta este inzestrat:
- totalitatea trasaturilor tehnice pe care reuseste programatorul sa le implementeze;
- totalitatea insusirilor sociale specifice, care permit ca rezultatele prelucrarilor sa fie preluate de catre utilizatori in vederea rezolvarii de probleme in avantajul lor.
Preogramele se diferentiaza unele de celelalte prin efortul indreptat spre a realiza produse de o calitate anumita.
Sunt programe care dupa o testare foarte atenta permit obtinerea de rezultate in concordanta cu exigentele utilizatorilor si fara riscuri de a avea rezultate incorecte sau incomplete.
In cazul in care programatorii insista asupra algoritmilor intrebuintati se obtin durate de prelucrare cat mai reduse si precizie foarte ridicata a rezultatelor.
Calitatea se planifica, specificand care este nivelul minim acceptat pentru fiecare caracteristica de calitate, in contextul unor costuri care trebuie sa se incadrese intre limite date.
Calitatea se controleaza, pentru a vedea daca au fost respectate retele de fabricatie, daca produsul rezultat indeplineste conditiile impuse si daca programul se lanseaza in executie fara riscuri majore.
Calitatea se asigura, respectand proceduri, urmarind si testand in fiecare etapa daca ceea ce rezulta indeplineste sau nu exigentele definite.
Un program este de calitate daca:
- permite obtinerea rezultatelor cerute de utilizator
- lansat in executie are un comportament previzibil in ceea ce priveste duratele de executie, datele cerute si structura rezultatelor furnizate.
Un program nu este bun daca:
- nu permite obtinerea rezultatelor solicitate
- uneori se obtin rezultatele dorite si de alte ori, nu
- se intrerupe executia programului din cauza datelor de intrare
- se intrerupe executia din cauza impartirilor la zero
- structura rezultatelor afisate este alta decat cea care este asteptata
- distruge fisiere sau inregistrari din bazele de date.
Este foarte important ca inca de la inceput, sa se defineasca notiunile de calitate si programatorii sa fie invatati sa faca diferenta intre un program prost , un program slab si un program foarte bun.
Numai programele bune si foarte bune trebuie sa intre in executie la beneficiari.
Altfel, costurile cu depanarea greveaza eficienta atat la firma producatoare de software cat mai ales la beneficiarul produsului soiftware.
revenire

Caracteristici de calitate
Calitatea unui program seamana foarte mult cu calitatea altor produse.
Programul trebuie sa fie fiabil.
Programul trebuie sa fie mentenabil.
Programul trebuie sa fie utilizabil.
Programul trebuie sa fie portabil.
Programul trebuie sa fie integrabil.
Fiabilitatea este caracteristica de calitate prin care se evidentiaza masura in care programul executa functiile de prelucrare, fara intreruperi accidentale, pentru care a fost realizat, in vederea obtinerii de rezultate in structura si cu corelatiile definite in specificatii.
Mentenabilitatea este capacitatea unui program de a suporta modificari in timp, astfel incat prelucrarile pe care le executa sa fie in concordanta cu cerintele noi ale utilizatorului.
In timp, problema care este rezolvata cu un program sufera modificari in:
- formulele de calcul
- tipurile si volumul datelor de prelucrat
- structura rezultatelor care se afisaza.
Folosind vechiul program, se:
- introduc noi secvente de instructiuni
- elimina secvente de prelucrari care devin nenecesare
- modifica expresii pentru a implementa noi indicatori
- adauga date in articolele din fisiere
- adauga rezultate in datele care se afisaza
- restructureaza interfata pentru a deveni mai prietenoasa.
Integrabilitatea este o caracteristica de calitate foarte importanta si evidentiaza faptul ca programul dispune de acele elemente care ii permit incorporarea in alte programe, pentru a executa si acolo prelucrarile pentru care a fost proiectat la un moment dat.
Subprogramele sunt prin excelenta integrabile. Ele sunt create pentru a fi integrabile.
Listele de parametri sunt elementele de legatura.
Programele celelalte care au fost scrise pentru a executa prelucrari de sine-statatoare, se integreaza prin:
- intermediul fisierelor
- referire ca atare.
Portabilitatea este proprietatea unui program de a fi rulat pe o cat mai mare varietate de calculatoare, cu niveluri de resurse cat mai diferite, fara a suferi modificari importante.
Programele se scriu pentru a fi folosite de un numar cat mai mare de utilizatori.
Portabilitatea presupune ca:
- programul sa fie rulat de calculatorul utilizatorului, asa cum este el
- programul sa ruleze sub sistemul de operare pe care il are utilizatorul
- programul sa execute chiar prelucrarile de care are nevoie utilizatorul
- programul sa foloseasca bazele de date deja existente ale utilizatorului
- programul sa ofere rezultatele chiar in structura si in forma ceruta de fiecare utilizator.
Este preferabil ca programele sa fie customizabile, adica sa contina parametri care prin valori date sa permita sa activari de proceduri care sa ofere utilizatorilor exact ceea ce au nevoie.
Mai mult, daca exista generatoare de programe, prin customizare i se da utilizatorului programul de care are el nevoie si atat.
revenire

Complexitatea software
Complexitatea este un atribut al programelor.
Un program este simplu in acceptiunea unui programator, daca:
- are un numar mic de linii sursa
- utilizeaza o gama restransa de tipuri de instructiuni
- foloseste un numar foarte restrans de tipuri de operanzi
- are un numar foarte mic de apeluri de proceduri
- structura arborescenta asociata are un numar mic de niveluri.
Prin antiteza, programele complexe sunt:
- realizate de echipe numeroase de programatori
- au mii chiar zeci de mii de linii sursa
- utilizeaza structuri de date de tipuri diferite: liste, stive arbori, fisier
- folosesc variabile pointer pe multe niveluri de indirectare
- functiile returneaza tipuri agregate de date
- au structura arborescenta cu foarte multe niveluri
- procedurile sunt structurate ca fiind: de calcul, de sortare, de introducere date, de afisare, de protectie
- rezultatul unui proces de asamblare de proceduri intr-o constructie stufoasa
- implementate numai dupa ce au fost testate procedura cu procedura si dupa aceea subansamblu cu subansamblu, iar in final, intregul program.
Masurarea complexitatii are mai multi indicatori:
- numarul ciclomatic NC=m-n+2 unde m este numarul de arce, n numarul de noduri din graful asociat programului
- masura HALSTEAD care ia in calcul numarul de operanzi si numarul de operatori
- masuri combinate ce tin seama de structura pe niveluri a programului si modul in care sunt construite instructiunile.
Exista software care are ca intrare programe si care afisaza complexitatea acestora.
revenire

Fiabilitatea software
Fiabilitatea este o caracteristica de calitate pentru care s-au efectuat cercetari asidue pentru ca:
- riscul intreruperii executiei unui program cu care se conduce un proces in timp real genereaza pierderi incalculabile
- costurile cu remedierile de software nefiabil lansat in executie la multi beneficiari reduce sever profitul firmei de software.
Fiabilitatea efectiva este data de raportul dintre numarul de rulari de succes supra total rulari.
Fiabilitatea estimata are la baza modele care tin seama de:
- durate de executie
- durate dintre doua rulari consecutive
- intervalul dintre doua rulari intrerupte.
Se fac ipoteze privind probabilitatile de producere a evenimentelor.
Se estimeaza caderile programelor.
Aceste modele au fost preluate din TEORIA MATEMATICA A FIABILITATII.
Mai nou, pentru fiabilitate sunt construite modele care utilizeaza retele neironale si algoritmi genetici.
revenire

Portabilitatea
Pentru portabilitate este construit un indicator care se bazeaza pe:
- efortul necesar de modificare a programului ca sa fie utilizat corect si complet pe calculatorul beneficiarului
- efortul pe care l-a necesitat dezvoltarea respectivului program.
Sunt situatii care arata ca nu se justifica sa se ajusteze un program, intrucat costa mai mult decat sa se realizeze unul nou.
Este corect sa se proiecteze de la inceput programe portabile.
revenire

Corectitudinea
Programul se construieste pentru a rezolva CORECT problema ceruta de utilizator.
Utilizatorul furnizeaza:
- formule de calcul
- restrictii de prelucrare
- exemple de test.
Daca programatorii respecta toate cerintele impuse de beneficiar se zice ca programul realizat este corect.
In matematica exista o teorie completa a demonstrarii corectitudinii programelor.
Coretitudinea este pusa in evidenta si empiric prin derularea de proce4se de testare.
Prograqmul este corect fie daca:
- s-a procedat la demonstrarea corectitudinii folosind teoria matematica
- a fost testat foarte amanuntit si testerii conchid ca au fost epuizate variantele de seturi de date de test.
In cele mai multe cazuri, testarea este partiala si se conchide ca programul este corect, desi el este de fapt partial corect, strict pentru seturi de date similare cu cele pentru care a fost testat.
revenire

Mentenanta
Este capacitatea de a prelua modificari la nivelul datelor, a formulelor de calcul si a rezultatelor.
Un program este mentenabil daca efortul pentru:
- includerea modificarilor este mai mic decat cel necesar realizarii unui program nou
- adaugarile de proceduri pentru a realiza noi prelucrari este mai mare decat cel necesar crearii unui nou program
- schimbarea in structura fisierelor este mai mare decat a scrie un nou program pentru a face exact aceleasi lucruri.
Se scriu programe mentenabile din start.
Programele cele mai mentenabile sunt acelea care sunt scrise de la inceput sa preia ca parametri orice modificare.
Daca se da o formula de calcul:
e=a+b+x+d-f-g+h
si trebuie modificata astfel incat unele adunari devin scaderi, iar scaderile devin uneori adunari, se procedeaza astfel:
- se adauga niste coeficienti c1,c2,...,cn
- se scrie expresia numai cu adunari
- se initializeaza coeficientii cu +1 sau -1 pentru a obtine flexibil ceea ce se doreste fara a mai fi nevoie ca procesul de mentenanta sa insemne modificarea expresiei.
La executie se initializeaza coeficientii c1,c2,...,cn
Daca initializarea se face rar, coeficientii sunt initializati dintr-un fisier.
Mentenanta va insemna modificarea fisierului.
Expresia devine:
e=c[0]*a+c[1]*b+c[2]*x+c[3]*d+c[4]*f+c[5]*g+c[6]*h
Initializarea pentru evaluarea expresiei
e=a+b+x+d-f-g+h
sunt:
c[0]=c[1]=c[2]=c[3]=c[6]=+1
c[4]=c[5]=-1
Orice modificare va fi necesara va fi executata de operatorul care intretine curent programul.
Nu sunt necesare modificari in textul sursa.
revenire

Metrici software
Metricile software sunt seturi de indicatori cu ajutorul carora se masoara nivelul de performanta a programelor.
Lungimea programului este data de numarul de linii sursa.
Fiabilitatea F a programului P este raportul:
F(P)=ns/nt

unde:
ns - numar rulari de succes
nt - numar total rulari ale programului P Se inventariaza indicatorii pentru masurarea caracteristicilor de calitate.
Se observa ca acesti indicatori trebuie sa indeplineasca o serie de cerinte:
- sa nu fie compensatoriu
- sa nu fie catastrofic
- sa fie senzitiv
- sa fie reprezentativ
- sa se puna in corespondenta niveluri ale indicatorilor cu niveluri calitative ale procesului sau fenomenului supus evaluarii.
Indicatorii se clasifica dupa mai multe criterii, dintre care cele mai importante sunt:
- complexitatea ca numar de factori de influenta si numar de tipuri de operatori
- domeniul si codomeniul functiei asociate; sunt indicatorii normati cu codomeniul [0,1]
- limbajele utilizate pentru realizarea de software
- semnificatia asociata:evaluare evolutie, masurare nivel efectiv, prognoza
- mod de culegere date, automat sau manual
- nivelul variabilelor independente: valori intregi, niveluri calitative, domeniu real.
Metricile software se rafineaza.
Metricile software trebuie validate.
Metricile software se implementeaza prin:
- incorporare in standarde
- realizarea de software care se distribuie tuturor celor care doresc sa analizeze calitatea software.
Se construiesc la nivelul companiilor software:
- baze de date pentru programele a caror calitate se analizeaza
- planuri de culegere date privind comportamentul programelor
- inregistrari date culese
- analize comparate pentru a stabili corelatii intre indicatori.
Metricile software isi dovedesc utilitatea atunci sunt implementate cu dorinta de a le folosi in mod real asa cum sunt utilizate tehnicile si instrumentele de dezvoltare software, nu in mod formal, ca asa trebuie.
Reprezentativitatea indicatorilor este data de experienta acumulata si de rezultatele practice obtinute atunci cand unei tendinte i se asociaza un rezultat si influentele asupra altor caracteristici de calitate.
revenire

Optimizarea calitatii
Cresterea calitatea este o tendinta care trebuie urmata.
Cresterea calitatii trebuie analizata de fiecare data strict in raport cu costurile de realizare.
Optimizarea calitatii presupune:
- stabilirea obiectivului
- definirea caracteristicilor care fac obiectul optimizarii
- includerea unor restrictii de costuri.
Pentru a construi algoritmi de optimizare trebuie sa existe multe informatii legate de echipele de programnatori.
Ideal este ca nivelul calitatii sa fie maxim.
Inseamna ca indicatorii de calitate selectati trebuie sa devina 1 daca sunt definiti pe intervalul [0,1].
Asa cum la obtinerea apei pure cheltuielile cresc pe masura ce creste nivelul puritatii, tot astfel se pune problema si in cazul cresterii calitatii.
Maximizarea fiabilitatii presupune includerea de secvente, care ele insele includ nonfiabilitate, ce trebuie atenuata.
Procesul de maximizare trebuie stopat si este mult mai eficient sa se lucreze cu un produs cu nivel de calitate optim in nraport cu nivelul acceptat al cheltuielilor decat sa se lucreze cu un produs cu fiabilitate foarte apropiat de 1, nivelul 1 fiind imposibil de realizat.
revenire

Managementul calitatii software
Managementul calitatii software este o componenta importantaq a ingineriei software.
Presupune dezvoltarea unui compartiment in care:
- calitatea este studiata
- se instruiesc persoanele pentru a realiza software de calitate
- se achizitioneaza instrumente de masurare automata a calitatii
- se implementeaza proceduri de calitate
- se adopta lucru dupa standarde de calitate
- se fac investitii in calitatea software.
Managementul calitatii inseamna un mod de lucru in echipa, in care obiectivul de baza este de a planifica nivelul de calitate pentru produs, proces si de a crea acel context educational favorabil derularii de operatii cu respectarea de proceduri ce reduc riscul aparitiei noncalitatii.
Trebuie construite tabele in care se comsemneaza:
- nivelurile unor variavile independente care caracterizeaza unui lot de programe
- nivelurile caracteristicilor de calitate masurate efectiv la programele din lot
- durate si eforturi financiare legate de obtinerea acelor niveluri de calitate.
Se construiesc modele liniare, de preferinta, pentru a evidentia intensitatea legaturilor dintre factori si calitate, dintre factori si costuri, dintre calitate si costuri.
Aceste modele construite prin incercari succesive stau la baza procesului de optimizare.
Practic, optimizarea calitatii se realizeaza aplicand procedee verificate de crestere a calitatii, simultan cu masurarea cheltuielilor.
In momentul in care nivelul cheltuielilor depaseste un plafon stabilit, se procedeaza la intreruperea procesului de perfectionare a programului, calitatea fiind ajunsa la nivelul maxim.
Se observa caracterul relativ al procesului de optimizare, modul empiric al abordarii.
revenire

revenire