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 urmãtoarele tipuri de distanţe:
n
d ( x,y ) = S ( yi - xi )2
i=1
n
d ( x,y ) = S | xi - yi |
i=1
d ( x,y ) = max | yi - xi |
1≤ i≤
n
k 2
|| x || = S ε
i=1 i
|| x || = max | ε i |
1≤ i≤ k
k
|| x || = S | ε i |
i=1
Dacã f(Pi, Pj) > 100 rezultã cã programul Pi este mai lung decât programul Pj.
Dacã f(Pi, Pj) < 100 rezultã cã programul Pi este mai scurt decât programul Pj.
Spre deosebire de mulţimea M definitã la început, în care punctele sunt omogene,
este extrem de dificil de construit mulţimi omogene de programe, condiţie esenţialã
pentru realizarea de comparaţii care sã aibã sens.
De aceea, metricile software sunt concepute ca programul sã fie raportat prin el
însuşi la modele ideale (f(x)=1 sau f(x)=0).
Rolul metriciilor este de a reduce subiectivitatea aprecierii unui program.
Asemeni unitãţilor de mãsurã din sistemul metric internaţional, cei care îşi propun sã
construiascã metrici software trebuie sã parcurgã urmãtoarele etape:
- definirea mãrimilor obiective care pot fi mãsurate fie în textul sursã al
programului, fie pe durata utilizãrii programului la beneficiar;
- stabilirea metodologiei de înregistrare a mãrimilor obiective şi de constituire a
bazei de date asociate programului;
- elaborarea modelului sau modelelor în care mãrimile obiective stabilite
figureazã ca variabile independente x1, x2, x3, ....xn şi în care y, variabila rezultativã, va
releva comportamentul programului sau calitãţile 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 obţinute cu ceea ce a oferit (prezis) metrica la momentul iniţial; în cazul în
care se evidenţiazã 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,
aşa cum sunt definiţi în [37]).
În timp, s-a acordat o atenţie deosebitã complexitãţii software [17], [35] şi
fiabilitãţii software [19], modelele asociate acestora constituindu-se şi în veritabile
metrici.
Deşi iniţial un program este cotat bun sau nu, în realitate aprecierile sunt mai
nuanţate.
Pentru o metricã software definitã f:P →[a,b], a,b∈R+ şi a ≤ b se vor identifica
mai multe valori critice (praguri) α 1, α 2 care permit aceastã nuanţare a delimitãrii, cu
a<α 1< α 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 apartenenţa, 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) oricãrui program în mod neambiguu.
Adicã mãrimile obiective trebuie atât de riguros definite încât oricine are la dispoziţie un
program Pi şi metrica, sã poatã obţine aceleaşi rezultate.
De exemplu, dacã se considerã:
n1 - numãr de operanzi distinct;
n2 - numãr de operatori distinct;
n3 - numãr de definiţii tipuri de date
şi o mãsurã a complexitãţii
C=n1 log1 n1 + n2 log2 n2 + n3 log3 n3
şi se precizeazã cã operanzii sunt:
- constante definite în program care participã în evaluãri de expresii;
- variabile elementare;
- variabile de tip derivat,
se obţine un grad de obiectivitate acceptabil.
Nu se includ definirile de tip derivat ci numai variabilele care sunt înzestrate cu
proprietãţile acestor tipuri.
Prin operator se va înţelege:
- instrucţiunile if, for, switch, goto, while, do;
- expresii de atribuire;
- apeluri de funcţii;
- evaluãri 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 fiecãrui 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 aceleaşi
reguli. În situaţia în care, pentru rezolvarea aceleiaşi probleme, se scriu programe în
limbaje diferite de cãtre programatori cu acelaşi nivel de performanţã, trebuie ca
diferenţele obţinute pentru aplicarea metricii sã fie nesemnificative. Dacã ipotezele de
construire şi utilizare a unei metrici sunt judicios concepute existã reale posibilitãţi de a
utiliza metrica şi mai ales de a aprecia programele prin prisma nivelelor date de calculul
respectivei metrici. Este important ca mãrimile obiective din care derivã metrica sã fie
uşor de obţinut. O metricã costisitor de evaluat este abandonatã uşor.
Factori
Calitatea software este pusã în evidenţã cu ajutorul unor modele asociate
caracteristicilor: mentenabilitate, corectitudine, portabilitate, fiabilitate, modularitate,
funcţionalitate, lizibilitate, reutilizabilitate, liniaritate, robusteţe, toleranţã la erori,
interoperabilitate [1], generalitate.
Fiecare caracteristicã scoate în evidenţã anumite însuşiri ale softwareului. Astfel,
fiabilitatea reprezintã capacitatea unui program de a fi utilizat fãrã a genera erori sau
capacitatea de a restabili un context anterior apariţiei de erori.
Mentenabilitatea este însuşirea programului de a permite corecţii,
introduceri/extrageri de secvenţe în vedera adaptãrii la noi cerinţe impuse de schimbãri
ale formulelor de calcul din algoritmi, a schimbãrii dimensiunilor unor câmpuri şi
modificãrilor de utilizare echipamente.
Portabilitatea este proprietatea unui program de a fi executat pe alte tipuri de
calculatoare sau interacţionând cu alte sisteme de operare.
Corectitudinea pune în evidenţã mãsura în care produsul îndeplineşte cerinţele
definite prin specificaţii. Se comparã rezultatele (structural, completitudine, precizie)
obţinute efectiv cu cele proiectate la realizarea specificaţiilor folosind generatoare de
exemple de test. Corectitudinea se pune în evidenţã fie prin testãri, fie prin demonstraţie.
Realizarea programului ca ansamblu de module îl înzestreazã cu capacitãţi
specifice de deschidere, de interconectare, asociate caracteristicii de modularitate.
Tehnicile de programare avansate (programarea structuratã, programarea orientatã
obiect) determinã construcţii de secvenţe care uşureazã înţelegerea semnificaţiei pãrţilor
de program atât în vederea depanãrii, cât mai ales la testarea ce urmeazã unui proces de
dezvoltare software. Programul, ca produs final, este mai mult sau mai puţin liniar, strict
dependent de traiectoriile pe care le au sensurile execuţiei instrucţiunilor (apeluri de
funcţii, instrucţiuni de control, instrucţiuni de salt necondiţionat).
La scrierea unei proceduri/funcţii se are în vedere posibilitatea reutilizãrii în alte
programe ca singurã modalitate de a economisi muncã vie, cu efecte asupra creşterii
productivitãţii în activitatea de programare.
Reutilizabilitatea este posibilã în mãsura în care procedura/funcţia este înzestratã
cu un nivel de generalitate suficient de ridicat. Adicã înglobeazã posibilitãţi multiple de
prelucrare, inclusiv cazuri particulare.
Lizibilitatea este caracteristica programului de a conţine suficiente informaţii atât
prin numele de variabile, etichete, funcţii legate de semnificaţia lor realã, cât şi
comentariile lãmuritoare care preced secvenţe de cod.
Toleranţa la erori, robusteţea sunt însuşiri ale produselor software care au aceeaşi
semnificaţie pe care o întâlnim la produse industriale sau la servicii.
Interoperabilitatea unui program este însuşirea acestuia de a putea fi apelat de alte
programe, de a fi integrat în aplicaţii deja în uz sau de a utiliza baze de date existente în
mod direct sau prin elaborare de interfeţe.
Asemeni unui produs/serviciu industrial (de serie, de masã) utilizabilitatea unui
program revine la uşurinţa de a înţelege prelucrãrile pe care le executã, facilitãţile cu care
este înzestart, uşurinţa de introduce date şi de a selecta opţiuni, uşurinţa de a învãţa lucrul
cu respectivul program.
Eficienţa unui program este pusã în evidenţã prin raportarea consumurilor de
resurse şi a cheltuielilor bãneşti pe care le antreneazã realizarea şi utilizarea sa la alte
programe cu specificaţii identice sau foarte apropiate.
Metricile software opereazã cu factori - în realitate caracteristici de calitate.
Fiecãrei 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
fiabilitãţii unui program (Musa, Jelinski Moranda, Poisson logaritmic, Goel Okumoto).
De asemenea, pentru evaluarea complexitãţii software s-au construit numeroase modele
(Halstead, Mc Cabe).
Metricile schimbã modul de interpretare, în sensul realizãrii unor relaţii (modele,
indicatori) care evalueazã nivelul caracteristicii de calitate, urmãrind simultan şi
posibilitatea de a-l integra în subintervale de acceptabilitate/inacceptabilitate.
Aşa se explicã faptul cã în zona metricilor sofware se operezã cu factorii:
eficienţã, funcţionalitate, mentenabilitate, portabilitate, fiabilitate şi cu subfactorii asociaţi
[10], tabelul nr. 1.
{
FACTORSUBFACTORTIP
{
METRICÃMETRICÃduratãFuncþionalitateCompletitudineVolumlungimeratãvolu
m textCorectitudineTestarenr. reluãriSecuritatevolum activãripredicþie
resurseCompatibilitateEfort adaptaretimp
{
om/lunãproductivitateInteroperabilitatenumãrnumãr apeluriintegrãrivolum interfeþe
{
Fig. 1 - Diagrama de legãturã factor - subfactor - metrici
[u]
m= = [u]0 = [i]
[u]
unde:
[u] - unitatea de mãsurã a factorului
[i] - elementul neutru în mulţimea unitãţilor de mãsurã [u]
m - nivelul adimensional asociat factorului
În aceastã tipologie de metrici software se definesc:
m = α (p) ,
β (p)
unde:
α (p) - un numãr de elemente ce caracterizeazã o parte a situaţiilor favorabile;
β (p) - un numãr care corespunde tuturor situaţiilor posibile;
p - este un program oarecare aparţinând mulţimii P, metrica ne apare ca un raport
de frecvenţe.
Pentru programelePi şi Pj considerate se vor obţine nivelele:
α (Pi) α (Pj)
mi = şi mj =
β (Pi) β (Pj)
Deşi programele sunt diferite pornind chiar de la specificaţiile dupã care au fost
realizate, este posibil ca mi = mj.
Senzitivitatea este proprietatea de a obţine la variaţii mici ale lui α (P) sau β (P),
variaţii mari ale lui m.
Proprietãţile 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 fişier. Un fişier are o lungime.
Lungimea se exprimã fie ca numãr de baiţi, fie ca numãr de articole. În toate cazurile
existã o aproximare grosierã a lungimii fişierului ca lungime a programului.
Dacã programatorul respectã o serie de reguli de scriere a programului (stil de
programare), se poate obţine o legãturã între articol şi numãr de instrucţiuni pãrogram
sursã într-un articol.
Designul programului impune pentru lizibilitate o dispersare a secvenţelor cu
introducere de blancuri pe linii în textul sursã.
Dacã fişierul sursã se normalizeazã printr-un procedeu mecanic asigurându-se, pe
cât posibil, un raport constant între numãrul de instrucţiuni pe articol, lungimea fişierului
exprimã fidel o caracteristicã de bazã a programului - lungimea.
Programul conţine: definiri de variabile, referiri de variabile, instrucţiuni, apeluri
de funcţii, evaluãri de expresii. Toate pot fi contorizate. Metricile pe text sursã definesc
modalitãţi de extragere din acesta, prin numãrare, a însuşirilor ficãrui program în parte.
De exemplu, în [13] pornind de la numãrul operanzilor (n1) şi de la numãrul
operatorilor (n2) se construiesc relaţiile (indicatori Halstead):
• n = n1 + n2,
unde n reprezintã vocabularul utilizat în program.
• N = N1 + N2,
unde:
N1 - numãrul de operanzi care apar în program;
N2 - numãrul de apariţii 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 defineşte 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 transformãrii programului
în volum de operaţii exprimat prin cicluri maşinã. Se considerã instrucţiunile executabile
I1, I2,..., In existente într-un limbaj de programare şi coeficienţii C1, C2,..., Cn care
reprezintã numãrul standard (mediu) de cicluri maşinã asociat fiecãrei instrucţiuni. Pentru
a calcula numãrul total de cicluri maşinã ale unui program, se procedeazã la
descompunerea acestuia în instrucţiuni care formeazã structuri liniare sau în secvenţe
care alcãtuiesc structuri neliniare (structuri repetitive şi structuri alternative).
Numãrul de cicluri ia în considerare tipuri de operanzi, moduri de adresare şi
dispuneri în segmente.
Este importantã identificarea riguroasã a operaţiilor elementare care se asociazã
unei instrucţiuni.
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 funcţii.
Volumul de operaţii în acest caz ia în calcul:
- apelul funcţiei (salt necondiţionat spre prima instrucţiune executabilã din
funcţie);
- salvãrile pe stivã a unor registre;
- salvarea registrului BP;
- manipularea cu operanzii transmişi ca parametri în modul de adresare indirectã;
- prelucrãrile propriu-zise ale funcţiei;
- restaurare de registre pe stivã;
- salt necondiţionat în funcţia apelatoare.
Acest volum notat R, va conţine subexpresii de forma:
n
R1 = ∑
j=1
Cj P j ,
unde:
Cj - nr. mediu de cicluri maşinã pentru instrucţiunea Ij ;
Pj - frecvenţa de apariţie a instrucţiunii Ij în structura liniarã S1 ;
R1 - numãrul total de cicluri maşinã asociat structurii S1 ;
n
R2 = n ∑ Cj P j + α ,
j=1
unde:
n - numãrul de repetãri ale secvenţei S1 la care se includ incrementãrile şi testele
variabile de control, precum şi salturile la secvenţa de repetat;
α - numãr constant de cicluri ce corespunde iniţializãrii variabilei de control şi
pregãtirii secvenţei repetitive;
R2 - numãr total de cicluri maşinã asociat unei structuri repetitive.
n m
R3 = P ∑ Cj P j + q ∑ Cj P j + β ,
j=1 j=1
unde:
P - probabilitatea ca secvenţa S1 sã se execute dupã testarea condiţiei;
q - probabilitatea ca secvenţa S2 sã se execute dupã testarea condiţiei;
β - volum de cicluri asociat evaluãrii şi testãrii unei expresii numite condiţie;
R3 - numãrul total de cicluri maşinã 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 corespunzãtoare. Se
preiau din tabele numãrul de cicluri maşinã asociat fiecãrei instrucţiuni asembler şi se
determinã volumul mediu de cicluri pe instrucţiune/expresie din limbajul C/C + +.
Odatã coeficienţii Cj estimaţi, un alt program calculeazã volumul oricãrui
program.
Metrici software cu folosirea grafului asociat programului
Instrucţiunile dintr-un program se considerã noduri în graf. Sensul de parcurgere
(execuţie) a instrucţiunilor reprezintã arcele care leagã instrucţiuni.
Expresiile de atribuire, apelurile de funcţii, incrementãrile/decrementãrile
alcãtuiesc structuri liniare cãrora 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 coeficienţilor definiţi 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 - intrãri cerute pentru prelucrare;
Mp - intrãri modificate la execuţia modului;
Cm - intrãri care controleazã decizia şi selecţia;
Tm - date care se transmit modulului, sunt utilizate dar nu sunt modificate.
Coeficienţii asociaţi sunt daţi î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= , unde:
7 10 15
5 7 10
3 4 6
α
- rapoarte de forma r = , unde:
β
a - reprezintã frecvenţe de apariţie a unui caz
selectat;
b - reprezintã totalitatea cazurilor studiate;
- corelaţii între seriile de date provenind din tabele;
- grupãri dupã metodele analizei de date a elementelor din tabele şi clasificarea
programelor, tipurilor de probleme, erorilor;
- estimarea unor coeficienţi pentru modele care pun în evidenţã legãturi între
seriile de date din tabele, serii care se vor constitui în înregistrãri ale unor variabile în
baze de date. În [29] , [38] sunt prezentate astfel de modele.
Se considerã SM = luni/om şi KDSI = mii de instrucţiuni scrise (estimate).
Pornind de la aceste notaţii, se iau în considerare diferite proiecte. Pentru proiectele
organice, se considerã expresiile:
SM = 2.4 (KDSI) 1.05 şi timpul necesar realizãrii 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 cunoaşterea modului în care un
program rãspunde cerinţelor efective la utilizator. Dacã programul este riguros testat se
obţin cu baze de date de la aceastã operaţie parametrii care nu diferã semnificativ faţã de
valorile estimale ale coeficinţilor metricelor de comportament. Econometria dispune de
numeroase tehnici de estimare şi de analizã a calitãţii coeficienţilor. Deşi aceste modele
sunt mai des întrebuinţate, fluctuaţiile coeficienţilor estimaţi depind de eşantionul 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,
completându-se.
Este necesar sã se defineascã metrici de toate tipurile pentru un produs, pentru a
rãspunde cerinţelor atât formulate de programatori, de dealeri, cât şi de utilizatorii
programelor. Metricile sunt cu atât mai valoroase cu cât sunt mai simple de calculat şi cu
cât efortul de a culege datele este mai redus. Este preferabil ca proiectanţii, odatã cu
lansarea unei metrici software, sã ofere şi instrumentele pentru culegerea automatã a
datelor obiective despre programele care fac obiectul evaluãrii şi sã calculeze nivelele
pentru aceste programe.
α α
6 7
α α α α α
1 m 2 m m3 m4 m 5
1 2 3 4 5
m (Pi)
acceptat
a
neaccepta
t
P1 P2 P3 P4 P
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 lucrãri care conţin 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 cãpãta încredere în ei. Metodologia metricii existã. Ceea ce trebuie însã
delimitat, trebuie legat de implementare.
Toate modelele sunt construcţii interesante. De la definirea unui model pentru
factor, pânã la utilizarea efectivã, este un drum lung, aproape imposibil de parcurs.
Pentru crearea de metrici operaţionale este necesarã parcurgerea etapelor
urmãtoare :
- definirea variabilelor exogene şi a modului exact, neambiguu de mãsurare; prin
exemple de mãsurare se va pune în evidenţã caracterul consistent al mulţimii de variabile
exogene şi faptul cã nu existã elemente din program care accidental nu sunt incluse în
model, deşi ele ocupã un rol important în arhitectura acestuia;
- construirea de software care sã mãsoare automat nivelele variabilelor exogene
din program;
- în toate cazurile de verificare a cestui software se va evidenţia cã într-adevãr
nivelele obţinute sunt corecte, neafectate de imperfecţiunile de definire/ identificare
conţinute în modulele acestui software;
- stabilirea de reguli exacte pentru construirea exemplelor de test sau a structurii
( diversitãţii) cazuisticii reale prin intermediul cãreia se înregistreazã nivelele de
comportament; în caz contrar, se vor obţine nivele ale factorilor care vor fi diferite
semnificativ de nivelele aceloraşi factori mãsurate la utilizarea efectivã la beneficiari a
programelor;
- crearea obligativitãţii ca producãtorii de software sã utilizeze un acelaşi produs
pentru evaluarea metricii pentru un factor, asigurîndu-se în acest fel compatibilitatea şi
deci comparabilitatea rezultatelor; schimbarea programului de evaluare a metricii
genereazã diferenţe ştiute fiind fluctuaţiile de interpretare şi de mãsurare 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. Perseverenţa de a construi instrumente pentru evaluarea
complexitãţii, pentru demonstrarea complexitãţii, 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
concepţia de lansare a noilor programe pe piaţa software.
Amploarea procesului de informatizare a societãţii româneşti impune eliminarea
paralelismelor în producţia de software, lansarea producţiei de programe prin licitaţii.
Orice altã abordare va restrânge numãrul şi complexitatea aplicaţiilor, scãzînd gradul de
cuprindere a acestui proces atât de necesar.Numai cuantificãrile oferite de utilizarea
curentã a metricilor software leagã strâns costul de calitatea software, singura condiţie 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