Documente Academic
Documente Profesional
Documente Cultură
Ion Ivan
Mihai Popescu
Rezumat
Introducere
d ( x,y ) = { 0 dac x = y
1 dac x y
d ( x,y ) = | x - y |
Dac se consider:
x = (x1, x2, ..., xn)
y = (y1, y2, ..., yn)
se pot defini urmtoarele tipuri de distane:
n
d ( x,y ) = S ( yi - xi )2
i=1
n
d ( x,y ) = S | xi - yi |
i=1
d ( x,y ) = max | y i - xi |
1i
n
|| x || = kS 2
i=1 | i |
|| x || = max i
1ik
k
|| x || = S | i |
i=1
Dac f(Pi, Pj) 100 rezult c programul Pi este mai lung dect programul Pj.
Dac f(Pi, Pj) < 100 rezult c programul Pi este mai scurt dect programul Pj.
Spre deosebire de mulimea M definit la nceput, n care punctele sunt omogene,
este extrem de dificil de construit mulimi omogene de programe, condiie esenial
pentru realizarea de comparaii care s aib sens.
De aceea, metricile software sunt concepute ca programul s fie raportat prin el
nsui la modele ideale (f(x)=1 sau f(x)=0).
Rolul metriciilor este de a reduce subiectivitatea aprecierii unui program.
Asemeni unitilor de msur din sistemul metric internaional, cei care i propun s
construiasc metrici software trebuie s parcurg urmtoarele etape:
- definirea mrimilor obiective care pot fi msurate fie n textul surs al
programului, fie pe durata utilizrii programului la beneficiar;
- stabilirea metodologiei de nregistrare a mrimilor obiective i de constituire a
bazei de date asociate programului;
- elaborarea modelului sau modelelor n care mrimile obiective stabilite
figureaz ca variabile independente x1, x2, x3, ....xn i n care y, variabila rezultativ, va
releva comportamentul programului sau calitile acestuia;
- evaluarea unui nivel y0 pentru valori date x01 , x02, .....x0n din baza de date a
programului;
- ncadrarea programului n una din cele dou clase (program bun, acceptabil sau
program neacceptabil);
- nregistrarea comportamentului n timp al programului i compararea
rezultatelor obinute cu ceea ce a oferit (prezis) metrica la momentul iniial; n cazul n
care se evideniaz c metrica a prezis un comportament care este confirmat de realitate,
are loc validarea metricii.
Metricile software se definesc pentru caracteristici de calitate (factori de calitate,
aa cum sunt definii n [37]).
n timp, s-a acordat o atenie deosebit complexitii software [17], [35] i
fiabilitii software [19], modelele asociate acestora constituindu-se i n veritabile
metrici.
Dei iniial un program este cotat bun sau nu, n realitate aprecierile sunt mai
nuanate.
Pentru o metric software definit f:P [a,b], a,bR+ i a b se vor identifica mai
multe valori critice (praguri) 1, 2 care permit aceast nuanare a delimitrii, cu a1 2
b.
Intervalul [a, 1] corespunde zonei de respingere a programului, dac f(Pi) [a,
1]. Intervalul (1, 2].corespunde zonei de acceptare cu rezerve a programului Pi, dac
f(Pi) (1, 2]. Intervalul (2,b] corespunde zonei de acceptare cu ncredere a
programului Pi, dac f (Pi) (2,b].
Metodologiile de clasificare a sistemelor de programe stocate n biblioteci publice de
software atribuie apartenena, respectiv la clasele de programe C,B i A dup ncadrarea
n unul din cele trei subintervale. Ceea ce este caracteristic unei metrici este generalitatea,
adic posibilitatea de a aplica formula (modelul) oricrui program n mod neambiguu.
Adic mrimile obiective trebuie att de riguros definite nct oricine are la dispoziie un
program Pi i metrica, s poat obine aceleai rezultate.
De exemplu, dac se consider:
n1 - numr de operanzi distinct;
n2 - numr de operatori distinct;
n3 - numr de definiii tipuri de date
i o msur a complexitii
C=n1 log1 n1 + n2 log2 n2 + n3 log3 n3
i se precizeaz c operanzii sunt:
- constante definite n program care particip n evaluri de expresii;
- variabile elementare;
- variabile de tip derivat,
se obine un grad de obiectivitate acceptabil.
Nu se includ definirile de tip derivat ci numai variabilele care sunt nzestrate cu
proprietile acestor tipuri.
Prin operator se va nelege:
- instruciunile if, for, switch, goto, while, do;
- expresii de atribuire;
- apeluri de funcii;
- evaluri de expresii.
Pentru o definire neambigu se iau n considerare toate elementele unui limbaj de
programare i se stabilesc regulile de contorizare la n1, la n2 sau la n3 a fiecrui element.
Aceasta nseamn c o metric este legat de un limbaj de programare anumit.
Este rezonabil ca definirile pentru diferite limbaje de programare s urmeze aceleai
reguli. n situaia n care, pentru rezolvarea aceleiai probleme, se scriu programe n
limbaje diferite de ctre programatori cu acelai nivel de performan, trebuie ca
diferenele obinute pentru aplicarea metricii s fie nesemnificative. Dac ipotezele de
construire i utilizare a unei metrici sunt judicios concepute exist reale posibiliti de a
utiliza metrica i mai ales de a aprecia programele prin prisma nivelelor date de calculul
respectivei metrici. Este important ca mrimile obiective din care deriv metrica s fie
uor de obinut. O metric costisitor de evaluat este abandonat uor.
Factori
Calitatea software este pus n eviden cu ajutorul unor modele asociate
caracteristicilor: mentenabilitate, corectitudine, portabilitate, fiabilitate, modularitate,
funcionalitate, lizibilitate, reutilizabilitate, liniaritate, robustee, toleran la erori,
interoperabilitate [1], generalitate.
Fiecare caracteristic scoate n eviden anumite nsuiri ale softwareului. Astfel,
fiabilitatea reprezint capacitatea unui program de a fi utilizat fr a genera erori sau
capacitatea de a restabili un context anterior apariiei de erori.
Mentenabilitatea este nsuirea programului de a permite corecii,
introduceri/extrageri de secvene n vedera adaptrii la noi cerine impuse de schimbri
ale formulelor de calcul din algoritmi, a schimbrii dimensiunilor unor cmpuri i
modificrilor de utilizare echipamente.
Portabilitatea este proprietatea unui program de a fi executat pe alte tipuri de
calculatoare sau interacionnd cu alte sisteme de operare.
Corectitudinea pune n eviden msura n care produsul ndeplinete cerinele
definite prin specificaii. Se compar rezultatele (structural, completitudine, precizie)
obinute efectiv cu cele proiectate la realizarea specificaiilor folosind generatoare de
exemple de test. Corectitudinea se pune n eviden fie prin testri, fie prin demonstraie.
Realizarea programului ca ansamblu de module l nzestreaz cu capaciti
specifice de deschidere, de interconectare, asociate caracteristicii de modularitate.
Tehnicile de programare avansate (programarea structurat, programarea orientat
obiect) determin construcii de secvene care uureaz nelegerea semnificaiei prilor
de program att n vederea depanrii, ct mai ales la testarea ce urmeaz unui proces de
dezvoltare software. Programul, ca produs final, este mai mult sau mai puin liniar, strict
dependent de traiectoriile pe care le au sensurile execuiei instruciunilor (apeluri de
funcii, instruciuni de control, instruciuni de salt necondiionat).
La scrierea unei proceduri/funcii se are n vedere posibilitatea reutilizrii n alte
programe ca singur modalitate de a economisi munc vie, cu efecte asupra creterii
productivitii n activitatea de programare.
Reutilizabilitatea este posibil n msura n care procedura/funcia este nzestrat
cu un nivel de generalitate suficient de ridicat. Adic nglobeaz posibiliti multiple de
prelucrare, inclusiv cazuri particulare.
Lizibilitatea este caracteristica programului de a conine suficiente informaii att
prin numele de variabile, etichete, funcii legate de semnificaia lor real, ct i
comentariile lmuritoare care preced secvene de cod.
Tolerana la erori, robusteea sunt nsuiri ale produselor software care au aceeai
semnificaie pe care o ntlnim la produse industriale sau la servicii.
Interoperabilitatea unui program este nsuirea acestuia de a putea fi apelat de alte
programe, de a fi integrat n aplicaii deja n uz sau de a utiliza baze de date existente n
mod direct sau prin elaborare de interfee.
Asemeni unui produs/serviciu industrial (de serie, de mas) utilizabilitatea unui
program revine la uurina de a nelege prelucrrile pe care le execut, facilitile cu care
este nzestart, uurina de introduce date i de a selecta opiuni, uurina de a nva lucrul
cu respectivul program.
Eficiena unui program este pus n eviden prin raportarea consumurilor de
resurse i a cheltuielilor bneti pe care le antreneaz realizarea i utilizarea sa la alte
programe cu specificaii identice sau foarte apropiate.
Metricile software opereaz cu factori - n realitate caracteristici de calitate.
Fiecrei caracteristici i se asociaz modele de forma:
y = f(x1,x2, ....xn),
unde:
x1,x2, ...,xn - sunt variabile exogene;
y - este variabila endogen nivel al caracteristicii de calitate.
Variabilele exogene se construiesc n baza unui sistem de ipoteze de lucru care
difer de la model la model. Sunt cunoscute numeroasele modele de evaluare a
fiabilitii unui program (Musa, Jelinski Moranda, Poisson logaritmic, Goel Okumoto).
De asemenea, pentru evaluarea complexitii software s-au construit numeroase modele
(Halstead, Mc Cabe).
Metricile schimb modul de interpretare, n sensul realizrii unor relaii (modele,
indicatori) care evalueaz nivelul caracteristicii de calitate, urmrind simultan i
posibilitatea de a-l integra n subintervale de acceptabilitate/inacceptabilitate.
Aa se explic faptul c n zona metricilor sofware se operez cu factorii:
eficien, funcionalitate, mentenabilitate, portabilitate, fiabilitate i cu subfactorii asociai
[10], tabelul nr. 1.
TABELUL NR.1
completitudin
ecorectitudine
FUNCIONALITATE securitate
compatibilitat
einteroperabilitate
capacitate de a corecta
MENTENABILITATE expandabilitate
test abilitate
hardware
independen
software
PORTABILITATE instabilitate
reutilizabilitat
e
nondeficien - gradul n care nu
conin erori nedetectabile
FIABILITATE tolerane la erori
disponibilitate
Pentru fiecare factor i pentru subfactorii si se constituie diagrame de legtur
care conduc spre metrici software acceptabile, figura 1.
FACTORSUBFACTORTIP
METRICMETRICduratFuncionalitateCompletitudineVolumlungimeratvolum
{
textCorectitudineTestarenr. reluriSecuritatevolum activripredicie
resurseCompatibilitateEfort adaptaretimp
om/lunproductivitateInteroperabilitatenumrnumr apeluriintegrrivolum interfee
{
{
{
Fig. 1 - Diagrama de legtur factor - subfactor - metrici
[u]
m= = [u]0 = [i]
[u]
unde:
[u] - unitatea de msur a factorului
[i] - elementul neutru n mulimea unitilor de msur [u]
m - nivelul adimensional asociat factorului
n aceast tipologie de metrici software se definesc:
fiabilitatea = numr rulri de succes
numr total rulri
m = (p) ,
(p)
unde:
(p) - un numr de elemente ce caracterizeaz o parte a situaiilor favorabile;
(p) - un numr care corespunde tuturor situaiilor posibile;
p - este un program oarecare aparinnd mulimii P, metrica ne apare ca un raport
de frecvene.
Pentru programelePi i Pj considerate se vor obine nivelele:
(Pi) (Pj)
mi = i mj =
(Pi) (Pj)
Dei programele sunt diferite pornind chiar de la specificaiile dup care au fost
realizate, este posibil ca mi = mj.
Senzitivitatea este proprietatea de a obine la variaii mici ale lui (P) sau (P),
variaii mari ale lui m.
Proprietile rapoartelor pun n eviden c:
(P) - k1
m=
(P) - k2
Clasificarea metricilor
n [9], [12], [23], [34] se descriu diferite tipuri de metrici software:
Metrici cu folosire direct a textului surs
Orice program este stocat sub forma unui fiier. Un fiier are o lungime.
Lungimea se exprim fie ca numr de baii, fie ca numr de articole. n toate cazurile
exist o aproximare grosier a lungimii fiierului ca lungime a programului.
Dac programatorul respect o serie de reguli de scriere a programului (stil de
programare), se poate obine o legtur ntre articol i numr de instruciuni program
surs ntr-un articol.
Designul programului impune pentru lizibilitate o dispersare a secvenelor cu
introducere de blancuri pe linii n textul surs.
Dac fiierul surs se normalizeaz printr-un procedeu mecanic asigurndu-se, pe
ct posibil, un raport constant ntre numrul de instruciuni pe articol, lungimea fiierului
exprim fidel o caracteristic de baz a programului - lungimea.
Programul conine: definiri de variabile, referiri de variabile, instruciuni, apeluri
de funcii, evaluri de expresii. Toate pot fi contorizate. Metricile pe text surs definesc
modaliti de extragere din acesta, prin numrare, a nsuirilor ficrui program n parte.
De exemplu, n [13] pornind de la numrul operanzilor (n1) i de la numrul
operatorilor (n2) se construiesc relaiile (indicatori Halstead):
n = n1 + n2,
unde n reprezint vocabularul utilizat n program.
N = N1 + N2,
unde:
N1 - numrul de operanzi care apar n program;
N2 - numrul de apariii ale operatorilor n program;
N - lungimea observat a programului;
C = n1 log2 n1+ n2 log2 n2,
unde:
C reprezint complexitatea estimat a programului.
Volumul programului este definit prin:
V = N log2 n
Claritatea K a programului se definete prin:
K = V n2 N1
2 n1
Nivelul de implementare L este definit prin:
L = 2 n1
n2N1
Dificultatea D este inversul nivelului de implementare:
D = 1
L
O alt modalitate de a opera pe textul surs corespunde transformrii programului
n volum de operaii exprimat prin cicluri main. Se consider instruciunile executabile
I1, I2,..., In existente ntr-un limbaj de programare i coeficienii C1, C2,..., Cn care
reprezint numrul standard (mediu) de cicluri main asociat fiecrei instruciuni. Pentru
a calcula numrul total de cicluri main ale unui program, se procedeaz la
descompunerea acestuia n instruciuni care formeaz structuri liniare sau n secvene
care alctuiesc structuri neliniare (structuri repetitive i structuri alternative).
Numrul de cicluri ia n considerare tipuri de operanzi, moduri de adresare i
dispuneri n segmente.
Este important identificarea riguroas a operaiilor elementare care se asociaz
unei instruciuni.
De exemplu, n limbajul C/C + + , evaluarea unei expresii are un grad de
generalitate foarte ridicat. n acest context, expresia este i simpla apelare a unei funcii.
Volumul de operaii n acest caz ia n calcul:
- apelul funciei (salt necondiionat spre prima instruciune executabil din
funcie);
- salvrile pe stiv a unor registre;
- salvarea registrului BP;
- manipularea cu operanzii transmii ca parametri n modul de adresare indirect;
- prelucrrile propriu-zise ale funciei;
- restaurare de registre pe stiv;
- salt necondiionat n funcia apelatoare.
Acest volum notat R, va conine subexpresii de forma:
n
R1 =
j1
Cj P j ,
unde:
Cj - nr. mediu de cicluri main pentru instruciunea Ij ;
Pj - frecvena de apariie a instruciunii Ij n structura liniar S1 ;
R1 - numrul total de cicluri main asociat structurii S1 ;
n
R2 = n Cj P j + ,
j1
unde:
n - numrul de repetri ale secvenei S1 la care se includ incrementrile i testele
variabile de control, precum i salturile la secvena de repetat;
- numr constant de cicluri ce corespunde iniializrii variabilei de control i
pregtirii secvenei repetitive;
R2 - numr total de cicluri main asociat unei structuri repetitive.
n m
R3 = P Cj P j + q Cj P j + ,
j1 j1
unde:
P - probabilitatea ca secvena S1 s se execute dup testarea condiiei;
q - probabilitatea ca secvena S2 s se execute dup testarea condiiei;
- volum de cicluri asociat evalurii i testrii unei expresii numite condiie;
R3 - numrul total de cicluri main asociat unei structuri alternative.
Se poate scrie un program care preia pe de o parte textele surs ale programelor
scrise n limbajul C/C + + i pe de alt parte modulele lor obiect corespunztoare. Se
preiau din tabele numrul de cicluri main asociat fiecrei instruciuni asembler i se
determin volumul mediu de cicluri pe instruciune/expresie din limbajul C/C + +.
Odat coeficienii Cj estimai, un alt program calculeaz volumul oricrui
program.
Metrici software cu folosirea grafului asociat programului
Instruciunile dintr-un program se consider noduri n graf. Sensul de parcurgere
(execuie) a instruciunilor reprezint arcele care leag instruciuni.
Expresiile de atribuire, apelurile de funcii, incrementrile/decrementrile
alctuiesc structuri liniare crora le corespund reprezentanta sub form de graf dat n
figura 2.
b)
a)
m = aij bij ,
i= j=
1
unde :
aij - reprezint elemente din matricea coeficienilor definii ca ponderi de
transformare;
bij - reprezint elemente ale matricei numerelor extrase din program.
De exemplu n [34] se consider metric Q Chapin n care:
Pm - intrri cerute pentru prelucrare;
Mp - intrri modificate la execuia modului;
Cm - intrri care controleaz decizia i selecia;
Tm - date care se transmit modulului, sunt utilizate dar nu sunt modificate.
Coeficienii asociai sunt dai n tabelul nr. 2
Tabelul nr. 2
tip de dat coeficient
Pm 1
Mm 2
Cm 3
Tm 0,5
1 b11
2 b21
A= 3 B=
b31
0,5
b41
3 4 6
4 5 7
B= 7 10 15 , unde:
5 7 10
3 4 6
- rapoarte de forma r = , unde:
a - reprezint frecvene de apariie a unui caz
selectat;
b - reprezint totalitatea cazurilor studiate;
- corelaii ntre seriile de date provenind din tabele;
- grupri dup metodele analizei de date a elementelor din tabele i clasificarea
programelor, tipurilor de probleme, erorilor;
- estimarea unor coeficieni pentru modele care pun n eviden legturi ntre
seriile de date din tabele, serii care se vor constitui n nregistrri ale unor variabile n
baze de date. n [29] , [38] sunt prezentate astfel de modele.
Se consider SM = luni/om i KDSI = mii de instruciuni scrise (estimate).
Pornind de la aceste notaii, se iau n considerare diferite proiecte. Pentru proiectele
organice, se consider expresiile:
SM = 2.4 (KDSI) 1.05 i timpul necesar realizrii proiect
TDEV = 2.5 (SM) 0..38
Pentru proiectele mixte, vom avea:
SM = 3.0 (KDSI) 1.12
TDEV = 2.5 (SM) 0.35
Metricile de comportament al programelor permit cunoaterea modului n care un
program rspunde cerinelor efective la utilizator. Dac programul este riguros testat se
obin cu baze de date de la aceast operaie parametrii care nu difer semnificativ fa de
valorile estimale ale coeficinilor metricelor de comportament. Econometria dispune de
numeroase tehnici de estimare i de analiz a calitii coeficienilor. Dei aceste modele
sunt mai des ntrebuinate, fluctuaiile coeficienilor estimai depind de eantionul de
program i beneficiari cu care s-a lucrat.Fiecare dintre metricile prezentate pune n
eviden anumite laturi calitative ale programului. Ele nu se exclud ci se presupun,
completndu-se.
Este necesar s se defineasc metrici de toate tipurile pentru un produs, pentru a
rspunde cerinelor att formulate de programatori, de dealeri, ct i de utilizatorii
programelor. Metricile sunt cu att mai valoroase cu ct sunt mai simple de calculat i cu
ct efortul de a culege datele este mai redus. Este preferabil ca proiectanii, odat cu
lansarea unei metrici software, s ofere i instrumentele pentru culegerea automat a
datelor obiective despre programele care fac obiectul evalurii i s calculeze nivelele
pentru aceste programe.
m m m m m
2 3 4 5
Fig. 7 Arborescena asociat programului P
m (Pi)
acceptat
a
neaccepta
t P
P1 P2 P3 P4
Fig. 8
Concluzii.
Standardul IEEE 1061/1992 (IEEE Standard for a Software Quality Metrics
Methodology) reflect stadiul actual al modului de abordare cantitativ - obiectiv n zona
software.
Exist numeroase lucrri care conin tabele ce sistematizeaz modelele (metricele)
asociate caracteristicilor de calitate, cu prezentarea ipotezelor de lucru i cu descrierea
variabelelor exogene. Problema care se pune acum este aceea de a folosi indicatorii i
mai ales de a cpta ncredere n ei. Metodologia metricii exist. Ceea ce trebuie ns
delimitat, trebuie legat de implementare.
Toate modelele sunt construcii interesante. De la definirea unui model pentru
factor, pn la utilizarea efectiv, este un drum lung, aproape imposibil de parcurs.
Pentru crearea de metrici operaionale este necesar parcurgerea etapelor
urmtoare :
- definirea variabilelor exogene i a modului exact, neambiguu de msurare; prin
exemple de msurare se va pune n eviden caracterul consistent al mulimii de variabile
exogene i faptul c nu exist elemente din program care accidental nu sunt incluse n
model, dei ele ocup un rol important n arhitectura acestuia;
- construirea de software care s msoare automat nivelele variabilelor exogene
din program;
- n toate cazurile de verificare a cestui software se va evidenia c ntr-adevr
nivelele obinute sunt corecte, neafectate de imperfeciunile de definire/ identificare
coninute n modulele acestui software;
- stabilirea de reguli exacte pentru construirea exemplelor de test sau a structurii
( diversitii) cazuisticii reale prin intermediul creia se nregistreaz nivelele de
comportament; n caz contrar, se vor obine nivele ale factorilor care vor fi diferite
semnificativ de nivelele acelorai factori msurate la utilizarea efectiv la beneficiari a
programelor;
- crearea obligativitii ca productorii de software s utilizeze un acelai produs
pentru evaluarea metricii pentru un factor, asigurndu-se n acest fel compatibilitatea i
deci comparabilitatea rezultatelor; schimbarea programului de evaluare a metricii
genereaz diferene tiute fiind fluctuaiile de interpretare i de msurare a variabilelor
exogene prin automatizare.
Exist n ara noastr laboratoare pentru testarea hardware. Literatura din
domeniul calculatoarelor abund de rezulate tehnice ale testelor hardware. Laboratoarele
de certificare calitate software au activitate de pionerat. Problemele de software audit
sunt i ele la nceput. Perseverena de a construi instrumente pentru evaluarea
complexitii, pentru demonstrarea complexitii, pentru demonstrarea corectitudinii sau
pentru crearea bazei de date pentru comportamentul programelor, trebuie s caracterizeze
la nceput aceste laboratoare de testare software. n plus, obligativitatea ca fiecare produs
program s poarte un nsemn care marcheaz faptul c este produs certificat, va schimba
concepia de lansare a noilor programe pe piaa software.
Amploarea procesului de informatizare a societii romneti impune eliminarea
paralelismelor n producia de software, lansarea produciei de programe prin licitaii.
Orice alt abordare va restrnge numrul i complexitatea aplicaiilor, scznd gradul de
cuprindere a acestui proces att de necesar.Numai cuantificrile oferite de utilizarea
curent a metricilor software leag strns costul de calitatea software, singura condiie ce
asigur viabilitatea informaticii aplicate.
BIBLIOGRAFIE
1.Alexandru Balog - Estimarea calitatii sistemelor de programe
Teza de doctorat, ASE, Bucuresti, 1994
2.Basili, R.V., Silby, R.W., Phillips, T. - Metric analysis and data validation across
FORTRAN projects
IEEE Transaction on Software Engineering vol.9, nr.6, 1983
pag. 652-663
18.Kafura, D., Reddy, G.R. - The use of software complexity metrics in software
maintenance
IEEE Transaction on Software Engineering, vol.13, nr.3, 1987
pag.335-343
19.Kafura, D. ,Henry, S. - Software Quality metrics based on interconectivity
Journal of System and Software nr.2, 1981
pag. 121-131
26.Perlis, A., Sayward, F., Shan, M. - Software Metrics: An Analysis and Evaluation
Cambridge MA.MIT Press, 1981
36.Zuse, H., Bollmann, P. - Software metrics : using measurement theory the describe the
properties and scales of static complexity metrics
SIGPLAN Notices, vol.24, 1989
pag. 23-33