Sunteți pe pagina 1din 477

Cuprins

Introducere ......................................................................................................... 5

1. Produse program ............................................................................................. 8

1.1. Structuri de produse program ........................................................................................... 8

1.2. Utilizarea instrucţiunilor în programe ............................................................................. 29

1.3. Indicatori ai programelor ................................................................................................... 40

1.4. Duratele asociate produselor program ............................................................................ 49

1.5. Concluzii .................................................................................................................................. 63

2. Loturi de programe ........................................................................................ 64

2.1. Dimensiunea lotului ............................................................................................................... 64

2.2. Neomogenitatea loturilor ................................................................................................... 66

2.3. Omogenitatea loturilor ....................................................................................................... 72

2.4. Construirea eşantioanelor de programe .......................................................................... 86

2.5. Planificarea experimentelor pentru loturi .................................................................... 102

2.6. Concluzii .................................................................................................................................. 110

3. Grupul ţintă ..................................................................................................... 112

3.1. Definirea grupului ţintă ....................................................................................................... 112

3.2. Dimensiunea grupului ţintă ................................................................................................. 114

3.3. Stabilitatea structurală a grupului ţintă ........................................................................ 125

3.4. Concluzii .................................................................................................................................. 131

4. Caracteristicile de calitate ale produselor program ............................. 132

4.1. Sistemul caracteristicilor de calitate ............................................................................. 132

4.2. Descrierea caracteristicilor de calitate ........................................................................ 138

4.3. Modele de sisteme de caracteristici de calitate ........................................................ 159

4.4. Complexitatea software ..................................................................................................... 163

4.5. Concluzii .................................................................................................................................. 182

5. Alegerea caracteristicilor de calitate ...................................................... 184


5.1. Specialiştii .............................................................................................................................. 184

5.2. Atribuirea de calificative ................................................................................................... 197

5.3. Stabilitatea ponderilor ....................................................................................................... 211

5.4. Construirea de liste de atribute ....................................................................................... 218

5.5. Concluzii .................................................................................................................................. 223

6. Metrici software ............................................................................................ 224

6.1. Definirea metricei software .............................................................................................. 224

6.2. Forma analitică ...................................................................................................................... 228

6.3. Proprietăţi ale metricilor software ................................................................................. 231

6.4. Analiză dimensională ............................................................................................................ 233

6.5. Forme analitice uzuale ........................................................................................................ 235

6.6. Concluzii .................................................................................................................................. 245

7. Construirea de indicatori ai produsului program .................................... 246

7.1. Comportamentul statistic al programelor aplicative .................................................... 246

7.2. Comportamentul dinamic al programului ........................................................................ 264

7.3. Estimarea duratei de prelucrare ...................................................................................... 277

7.4. Înregistrarea consumului de resurse .............................................................................. 291

7.5. Lucrul programatorilor în realizarea software ............................................................. 296

7.6. Utilizarea analizei dispersionale în compararea tehnicilor de programare ............ 299

7.7. Concluzii .................................................................................................................................. 303

8. Proprietăţile indicatorilor statistici utilizaţi în analiza software ..... 304

8.1. Structuri de indicatori ........................................................................................................ 304

8.2. Senzitivitatea indicatorilor ............................................................................................... 309

8.3. Analiza caracterului necompensatoriu ............................................................................ 316

8.4. Caracterul necatrastofic al modelului ............................................................................. 322

8.5. Analiza completă a indicatorilor ....................................................................................... 325

8.6. Agregarea de indicatori ...................................................................................................... 327

8.7. Validarea indicatorilor ........................................................................................................ 328

8.8. Concluzii .................................................................................................................................. 331

9. Analiza comparată a produselor program ................................................ 332


9.1. Definire problemă ................................................................................................................. 332

9.2. Compararea programelor folosind un criteriu de selecţie ......................................... 336

9.3. Compararea programelor folosind două criterii de selecţie ...................................... 341

9.4. Compararea programelor folosind n criterii de selecţie ............................................ 346

9.5. Concluzii .................................................................................................................................. 357

10. Analiza comparată a programelor destinate rezolvării aceleiaşi


358
probleme ...............................................................................................................

10.1. Ipoteze de lucru .................................................................................................................. 358

10.2. Programe de sortare .......................................................................................................... 361

10.3. Seturi de date ..................................................................................................................... 366

10.4. Compararea duratelor de execuţie ................................................................................ 372

10.5. Volumul de prelucrări ......................................................................................................... 375

10.6. Concluzii ................................................................................................................................ 375

11. Ierarhizarea produselor program ............................................................ 378

11.1. Definirea problemei ............................................................................................................ 379

11.2. Prezentare algoritm ........................................................................................................... 382

11.3. Strategii pentru dezvoltarea program de produse ..................................................... 391

11.4. Concluzii ................................................................................................................................. 395

12. Productivitatea programatorilor .............................................................. 396

12.1. Evaluarea productivităţii ................................................................................................... 396

12.2. Comparabilitatea nivelurilor de productivitate ........................................................... 411

12.3. Factori de influenţă ai productivităţii ........................................................................... 417

12.4. Metode pentru creşterea productivităţii ..................................................................... 420

12.5. Concluzii ................................................................................................................................ 423

13. Concluzii ......................................................................................................... 424

Anexa 1 – Acronime utilizate ..................................................................................................... 426

Anexa 2 – Sursa programului PABO de analiză dispersională ............................................ 454

Anexa 3 – Sursa programului ANENTRO de analiză a corelaţiei entropice ................... 464

Bibliografie .......................................................................................................... 472


INTRODUCERE

Obiectivul lucrării este prezentarea de tehnici si metode statistice utilizate


în analiza cantitativă şi în analiza calitativă a produselor software.
Necesitatea abordării domeniului este dată de:
Š identificarea criteriilor de comparare a produselor software;
Š studiul corelaţiei calitate-cost;
Š dezvoltarea de modele pentru productivitatea muncii programatorilor;
Š găsirea de criterii riguroase care să conducă la alegerea celui mai bun
produs software.

Pentru realizarea demersului se studiază caracteristicile produselor


software, modul de alcătuire a colectivităţilor omogene, apte să fie supuse
prelucrărilor statistice.
Preocupările se regăsesc în literatura de specialitate prin:
Š analiza frecvenţei de utilizare a instrucţiunilor din limbaje de
programare de către programatori;
Š definirea indicatorilor de comportament în exploatarea produselor
program;
Š elaborarea de metrici ale calităţii software;
Š includerea de modele pentru evaluarea performanţelor produselor
software în standarde.

Practic se operează cu colectivităţi de programe, colectivităţi de sisteme


de programe şi cu colectivităţi de aplicaţii informatice.
Se propun modalităţi de măsurare şi evaluare a unor caracteristici ale
programului, ale sistemului de operare, ale aplicaţiilor informatice pentru
evaluarea acestora. De asemenea, sunt prezentate modalităţi de comparare a
programelor, a sistemelor de programe şi a aplicaţiilor informatice.
Utilizarea metodelor statistice este necesară pentru :
Š a stabili nivelul de performanţă a produselor software;
Š a măsura nivelul consumului de resurse pentru realizarea programelor;
Š a cunoaşte cheltuielile generate de dezvoltarea unui produs software;

5
Metode statistice în analiza software

Š a vedea cum sunt folosite echipamentele şi facilităţile oferite de


instrumentele de asistare a procesului de dezvoltare;
Š a crea fundamentul analizei activităţii într-o companie de software;
Š a dezvolta tehnici şi metode eficiente de realizare software în raport cu
cerinţele pieţei de informatică.

Criteriul omogenităţii este impus şi de persoanele care activează în


companiile de software, prin experienţa, prin calificarea şi prin gradul de lor de
specializare.
Lucrarea este structurată în paisprezece capitole în care sunt abordate
gradat problemele legate de culegerea datelor, de efectuarea prelucrărilor si de
interpretarea rezultatelor din punctul de vedere statistic, folosind eşantioane
reprezentative.
Se ia în considerare şi dezvoltarea rapidă ce caracterizează aplicaţiile
Web din prezent urmărindu-se:
Š produse Web definite prin diversitate, dinamism, securitate şi eficienţă ;
Š comportamentul utilizatorilor dornici să rezolve probleme orientate
către clienţi;
Š productivitate în obţinerea formei finale;
Š viteză uniformă de acces pentru toate tipologiile de solicitări, indiferent
de localizare spaţială şi temporală.

De ademenea, se prezintă software destinat procesării de date privind


produsele program supuse analizei statistice pentru a automatiza procesul de
culegere, prelucrare şi chiar interpretare.
Pentru testarea unor indicatori sunt elaborate proceduri care se află pe
site-ul www.asps.ase.ro.
Dezvoltarea producţiei de software conduce la cristalizarea unei pieţe de
produse program şi de fiecare dată când este achiziţionat un produs trebuie
optimizat raportul calitate/cost.
Managementul producţiei de software conţine o latură distinctă privind
evidenţierea prin teste a nivelurilor efective pentru caracteristicile de calitate. Este
important ca atât programatorii cât şi utilizatorii de software să aibă o imagine
completă referitoare la modul în care s-a ajuns la stabilirea unui nivel agregat al
calităţii produselor program.
Comparabilitatea este asigurată de dezvoltarea unor puncte de vedere
clare privind culegerea de date şi prelucrarea acestora. Unele dintre rezultatele

6
Introducere

analizelor sunt obţinute prin completarea chestionarelor de către programatori


omogeni din punct de vedere al experienţei şi al gradului de specializare. Alte
rezultate se culeg în procesul de exploatare a programelor pe baza unor proceduri
implementate la nivelul utilizatorilor.

Autorii sunt recunoscători tuturor celor care prin sugestiile făcute vor
contribui la îmbunătăţirea acestei lucrări.

Mai 2004

Autorii

7
1
PRODUSE PROGRAM

1.1 Structuri de produse program

Fiecare generaţie de calculatoare a imprimat particularităţi specifice


procesului de dezvoltare software. De la programele monolit scrise în limbaje de
nivel scăzut la programele structurate pe module sau care includ definiri de
componente, saltul este vizibil.
Tehnicile şi metodele de programare au ca obiectiv creşterea complexităţii
produselor program în condiţiile obţinerii unui nivel de calitate ridicat, simultan cu
realizarea unor cheltuieli care rămân în limite de acceptare din partea
beneficiarilor.
Odată cu creşterea complexităţii produsului program sunt implementate
diferite procese de management. Acestea gestionează calitatea produsului sau
cantitatea resurselor necesare, se implică în etapele ciclului de viaţă al produsului
final şi se confruntă cu un număr foarte mare de factori primari şi agregaţi, ale
căror niveluri trebuie urmărite. Situaţia impune modularizarea produsului program
în mai multe componente, fapt ce prezintă avantaje prin:
Š reutilizarea acestora, incluzându-le în alte produse;
Š o mai bună gestiune a proceselor de analiză, proiectare şi implementare;
Š obţinerea unei imagini clare a componentelor funcţionale;
Š specializarea analiştilor, designerilor şi programatorilor.
8
Metode statistice în analiza software

Sistemele de programe liniare sunt construcţii formate din componente


care se lansează în execuţie unele după altele, acest lucru fiind reprezentat în
figura 1.1.

Modul Modul Modul Modul


M1 M2 M3 …… MNM

Figura 1.1 Structură liniară de produs program

O componentă Mi este caracterizată prin setul de date de intrare DIi şi


respectiv prin setul de date de ieşire intermediare sau rezultate intermediare DEi,
figura 1.2.

Date Modul Date


de intrare Mi de ieşire
DIi DEi

Figura 1.2 Fluxul de date asociat componentei Mi

În cazul componentei M1, datele de intrare sunt culese de operatori şi


introduse în vederea rezolvării unei probleme. Pentru modulul MNM, datele de
ieşire DENM sunt rezultatele finale ale prelucrării, utilizate în fundamentarea
deciziilor de către beneficiarii produsului program.
Se observă că datele de intrare ale componentei Mj+1 sunt date de ieşire ale
componentei Mj, figura 1.3.

Modul DEj DIj+1 Modul


Mj Mj+1

Figura 1.3 Conectarea prin date dintre componente

Produsele program liniare presupun lansarea una după cealaltă a


componentelor şi prelucrarea este considerată încheiată dacă au fost activate toate
modulele produsului.
O astfel de structură reprezintă un nivel de complexitate constant şi redus.
Numărul ciclomatic asociat grafului pentru un produs program liniar dat în
figura 1.4.

9
Produse program

M1 M2 M3 M4 M5 MNM-1 MNM

Figura 1.4 Graful asociat produsului program liniar

care permite calculul complexităţii software în sens McCabe [IVAN97], dat de


relaţia:
CMcCabe = narce – mnoduri + 2
unde:
narce - numărul de arce;
mnoduri - numărul de noduri;
CMcCabe - complexitatea McCabe.

În cazul structurilor liniare, pentru NM componente, există NM-1 arce, deci


complexitatea este:
C = (NM-1) – NM + 2 = 1

oricare ar fi numărul de componente.

Structurile liniare, prin rigiditatea lor evidenţiază asocierea numai în cazul


unor prelucrări care funcţionează pe principiul TOTUL SAU NIMIC. Fiecare
dintre modulele M2, M3, …, MNM-1 este dependent de modulul anterior şi el oferă la
rândul său serviciile de prelucrare a datelor pe care le integrează, modulului
următor. Întreruperea acestui lanţ de dependenţe într-unul din punctele sale,
conduce la întreruperea întregului proces. De asemenea, odată ce structura liniară
este definită şi asociată unui produs program, nu permite ca modulele ce o compun
să fie interschimbate între ele, modificându-se astfel legăturile dintre acestea.
În cazul structurii liniare, datele de intrare au un format impus, iar
organizarea este unică. Alterarea acesteia duce la obţinerea de rezultate eronate sau
chiar la distrugerea integrităţii produsului program.
De exemplu, pentru rezolvarea problemei de programare liniară, datele
sunt grupate în următoarele seturi, care definesc:
ƒ dimensiunea problemei;
ƒ coeficienţii matricei tehnologice;
ƒ coeficienţii funcţiei obiectiv;

10
Metode statistice în analiza software

ƒ termenii liberi;
ƒ matricea restricticţiilor.

Programul care rezolvă astfel de probleme, conţine componente care:


Š citesc datele de intrare şi le validează;
Š generează soluţia iniţială;
Š efectuează iteraţiile;
Š verifică dacă soluţia obţinută este optimă;
Š imprimă soluţia obţinută.

Structura liniară a programului de rezolvare a problemelor de programare


liniară folsind algoritmul simplex este:

Date:
- matrice de lucru; Date:
- termeni liberi; - soluţia finală.
- matricea
restrictivă; Date: Date:
- coeficienţii - soluţia iniţială. - rezultat.
funcţiei

Modul pentru citirea şi Modul ce Modul ce Modul ce Modul


validarea datelor de generează soluţia efectuează verifică afişare
intrare iniţială iteraţiile soluţia rezultate

Figura 1.5 Structura liniară şi datele transferate între module,


pentru produsul program care rezolvă
o problemă de programare liniară

Dacă nu sunt parcurşi toţi paşii, soluţia obţinută nu este corectă, iar
programul nu îşi atinge obiectivul, de oferi un rezultat valid.
Produsele program ale cărui module sunt integrate într-o structură liniară,
sunt caracterizate de:
™ unicitatea rezultatului, în cazul rulării cu acelaşi set de date de intrare;
™ acelaşi număr de module utilizate, indiferent de setul de date de intrare.

Pe baza acestor specificaţii se definesc indicatori care măsoară eficienţa


programului.

11
Produse program

Un program P, cu structură liniară şi format din NM componente,


este lansat în execuţie de NA ori. La fiecare rulare, se activează un număr de
xci componente. În final se obţine şirul numărului de componente activate:
xc1, xc2, …, xci, …, xcNL.
Se calculează indicatorul agregat XC , numărul mediu de componente
activate, după relaţia:

NA

∑ xc i
XC = i =1
, cu XC ∈ [0,1]
NA ⋅ NM

în care:
xci – reprezintă numărul de componente activate la rularea i;
NM – numărul de componente ale programului;
NA – numărul de rulări.

Rezultă o dată agregată privind eficienţa programului. Dacă:


ƒ X C ∈ [0, α componente ) , rezultă că produsul nu este acceptabil;
ƒ X C ∈ [α componente ,1] , rezultă că produsul este acceptabil, utilizatorul
obţinând un grad de satisfacţie corespunzător;
ƒ XC = 1 , rezultă că produsul este eficient în totalitate,
având acelaşi comportament la fiecare rulare şi
oferind rezultate aşteptate indiferent de setul de
date de intrare.

Este important că αcomponente să fie stabilit de către utilizatorii de produse


software, pentru că au cea mai clară imagine a gradului de siguranţă şi validitate a
rezultatelor aşteptate.

Structuri arborescente a produselor program corespunde cazului în care la


proiectarea datelor de intrare se identifică parametrii cu ajutorul cărora utilizatorul
selectează variante de prelucrare a datelor. Tipologia stabileşte moduri diferite de
tratare a datelor şi permite selectarea unei căi formată din module ce se apelează
unele pe altele. Modulele sunt dispuse pe niveluri de apel.

12
Metode statistice în analiza software

Apelarea componentelor este determinată de opţiunile utilizatorului. Dacă


un produs program are parametrii cu două niveluri, asociate valorilor logice
Adevărat/Fals, iar structura sa este un arbore binar perfect echilibrat, aceasta are
reprezentarea din figura 1.6.

Modul 1.1

Nivel 1

Modul 2.1 Modul 2.2


Nivel 2

Modul 3.2 Modul 3.3


Nivel 3 Modul 3.1 Modul 3.4

……………………………………………………………

Nivel n

Modul n.1 Modul n.2 Modul n.n-2 Modul n.n-1


Modul n.3 Modul n.4

Figura1.6 Structura arborescentă a unui produs program

Elementele necesare determinării complexităţii în sens McCabe a acestei


structuri au valorile:
numărul de noduri: (2n-1);
numărul de arce: (2n-2);

Valoarea complexităţii în sens McCabe este:

CMcCabe = (2n-2)-(2n-1)+2=1.

13
Produse program

În cazul în care, la elaborarea unui produs program cu structură


arborescentă sunt identificate structuri alternative multiple, rezultă o asociere de
arborescenţe oarecare ce nu schimbă nivelul complexităţii.
Aceste structuri sunt deosebit de frecvente mai ales atunci când se
proiectează aplicaţii Web, în care fiecare pagină reprezintă un modul al produsului
program.
De exemplu, pentru un site Web, ce prezintă datele unui CV, sunt
identificate nivelurile şi subnivelurile structurii asociate:

Modul Q1 – CV-ul;

Modul Q2 – Coordonate;

Modul Q3 – Educaţie; cu subnivelurile:

Modul Q31 – şcoală generală;


Modul Q32 – liceu;
Modul Q33 – facultate;
Modul Q34 – master;

Modul V4 – Experienţă; cu subnivelurile:

Modul Q41 – prim loc de muncă;


Modul Q42 – al doilea loc de muncă;
Modul Q43 – al treilea loc de muncă;
Modul Q44 – al patrulea loc de muncă;

Modul V5 – Referinţe; cu subnivelurile:

Modul Q51 – coordonatele persoanei care dă prima referinţă;


Modul Q52 – coordonatele persoanei care dă a doua referinţă;
Modul Q53 – coordonatele persoanei care dă a treia referinţă;

14
Metode statistice în analiza software

Structura arborescentă asociată are forma dată în figura 1.7.

Q1

Q2
Q4 Q5
Q3

Q31 Q32 Q33 Q34 Q41 Q42 Q43 Q44 Q51 Q52 Q53

Figura 1.7 Structura de tip arbore asociată produsului program, aplicaţie Web

Această aplicaţie are mnoduri = 16 noduri, narce = 15 arce şi o complexitate


calculată în sens McCabe, CMcCabe = 1.

Produsul program care rezolvă sisteme de ecuaţii liniare are structură ce


conţine:
™
modul de introducere a datelor;
™
modul care rezolvă exact sistemul liniar de ecuaţii;
™
modul pentru rezolvarea aproximaţiilor sistemului de necunoscute;
™
sistem de ecuaţii mari prin metoda aproximaţiilor;
™
sistem de ecuaţii rare;
™
sistem de ecuaţii bandă;
™
sistem în care numărul de ecuaţii este egal cu numărul de necunoscute;
™
sistem în care numărul de ecuaţii este mai mare decât numărul de
necunoscute;
™ sistem de ecuaţii în care numărul de ecuaţii este mai mic decât numărul
de necunoscute;

Structura modulelor produsului program este dată în figura 1.8.

15
Modul intrare date

Fără soluţie Modul rezolvare sistem în care Modul rezolvare sistem în care Modul rezolvare sistem în care
nr. ecuaţii = nr. necunoscute nr. ecuaţii > nr. necunoscute nr. ecuaţii < nr. necunoscute

Modul algoritm
Modul rezolvare Modul algoritm aproximare
Modul rezolvare sistem aproximat aproximare
sistem exacte
Modul rezolvare sistem
dimensiune mică
Modul rezolvare sistem
dimensiune mare
Modul rezolvare Modul rezolvare Modul rezolvare Modul rezolvare
sistem oarecare sistem simetric sistem bandă sistem full Modul rezolvare
sistem rar

Modul afişare Modul rezolvare Modul afişare Modul afişare


Modul afişare Modul afişare Modul afişare rezultate sistem bandă rezultate rezultate
rezultate rezultate rezultate

Modul afişare Modul afişare Modul afişare


rezultate rezultate rezultate

Figura 1.8 Structura de tip arbore asociată produsului program,


ce rezolvă sisteme de ecuaţii liniare

16
Metode statistice în analiza software

Produsul are un număr de 26 de module şi 25 de legături între acestea, iar


complexitatea acestuia, calculată după formula lui McCabe este:

CMcCabe = 25 – 26 + 2 = 1.

Produselor program caracterizate de o astfel de structură a modulelor, se


disting prin următoarele specificaţii:
Š utilizatorii selectează modulele pe care le utilizează, prin opţiunile
făcute în cadrul aplicaţiei sau indirect prin oferirea unui anumit tip de
set de date de intrare a cărui prelucrare necesită activarea anumitor
module într-o ordine deja stabilită la proiectare;
Š seturile de date de intrare sunt clasificate în categorii, fiecare dintre
acestea având asociat un mod specific de prelucrare;
Š programul tratează cazuri neomogene;
Š drumul unic de la rădăcină la unul din nodurile frunză, reprezintă o
instanţă a produsului program;
Š fiecărui mod de prelucrare a datelor de intrare şi obţinere a rezultatelor i
se asociază o structură liniară, ceea ce face ca structura arborescentă să
fie de fapt o colecţie de structuri liniare, care au un nod comun;
Š numărul de noduri frunză ale arborelui asociat produsului program,
indică numărul de instanţe ale acestuia, câte cazuri distincte de date de
intrare, precum şi câte tipuri de rezultate există;
Š toate drumurile formate în arbore au un nod comun, şi anume modulul
de intrare al datelor iniţiale;
Š drumurile sunt construite exclusiv prin referirea unui modul de pe un
nivel inferior de către un modul de pe nivel superior;
Š numărul de drumuri, structuri liniare, în care este inclus un modul, este
dat de numărul de module pe care le referă, oferindu-le date spre a fi
prelucrate în continuare;
Š acest tip de arborescenţă presupune existenţa unei surse de redundanţă
controlată.

Situaţia constă în multiplicarea unuia sau a mai multor module care sunt
introduse în drumuri diferite pentru a executa o operaţie identică. De cele mai
multe ori, modulele copiate şi reutilizate sunt cele care afişează rezultatele,
procesul fiind acelaşi pentru date de intrare diferite. Acest lucru este evidenţiat şi în
cadrul exemplului din figura 1.8. Nodurile frunză sunt reprezentate de aceeaşi

17
Produse program

componentă, care este multiplicată pentru a afişa diferenţa rezultatului final de la o


structură la alta de date de intrare.
Produsele program ale cărui module sunt integrate într-o structură
arborescentă, sunt caracterizate de:
ƒ dependenţa rezultatului de datele de intrare;
ƒ un număr diferit de module utilizate, în funcţie de setul de date de
intrare;
ƒ existenţă unui număr finit de structuri liniare, dat de numărul nodurilor
frunză.

Pe baza acestor caracteristici ale programelor cu structură arborescentă, se


definesc indicatori care să le măsoare eficienţa.
Un program P, cu o structură arborescentă formată din NM componente,
din care NK reprezintă module finale, cu NK < NM, este lansat în execuţie de NA
ori pentru fiecare tip de date de intrare. La fiecare rulare i a setului de date j, se
înregistrează numărul de xcij componente activate. În final se obţine matricea
numărului de componente activate, din tabelul 1.1:

Matricea numărului de componente activate în cele m rulări

Tabel 1.1
Tip 1 Tip 2 Tip j Tip NK
set de date set de date … set de date … set de date

Rularea 1 xc11 xc12 … xc1j … xc1k


Rularea 2 xc21 xc22 … xc2j … xc2k
… … … … … … …
Rularea i xci1 xci2 … xcij … xcik
… … … … … … …
Rularea NA xcm1 xcm2 … xcmj … xcmk

în care:
NA – numărul de rulări;
NK – numărul de tipuri de date de intrare;
xcij – numărul de componente ale programului analizat, activate la
rularea i, cu setul de date de intrare de tipul j.

18
Metode statistice în analiza software

Se calculează indicatorul agregat XC , reprezentând numărul mediu de


componente activate:
NA xc ij

NK NK i =1 NM (' ) j NK NA xc ij
∑ XC j ∑ ∑∑ (' )
XC =
j=1
=
j=1 NM = j=1 i =1 NM j , cu X C ∈ [0;1], X C ∈ [0;1]
j
NK NK NK ∗ NM
unde:
XC j – numărul mediu de componente activate pentru rulările cu seturi
de date de tipul j;
(' )
NM j – reprezintă numărul de module incluse în drumul de la datele de
intrare la rezultate, pentru setul de date j.

Numărul, NM (' ) j , este calculat ca fiind:

NM (' ) j = nivelmodulfrunza j + 1
unde nivelmodulfrunza j reprezintă nivelul pe care se află în arbore nodul frunză
al j-lea.

Indicatorul diferă dacă nodurile frunză se găsesc pe niveluri diferite. În


cazul în care, structura arborescentă asociată produsului program are toate nodurile
frunză pe acelaşi nivel Lp şi nodul rădăcină se găseşte pe nivelul 1, atunci:

NK

∑ NM ( )
j
'
j = NK * Lp

în care NK reprezintă numărul de noduri.


Deci, toate drumurile au acelaşi număr de noduri, NM (' ) j = Lp.
Pentru această situaţie particulară, indicatorul mediu se calculează utilizând
formula:
NK NA xc ij NK NA
∑∑ ∑ ∑ xc ij
(' )
NM j
j=1 i =1 j=1 i =1
XC = = , cu X C ∈ [0;1]
NK * NM NK * NM * Lp

unde, LP reprezintă nivelul pe care se află nodurile frunză ale arborelui asociat
structurii produsului program.

19
Produse program

Media agregată obţinută descrie eficienţa programului. Dacă:


ƒ X C ∈ [0,α componente ) , rezultă că produsul nu este acceptabil, fiind
necesară o analiză completă şi o abordare a
fiecărui tip de rezultat;

ƒ X C ∈ [α componente ,1] , rezultă că produsul este acceptabil, utilizatorul


obţinând un grad de satisfacţie corespunzător
pentru toate tipurile de date de intrare şi
rezultatele aferente acestora;

ƒ X C = 1, rezultă că produsul este eficient în totalitate,


având acelaşi comportament la fiecare rulare şi
oferind rezultate aşteptate indiferent de setul de
date de intrare.

Indicatorul agregat XC , reprezintă valoarea mediană a mulţimii de valori


XC j , cu j = 1…k. Fiecare dintre valorile XC j , reprezintă numărul mediu de
componente activate de-a lungul celor NA utilizări ale programului cu setul datelor
de intrare de tipul j. Acest lucru permite utilizatorului să aprofundeze analiza
eficienţei produsului program, găsind căile pentru îmbunătăţirea modulelor care
prelucrează tipurile respective de date.
Nivelul lui XC , reprezintă nivelul mediu al eficienţei înregistrate pentru
fiecare metodă de prelucrare a datelor implementată.

Structura graf de produs program este cea mai întâlnită deoarece permite
reducerea redundanţei rezultate prin duplicarea de cod. Structurii modulelor
produsului program îi este asociat un graf orientat, cu întoarceri (reluări).
În figura 1.9 se prezintă o structură arborescentă cu duplicare de cod pentru
imprimarea rezultatelor.

20
Metode statistice în analiza software

Modul
Qk

Modul
Modul Qj
Qi

Modul Modul
Modul T T
T

Figura1.9 Duplicarea de cod în cadrul structurii arborescente


pentru realizarea operaţiei de afişare a rezultatelor

În figura 1.10 este descris procedeul de eliminare a duplicării de cod a


frunzei privind tipărirea de rezultate prin referirea din trei puncte Qi, Qj şi Qk a
componentei T.

Modul
Qk

Modul
Modul Qj
Qi

Modul
T

Figura1.10 Referirea unei componente de către mai multe module,


în cadrul structurii de tip graf asociată unui produs program

21
Produse program

Acest tip de structură este indicat şi produsului program descris în


figura 1.8, deoarece conduce la micşorarea semnificativă a numărului de
implementări al modului de afişare a rezultatelor.

O structură de tip graf generalizat permite:


™ organizarea pe niveluri a componentelor;

™ referirea de componente de la niveluri inferioare spre cele superioare;

™ referirea de componente de la niveluri superioare către niveluri


inferioare, spre deosebire de structura arborescentă în care referirea se
face numai de la nivel superior spre inferior;

™ reutilizarea în cadrul aceluiaşi produs program a componentelor ce


implementează prelucrări generale asupra seturilor de date, indiferent de
tipul lor; modulele sunt definite o singură dată, şi sunt apelate de mai
multe ori;

™ existenţa drumului unic de la rădăcină la unul din nodurile frunză,


reprezentând o instanţă a produsului program, căreia i se asociază o
structură liniară;

™ selectarea de către utilizatori a modulele pe care le folosesc, prin


opţiunile făcute în cadrul aplicaţiei sau indirect prin oferirea unui
anumit tip de set de date de intrare a cărui prelucrare necesită activarea
anumitor module într-o ordine deja stabilită la proiectare; din acest
punct de vedere, diferenţa dintre structura aceasta şi cea arborescentă
este transparentă utilizatorului programului, ea constând în modul în
care sunt implementate şi gestionate operaţiile de definire şi apelare a
modulelor;

™ tratarea de către produsul program a seturilor de date de intrare


neomogene, a căror prelucrare să conducă la obţinerea de rezultate
diferite;

22
Metode statistice în analiza software

Modul 1

Modul 2.1 Modul 2.2 Modul 2.3

Modul 3.3 Modul 3.4


Modul 3.1 Modul 3.2 Modul 3.5

Modul 4.1 Modul 4.2


Modul 4.3 Modul 4.4

Modul 5.1

Modul 6.1 Modul 6.2

Figura 1.11 Structură program de tip graf generalizat

Complexitatea McCabe a structurii din figura 1.11 este CMcCabe = 8, pentru


22 de arce şi 16 noduri
Dacă un program are NM noduri şi toate sunt conectate între ele, fără a se
max
defini bucle, rezultă numărul maxim de arce, narce , dat de relaţia:

max
narce = mnoduri
2
− mnoduri

unde mnoduri reprezintă numărul de noduri al grafului asociat programului;


Complexitatea maximă este:

2
CMcCabe = (mnoduri − mnoduri ) − mnoduri + 2

Valoarea complexităţii McCabe este dependentă de numărul de drumuri,


iar valoarea ei maximă pentru un produs program a cărui structură este
reprezentată printr-un graf este:

max
CMcCabe = (mnoduri − 1) 2 + 1
23
Produse program

Produsul program care prelucrează elementele unui şir de numere reale, în


vederea calculării de indicatori statistici, are o structură de tip graf ce conţine:
modul de introducere a datelor;
modul asociat operaţiilor necesare obţinerii mediei aritmetice;
modul care calculează valoarea mediei geometrice;
modul de prelucrare a datelor în vederea calculării valoarii mediei
armonice;
modul care găseşte valoarea minimă a şirului;
modul care găseşte valoarea maximă a şirului;
modul meniu, ce permite utilizatorului alegerea următoarei acţiuni;
modul de imprimare a rezultatelor.

Structura modulelor acestui produs program este dată în figura 1.12.

Modul
citire date

Modul medie Modul medie Modul medie Modul Modul


aritmetică geometrică armonică maxim minim

Modul afişare Modul afişare


rezultat 1 rezultat 2

Modul meniu

Modul
salvare date

Figura 1.12 Structura de tip graf asociată produsului program,


ce calculează valorile anumitor indicatori statistici

Complexitatea acestuia, calculată după formula lui McCabe pentru


numărul de arce narce = 14 şi numărul de noduri mnoduri = 10 este CMcCabe = 6.

24
Metode statistice în analiza software

Pentru a măsura eficienţa produsului program cu o structură de tip graf se


calculează indicatorul agregat XC , reprezentând numărul mediu de componente
activate, în cele NM rulări ale aplicaţiei pentru fiecare tip de problemă, din cele NK
distincte:

NA xcij
NK NK ∑ NM ( ) ' NK NA xcij
∑ XCj =1
j ∑
j =1
i =1
NM
j
∑∑ NM ( )
j =1 i =1
'
j
XC = = = , cu X C ∈ [0,1], X C j ∈ [0,1]
NK NK NK * NM

unde:
XC j – numărul mediu de componente activate pentru rulările cu seturi
de date de tipul j;
(' )
NM j – reprezintă numărul de module incluse în drumul date intrare –
rezultat, pentru setul de date j.
NA – numărul de rulări al aplicaţiei cu date de intrare pentru un
anumit tip de problemă;
NK – numărul de seturi distincte de date de intrare asociate celor k
modele de probleme de rezolvat, care conduc la obţinerea de
rezultate diferite;
j – tipul de set de date de intrare, cu care se fac m testări ale
programului;
i – indică a câta utilizare a programului este;
xcij – numărul de module activate la rularea i a datelor j;
XC – eficienţa produsului. Valoarea indicatorului este comparată cu
un prag α ∈ [0,1] , stabilit anterior de utilizator.

Pentru structurile de tip graf, datorită particularităţilor produselor program


ale căror module descriu o astfel de structură, permiţând participarea activă a
utilizatorului în alegerea modalităţii de obţinere a rezultatelor, indiferent de datele
de intrare, k reprezintă numărul tipurilor de probleme de rezolvat. Un astfel de
exemplu este şi cel descris anterior, când pentru acelaşi şir de valori numerice se
calculează fie media aritmetică, fie valoarea minimă sau maximă, decizia
aparţinând utilizatorului.

25
Produse program

Structura de tip graf dată în figura 1.11 este cel mai des întâlnită în
dezvoltarea de aplicaţii informatice. În cazul dezvoltării de programe în echipă este
preferabil să se proiecteze structuri arborescente, avantajând:
Š stabilirea obiectivelor fiecărei echipe; acestea fiind clar delimitate de
obiectivele celorlalte echipe;
Š asigurarea unui nivel ridicat al independenţei între echipele de lucru;
Š partajarea în etape distincte a întregului proces de producţie.
După lansarea produsului, în timp, se procedează la optimizări şi în final
structura arborescentă este transformată în structură de tip graf care permite:
ƒ lucru cu mai mulţi utilizatori;
ƒ gestionarea de probleme diferite;
ƒ reluări de prelucrări;
ƒ optimizarea consumului de resurse a produsului program;
ƒ creşterea eficienţei în exploatare;
ƒ minimizarea redundanţei;
ƒ control asupra utilizării datelor şi asupra obţinerii rezultatului dorit.

Pentru a măsura complexitatea tipului de structură utilizat, se foloseşte pe


lângă numărul ciclomatic al lui McCabe, şi matricea dependenţelor.

Se consideră produsul program P, format din modulele M1, M2, …, MNM.


Componenta Mk este dependentă de modulele Mk+p, …, Mk+2, Mk+1, Mk-1, Mk-2, ….,
Mk-r dacă seturile de date iniţializate sau prelucrate de acestea, reprezintă date de
intrare pentru modulul Mk.
Matricea BD a dependenţelor, având n linii şi n coloane, are elementele:

0, dacă modulul i, nu depinde de modulul j;


bdij =
1, dacă modulul i, depinde de modulul j.

Pentru tipul de structură liniară din figura 1.5, pentru structura arborescentă
din figura 1.7 şi respectiv, pentru structura graf din figura 1.12, se construiesc
matricele de dependenţă corespunzătoare.

26
Metode statistice în analiza software

Matricea de dependenţă asociată structurii liniare din figura 1.5

Tabel 1.2
M1M2M3M4 M5

M1 1 0 0 0 0
M2 1 1 0 0 0
M3 0 1 1 0 0
M4 0 0 1 1 0
M5 0 0 0 1 1

unde:
M1 – Modul pentru citirea datelor de intrare;
M2 – Modul ce generează soluţia iniţială;
M3 – Modul ce efectuează iteraţiile;
M4 – Modul ce verifică soluţia;
M5 – Modul afişare rezultate.

Matricea de dependenţă asociată structurii liniare din figura 1.7

Tabel 1.3
Q1 Q2 Q3 Q31 Q32 Q33 Q34 Q4 Q41 Q42 Q43 Q44 Q5 Q51 Q52 Q53

Q1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Q2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Q3 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
Q31 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0
Q32 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0
Q33 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0
Q34 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0
Q4 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
Q41 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
Q42 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0
Q43 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0
Q44 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0
Q5 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
Q51 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0
Q52 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
Q53 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1

27
Produse program

Matricea de dependenţă asociată structurii graf din figura 1.12

Tabel 1.4
M1 M2 M3 M4 M5 M6 M7 M8 M9 M10

M1 1 0 0 0 0 0 0 0 0 0
M2 1 1 0 0 0 0 0 0 0 0
M3 1 0 1 0 0 0 0 0 0 0
M4 1 0 0 1 0 0 0 0 0 0
M5 1 0 0 0 1 0 0 0 0 0
M6 1 0 0 0 0 1 0 0 0 0
M7 0 1 1 1 0 0 1 0 0 0
M8 0 0 0 0 1 1 0 1 0 0
M9 0 0 0 0 0 0 1 1 1 0
M10 0 0 0 0 0 0 0 0 1 1

unde:
M1 – Modul citire date;
M2 – Modul medie aritmetică;
M3 – Modul medie geometrică;
M4 – Modul medie armonică;
M5 – Modul maxim;
M6 – Modul minim;
M7 – Modul afişare rezultat1;
M8 – Modul afişare rezultat2;
M9 – Modul meniu;
M10 – Modul salvare date.

Pe baza datelor din matricea de dependenţă este calculat indicatorul


gradului de dependenţă.
Se consideră matricea dependenţelor BD având elementele bij ∈ {0,1}
asociată unui produs program cu NM module. Se calculează complexitatea:

NM NM NM
Cd = ∑ ((∑ bd ij ) log 2 (∑ bd ij ))
i =1 j =1 j =1

28
Metode statistice în analiza software

bazată pe dependenţe. Cd aparţine intervalului [0, θ ] unde:

NM
θ = ∑ i log 2 i
i =1

pentru că se lucrează cu matricea inferior triunghiulară.


Normarea indicatorului bazat pe dependenţe se realizează astfel:

NM NM NM

∑ (∑ bdij log 2 (∑ bdij ))


i =1 j =1 j =1
Cd = NM

∑ i log
i =1
2 i

unde:
NM – reprezintă numărul de module al programului;
bdij – reprezintă elementele matricei de dependenţă.

Dacă programul are toate modulele independente între ele sau conţin
exclusiv afişarea unor mesaje, atunci matricea dependenţelor este o matrice unitate
şi Cd,⎯Cd sunt 0.
În schimb, dacă programul are toate modulele interconectate, atunci
matricea dependenţelor are majoritatea elementelor bdij de sub diagonala principală
egale cu valoarea 1, iar Cd şi⎯Cd tind către 1.
Aprofundarea analizei dependenţei modulelor unei structuri a produsului
program pe baza datelor din matricea BD, conduce la clasificarea următoare:
Š structuri cu module slab dependente, din care fac parte în general cele
liniare şi cele arborescente;
Š structuri cu module puternic dependente, din care fac parte produsele
program complexe, descrise prin structuri de tip graf.

1.2 Utilizarea instrucţiunilor în programe

Pentru a realiza un studiu complet al utilizării instrucţiunilor în programe


se efectuează o analiză statistică a produselor program scrise în limbajul C.
Motivul alegerii acestui limbaj evoluat de programare îl constituie folosirea lui
curentă de către majoritatea producătorilor de software, precum şi sintaxa foarte
29
Produse program

asemănătoare faţă de alte medii de programare cu un grad la fel de ridicat de


utilizare.
Obiectivul urmărit îl constituie stabilirea acelor elemente care să permită
încadrarea în clase distincte a programelor şi a lanţurilor de programe, în raport cu
structura şi funcţiile lor de prelucrare.
Obţinerea de produse software cu un nivel ridicat al calităţii presupune
utilizarea unor tehnici şi metode de programare caracterizate prin eficienţă ridicată.
Realizarea sistemelor complexe de programe în cadrul echipelor de programatori
conduse de un programator şef, necesită asamblarea de componente care să asigure
un grad maxim de generalitate, durata prelucrărilor să fie minimă, iar rezultatele
obţinute să aibă o precizie ridicată.
Tot mai des, este pus accentul pe modul în care sunt utilizate limbajele de
programare. Analiza statistică bazată pe programe aflate deja în faza de execuţie
curentă, evidenţiază o serie de trăsături şi influenţe pe care le au tehnicile şi
metodele de programare cu caracter local, frecvent utilizate în fiecare companie de
software. Pentru a asigura reprezentativitatea rezultatelor analizei, este important
ca programele cercetate să se constituie în colectivităţi omogene.
Termenul folosit de specialişti pentru desemnarea analizei eşantioanelor de
programe este analiza empirică a programelor. În efectuarea analizei statistice,
programele, produse informatice finite, sunt generatoare de informaţii privind
instrucţiunile limbajelor de programare şi corelaţiile care se constituie între acestea.
Conţinutul analizei statistice a programelor este rezultatul analizei lexicale
şi sintactice a acestora. Se extrag informaţii sub forma frecvenţelor de apariţie a
instrucţiunilor sau a unor construcţii elementare.
Prin regrupări de date şi prin calcule se stabilesc indicatori de structură cu
care se caracterizează felul în care programatorii folosesc facilităţile de care dispun
limbajele de programare. Analiza statistică a programelor permite compararea
metodelor de programare, iar prin efectuarea unor teste statistice se pune în
evidenţă semnificaţia deosebirilor dintre acestea.
La efectuarea analizei statice a produselor program, instrucţiunile sunt
privite ca elemente independente în interiorul fiecărei secvenţe de program.
Trecerea la efectuarea analizei dinamice impune ca instrucţiunile să fie încadrate în
contextul paragrafelor, secţiunilor, în strânsă legătură unele cu celelalte.
Eşantionul luat în considerare pentru a fi analizat statistic este format dintr-
o grupă de 150 programe, scrise în limbajul C. Programele au fost elaborate de
programatori cu experienţă îndelungată şi cu niveluri de pregătire diferite.

30
Metode statistice în analiza software

Gruparea programelor din tabelul 1.5 este realizată prin prisma numărului
de instrucţiuni al fiecărei aplicaţii.

Mărimea programelor ca număr de instrucţiuni


Tabel 1.5
Număr de instrucţiuni Programe scrise în C
sub 100 12
101-250 76
251-350 48
351-550 10
peste 551 4
Total programe 150

Programele scrise în limbajul C sunt destinate rezolvării problemelor ale


căror algoritmi de prelucrare conţin calcule de complexitate ridicată. Aşa se explică
faptul că 63.57% din instrucţiunile programului reprezintă atribuiri. Instrucţiunile
limbajului C sunt utilizate cu frecvenţă diferită. După cum rezultă din tabelul 1.6,
au o utilizare mai intensă instrucţiunile if, for, do-while, read, printf, scanf urmate
de instrucţiuni de descriere a tipurilor de date.

Ponderea instrucţiunilor
Tabel 1.6
Instrucţiunile %
-instrucţiuni de atribuire 63,57
-instrucţiuni de control 18,16
if 3,29
for 7,52
do-while 3,09
switch 1,88
while 2,68
-instrucţiuni de citire-scriere 14,70
scanf 5,63
printf 6,14
getchar, putchar 0,27
fprintf, fscanf, fseek 0,11
-instrucţiuni de definire proceduri şi apelare 2,68
return 0,37
funcţii 0,62
void 0,84
apelare funcţii, proceduri 0,85
-instrucţiuni de definire fişiere, masive, specificare tipuri de variabile, 0,89
iniţializări, liste
file 0,15
array [] 0,47
integer, real, structure, bool 0,14
pointer 0,13

31
Produse program

O caracteristică importantă a limbajului C este existenţa unor subprograme


tip funcţii predefinite standard, puse la dispoziţia programatorilor. Abundenţa
instrucţiunilor de atribuire în programele scrise în limbajul C determină folosirea
acestor subprograme cu intensitate diferită. În tabelul 1.7 sunt prezentate ponderile
în care sunt apelate, în expresii aritmetice, unele din aceste subprograme standard.
Ponderile sunt dependente de orientarea aplicaţiilor software. În cazul în care
acestea implementează operaţii pe şiruri de caractere şi prelucrări de texte, atunci
rutinele predefinite de lucru cu caractere deţin ponderea cea mai mare.
În cazul de faţă, situaţia este influenţată de includerea programelor
analizate într-o bibliotecă de operaţii statistice şi matematice.

Ponderea utilizării de funcţii matematice predefinite


Tabel 1.7
Subprogram standard %
sqrt 17,40
log 5,68
sin 3,29
cos 3,04
exp 4,72
Alte funcţii standard 7,83
Restul de termeni ai
expresiilor aritmetice 58,04
Total 100,00

Ponderea mai ridicată a instrucţiunilor repetitive este datorată complexităţii


algoritmilor de prelucrare, concretizată prin numeroase reluări ale secvenţelor de
instrucţiuni. Ponderea de 3,29% a instrucţiunilor de selecţie este datorată structurii
algoritmilor care impun selectări ale unor secvenţe şi ignorarea altora. Într-un
număr de 118 de programe, aproximativ două treimi din construcţiile de control
sunt de forma:

for(int i;i<n;i++);

Pentru instrucţiunile de control de tipul if ( ) este descrisă utilizarea


detaliată în tabelul 1.8. Datele confirmă aprecierea că forma cu o ramură, fie cea
afirmativă sau negativă, are o frecvenţă de folosire mai mare. Rezultă că structura
este folosită doar pentru a activa sau nu o serie de instrucţiuni şi nu pentru a
32
Metode statistice în analiza software

structura programul pe două variante de prelucrare. Unul dintre motive este


realizarea cu uşurinţă a gestiunii structurilor de acest tip.

Ponderea utilizării formelor structurii if ( )

Tabel 1.8
Instrucţiunea %
if ( ) expresie; 4,17
sau
if ( )
else expresie;
if ( ) expresie_1 1,12
else expresie_2

Total 5,29

Ponderea instrucţiunilor stop şi continue este de 1,68% în timp ce, în cazul


programelor scrise după regulile programării structurate, ponderea lor este de
3,47%. Diferenţa este datorată utilizării instrucţiunii continue pentru eliminarea
secvenţelor precedate de instrucţiuni de salt cu care se construiesc structurile
fundamentale. În programele scrise după regulile programării clasice se reduce
ponderea instrucţiunii continue la 0,71%, prin eliminarea ei din finalul secvenţelor
repetate cu instrucţiunea do, atunci când acest lucru este permis.
Ponderile calculate pentru instrucţiunile ce definesc vectori, şi tipuri de
variabile INT, FLOAT, CHAR, BOOL şi DOUBLE sunt diminuate printr-o mai
bună stabilire a variabilelor, a numelor de variabile şi prin evidenţa eşalonării
acestora ca termeni ai instrucţiunilor de atribuire. În 3,29% din programe apar
secvenţe de forma:
INT m, m, l, i, j;
FLOAT v, sum, rest, x;
BOOL vb;
…………………

care sunt eliminate în întregime prin definirea de variabile globale. În 28,76% din
programe se definesc masive prin instrucţiuni care alcătuiesc secvenţe de forma:

INT a[10], b[9,18];


INT c[70], d[100];
……………………………
33
Produse program

care alocă static spaţiu de memorie fără ca acesta să fie utilizat în totalitate.
Această risipă este redusă prin instrucţiunile de declarare a pointerilor de un anumit
tip. Ulterior ei sunt iniţializaţi prin indicarea începutului zonei de memorie alocate
dinamic.
În programele scrise în limbajul C un rol important revine instrucţiunilor
de citire-scriere ca funcţii de bibliotecă. Diversitatea formelor în care se prezintă
aceste instrucţiuni şi particularităţile pe care le ridică fiecare formă în scrierea
secvenţelor, determină frecvenţe diferite în utilizarea lor. În tabelul 1.9 sunt
prezentate ponderile cu care programatorii folosesc facilităţile instrucţiunilor de
citire-scriere.

Utilizarea instrucţiunilor de scriere sau citire


Tabel 1.9
Instrucţiunea %
scanf( ) utilizat într-un ciclu for ( ) pentru a citi 3,64
elementele unui masiv.
scanf( ) utilizat pentru a citi valoarea unei singure 1,52
variabile
getchar( ) 0,47
Total 5,63
printf( ) utilizat într-un ciclu for ( ) pentru a afişa 4,05
elementele unui masiv.
putchar( ) 0,49
printf( ) utilizat pentru a afişa mesaje şi/sau 1,60
valorile unor variabile
Total 6,14

Există o strânsă legătură între intensitatea cu care se folosesc instrucţiunile


de citire-scriere pentru fişiere ponderile calculate prin instrucţiunile file, fseek, feof
şi rewind.
Odată cu specificarea variabilelor ale căror valori sunt scrise sau sunt
citite, programatorii precizează formatele de prezentare a datelor. Structura
instrucţiunii printf şi scanf este dată de ponderile diferite ale folosirii descriptorilor.
Tabelul 1.10 conţine aceste ponderi, concentrările fiind pentru descriptorii valorilor
întregi, valorilor cu parte zecimală sau definirii şirurilor de caractere.

34
Metode statistice în analiza software

Utilizarea specificatorilor de format

Tabel 1.10
Specificator de %
format
%d 28,37
%f 25,74
%c 8,29
%u 6,00
%s 13,40
%p 0,56
*.* 15,13
\ 1,98
alţi descriptori 0,53
Total 100,00

O pondere importantă revine descriptorului corespunzător constantelor


întregi. Acest fapt se datorează formelor de prezentare a datelor care, de cele mai
multe ori nu conţin parte zecimală. În multe cazuri descriptorii asociaţi variabilelor
de tip întreg din lista instrucţiunilor de intrare-ieşire sunt utilizate pentru a indica
citirea sau scrierea dimensiunilor de masive, numărului de repetări ale secvenţelor,
numărului cazurilor sau al variantelor pentru care se efectuează calcule.
Descriptorul %s este utilizat în 37,01% din programe pentru editarea de
rezultate finale. În celelalte cazuri se imprimă rezultate intermediare sau valori ale
unor variabile în faza de testare a programelor. Acest descriptor este folosit în
9,39% din programe pentru introducerea datelor în vederea execuţiei de prelucrări.
Ponderea descriptorilor în totalitatea instrucţiunilor de scriere citire ale
limbajului C este bazată pe diversitatea preciziilor cu care sunt afişate rezultatele.
Numai în 26,71% din programe există utilizarea unei instrucţiuni pentru descrierea
mai multor variabile care apar în instrucţiuni de citire-scriere diferite, cum sunt
dimensiunea aceluiaşi şir de elemente.
Legătura care se stabileşte între complexitatea programelor şi dimensiunile
acestora este sugerată de repartizarea ponderilor unor instrucţiuni de bază ale
limbajului C în programe, grupate după numărul de instrucţiuni pe care acestea le
conţin, ponderii conţinute în tabelul 1.11.

35
Produse program

Ponderea instrucţiunilor
Tabel 1.11
Ponderi instrucţiuni
IF Instrucţiuni Instrucţiuni Instrucţiuni Alte
Număr repetitive de citire şi de atribuire instrucţiuni
instrucţiuni (%) (%) scriere (%) (%)
din program (%)
sub 100 4,33 3,98 12,58 70,10 9,01
101-250 4,92 4,17 14,22 68,54 8,29
251-350 3,40 4,67 12,47 61,75 17,71
351-550 3,86 5,49 12,17 59,61 18,87
peste 551 6,78 5,11 10,28 51,62 26,21

Din acest tabel se distinge caracteristica de dezvoltare a complexităţii


programelor prin creşterea ponderilor pentru instrucţiunile if( ) şi celor repetitive,
odată cu creşterea numărului de instrucţiuni din care este alcătuit fiecare program
în parte.
Creşterea ponderii altor instrucţiuni este determinată de definirea unor
construcţii, cum sunt, de exemplu, subprogramele şi rezervările zonelor de
memorie de lucru, dintre care unele trebuie iniţializate diferit după metoda
utilizată: static sau dinamic.
Programele scrise în limbajul C deşi conţin în cea mai mare parte
instrucţiuni de atribuire, se prezintă sub forma unor produse informatice complexe.
Definirea de matrice şi de vectori conduce la realizarea unor secvenţe în care se
regăsesc structurile repetitive şi cele alternative în care instrucţiunile de atribuire
sunt considerate ca părţi incluse ale structurilor.
În analiza statistică a programelor scrise în limbajul C un rol important
revine modului în care sunt definite variabilele elementare sau masivele, având în
vedere caracterul dinamic al definirilor pentru variabilele elementare. Se observă
că 46,19% din totalul variabilelor elementare sunt definite numai pentru a marca
diferenţe de nume pentru variabilele de control în cadrul ciclurilor construite cu
instrucţiunea for, do-while sau while. Din analiza unui număr de 50 de programe
extrase din eşantion, rezultă că printr-o reacoperire efectuată pe baza unui algoritm
euristic se reduce ocuparea zonelor de memorie pentru variabile elementare cu
23,85%.
Folosirea tehnicilor şi metodelor moderne pe care le implică programarea
structurată conduce la mutaţii fundamentale în structura ponderilor pentru
36
Metode statistice în analiza software

instrucţiunile limbajului C. Facilităţile pe care le presupune acest limbaj, la care se


adaugă altele noi legate îndeosebi de lucrul cu fişiere şi de definirea structurilor de
date mai complexe, au determina creşterea ponderii programelor scrise în limbajul
C în totalitatea componentelor din sistemele informatice complexe. Cu toate
acestea, datorită limitelor sale prin comparaţie cu limbajele de programare orientate
obiect, cum este C++, aplicaţiile viitoare implementează noile facilităţi.
Compararea programelor scrise în limbaje de programare diferite este
bazată pe valorile indicatorilor definiţi analizând modul de utilizare al
instrucţiunilor.
Un program se scrie în orice limbaj de programare. De fiecare dată se
obţine un produs informatic cu alte caracteristici. Acest lucru determină creşterea
gradului de dificultate al comparării programelor scrise în limbaje de programare
diferite. Compararea programelor, exclusiv după numărul de instrucţiuni sau după
tipul de prelucrare necesar, conduce la informaţii neconcludente, iar deciziile care
se iau pe baza lor nu sunt optime. Semnificaţia instrucţiunilor diferă de la un limbaj
de programare la altul, iar tipul prelucrării este determinat de facilităţile pe care le
conţine fiecare mediu de programare. Pentru a asigura compatibilitatea analizei de
programe scrise în limbaje diferite, se impune stabilirea în primul rând a
elementelor de structură care se identifică la nivelul limbajelor respective. În acest
sens, instrucţiunile limbajelor de programare comparate se grupează în şapte clase.
Dacă se consideră lotul de programe analizat şi limbajele de programare L1, L2, …,
LNL, ponderea instrucţiunilor pe fiecare clasă se înregistrează în tabelul 1.12.

Compararea instrucţiunilor aparţinând limbajelor de programare diferite.

Tabel 1.12
Limbajul L1 L2 … Lj … LNL
Clasa de instrucţiuni
Descrierea datelor pi11 pi12 … pi1j … pi1NL
Delimitare structură program pi21 pi22 … pi2j … pi2NL
Atribuire pi31 pi32 … pi3j … pi3NL
Repetare secvenţe pi41 pi42 … pi4j … pi4NL
Control execuţie pi51 pi52 … pi5j … pi5NL
Pregătire citire-scriere pi61 pi62 … pi6j … pi6NL
Alte instrucţiuni pi71 pi72 … pi7j … pi7NL

37
Produse program

în care:
NL – numărul de limbaje de programare analizate
Lj – limbajul j de programare;
piij – ponderea instrucţiunilor scrise în limbajul j şi care aparţin clasei i.

Comparabilitatea dintre limbaje este dată de modul în care se descriu


tipurile de date care sunt folosite în secvenţele de prelucrare. Pentru limbajele L1,
L2, …, LNL tipurile de descrieri posibile sunt indicate în tabelul 1.13.

Tipurile de date existente în limbajele analizate

Tabel 1.13
Limbaj L1 L2 … Lj … LNL
Tip de date .
D1 al11 al12 … al1j … al1NL
D2 al21 al22 … al2j … al2NL
… … … … … … …
Di ali1 ali2 … alij … aliNL
... … … … … … …
DND alND1 alND2 … alNDj … alNDNL

unde:
ND – numărul tipurilor de date fundamentale;
NL – numărul de limbaje de programare analizată;
Di – reprezintă un tip de dată;
Lj – limbajul j de programare;
alij – ia valori în mulţimea {0, 1} şi indică dacă limbajul de programare Lj
are definit tipul de date Di.

Comparabilitatea programelor privită prin prisma tipurilor de date se


analizează funcţie de următoarele criterii:
Š precizia care trebuie obţinută;
Š durata care este imprimată execuţiei programului prin repetarea unor
conversii;
Š asigurarea continuităţii prelucrărilor de date prin programe scrise în
limbaje diferite;

38
Metode statistice în analiza software

Programele scrise în limbaje diferite constituie punctul de plecare pentru


analizele care conduc la stabilirea unor criterii de alegere a limbajului potrivit
pentru rezolvarea unei anumite probleme. În acest caz, limbaj selectat este tratat ca
optim în raport cu problema respectivă. În faza de analiză statistică a programelor
din eşantion, stabilirea unor trăsături specifice modului de alegere a organizării
fişierelor conduce la obţinerea informaţiilor din tabelul 1.14.

Ponderea utilizării tipurilor de fişiere


Tabel 1.14
Limbajul L1 L2 … Lj … LNL
Tip organizare fişier .
Secvenţială pf11 pf12 … pf1j … pf1NL
Secvenţial-indexată pf21 pf22 … pf2j … pf2NL
Directă pf31 pf32 … pf3j … pf3NL
Total 100 100 … 100 … 100

în care pfij descrie ponderea fişierelor de tipul i în lotul de programe scris în


limbajul Lj.

Comparabilitatea limbajelor este analizată cu maximă eficienţă atunci când


programele scrise în limbajele de programare analizate au funcţii asemănătoare. În
acest caz, prin teste statistice se pun în evidenţă diferenţele care apar la duratele de
prelucrare, la zonele de memorie pe care le ocupă, etc.
Experienţa demonstrează că scrierea de sisteme de programe complexe este
efectuată în cel mult două limbaje de programare, dintre care unul este limbajul C.
Acest fel de a concepe scrierea programelor este bazat pe asigurarea unei
productivităţi ridicate în activitatea de programare, de respectarea termenelor de
implementare şi de perspectiva dezvoltării sistemelor respective în timp.
Analiza statistică a programelor permite evaluarea modificărilor pe care la
implică tehnicile de programare asupra utilizării instrucţiunilor din fiecare limbaj
de programare. Definirea unor limite de variaţie a parametrilor cu care se
caracterizează obiectiv programele, conduce la introducerea elementelor de ordin
cantitativ pentru evaluarea complexităţii programelor.

39
Produse program

1.3 Indicatori ai programelor

Produsele program reprezintă componentele principale în analizele


software, indiferent de obiectiv:
calitatea produsului;
gradul de complexitate;
analiză statistică;
studiu comparat;
estimarea anumitor caracteristici.
Realizarea analizei asupra produsului program este condiţionată de
existenţa:
metodelor care să îl caracterizeze prin valori numerice;
datelor primare; sunt obţinute direct prin măsurarea nivelurilor
caracteristicilor produsului software şi reprezintă punctul de start în
orice cercetare. Acestea se constituie într-un sistem de indicatori ai
programelor;
comparabilităţii valorilor obţinute pentru produse diferite.

Orice produs program este stocat sub forma unui fişier. Fişierul respectiv,
poate conţine codul sursă al aplicaţiei sau codul compilat şi gata de executat, însă
în ambele cazuri are lungime fixă. Lungimea se exprimă ca număr de baiţi, şi
reprezintă spaţiul de memorie fizică ocupat de fişier.
Pentru a determina mărimea produsului program ca număr de baiţi, este
preluată direct din descrierile făcute de sistemul de operare utilizat, lungimea
fişierului executabil. De exemplu produsul program qsort.exe are o lungime de
167,989 baiţi, acest lucru fiind citit din descrierea făcută de mediul MS-DOS în
figura 1.13.

Dimensiunea aplicaţiei qsort.exe

Figura 1.13 Determinarea lungimii programului ca număr de baiţi


în mediul MS-DOS

40
Metode statistice în analiza software

În cazul produselor complexe, compuse din mai multe module şi biblioteci


de funcţii între care există legături dinamice, lungimea acestora este determinată de
spaţiul ocupat la instalare de toate fişierele sale antrenate.
Pentru analizele efectuate pe loturi de programe omogene, se are în vedere
compilarea programelor cu acelaşi compilator. Absenţa îndeplinirii acestei cerinţe
conduce la obţinerea de valori diferite pentru acelaşi program în funcţie de
compilatorul utilizat, şi nu se asigură criteriul comparabilităţii outputurilor.
Orice program, înainte de a intra în execuţie, se prezintă sub mai multe
forme. În faza conceptuală a specificaţiilor, apare ca descrieri ale variabilelor, ale
secvenţelor de prelucrare, ale rezultatelor şi ale modului de operare. Apoi, acestea
sunt implementate în codul sursă al programului.
Pe baza analizei textului sursă sunt definiţi noi indicatori. Metoda este
justificată prin:
Š definirea limbajelor de programare cu standarde recunoscute;
Š existenţa regulilor acceptate de programare care elimină interpretările;
Š utilizarea compilatoarelor în generarea aplicaţiei executabile; printre
funcţiile compilatorului este inclusă şi funcţia de verificare a regulilor
de programare.
Lucrul pe textul sursă nu este afectat de fluctuaţii subiective, iar valorile
indicatorilor sunt reprezentative pentru orice program utilizat cel puţin odată.
Analiza textului sursă permite caracterizarea lungimii produsului program
ca număr de linii sursă.
Importanţa asigurării comparabilităţii datelor înregistrate pentru produse
program diferite, implică definirea regulilor legate de modul comun de aranjare a
textului sursă. Setul de reguli diferă în funcţie de limbajul de programare utilizat.
Pentru programele scrise în limbajul C, determinarea numărului de linii
sursă este condiţionată de:
ƒ ignorarea comentariilor;
ƒ scrierea antetului subprogramului pe o linie;
ƒ poziţionarea pe câte un rând a acoladelor ce delimitează blocurile de
instrucţiuni;
ƒ scrierea pe câte o linie a expresiilor de atribuire, simple sau multiple;
ƒ ocuparea unei singure linii de către fiecare instrucţiune definită cu
cuvinte cheie;
ƒ folosirea operatorilor unari pentru incrementări şi decrementări;
ƒ aranjarea pe niveluri a instrucţiunilor aparţinând blocului;

41
Produse program

ƒ trecerea pe o linie nouă după caracterul ;, dacă acesta nu este inclus într-
o altă structură.

Aplicarea regulilor asupra textului sursă al unui program determină


normalizarea acestuia, prin aducerea la forma definită.
Normalizarea codului sursă al procedurii pentru determinarea sumei
elementelor de deasupra diagonalei principale a unei matrice dat în figura 1.13
conduce la obţinerea formei din figura 1.14.

int suma_deasupra_diag_pricip(int **a, int n, int m )


{ int sum=0;
//verificare dacă matricea este pătratică
if(n!=m) {cout<<"\n Matrice nu este pătratică !"; return 0;}
else { for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(j>i) sum+=a[i][j];
cout<<"\n Suma elementelor este: ";
cout<<sum;
return sum;
}
}

Figura 1.14 Forma iniţială a codului sursă asociat procedurii

Numărul de linii sursă a textului sursă iniţial este de 12 linii, incluzând şi


comentariile.

int suma_deasupra_diag_pricip(int **a, int n, int m )


{
int sum=0;
if(n!=m)
{
cout<<"\n Matrice nu este pătratică !";
return 0;
}

42
Metode statistice în analiza software

else
{
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(j>i) sum+=a[i][j];
cout<<"\n Suma elementelor este: "<<sum;
return sum;
}
}

Figura 1.15 Forma normalizată a codului sursă asociat procedurii

Numărul de linii sursă al textului normalizat din figura 1.15 este de 17 linii.
Operaţie de normalizare are tendinţă de a mări dimensiunea fişierului
sursă, fiind în contradicţie cu intenţia programatorilor de a atinge grade de
compactare. Cu toate acestea, prin aranjarea codului în conformitate cu regulile
definite, se obţin:
ƒ compararea valorilor indicatorului pentru mai multe programe;
ƒ interpretarea corectă şi rapidă a textului, mai ales în operaţiile de
corectare a erorilor; este influenţat gradul de mentenanţă al
programului;
ƒ impune definirea de reguli legate de eficienţa codului.

Operaţiile de prelucrare desemnează:


Š iniţializări de variabile de tipul: i = 1; j = 7; x[i] = 0; y[i][j] = 2;
Š atribuiri de forma: i = a; x[i] = z[j];
Š evaluări de expresii asemenea: a = b + c;
Š comparări de tipul: a > b; a = = b; a != b;
Š salturi condiţionate;
Š salturi necondiţionate;
Š citire de date şi scrieri de rezultate;
Š definiri şi apeluri de funcţii;
Š operaţii cu fişiere;
Š căutări articole;
Š traversări;
Š ştergeri şi inserări.

43
Produse program

Operaţiile de prelucrare sunt diferite în ceea ce priveşte complexitatea de


descompunere în operaţii elementare. Cu toate acestea, pentru a se determina
volumul de prelucrări ce caracterizează un produs program se propune şi se acceptă
ipoteza simplificatoare a omogenităţii lor. Deşi tipurile de date fundamentale
implică alocări de zone de memorie diferite, iar operatorii definesc numere de
cicluri maşină distincte, ca ipoteză simplificatoare se consideră omogeni toţi
operanzii şi toţi operatorii.
Astfel, evaluarea expresiilor:

E1 = a + b;
E2 = a – b;
E3 = a / b;

cărora le corespunde schema logică dată în figura 1.16, conduce la realizarea unui
volum de prelucrări V = 5.

START

Citeşte a, b

E1 = a + b;

E2 = a – b;

E3 = a / b;

Afişare E1, E2, E3

STOP

Figura 1.16 Evaluarea expresiei de atribuire

Instrucţiunile de citire şi cea de afişare sunt considerate simple, deşi conţin


mai multe operaţii.

44
Metode statistice în analiza software

Pentru calculul produsului a două matrice Am,n şi Bn,p se consideră schema


logică din figura 1.17.
START

P1 Citeşte m, n, p

P2 Citeşte aij, cu i=1..m şi j=1..n

P3 Citeşte bij, cu i=1..n şi j=1..p

P4 i=1

P5 j=1

P6 temp = 0

P7 k=1

P8 temp = temp + aik·bkj


P9
k=k+1
P10 NU
k=n

P11 DA
j=j+1
P12 NU
j=p

P13
cij = temp
P14 DA
i=i+1
NU
P15 i=m

DA
P16 Afişez cij, cu i=1..m şi j=1..p

STOP

Figura 1.17 Schema logica a înmulţirii de matrice

45
Produse program

Se construieşte tabelul 1.15 al frecvenţei prelucrărilor.

Repetările blocurilor de instrucţiuni

Tabel 1.15
Bloc de instrucţiuni Număr repetări
P1 1
P2 1
P3 1
P4 1
P5 m
P6 m
P7 m*p
P8 m*p*n
P9 m*p*n
P10 m*p*n-1
P11 m*p
P12 m*p-1
P13 m*p
P14 m
P15 m-1
P16 1

Volumul prelucrărilor, V, pentru efectuarea produsului celor două matrice


este dat de relaţia:

V = 3*m + 5*m*p + 3*m*p*n + 2;

În exemplul considerat, pentru blocul decizional descris în figura 1.18,

NU DA
i=m

SV1 SV2

Figura 1.18 Bloc decizional

46
Metode statistice în analiza software

este cunoscut numărul repetărilor pentru secvenţele SV1 şi SV2.


În cazul în care evaluarea expresiei condiţionale determină alegerea
ramurii DA şi numărul cazurilor variantei NU, nu este cunoscut apriori, se ia în
considerare probabilitatea de apariţie, p, a valorii adevărat a rezultatului final al
evaluării.
Se obţine fragmentul de schemă logică dată în figura 1.19.

Probabilitatea q = 1 - p Probabilitatea p
C
NU DA
S1 S2

Figura 1.19 Bloc decizional cu probabilităţi asociate

Expresia condiţională C este adevărată, secvenţa SV2 este executată cu


probabilitatea p. Dacă expresia C este falsă, secvenţa SV2 este executată cu cu
probabilitatea q = 1- p.
Pentru evaluarea funcţiei:

xi, dacă xi > 5;


f(xi) = xi2, dacă xi ε [-5, 5];
xi3, dacă xi < -5;

se construieşte schema logică din figura 1.20.

47
Produse program

START

A1 Citeşte n

A2 Citeşte xi, cu i=1..n

A3 i=1

A4
NU xi > 5 DA

NU DA
A6 xi < -5
F = xi A5
A8
F = xi2 A7 F = xi3

A10
i=i+1
NU
A9 i=n

DA
A11 Afişez F

STOP

Figura 1.20 Schemă logică pentru calculul funcţiei f

Pentru evaluarea volumului de prelucrări se construieşte tabelul 1.16.

48
Metode statistice în analiza software

Numărul de repetări ale blocurilor

Tabel 1.16
Bloc Probabilitate Număr repetări
A1 1 1
A2 1 1
A3 1 1
A4 1 n
A5 p1 n*p1
A6 q1 n*q1
A7 p2*q1 n* p2*q1
A8 q2*q1 n* q2*q1
A9 1 n
A10 1 n-1
A11 1 1

Volumul de prelucrări este:

V = n + n*p1 + n*q1 + n* p2*q1 + n* q2*q1 + n + (n-1) + 4

Dar, cum p1 + q1 = 1 şi p2 + q2 = 1 rezultă:

V = n*(4 – p1) + 3

Volumul de prelucrări reprezintă o evaluare imprecisă a numărului de


instrucţiuni care se execută în programul analizat, utilizată pentru a estima
performanţele programelor.

1.4 Duratele asociate produselor program

Produsul program este rezultatul unui proces de dezvoltare format din


etapele următoare:
analiza problemelor de rezolvat;
stabilirea datelor de intrare şi ieşire;
definirea algoritmului care rezolvă problemele prin prelucrarea datelor
de intrare;
49
Produse program

elaborarea structurii produsului program pe module;


elaborarea specificaţiilor;
codificarea textului prin intermediul unui limbaj de programare;
testarea produsului program final sau a unui prototip;
implementarea aplicaţiei în activităţi social-economice;
îmbunătăţirea continuă a produsului.

Ciclul de elaborare este format din etapele Etap1, Etap2, …, Etapnetap.


Pentru toate etapele acestea se definesc indicatori care măsoară niveluri ale
caracteristicilor, în raport cu obiectivele definite. De asemenea, este implementat
un sistem complex de gestiune al resurselor utilizate care utilizează valorile
rezultate pentru a coordona activităţile implicate în ciclul de viaţă a programului.
Un astfel de indicator este durata unei etapei, rezultat din necesitatea de a
contoriza consumul resursei de timp.
Produsele program sunt caracterizate de procese de dezvoltare complexe.
Acestea necesită resurse substanţiale şi pentru fiecare produs în parte structuri
diferite, ce depind de:
Š metodologia de proiectare implementată;
Š strategia producătorului;
Š categoria de aplicaţii software din care face parte;
Š resursele avute la dispoziţie;

Rezultă că, măsurarea duratelor etapelor existente, Etap1, Etap2, …,


Etapnetap, precum şi utilizarea datelor în analize comparate este o operaţie
costisitoare. De aceea, acestea sunt agregate în doi indicatori cu caracter general:
™ durata cadrului de dezvoltare, ∆ C , corespunde timpului necesar
realizării produsului program; indicatorul este definit de relaţia:

∆ C = TF − TO

în care:
TO – momentul de începere a etapei de definire a programului;
TF – momentul în care dezvoltarea de software este încheiată şi se predă
produsul utilizatorului pentru a lucra independent de elaborator;

50
Metode statistice în analiza software

™ durata de utilizare ∆U funcţie de TF şi TS:

∆U = TS − TF

unde TS reprezintă momentul scoaterii din uz; producătorul încetează îmbunătăţirea


programului şi realizează unui produs nou;

Pentru majoritatea produselor program existente, valorile celor doi


indicatori, sunt măsurate şi constituie o bază de comparaţie şi estimare pentru
procesele de producţie viitoare. Cu cât complexitatea programului este mai mare,
producerea lui implică metode şi etape mai complexe, iar reprezentativitatea
estimărilor bazate pe valori ale duratelor cunoscute şi înregistrate, scade.
Situaţia este generată de numărul mare de elemente al mulţimii factorilor
ce influenţează durata ciclului de dezvoltare sau durata de utilizare. Ponderea
fiecărui factor diferă pentru fiecare categorie de programe. Analiza tuturor
legăturilor de dependenţă este o operaţie greu de realizat datorită numărului mare
de factori şi variaţiei semnificaţiei lor în funcţie de tipul produsului program.

În urma analizei factoriale realizate pentru mai multe aplicaţii, se


desemnează complexitatea programului ca fiind factorul cu cea mai mare influenţă.
Modul de determinarea a acesteia se obţine prin metodele:
Š Halstead, din conţinutul lexical şi sintactic al codului sursă, prin analiza
textului sursă şi determinarea numărului de operatori şi operanzi
distincţi;
Š McCabe, din structura internă a programului, prin analiza grafului
asociat programului şi determinarea numărului ciclomatic;
Š alte metode structurale, bazate pe structura internă programului;
Š entropice, din structura programului;
Š orientate obiect, din analiza programelor scrise cu respectarea
principiilor POO.

Pentru aplicaţiile de complexitate redusă, valorile celor indicatorilor sunt


mici şi permit construirea de modele de regresie pe baza cărora să fie estimate cu o
precizie mai ridicată valorile asociate produselor noi.

51
Produse program

Omogenitatea loturilor de programe analizate şi comparabilitatea


înregistrărilor este asigurată prin selectarea aplicaţiilor în funcţie de tipul acestora.
De exemplu, se construieşte un eşantion prin includerea produselor program de
arhivat fişiere.

Se consideră produsele program P1, P2, …, PNP incluse în aceeaşi categorie


de aplicaţii şi complexitatea acestora C1, C2, …, Cn. Pe baza observaţiilor făcute
de-al lungul etapelor ciclului de viaţă se stabilesc duratele de realizare şi
de rămânere în execuţie pentru fiecare produs program. Datele sunt trecute în
tabelul 1.17.

Durata de realizare şi de rămânere în execuţie pentru un set de programe

Tabel 1.17
Program Complexitate Durata de creare Durata de utilizare
program program
P1 C1 ∆C1 ∆U1
P2 C2 ∆C2 ∆U2
… … … …
Pi Ci ∆Ci ∆Ui
… … … …
PNP CNP ∆CNP ∆UNP

unde:
NP – numărul de programe analizate;
Pi – programul i din eşantion, pentru care se înregistrează datele;
Ci – complexitatea programului Pi determinată prin intermediul unuia
dintre modelele: Halstead, McCabe;
∆Ci – durata de timp consumată pentru a crea programul Pi;
∆Ui – durata de timp cât a fost folosit programul Pi înainte de fi scos din
utilizare.

Fiecare categorie de programe conţine aplicaţii de acelaşi tip şi cu


complexităţi diferite. De aceea, este important ca programele să fie împărţite pe
clase de complexitate. Acest lucru are implicaţii asupra procesului de estimare a
duratelor, existând premisele dezvoltării de modele de regresie mai precise pentru
fiecare clasă în parte.

52
Metode statistice în analiza software

Considerând lotul de programe P1, P2, …, Pn, reprezentativ pentru categoria


din care acestea fac parte, algoritmul de clasificare constă în parcurgerea paşilor:
se calculează valoarea medie a complexităţii, C , după relaţia:

NP

∑C i
C= i =1
NP

unde:
NP – numărul de programe din eşantion;
Ci – complexitatea programului Pi;

se calculează abaterea medie a valorilor faţă de complexitatea medie:

∑ (C −C )
NP
2
i
σC = i =1
NP

unde:
NP – numărul de programe din eşantion;
Ci – complexitatea programului Pi;
C – valoarea medie a complexităţii;

se standardizează datele înregistrate pentru complexitate prin


determinarea valorii Ci’:

Ci − C
C 'i = , i = 1..n
σC

se sortează descrescător coloana valorilor standardizate a tabelului 1.18;

53
Produse program

Utilizarea valorii standardizate a complexităţii în determinarea claselor de programe

Tabel 1.18
Valoare standardizată Durata Durata
Program Complexitate
a complexităţii de creare de utilizare
P1 C1 C’1 ∆C1 ∆U1
P2 C2 C’2 ∆C2 ∆U2
… … … … …
Pi Ci C’i ∆Ci ∆Ui
… … … … …
PNP CNP C’NP ∆CNP ∆UNP

unde:
C’i – valoarea standardizată a complexităţii Ci;

Š se găseşte valoarea standardizată maximă, C’max ,respectiv minimă,


C’min;
Š se stabileşte numărul kclase al claselor de programe;
Š se determină limita superioară şi inferioară a intervalului de valori
standardizate asociat clasei clasaj, utilizând relaţia:

C 'max −C 'min
linfj = C 'min +( j − 1) ⋅ , j = 1..kclase
kclase
C 'max −C 'min
j
lsup = C 'min + j ⋅ , j = 1..kclase
kclase

unde:
kclase – numărul claselor de programe;
linfj – limita inferioară a intervalului de valori al clasei de programe
clasaj;
j
lsup – limita superioară a intervalului de valori al clasei de programe
clasaj;

54
Metode statistice în analiza software

Š programele sunt aranjate în clase de complexitate:

Aranjarea programelor în clase de complexitate

Tabel 1.19
Valoare Durata
Durata
standardizată de
Clasa Program Complexitate de creare
a utilizare
program
complexităţii program
P1 C1 C’1 ∆C1 ∆U1
1 … … … … …
Pp Cp C’p ∆Cp ∆Up
… … … … … …
Pr Cr C’r ∆Cr ∆Ur
kclase … … … … …
PNP CNP C’NP ∆CNP ∆UNP

în care:
NP – numărul de programe analizate;
kclase – numărul de clase de complexitate;
P1, .., Pp, …, Pr, …, PNP – setul de programe iniţiale sortat după valorile
standardizate ale complexităţii.

Odată clasificate programele după nivelul complexităţii lor se descriu


pentru fiecare clasa modele de regresie pentru cele două durate. Se studiază grafic
corelaţia dintre valoarea complexităţii şi valorile duratelor pentru a determina tipul
regresiei.
În cazul în care regresia este liniară, fiecărei clase de complexitate, clasaj, i
se asociază modelele:

Yj∆C = aj∆C + bj∆C*X,


Yj∆U = aj∆U + bj∆U*X,,

unde:
Y – caracteristica rezultativă, ale cărei valori depind de variabila
factorială;

55
Produse program

X – caracteristică factorială sau variabila independentă;


a – parametrul constant al ecuaţiei;
b – coeficientul de regresie;
Yj∆C – modelul de regresie al duratei de creare, în funcţie de
complexitatea programului;
Yj∆U – modelul de regresie al duratei de utilizare, în funcţie de
complexitatea programului.

În momentul analizei unei aplicaţii nouă de complexitate Q, se caută clasa


de complexitate clasaj în care Q se încadrează. Pentru a estima durata de creare sau
de utilizare se aplică modelul Yj∆C, respectiv Yj∆U.

În analiza unui produs program este important să se includă şi studiul


duratei unei tranzacţii. Acesta este definită ca fiind efortul depus pentru a apela
programul cu un set de date de intrare şi de a obţine rezultatele prelucrării.
Tranzacţia este o solicitare distinctă a utilizatorului faţă de aplicaţie.
Durata unei tranzacţii reprezintă timpul consumat pentru a efectua
operaţiile asociate procesului analizat. Considerând că acesta este compus din nT
operaţii, relaţia duratei tranzacţiei este:

nT
DT = ∑ d i
i =1

unde:
DT – durata tranzacţiei;
nT – numărul operaţiilor ce compun tranzacţia;
di – durata operaţiei i.

De exemplu, programul pentru inversări de matrice, care lansat în execuţie


inversează n matrice, are asociat graful din figura 1.21.

56
Metode statistice în analiza software

Lansare aplicaţie

Citire matrice

Inversare matrice

Afişare matrice

DA
Continuare ?

NU
Oprire aplicaţie

Figura 1.21 Graful asociat programului care inversează n matrice

În acest caz, tranzacţia cuprinde operaţiile:


introducere matrice;
inversare matrice;
afişare matrice.
Durata acestei tranzacţii este dată de suma duratelor operaţiilor implicate:

Dtranz = ditroducere + dinversare + dafişare


unde:
Dtranz – durata tranzacţiei;
dintroducere – durata necesară introducerii unei noi matrice;
dinversare – durata operaţiei de inversare;
dafişare – durata de afişare a matricei inversate.

57
Produse program

În cazul unei aplicaţii bancare ce gestionează mb conturi aparţinând celor


nb clienţi ai băncii tranzacţia este definită de operaţiile necesare depunerii respectiv
extragerii unor sume de bani în şi din contul clientului. Dacă operaţiile sunt:
introducere date de identificare ale clientului şi contului;
validare date de intrare;
căutare alte informaţii legate de cont sau client;
efectuarea depunerii sau extragerii;
afişare rezultat.
Durata tranzacţiei este dată de relaţia:

Dtranz = di + dv + dc + dp + ds
unde:
di – durata introducerii datelor;
dv – durata validării datelor de intrare;
dc – durata căutării;
dp – durata prelucrării;
ds – durata afişării.
Analiza duratelor tranzacţiilor constituie baza de pornire a procesului de
îmbunătăţire a produsului program prin diminuarea timpului necesar unei
prelucrări. Prin cercetarea intensităţii legăturilor dintre durata tranzacţiei şi duratele
operaţiilor incluse în aceasta, se determină elementele care o influenţează puternic.
Se consideră programul P, cu o structură modulară compusă din nT
componente, fiecare asociată unei operaţii. Indiferent de setul datelor de intrare,
există o singură metodă de prelucrare a acestora, activându-se pe rând toate
componentele. Cu acest program sunt rezolvate mT probleme de acelaşi tip dar
diferite prin seturile de intrare. Duratele operaţiilor intermediare şi a tranziţiei sunt
înregistrate în tabelul 1.20.

Duratele de tranziţie înregistrate pentru cele mT probleme


Tabel 1.20
Set de date Durata Durata … Durata … Durata Durata
intrare operaţie operaţie operaţie operaţie tranziţie
op1 op2 opj opnT DT
S1 d11 d12 … d1j … d1nT D1
S2 d21 d22 … d2j … d2 nT D2
… … … … … … … …
Si di1 di2 … dij … di nT Di
… … … … … … … …
SmT dmT1 dmT2 … dmTj … dmT nT DnT

58
Metode statistice în analiza software

unde:
mT – numărul de probleme;
nT – numărul de componente ale produsului program;
Si – setul de date asociat problemei i;
opj – operaţia efectuată de componenta j;
Di – durata tranziţiei i;
dij – timpul consumat de componenta j pentru a procesa datele din setul i.

Pentru fiecare dintre operaţiile opj se determină valoarea medie a duratei de


timp aferentă operaţiei de prelucrare, precum şi dispersia valorilor faţă de medie.
Scopul acestei abordări este de a verifica dacă componenta j efectuează operaţia opj
într-o perioadă de timp constantă, indiferent de tipul problemei. Valorile celor doi
indicatori sunt trecute în tabelul 1.21.

Valoarea medie şi dispersia duratelor operaţiilor opj.


Tabel 1.21
Operaţie Operaţie … Operaţie … Operaţie Durata
op1 op2 opj opnT tranziţie
Valoarea d d … d … d D
1 2 j nT
medie
Dispersia σ 12 σ 22 … σ 2j … σ nT
2
σ D2

unde:
d j – durata medie asociată operaţiei opj, determinată de relaţia:
mT

∑d ij
dj = i =1

mT
σ dj2 – dispersia valorilor înregistrate de operaţia opj pentru cele mT
prelucrări, fiind calculată de formula:

∑ (d −dj)
mT
2
ij
σ dj2 = i =1
mT
d j – durata medie a unei tranzacţii;
σ D2 – dispersia valorilor duratelor tranzacţiei pentru cele mT probleme.
59
Produse program

Dacă valoarea dispersiei asociate operaţiei opj este 0 atunci este verificată
stabilitatea operaţiei de a se executa într-o perioadă de timp constantă. În caz
contrar, este subliniată variaţia duratei tranzacţiei funcţie de durata operaţiei opj.
De asemenea valoarea medie a duratei tranzacţiei este reprezentativă, doar
dacă dispersia valorilor sale este apropiată de valoarea 0.
Pentru a determina componentele ce influenţează valoarea duratei
tranzacţiei se calculează pe baza datelor din tabelul 2.21 coeficienţii de corelaţie
rD/dj dintre valorile lui Di şi dij, cu j = 1..nT.
mT mT mT
mT ∑ d ij Di − ∑ d ij ∑ Di
rD / d j = i =1 i =1 i =1

⎡ mT 2
⎤ ⎡ mT ⎞ ⎤
2
⎛ mT ⎞ 2 ⎛
mT
⎢mT ∑ d ij2 −⎜⎜ ∑ d ij ⎟⎟ ⎥ ⎢mT ∑ Di −⎜⎜ ∑ Di ⎟⎟ ⎥
⎢⎣ i =1 ⎝ i =1 ⎠ ⎥⎦ ⎢⎣ i =1 ⎝ i −1 ⎠ ⎥⎦

în care:
mT – numărul de probleme;
Di – durata tranziţiei i;
dij – timpul consumat de componenta j a programului pentru a procesa
datele din setul Si.

În cazul operaţiile opj care descriu o legătură puternică cu durata


tranzacţiei, Di, se construiesc modele de regresie, al căror tip este determinat pe
cale grafică. De asemenea, componentele care implementează operaţiile selectate,
sunt analizate pentru a se găsi modalităţi posibile de micşorare a timpului
consumat. Soluţiile depind în mare măsură de:
Š specificul operaţiei;
Š algoritmul utilizat;
Š tehnologia existentă;
Š caracteristicile datelor.
Pentru a exemplifica, se consideră programul de calcul a mediilor
studenţilor, utilizând notele din catalogul fiecărei materii studiate. Produsul
program este activat pentru a calcula media pentru:
ƒ un student;
ƒ grupă de 20 de studenţi;
ƒ o serie de 5 de grupe a câte 20 de studenţi;
ƒ pentru un an de studiu format din 4 serii de câte 5 grupe.

60
Metode statistice în analiza software

Aplicaţia primeşte la intrare date privind notele studentului prin scanarea


unui formular ce conţine o matrice de nS linii reprezentând numărul de studenţi şi
mS coloane, reprezentând numărul de materii. Calculul mediilor este realizat într-o
singură operaţie, iar rezultatele sunt salvate într-o bază de date şi apoi afişate
pe ecran de o altă procedură, cu posibilitatea de a fi imprimate ulterior.
Valorile măsurate în zecimi de secundă pentru duratele fiecărei operaţii se găsesc
în tabelul 1.22.

Duratele înregistrate pentru aplicaţie de calcul a mediilor


Tabel 1.22
Număr Număr Durata Durata Durata Durata Durata
materii studenţi scanare calcul salvare în afişare tranzacţie
medii baza de
date
7 1 150 2 2 2 157
7 20 280 2 6 3 311
7 100 350 5 11 3 469
7 400 550 7 14 3 974

Pe baza acestor date se calculează valorile mediei şi dispersiei pentru


duratele celor patru prelucrări şi pentru durata tranzacţiei.

Valoarea medie şi dispersiile duratelor înregistrate pentru aplicaţia de calcul


a mediilor anuale ale studenţilor
Tabel 1.23
Durata Durata Durata salvare Durata Durata
scanare calcul în baza de date afişare tranzacţie
medii
Medie 332,5 4 8,25 2,75 477,75
Dispersie 20918,75 4,5 21,19 0,19 94256,68

Din datele tabelului 1.23 rezultă instabilitatea duratei asociate operaţiilor


de scanare şi salvare în baza de date, fapt ce contribuie la variaţia valorii duratei
tranzacţiei. Pentru a determina variabilele ce influenţează puternic timpul consumat
de realizarea tranzacţiei sunt calculate în tabelul 1.24 valorile coeficienţilor de
corelaţie dintre durata tranzacţiei şi duratele operaţiilor.

61
Produse program

Valoarea coeficienţilor de corelaţie


Tabel 1.24
Durata Durata Durata salvare în Durata Durata
scanare calcul medii baza de date afişare tranzacţie
Durata
0,99 0,94 0,92 0,60 1
tranzacţie

Alegând coeficienţii cu valori mai mari decât 0,75 sunt găsite variabilele
care influenţează puternic durata tranzacţiei:
operaţia de scanare;
operaţia de calcul a mediilor;
durata de salvare în fişier.

Deci, pentru a se micşora timpul consumat de o tranzacţie, trebuie găsite


metode care să micşoreze timpul aferent executării acestor operaţii. Soluţii de
implementate sunt:
utilizarea de tehnologii de scanare noi şi mai rapide;
înlocuirea metodei de accesare a notelor studenţilor; de exemplu se
citesc dintr-o bază de date;
dezvoltarea unui algoritm de calcul a mediilor mai rapid;
metode de acces şi lucru cu baze de date mai rapide.

Rezultatele, selecţiei factorilor de influenţă sunt utilizate şi pentru a


determina un model de regresie care să permită estimarea duratei tranzacţiei. Cum,
valoarea acesteia depinde de mai mult de un factor, ecuaţia de regresie este o
funcţie de mai multe variabile:

Yx1, x2, x3 = a0 + a1*X1 + a2*X2 + a3*X3


în care:
Yx1, x2, x3 – caracteristica rezultativă, ale cărei valori depind de variabila
factorială;
X1, X2, X3 – caracteristicile factoriale sau variabilele independente;
a0 – parametrul constant al ecuaţiei;
a1, a2, a3 – coeficienţii de regresie.

Pentru durata de tranzacţie a aplicaţiei analizate se obţine ecuaţia de


regresie:
D = -265,52 + 2,5*dscan + 66*dmedie – 43*dsave
62
Metode statistice în analiza software

unde:
D – durata estimată a tranzacţiei;
dscan – durata operaţiei de scanare a notelor;
dmedie – durata calculării mediilor;
dsave – durata scrierii rezultatelor în baza de date.

Duratele produselor program sunt indicatori primari ce descriu aplicaţia


prin evidenţierea nivelurilor de performanţă. De asemenea constituie elemente
importante ale analizei comparate de produse software.
Determinarea valorilor acestei caracteristici şi a factorilor care o
influenţează, reprezintă un punct de pornire în procesul permanent de îmbunătăţire
a programului.

1.5 Concluzii

Odată cu diversificarea software, cu apariţia de producători concurenţiali şi


cu creşterea complexităţii produselor program, analiza software a dezvoltat
indicatori din ce în ce mai diverşi şi cu putere mare de descriere a caracteristicilor
cercetate. Pentru a se ajunge la aceste rezultate este nevoie de o serie de indicatori
cu caracter general care să fie utilizaţi pentru toate tipurile de produse program şi
care să furnizeze datele primare pe baza cărora este fundamentată analiza software.
Utilizaţi în etapele iniţiale ale analizei software, indicatorii permit descrierea
produsului program. Continuarea analizei este posibilă în orice direcţie, deoarece
datele astfel obţinute sunt caracterizate de:
™ grad ridicat de comparabilitate;
™ reprezentativitate;
™ metode unice de determinare.

Analiza software ce utilizează setul de indicatori primari


structura modulară a produsului program;
indicatori ai utilizării instrucţiunilor;
indicatori ai textelor sursă;
durate de execuţie;
descriu programul şi comportamentul său, stabilind niveluri de performanţă
comparabile. Însă, evidenţierea factorilor ce determină valorile rezultate se
realizează prin definirea şi implementarea de indicatori agregaţi.

63
2
LOTURI DE PROGRAME

2.1 Dimensiunea lotului

Odată ce colectivitatea de elemente supusă analizei este stabilită ca


structură şi dimensiune se procedează la determinarea dimensiunii eşantionului şi
la stabilirea modului în care se efectuează selecţia lotului.
Pentru asigurarea reprezentativităţii rezultatelor la fiecare rulare a
produsului program analizat se utilizează seturi de date suficient de mari şi variate.
Interpretarea erorii de reprezentativitate depinde de mărimea eşantionului pentru
Š loturi cu un număr mic de elemente este utilizată distribuţia Student;
Š eşantioane mari se utilizează distribuţia Laplace.

Dimensiunea eşantionului reprezintă o problemă importantă în realizarea


de analize software. În cazul cel mai bun, este asigurată reprezentativitatea
rezultatului, dacă lotul de analizat cuprinde toate elementele existente. Dar, această
situaţie este imposibilă pentru multe analize. De exemplu, dacă se efectuează
analiza comparată a tuturor programelor scrise în C în ultimii 5 ani de către
studenţii din cadrul unei facultăţi de profil tehnic, trebuie cercetate mii de produse
program.

64
Metode statistice în analiza software

Prin determinarea dimensiunii eşantionului se doreşte obţinerea unui număr


destul de mare de elemente, dar suficient, ţinând seama de criterii economice legate
de costul analizei. Se au în vedere:
ƒ satisfacerea cerinţelor de precizie şi siguranţă;
ƒ costul optim al analizei.
Deoarece, analiza software lucrează cu entităţi unice, reprezentate de
produse program finite sau seturi de date de intrare, selecţia eşantionului este
comparată cu metoda statistică a sondajului nerepetat.
Dimensiunea nlot a eşantionului este determinată prin relaţia:

N colectivitate ∗ z α2 ∗ σ Caract
2
n lot =
(N colectivitate − 1)δ 2 + z α2 ∗ σ Caract
2

unde:
Ncolectivitate – dimensiunea colectivităţii totale;
σ Caract – abaterea medie pătratică a valorilor caracteristicii după care se
face selecţia;
zα – probabilitatea de încredere P = 1 – α, din tabelele funcţiei
Laplace;
δ – eroarea limită admisibilă, stabilită în funcţie de
particularităţile problemei practice de rezolvat, prin relaţia:

eroare ∗ X Caract
δ=
100

în care:
eroare – eroarea probabilă din valoarea medie;
X Caract – valoarea medie a caracteristicii de grupare.

Valoarea abaterii medii pătratice, σ , a caracteristicii de selecţie este


determinată prin:
¾ cunoaşterea din cercetări anterioare a dispersiei colectivităţii generale;
¾ realizarea unei analize pe un eşantion redus pentru a determina valoarea
dispersiei valorilor; pe baza rezultatului se efectuează estimări;

65
Loturi de programe

¾ utilizarea valorii maxime a dispersiei, prin considerarea cazului cel mai


nefavorabil:

σ max
2
=
(X min
Caract − X Caract ) + (X
2 max
Caract − X Caract )
2

unde:
σ max
2
– valoarea maximă a dispersiei;
min
X Caract – valoarea minimă a caracteristicii de selecţie;
max
X Caract – valoarea maximă a caracteristicii de selecţie;
X Caract – valoarea medie a caracteristicii.

De exemplu, se realizează o analiză comparată a rezultatelor pe care le


generează produselor de arhivat fişiere. Pentru aceasta se determină dimensiunea
lotului de fişiere pe baza cărora se măsoară duratele proceselor şi mărimea arhivei
obţinute. Fişierele sunt caracterizate de lungimea lor în octeţi. Se are în vedere:
Ž în fiecare zi se arhivează un volum de Ncolectivitate = 1000 de fişiere;
Ž abaterea medie pătratică a lungimii fişierului este de σ Caract = 500 de
octeţi;
Ž probabilitatea de decizie P = 1- α = 99%, căreia îi corespunde valoarea
tabelară zα = 2,33;
Ž eroarea probabilă de 5% din dimensiunea medie a unui fişier;
Ž dimensiunea medie a unui fişier de X Caract =4500 de octeţi.

Rezultă că dimensiunea lotului de teste este nlot = 26 de fişiere.

2.2 Neomogenitatea loturilor

Dezvoltarea programelor software şi tendinţa tot mai accentuată de a


introduce aplicaţii cu grad ridicat de generalitate impune analiza loturilor de
programe neomogene în vederea determinării de metode care să aleagă procesul de
prelucrare optim.

66
Metode statistice în analiza software

Se consideră car1, car2, …, carncar caracteristicile elementelor unei grupări.


Conceptele de colectivitate sau set sunt evitate, folosindu-se conceptul de grupare
pentru a defini elementele care sunt luate în considerare întâmplător sau fără a se
utiliza în prealabil un algoritm de construirea a loturilor omogene.
Se construieşte o matrice în care se consemnează faptul că un element li din
grupul format din elementele l1, l2, …, lnl este descris utilizând caracteristica cj,
dacă la intersecţia liniei i cu coloana j apare simbolul *. În absenţă, situaţia este
indicată prin -.
Dacă se înregistrează structura ca în tabelul 2.1 rezultă că elementele
l1, l2, …, li sunt total diferite de elementele li+1, li+2, …, lnl, fiecare aparţinând unei
alte grupări.

Grupare neomogenă

Tabel 2.1
Caracteristici
Element car1 car2 … carj carj+1 … carncar
l1 * * … * - … -
l2 * * … * - - -
… … … … … … … …
li * * … * - … -
li+1 - - … - * … *
li+2 - - … - * … *
… … … … … … … …
lnl - - … - * … *

Grupul iniţial este descompus în două colectivităţi omogene în raport cu


modul de descriere.
Pentru a analiza oferta de periferice se construieşte un grup de elemente pe
baza ofertei de pe piaţă. Situaţia exemplifică descompunerea în loturi omogene,
tabelul 2.2, constituite din grupul l1, l2, …,l5 reprezentând modele de imprimante şi
grupul l6, l7, …, l10 ce descrie monitoare.

67
Loturi de programe

Exemplu de grupare neomogenă descompusă în grupe omogene


Tabel 2.2
Caracteristici
Element Volum cartuş Viteză Rezoluţie Rată refresh Diagonală
l1 * * - - -
l2 * * - - -
l3 * * - - -
l4 * * - - -
l5 * * - - -
l6 - - * * *
l7 - - * * *
l8 - - * * *
l9 - - * * *
l10 - - * * *

În cazul în care apare problema dispersării elementelor * în matrice,


asemenea situaţiei din tabelul 2.2 se procedează la efectuarea unor regrupări
de caracteristici şi de elemente, obţinându-se colectivităţi cât mai omogene,
tabelul 2.3, prin interschimburi de linii şi coloane.

Grupare neomogenă
Tabel 2.3
Caracteristici
Element car1 car2 car3 car4 car5 car6 car7 car8 car9
l1 * * * - - - - - -
l2 - - - - - * - - -
l3 - - - - - - * * *
l4 - - - * * - - - -
l5 - - - - - - * * *
l6 * * * - - - - - -
l7 - - - * * - - - -
l8 * * * - - - - - -
l9 - - - - - - * * *
l10 - - - - - * - - -
l11 - - - * * - - - -
l12 * * * - - - - - -
l13 - - - - - - * * *
l14 - - - * * - - - -
l15 * * * - - - - - -
68
Metode statistice în analiza software

Descompunerea grupării neomogene în subgrupuri omogene

Tabel 2.4
Caracteristici
Element car1 car2 car3 car4 car5 car6 car7 car8 car9
l1 * * * - - - - - -
l6 * * * - - - - - -
l8 * * * - - - - - -
l12 * * * - - - - - -
l15 * * * - - - - - -
l4 - - - * * - - - -
l7 - - - * * - - - -
l11 - - - * * - - - -
l14 - - - * * - - - -
l2 - - - - - * - - -
l10 - - - - - * - - -
l3 - - - - - - * * *
l5 - - - - - - * * *
l9 - - - - - - * * *
l13 - - - - - - * * *

Pentru a determina gradul de omogenitate sau neomogenitate a unui grup


de elemente în funcţie de posibilitatea descrierii elementului li prin intermediul
caracteristicii cj se defineşte indicatorul GO cu relaţia:

n m

∑∑ xcar
i =1 j =1
ij

GO =
nl ⋅ ncar

unde:
nl – numărul de elemente al grupului;
ncar – numărul de caracteristici;
xcarij – elementul matricei de corespondenţă; dacă elementul li este
descris de caracteristica carj atunci xcarij ia valoarea 1, altfel 0.

69
Loturi de programe

Dacă valoarea indicatorului, GO, este egală cu 1, este evidenţiată


omogenitatea grupului, toate elementele fiind caracterizate de setul de
caracteristici. Altfel, se impune utilizarea algoritmului de regrupare. Acesta constă
în interschimburi repetate de linii şi de coloane.
Printre rezultatele regrupării apar situaţii în care apar caracteristici
comune., tabelul 2.5.

Descompunere de grupare neomogenă în colectivităţi cu caracteristici comune

Tabel 2.5
Caracteristici
Element car1 car2 … carj carj+1 … carncar
l1 * * … * * … -
Colectivitate 1 l2 * * … * * - -
… … … … … … … …
li * * … * * … *
Colectivitate 2
li+1 * * … * * … *
li+2 - - … * * … *
Colectivitate 3 … … … … … … … …
lnl - - … * * … *

În acest caz, grupul se descompune în 3 colectivităţi:


Colectivitate 1 descris de caracteristicile car1 → carj+1;
Colectivitate 2 descris de caracteristicile carj → carj+1;
Colectivitate 3 descris de caracteristicile carj → carncar.

Dacă pentru fiecare colectivitate există o prelucrare statistică specifică, în


programe, se asociază o structură alternativă multiplă:
Colectivitate 1 → Prelucrare Prel1;
Colectivitate 2 → Prelucrare Prel2;
Colectivitate 3 → Prelucrare Prel3;
………………………………
Colectivitate t → Prelucrare Prelt

Se consideră variabilele de control u = 1, 2, …, t. Structura care selectează


prelucrare de efectuat în funcţie de colectivitate are forma din figura 2.1.

70
Metode statistice în analiza software

da
u = =1

da
u = =2 Prelucrare 1
Prelucrare 2

………………………………………………………

da
u==t

Prelucrare t ……………

Figura 2.1 Structură pentru prelucrarea unei grupări neomogene

Un produs software care implementează un mod dinamic de prelucrare, în


funcţie de tipul datelor de intrare, este descris în [IVAN98] şi [VERN96].
Programul descrie modalităţile de prelucrare, compresie, pentru fişiere neomogene.
De exemplu, tipurilor de fişiere din tabelul 2.6 le este asociat în mod unic un singur
algoritm de compresie, considerat optim.

Tipuri de fişiere de arhivat

Tabel 2.6
Fişier Tip fişier Algoritm compresie
Fs1 Date numerice RLE
Fs2 Text Huffman standard
Fs3 Imagine Compresie aritmetică
Fs4 Sunet LZW

Se iau algoritmi de compresie şi folosind mulţimi de fişiere din fiecare tip


rezultă pentru fiecare tip numai că un anumit algoritm de compresie/decompresie
este eficient.

71
Loturi de programe

Programul de compresie fişiere neomogene presupune:


Ž o bibliotecă de algoritmi de compresie, complet independenţi;
Ž instrumente pentru analiza fişierelor pentru a determina clasa de
algoritmi;
Ž calcul metrici pentru fişere;
Ž asociere tip fişier cu algoritm specific;
Ž selectare algoritm k după tip fişier atât la compresie cât şi la
decompresie.
În cazul în care, gruparea este caracterizată de acelaşi set de caracteristici,
însă este neomogenă datorită variaţiilor mari ale valorilor numerice, se impune
eliminarea valorilor aberante sau crearea de intervale de valori omogene. Pentru
această situaţie algoritmul de regrupare este diferit, deoarece este bazat pe valorile
caracteristicilor şi nu pe existenţa posibilităţii de descriere a elementului prin
intermediul caracteristicii respective.

2.3 Omogenitatea loturilor

Baza de date a analizei software este formată din valorile caracteristicile


produselor software selectate în loturi de programe. Pentru ca rezultatele să fie
semnificative şi reprezentative, trebuie îndeplinite cerinţe legate de:
¾ omogenitatea datelor;
¾ construirea unui eşantion semnificativ pentru întreaga colectivitate;
¾ metodologii bine definite de culegere a datelor;
¾ utilizarea corectă a metodelor statistice pentru analiza datelor;
¾ personal calificat.
Studiul omogenităţii produselor software este esenţial în încercarea de a
construi eşantioane de programe omogene, pentru că acestea trebuie să facă parte
în primul rând dintr-o anumită clasă de programe. Încadrarea unui program în lot
are loc numai dacă procedurile sale sunt omogene după criteriul stabilit.
Prelucrările statistice privind produsele şi procesele informatice au ca scop
cunoaşterea fenomenelor pentru fundamentarea de decizii. Efectuarea de analize
complete şi obiective impun un grad ridicat de reprezentativitate a rezultatelor
obţinute prin utilizarea metodelor şi tehnicilor de prelucrare a datelor statistice.
Reprezentativitatea este asigurată când:
Š sunt prelucrate date privind colectivităţi omogene; elementele
colectivităţii nu diferă semnificativ unele de celelalte, sunt compatibile;

72
Metode statistice în analiza software

în acest scop se definesc criterii de apartenenţă, se stabilesc intervale


între care să varieze nivelelurile caracteristicilor
Š datele prelucrate sunt comparabile, se asigură acelaşi mod de culegere şi
aceeaşi algoritmi de prelucrare
Š concluzia la care se ajunge nu este stabilită înainte de efectuarea
prelucrărilor; nu se efectuează ajustări asupra volumului de date şi nu se
aleg indicatori care să forţeze obţinerea de rezultate care să confirme
judecăţi prestabilite mai ales de natură subiectivă.

Deci, omogenitatea programelor reprezintă o caracteristică a eşantionului şi


în acelaşi timp o cerinţă a analizei software. Această condiţie este realizată numai
în măsura în care elementele selecţiei sunt descrise utilizând aceleaşi metode, au
aceeaşi sferă de apartenenţă, au structuri comune şi nivelurile asemănătoare pentru
caracteristicile de calitate software. Pentru ca lotul de programe să fie omogen,
trebuie ca setul de caracteristici măsurate să fie comun tuturor programelor.
Există mai multe criterii de a descrie omogenitatea eşantionului de produse
software.
După criteriul limbajului de programare, se definesc loturi cu grad de
omogenitate:
` maxim – toate componentele sunt realizate într-un singur limbaj;
` predominant – majoritatea programelor sunt scrise într-un limbaj de
programare comun;
` oarecare (neomogene) – sunt folosite numeroase limbaje de programare.

După criteriul tehnicii de realizare, există loturi de programe:


” realizate cu o singură tehnică – de exemplu tehnica Orientată Obiect;
” construite utilizând mai multe tehnici, dintre care una este
predominantă;
” neomogene din punctul de vedere al tehnicii de realizare, aparţinând
mai multor generaţii: Orientată Obiect, pe componente, structurat.

După criteriul funcţiei, produsele software selectate sunt destinate:


ƒ unei anumite clase de probleme: de contabilitate, de statistică, de
gestiune;
ƒ mai multor clase de probleme, iar criteriul omogenităţii nu este
îndeplinit;

73
Loturi de programe

ƒ operaţiilor de bază: compilatoare, sisteme de operare; această categorie


de programe necesită analize cu un nivel ridicat al complexităţii
operaţiilor şi factorilor studiaţi.

După criteriul complexităţii, sunt construite loturi de produse software:


¾ complexe – întregul software este definit de un ansamblu de
componente ce la rândul lor sunt descompuse în elemente primare,
asigurând produsului final instrumente complexe cu putere de calcul
mare. De exemplu analiza programelor de simulare a fenomenelor
naturale;
¾ cu complexitate redusă – produsul are şi componente active, folosite de
utilizatori în mod curent, dar cu un grad scăzut de interdependenţe.
¾ simple.

Omogenitatea datelor iniţiale se obţine atât prin criterii impuse cât şi prin
procese ulterioare de eliminare a extremelor. Reprezentativitatea se obţine când
datele de intrare sunt omogene, când volumul de date este suficient de mare şi când
algoritmii de culegere sunt bine elaboraţi.
De exemplu, media notelor la matematică din semestrul al doilea pentru
elevii din clasa a VI-a este reprezentativă pentru colectivitate. Aceasta este descrisă
de criteriile: obiectul de studiu – matematica, vârsta – 13 ani, clasa – a VI - a,
intervalul de timp – cinci luni.
Salariul mediu de 5.500.000 lei dintr-o întreprindere cu 200 de angajaţi nu
este reprezentativ dacă au fost incluse salariile managerilor şi indemnizaţia
patronatului. Dacă se calculează salariul mediu al celor 140 de muncitori din
întreprindere, de 3.200.000, indicatorul statistic, media aritmetică, devine
reprezentativ.
Analizele statistice utilizează diverşi indicatori şi de fiecare dată sunt
făcute corelaţii între nivelurile acestora. Media aritmetică este analizată împreună
cu abaterea standard.. Indicatorii relativi sunt însoţiţi şi de valori absolute.

Identificarea dependenţei dintre factori reprezintă analiza intensităţii si


semnificaţiei legăturii dintre caracteristica factorială si cea rezultativă.
Consumurile de resurse sunt influenţate de numeroşi factori. Este important
să se cunoască modul şi intensitatea dependenţei factorilor. În acest scop se
construieşte un tabel în care se includ variabilele asociate factorilor X şi Y.

74
Metode statistice în analiza software

Descrierea valorilor factorilor X şi Y


Tabel 2.7
Variabila Variabila Variabila Variabila
Moment X Y Element X Y
t1 x1 y1 a1 x1 y1
t2 x2 y2 a2 x2 y2
… … … … … …
ti xi yi ai xi yi
… … … … … …
tn xn yn an xn yn

unde:
ti – momentul de timp când se face înregistrarea datelor;
ai – valoarea caracteristicii de grupare căreia îi corespund valorile
variabilelor X şi Y;
xi – valoarea înregistrată pentru caracteristica X la momentul ti sau pentru
elementul ai;
yi – valoarea înregistrată pentru caracteristica Y la momentul ti sau pentru
elementul ai;.

Pentru studiul dependenţei liniare se calculează coeficientul de corelaţie


dat de relaţia:

n n n
n∑ x i yi − ∑ x i ∑ yi
ry / x = i =1 i =1 i =1

⎡ n 2 ⎛ n ⎞ ⎤⎡ n 2 2 2

−⎛⎜ ∑ y i ⎞⎟ ⎥
n
⎢n i∑ x i −⎜ ∑ x i ⎟ ⎥ ⎢n ∑ y i
⎣ =1 ⎝ i =1 ⎠ ⎦ ⎣ i =1 ⎝ i−1 ⎠ ⎦

unde:
n – numărul de înregistrări pentru seriile de date;
xi – reprezintă variabila independentă;
yi – reprezintă variabila dependentă, ale cărei valori sunt influenţate de X.

75
Loturi de programe

Acest indicator statistic măsoară numai intensitatea legăturii liniare dintre


cele două variabile. Ia valori cuprinse între –1 şi 1, iar semnul său semnifică tipul
de legătură dintre caracteristica rezultativă şi cea factorială:
ƒ ry/x>0 corespunde situaţiei conform căreia la o creştere a nivelului
variabilei x se obţine o creştere a variabilei y;
ƒ ry/x<0 corespunde situaţiei conform căreia la o creştere a nivelului
variabilei x se obţine o descreştere a nivelului variabilei y.

Cu cât coeficientul are valori mai apropiate de 1 sau –1 cu atât corelaţia


dintre cele două variabile este mai puternică. În cazul în care rx/y = 0, variabilele
sunt independente, iar pentru rx/y = 1, variabilele sunt dependente funcţional.
Alte interpretări a rezultatului sunt:
ƒ 0 ≤ rx/y < 0,2 nu există legătură semnificativă între cele două variabile;
ƒ 0,2 ≤ rx/y < 0,5 există o legătură slabă;
ƒ 0,5 ≤ rx/y < 0,75 există o legătură medie;
ƒ 0,75 ≤ rx/y < 0,95 există o legătură puternică.

Pentru dimensionarea stocurilor de resurse hardware/software este


important să se cunoască factorii care influenţează duratele de execuţie, necesarul
de memorie care se alocă dinamic, spaţiul de memorie fizică necesar păstrării
datelor de intrare şi ieşire.

Se consideră doi algoritmi pentru soluţionarea unei probleme pentru care se


determină coeficienţii de corelaţie liniară dintre valorile rezultate ale
caracteristicilor considerate şi valorile factorilor de influenţă. Se are în vedere
faptul că valorile obţinute ale coeficientul de corelaţie pentru fiecare din cei doi
algoritmi sunt comparabile. Astfel se scoate în evidenţă dacă programele sunt
omogene din punctul de vedere al dependenţei factorilor. Dacă pentru aceeaşi
factori cercetaţi se obţin dependenţe diferite asociate fiecărui algoritm în parte, se
trage concluzia că cele două aplicaţii nu sunt omogene.
Se consideră grupul de programe compus din patru algoritmi Sort1, Sort2,
Sort3 şi Sort4, de sortare a fişierelor şi nf seturi de date FS1, FS2, ..., FSnf ştiind că
dacă FS1 este un fişier cu kf înregistrări, FSn este un fişier cu nf*kf înregistrări. Se
construieşte tabelul 2.9:

76
Metode statistice în analiza software

Duratele sortării fişierelor


Tabel 2.8
Program
Date de test Lungime fişier Sort1 Sort 2 Sort 3 Sort 4
FS1 kf dsort11 dsort12 dsort13 dsort14
FS2 2*kf dsort21 dsort22 dsort23 dsort24
FS3 3*kf dsort31 dsort32 dsort33 dsort34
... … … … … …
FSi i*kf dsorti1 dsorti2 dsorti3 dsorti4
... … … … … …
FSnf nf*kf dsortn1 dsortn2 dsortn3 dsortn4

în care dsortij reprezintă durata sortării fişierului FSi de lungime i*kf folosind
algoritmul Sortj.

Se calculează coeficienţii de corelaţie r(FS, Sort1), r(FS,Sort2), r(FS,Sort3),


r(FS,Sort4) şi se analizează valorile acestora. Se consideră setul de durate
înregistrate pentru sortarea fişierelor, din tabelul 2.9.

Comportamentul programelor
Tabel 2.9
Durată proces
Date de test Lungime fişier Sort1 Sort 2 Sort 3 Sort 4
FS1 kf 4 4 3 10
FS2 2*kf 5 4 3 12
FS3 3*kf 7 5 3 18
FS4 4*kf 8 6 3 27
FS5 5*kf 11 6 3 36
FS6 6*kf 13 6 3 43
FS7 7*kf 15 8 3 58
FS8 8*kf 15 9 3 75
FS9 9*kf 16 10 4 85
FS10 10*kf 18 10 4 112

unde:
nf – numărul fişierelor, nf = 10;
dij –timpul de execuţie în zecimi de secunde;
kf – lungime fişier, k = 100 octeţi.
77
Loturi de programe

Se obţin valorile coeficienţilor de corelaţie din tabelul 2.10.

Valoarea coeficienţilor de corelaţie

Tabel 2.10
Lungime fişier Sort1 Sort 2 Sort 3 Sort 4
Lungime fişier 1 0,98 0,97 0,69 0,97

Cum valorile coeficienţilor r(F, S1), r(F,S2), r(F,S4) sunt foarte apropiate de
1, în cazul algoritmilor S1, S2 şi S4, cele două variabile, lungime fişierului şi timpul
de sortare, sunt dependente funcţional.
Valoarea lui r(F,S3) este : 0,69. Între cele două variabile există o legătură
medie.
Cum r(F,S3) diferă ca intensitate faţă de celelalte, rezultă că grupul celor
patru programe este parţial omogen din punctul de vedere al dependenţei dintre
factori, pentru algoritmul S3 lungimea fişierului neinfluenţând cu mult rezultatul.
Se impune efectuarea unui studiu distinct pentru luarea în considerare a
cazurilor particulare în care fişierele sunt deja sortate sau sunt sortate invers în
raport cu modul în care se efectuează sortarea în program. Fişierul e sortat
crescător şi programul îl sortează descrescător.

Evidenţierea diferenţelor dintre elementele a două mulţimi constă în


determinarea indicatorilor ce măsoară caracteristici de calitatea a mulţimilor şi
compararea lor. Reprezentativitatea şi semnificaţia fiecărui indicator în parte sunt
evidenţiate prin metode statistice.
De exemplu, se consideră NPR produse software, PR1, PR2, …, PRNPR,
realizate pentru a analiza şi gestiona stocul farmaciilor. Fiecare funcţie importantă
a aplicaţiei este implementată de către producător într-un modul separat pentru a fi
reutilizat şi în alte aplicaţii. Pentru a se asigura comparabilitatea datelor se
selectează un set de tm module comune. Aplicaţia PR1 conţine modulele
MD11 , MD21 , ..., MDtm
1
iar produsul program PR2 modulele
2 2 2 1
MD , MD , ..., MD Pentru fiecare modul al softului PR1, MD
1 2 tm i , echivalentul
2
său din produsul PR2 este MD . În cazul fiecărei componente se înregistrează
i

78
Metode statistice în analiza software

complexitatea relativă în sens Halstead, utilizând relaţia:

n operanzi log 2 n operanzi + n operatori log 2 n operatori


rel
C Halstead = Halstead
N Total
unde:
rel
C Halstead – complexitatea Halstead relativă la operatori;
Halstead
N Total – numărul total de operanzi şi operatori din program;
noperanzi – numărul de operanzi distincţi definiţi în program;
noperatori – numărul de operatori distincţi referiţi în program.
De exemplu, secvenţa de program:

i=0;
S=0;
for(i=1;i<n;i++)
{
x[i]=(i*3)(i*3);
s+=x[i];
}

conţine:
Halstead
NTotal = 47 operatori şi operanzi;
noperanzi = 7 operanzi distincţi;
noperatori = 10 operatori distincţi.

Rezultă valoarea complexităţii relative a programului:

7 log2 7 + 10 log 2 10 52,87


rel
C Halstead = = = 1,12
47 47

Pentru cele NPR produse software se construieşte tabelul 2.11 cu


complexităţi relative.

79
Loturi de programe

Valoarea complexităţii modulelor programelor

Tabel 2.11
Produs software Componenta Complexitate relativă

MD11 1
CMD1

MD21 1
C MD2
PR1
… …
1 1
MDtm C MDtm

MD12 2
CMD1

MD22 2
C MD2
PR2
… …
2
MDtm2 C MDtm

… … …

MD1i i
CMD1

MD2i i
C MD2

… …
PRi i
MDj i
CMD j

… …

MDtmi i
C MDtm

… … …

MD1NPR NPR
CMD1

MD2NPR NPR
CMD2
PRNPR
… …

MDtmNPR NPR
C MDtm

80
Metode statistice în analiza software

unde:
NPR – numărul de programe analizate;
tm – numărul de module cercetate;
PRi – produsul program i;
MDji – modulul j al produsului program PRi;
i
CMD j
– complexitatea relativă a modulului MDj pentru programul PRi.

Pentru analiza omogenităţii grupului de programe:


” se calculează complexitatea relativă medie, cu relaţia:

tm

∑Cj =1
i
MD j

Ci =
tm

unde Ci reprezintă complexitatea relativă medie a programului PRi.

” media valorilor este considerată valoarea cea mai reprezentativă pentru


eşantionul studiat; este important de cunoscut cât este distanţa faţă de
această medie a elementelor colectivităţii; dacă au valori mai apropiate
de valoarea mediei, deci prezintă abateri mici, media este
reprezentativă;

” se calculează abaterile medii pătratice pentru valorile complexităţii


relative:

∑ (C )
tm
2
i
MD j − Ci
j =1
σC =
i
tm

în care σ Ci reprezintă abaterea medie pătratică pentru complexitatea relativă a


produsului Pi.

81
Loturi de programe

” se calculează coeficienţii de variaţie, νiC, ai complexităţii, asociaţi


fiecărui produs software:

σC
ν iC = i
⋅100
Ci

” cu cât valoarea lui νiC este mai apropiată de 0, cu atât variaţia valorilor
elementelor faţă de medie este mai mică, colectivitatea este mai
omogenă şi media are un grad ridicat de reprezentativitate; dacă
coeficientul este peste 35 – 40 %, media nu este reprezentativă şi
trebuie aleasă altă caracteristică de grupare;
” în cazul în care toate valorile medii calculate sunt reprezentative pentru
fiecare produs software în parte, se compară cele NPR valori între ele;
pentru egalitate sau valori foarte apropiate, colectivitatea de aplicaţii
este considerată omogenă din punct de vedere al complexităţii lor.

Studiul comportamentului unor produse program necesită studiul


abaterilor fata de un nivel considerat cu probabilitatea cea mai mare de producere.
Se consideră programele Pr1, Pr2, …, PrNS şi o mulţime de fişiere Fs1, Fs2,
…, FsMS de lungimi diferite. Lungimea fişierului se exprimă în număr de octeţi.
Se înregistrează duratele de execuţie necesare prelucrării datelor din fişiere.
Datele obţinute sunt prezentate în tabelul 2.12.

Rezultatele obţinute în urma rulărilor programelor

Tabel 2.12
Fişier Program Pr1 Program Pr2 ... Program Prj ... Program PrNS
Fs1 dr11 dr12 ... dr1j ... dr1NS
Fs2 dr21 dr22 ... dr2j ... dr2NS
Fs3 dr31 dr32 ... dr3j ... dr3NS
... … … ... … ... …
Fsi dri1 dri2 ... drij ... driNS
... … … ... … ... …
FsMS drMS1 drMS2 ... drMSj ... drMSNS

unde drij reprezintă durata necesară prelucrării fişierului Fsi cu programul Prj.

82
Metode statistice în analiza software

Omogenitatea de comportament este dată de faptul că dispersiile calculate


pentru cele NS programe nu diferă semnificativ. Se procedează astfel:
` se calculează dispersia valorilor duratelor de prelucrare pentru
programul Prj cu relaţia:

MS

∑ (dr ij − d rj ) 2
σ Pr2 = i =1
, cu j = 1…NS
j
MS

unde:
MS – numărul de fişiere;
d rj – durata medie de sortare a fişierelor cu produsul program Prj;

σ Pr2 – dispersia valorilor duratelor de sortare pentru programul Prj;


j

` se compară valorile dispersiilor aplicându-se testul de egalitate; dacă


seria de dispersii este caracterizată de relaţia:

σ Pr2 = σ Pr2 = ... = σ Pr2


1 2 NS

atunci produsele program Pr1, Pr2, …, PrNS constituie elementele unui lot omogen
din punct de vedere al stabilităţii comportamentului; se acceptă şi o variaţie a
valorilor dispersiilor într-un interval definit de:

NS

∑σ 2

[σ ]
Pri

− δ Pr , σ Pr + δ Pr , cu σ Pr =
2 2 2 i =1
Pr
NS

unde:
δ Pr – reprezintă o valoare stabilită anterior analizei;
σ Pr 2 – valoarea medie a dispersiilor lotului de programe;

Dacă valorile dispersiilor sunt apropiate de valoarea 0, atunci lotul de


programe este considerat omogen prin prisma stabilităţii comportamentului.

83
Loturi de programe

` se verifică intensitatea legăturii dintre durata de prelucrare şi mărimea


fişierului prin:
` se calculează valoarea coeficientului de corelaţie liniară simplă, rdr j / Fs ,
dintre durata de timp şi numărul de articole al fişierului:
MS MS MS
MS ∑ Fsi drij − ∑ Fsi ∑ drij
rdr j / Fs = i =1 i =1 i =1

⎡ MS
2 ⎛
MS
⎞ ⎤⎡
2 MS
2 ⎛
MS
⎞ ⎤
2

⎢ MS ∑ Fsi −⎜ ∑ Fsi ⎟ ⎥ ⎢ MS ∑ drij −⎜ ∑ drij ⎟ ⎥


⎢⎣ i =1 ⎝ i =1 ⎠ ⎥⎦ ⎢⎣ i =1 ⎝ i =1 ⎠ ⎥⎦
unde :
MS – numărul de fişiere te sortat;
Fsi – mărimea fişierului i;
dij – durata de prelucrare a fişierului i, cu programul Pj.

` se aplică testul t pentru a verifica semnificaţia fiecărei relaţii de


corelaţie; se calculează tcalculat cu relaţia:

rdr j / Fs
t j calculat = * MS − 2
1 − r 2 dr j / Fs

` se compară tcalculat cu ttabelat pentru un nivel de semnificaţie 1-α/2 şi cu n-


2 grade de libertate;
` dacă tcalculat > ttabelat relaţia de corelaţie este semnificativă şi se acceptă
ipoteza;
` dacă tcalculat < ttabelat relaţia de corelaţie nu este semnificativă şi se
respinge ipoteza.

Scopul ultimelor etape este de a descoperi argumente care să susţină


omogenitatea colectivităţii de programe din punctul de vedere al
comportamentului. De asemenea, în cazul în care lotul nu este omogen, sunt
evidenţiaţi factori ce influenţează această caracteristică.
Se stabileşte NS = 4. Se iau în considerare programele de sortare Sort1,
Sort2, Sort3, Sort4 şi cele MS seturi de date F1, F2, ..., FMS ale căror durate de sortare
au fost înregistrate în tabelul 2.10. Pe baza acestor date este analizată omogenitatea

84
Metode statistice în analiza software

eşantionului din punctul de vedere al comportamentului. Prin parcurgerea etapelor


se obţin valorile din tabelul 2.13.

Analiza omogenităţii comportamentului

Tabel 2.13
Programe de sortat
Date de test Lungime fişier Sort1 Sort 2 Sort 3 Sort 4
Fs1 kf 4 4 3 10
Fs2 2kf 5 4 3 12
Fs3 3kf 7 5 3 18
Fs4 4kf 8 6 3 27
Fs5 5kf 11 6 3 36
Fs6 6kf 13 6 3 43
Fs7 7kf 15 8 3 58
Fs8 8kf 15 9 3 75
Fs9 9kf 16 10 4 85
Fs10 10kf 18 10 4 112

Dispersie 24,4 5,288889 0,177778 1171,378


Coeficient de corelaţie 0,988117 0,973418 0,696311 0,972547
tcalculat (α = 0,05; n = 10) 18,18316 12,02101 2,74398 11,8208
ttabelat 2,306 2,306 2,306 2,306

unde:
nf – numărul fişierelor, nf = 10;
k – lungime fişier, k = 100 octeţi;
δ PR – este stabilit anterior analizei la valoarea 25.

Deoarece valorile dispersiilor nu sunt egale cu valoarea zero şi nici nu sunt


incluse în intervalul [300 – 25; 300 + 25] rezultă că grupul celor patru programe nu
este omogen din punctul de vedere al comportamentului. Cum, coeficienţii de
corelaţie descriu legături puternice între durata de sortare şi dimensiunea fişierului,
iar tcalculat > ttabelat, este evidenţiată lungimea fişierului ca fiind motivul principal al
neomogenităţii. Pentru a se construi un lot omogen de programe de sortare de acest

85
Loturi de programe

tip este indicată o analiză pe tipuri de fişiere de lungime egale dar cu structură
diferită.
Metodele statistice operează cu colectivităţi omogene şi reprezentative.
Reprezentativitatea este dată de:
Ž numărul de elemente componente ale colectivităţii;
Ž respectarea structurii elementelor ce constituie populaţia din care se
selectează eşantionul de analizat.
Dacă o colectivitate de 10.000 de persoane este formată din 70% bărbaţi şi
30% femei cuprinse între 20-50 de ani, rezultă că eşantionul pentru a fi
reprezentativ trebuie să:
¾ să fie format din n persoane; valoarea lui n este determinată utilizând
metode statistice de estimare a eşantionului;
¾ elementele selectate să fie de asemenea 70% bărbaţi şi 30% femei
cuprinse între 20-50 de ani.
În cazul analizelor software, reprezentativitatea eşantionului asigură
includerea influenţelor date de structura:
Š producătorilor de software;
Š tipologiilor utilizatorilor;
Š limbajelor de programare;
Š utilizării instrucţiunilor;
Š tipurilor de date de intrare.
Asigurarea reprezentativităţii este condiţionată de analiza întregii populaţii
de elemente analizate. În situaţia în care acest lucru nu este posibil, se realizează
estimări bazate pe experienţa specialiştilor sau pe rezultatele analizelor precedente.

2.4 Construirea eşantioanelor de programe

Constituirea unei colectivităţii omogene de produse software stă la baza


oricărei analize complexe. Modelul general al algoritmului de stabilire a gradului
de omogenitate a unei selecţii este bazat pe practica uzuală, specifică unei largi
categorii de persoane. Trecerea spre exemple în care sunt utilizate programe nu
este dificilă. Pentru exemplificare se ia în considerare modul de abordare pur
experimental. Se consideră o colectivitate de persoane suficient de filtrată în raport
cu seria de criterii:
ƒ vârsta;
ƒ gradul de calificare;

86
Metode statistice în analiza software

ƒ rezultate profesionale;
ƒ lipsa unor interese de grupă;
ƒ experienţa.

Grupul studenţilor din anul al 3-lea al unei facultăţi reprezintă persoane


care îndeplinesc aceste criterii pentru că:
Ž au vârsta cuprinsă între 20 – 22 de ani;
Ž sunt rezultatul selecţiei de la admitere unde au obţinut note între 7 şi 10;
Ž sunt rezultatul unei selecţii pe secţii şi au trecut la specializarea
Informatică Economică numai cei care au medii între 7,20 şi 10;
Ž au efectuat opţiunea spre o anumită specializare, ceea ce arată
preocupări spre un domeniu strict delimitat.

S-a definit problema omogenităţii şi s-a procedat astfel:


” se consideră mulţimea elementelor unei colectivităţi E formată din
elementele e1, e2, …, en;
” se asociază acestor elemente o serie de caracteristici c1, c2, …,cm şi se
specifică modul de măsurare;
” se efectuează măsurătorile şi rezultă un tablou cu n linii şi m coloane,
având toate căsuţele ocupate, ceea ce înseamnă că datele sunt complete;
” corectitudinea datelor rezultă din urmărirea modului în care au fost
aplicate procedurile de măsurare a caracteristicilor;
” pentru fiecare coloană din tabelă se alege elementul minim şi elementul
maxim;
” se elimină elementul minim şi elementul maxim găsite la pasul anterior
şi se alege următorul element minim, respectiv, maxim cu care se
operează;
” se calculează diferenţele dintre minim şi maxim, rezultând intervalul de
variaţie ale caracteristicilor;
” se cere să se stabilească ponderea intervalului de variaţie în nivelul
minim pentru a demonstra că elementele formează o colectivitate
omogenă;
” se calculează media dintre minim şi maxim;
” se aplică procentul şi rezultă intervalul;
” se prezintă un exemplu uşor de înţeles care trebuie să determine
coeficientul de omogenitate.

87
Loturi de programe

Se consideră mulţimea studenţilor dată în tabelul 2.14:

Colectivitatea de studenţi

Tabel 2.14
Nume Vârstă Înălţime Medie intrare
(ani) (cm)
Student 1 21 180 9,50
Student 2 21 160 8,00
Student 3 21 175 9,80
Student 4 20 186 8,00
Student 5 21 166 8,50
Student 6 20 175 8,50
Student 7 20 170 9,50
Student 8 20 173 8,50
Student 9 21 180 9,00
Student 10 21 175 9,50
Student 11 20 165 9,50
Student 12 20 170 9,00
Student 13 21 170 9,50
Student 14 21 175 9,00
Student 15 21 168 9,00
Student 16 20 180 9,50
Student 17 21 177 8,50
Student 18 23 182 9,50
Student 19 21 175 8,60
Student 20 22 195 8,50
Student 21 20 173 7,00
Student 22 21 177 7,00
Student 23 24 165 10,00
Student 24 22 180 9,70
Student 25 21 170 8,50
Student 26 20 170 8,00
Student 27 21 175 9,00
Student 28 21 167 8,50
Student 29 21 172 9,00
Student 30 21 170 9,00

Min-1 20 160 7,00


Max-1 24 195 10,00
Min-2 21 165 8,00
Max-2 23 186 9,70
Diferenţa 2 21 1,70
Media 44/2 351/2 17,70/2

88
Metode statistice în analiza software

Se elimină componentele care au valoarea min-1 şi max-1. În cazul acesta


pot pleca din colectivitate 2*m subiecţi.
În ipoteza comparării diferenţei de vârstă cu vârsta minimă şi cu vârsta
maximă subiecţii stabilesc că o colectivitate e omogenă dacă diferenţa reprezintă
cel mult 25% din valoarea medie. Intervalul este cuprins între [44/2-0,25*2;
44/2+0,25*2]. Pentru a determina lotul studenţilor omogeni din punctul de vedere
al tuturor caracteristicilor, se determină intervalele din tabelul 2.15

Intervalul valorilor omogene


Tabel 2.15
Caracteristică Interval
Vârstă [44/2-0,25*2 ; 44/2+0,25*2]
Înălţime [351/2-0,25*21 ;351/2+0,25*21]
Medie intrare [17,70/2-0,25*1,70 ;17,70/2+0,25*1,70]

Se reanalizează tabelul 2.15 şi rezultă un nou tabel 2.16 cu elementele


omogene în raport cu toate caracteristicile măsurate.

Lotul de studenţi omogen


Tabel 2.16
Nume Vârstă Înălţime Medie intrare
(ani) (cm)
Student 9 21 180 9,00
Student 14 21 175 9,00
Student 17 21 177 8,50
Student 19 21 175 8,60
Student 25 21 170 8,50
Student 27 21 175 9,00
Student 29 21 172 9,00
Student 30 21 170 9,00

Considerând caracteristicile din tabelul iniţial 2.14, dacă se lucrează numai


cu câte o caracteristică rezultă o altă structură omogenă, dacă se lucrează cu
construcţii de câte 2 caracteristici rezultă alte loturi de studenţi.

Un alt mod de generare a loturilor omogene de produse software constă în


a aplica repetat metoda de identificare a elementelor neomogene şi de a le elimina

89
Loturi de programe

din colectivitate. În final se obţine un lot omogen. Diferenţa faţă de metoda


anterioară constă în faptul că nu se utilizează apartenenţa la intervale a valorilor
caracteristicilor programelor pentru a se realiza selecţia. Lotul omogen este
construit în jurul aplicării repetate a metodei de selecţie.
Se consideră programele P1,P2, …, Pnc de compresie a datelor şi o mulţime
de fişiere F1, F2, …, Fmc de lungimi diferite şi de tipuri diferite. Lungimea fişierului
este exprimată în octeţi iar fiecare aplicaţie Pi implementează un algoritm distinct
de arhivare.
Se înregistrează mărimea fişierelor arhivate, timpul necesar acestei operaţii
nefiind luat în consideraţie. Datele obţinute sunt prezentate în tabelul 2.17.

Rezultatele obţinute în urma arhivărilor


Tabel 2.17
Program Fişier F1 … Fişier Fj … Fişier Fmc
P1 d11 … d1j … d1mc
P2 d21 … d2j … d2mc
… … … … … …
Pi di1 … dij … dimc
… … … … … …
Pnc dnc1 … dncj … dncmc

unde dij reprezintă dimensiunea arhivei create din fişierul Fj aplicând programul Pi.

În cazul general, dij reprezintă seturi de date prin intermediul cărora se


măsoară timpi de execuţie, număr de iteraţii, dimensiunea unor fişiere, indicatori de
complexitate, etc.
Se calculează valoarea medie a dimensiunii arhivei pentru fiecare tip de
fişier şi obţinem o listă de medii:

d 1 , d 2 , …, d j , …, d m

În cazul unei colectivităţi omogene valoarea calculată a dispersiei faţă de


valoarea medie asociată fiecărui tip de fişier este foarte mică, fapt datorat valorilor
apropiate de 0 a diferenţelor dij – d j . Dacă valoarea dispersiilor este chiar 0 atunci
pentru tipul respectiv de fişier, colectivitatea este perfect omogenă. Pentru a
verifica validitatea acestor ipoteze şi semnificaţia corelaţiei tip fişer/metodă de
90
Metode statistice în analiza software

arhivare, se calculează coeficienţii de corelaţie pentru fiecare tip de fişier în parte şi


se aplică testul t
Scopul analizei fiind acela de a obţine o colectivitate de studiu omogenă, se
elimină tipul de fişier pentru care se obţine valoarea maximă asociată dispersiei.
Pentru a ajusta eşantionul din punctul de vedere al tipurilor de algoritmi de
compresie, se calculează pentru fiecare program valoarea medie a mărimii arhivei
create. Se obţine lista de medii: d 1 , d 2 , …, d i , …, d n .
Se aplică testul de egalitate a mediilor, eliminându-se acele programe care
au media cu valoarea maximă sau cu valoarea minimă.
Chiar dacă există o colectivitate ai cărei membrii au valori medii egale,
sunt verificate şi valorile dispersiilor. Sunt scoase din studiu, programele cu
dispersii prea mari.
Indiferent de ipoteză se verifică dacă legătura dintre cei doi factori este sau
nu intensă, aplicând testul t.

O abordare distinctă a problemei construirii de loturi omogene este cea a


utilizării metodelor de clasificare pentru o colectivitate dată.
Metoda de clasificare sau de tipologie are drept scop gruparea indivizilor
într-un număr restrâns de clase omogene. Clasele sunt obţinute prin intermediul
unor algoritmi şi nu prin metode subiective sau vizuale bazate pe experienţa
practica.
Se disting două tipuri de metode de clasificare:
” metodele nonierarhice care produc direct o împărţire într-un număr
satbilit de clase;
” metode ierarhice care împart colectivitatea într-un număr variabil de
clase din ce în ce mai neomogene.

Datele de start ale metodelor sunt reprezentate de tabelul distanţelor sau a


diferenţelor dintre membrii colectivităţii. Tabelele se obţin prin reprezentarea
caracteristicilor elementelor într-un spaţiu cu p axe.
Algoritmii de clasificare nonierarhică grupează n elemente în k clase, astfel
încât o clasă este caracterizată de cât mai multe similitudini între membrii ei şi de o
diferenţă clară faţă de alte clase. Situaţia presupune definirea unui criteriu global
care să măsoare asemănarea indivizilor dintr-o clasa, deci calitatea unei diviziuni.
Prin intermediul acestuia sunt examinate toate subgrupele posibile şi se alege grupa
care se potriveşte cel mai bine. În practică, găsirea criteriului constituie o operaţie
costisitoare şi în unele cazuri imposibilă.
91
Loturi de programe

Din categoria clasificării nonierarhice, fac parte metodele:


Š inerţia interclase şi intraclase;
Š regruparea în jurul centrelor mobile;
Š metoda norilor dinamici.
Acestea sunt amplu descrise în [VOIN02].

Inerţia interclase şi intraclase consideră elementele grupului asemenea


punctelor unui spaţiu euclidian. Problema clasificării se descrie ca o cercetare a
împărţirii norilor de puncte în k subnori. Dispersia unui nor de puncte reprezintă
media pătratelor distanţelor faţă de centrul de greutate. O clasa de elemente este cu
atât mai omogena. cu cat inerţia sa este mai mica.
Fie Φ1 , Φ 2 , ..., Φ n inerţia fiecărei clase, calculată în raport de centrele lor
de greutate g1, g2, ..., gn. Suma inerţiilor , OW, se numeşte inerţia intraclase şi este
definită de relaţia:

n
ΦW = ∑ Φ i
i =1

unde:
n – numărul de clase;
Φ1 – inerţia clasei i.
Se urmăreşte obţinerea unei valori cât mai mici pentru ΦW , fapt care
garantează un ansamblu de clase cât mai omogene.
Se considera, centrele de greutate g1, g2, ...,gn. Dispersia lor în jurul
centrului de greutate al norului total, g, se numeşte energie interclase şi se notează
cu Φ B :

Φ B = ∑ G j d 2 (g j ; g )
n

j =1

unde:
Gj – suma ponderilor din clasa j;
d2(gj; g) – pătratul distanţei dintre centrul de greutate gj al clasei j şi
centrul de greutate al norului total, g.

92
Metode statistice în analiza software

O valoare mare a lui Φ B indică o bună separare a claselor. Totodată Φ B şi


ΦW sunt legate printr-o formula:

Φ B + ΦW = Φ

unde Φ reprezintă inerţia totală a norului de n puncte.

Datorita faptului ca Φ este constant, maximizarea lui Φ B înseamnă


minimizarea lui ΦW . Din punct de vedere al inerţiei, se fac cele mai bune împărţii
în k clase care au ΦW cel mai mic.
Acest criteriu un permite compararea a două subgrupe aparţinând unor
clase diferite. De aceea cea mai bună împărţire este cea în care fiecare individ
constituie o clasa, pentru că în acest caz ΦW = 0. Fiecare punct se confundă cu
centrul de greutate al clasei sale.

Regruparea în jurul unor centre mobile presupune parcurgerea etapelor:


` într-o primă fază se regrupează indivizii în jurul a k centre arbitrare c1,
c2, ..., ck, astfel încât clasa asociata lui cj este constituită din indivizii
cei mai apropiaţi de acest centru decât faţă de altul; din punct de vedere
geometric înseamnă că se împarte spaţiul celor n indivizi în k zone
definite prin mediatoarele segmentelor (ci cj) asemenea figurii 2.2;
` se calculează valorile centrelor de greutate c1, c2, ..., ck, ale claselor
constituite în etapa anterioară; se împart din nou clasele, regrupând
indivizii în jurul lui gj, care ia locul centrelor cj din prima etapa;
` se determină valorile centrele de greutate c12 , c 22 , ..., c 2k asociate noilor
clase; se continuă astfel până când valoarea inerţiei interclase nu se mai
ameliorează;
` la finalul fiecărei etape se calculează n*k distanţe între indivizi şi
centrele de greutate.

93
Loturi de programe

x x
x
x c1 x
x
x x
c3
x x
x x
c2 x x
x

Figura 2.2 Exemplu de împărţire a indivizilor în 3 zone asociate centrelor c1, c2, c3.

Metoda norilor dinamici reprezintă o metodă dezvoltată de E.Diday,


considerată a fi o generalizare a metodelor centrelor mobile. Diferenţa
fundamentală dintre cele doua metode este dată de: plecând de la un sistem iniţial
de k noduri se obţine o împărţire şi o regrupare a indivizilor în jurul norilor. Se
calculează din nou noduri reprezentative ale claselor astfel formate şi se repetă
pasul până când calitatea împărţirilor nu a se mai îmbunătăţeşte.
Funcţiile principale utilizate sunt:
” determinarea distanţei dintre un individ şi un nod;
” asocierea a k noduri la o împărţire în k clase;
” măsurarea calităţii împărţirii.
Aplicând aceste funcţii unui număr cunoscut de clase şi de noduri se obţin
clasificările. La fel ca şi în cazul metodei centrelor mobile, împărţirea finală
depinde de alegerea iniţială a nodurilor. Pentru a limita acest inconvenient, se
procedează la mai multe alegeri ale nodurilor de plecare şi se compară rezultatele
finale obţinute. Indivizii care au fost clasaţi întotdeauna împreuna definesc formele
tari care reprezintă părţile într-adevăr omogene ale ansamblului de indivizi.
Numărul formelor puternice trebuie să fie diferite de k.
Metodele de împărţire permit tratarea rapidă a marilor ansambluri de
indivizi, dar se consideră că numărul de clase k este fixat. Dacă acest număr nu
corespunde configuraţiei adevărate a norului de indivizi se obţin împărţiri de valori
ireale. În aceste cazuri se încearcă diferite valori ale lui k, ceea ce face să crească

94
Metode statistice în analiza software

timpul de calcul. Când numărul elementelor colectivităţii analizate nu este mare,


este avantajos să se utilizeze metode ierarhice de clasificare.
Principiul metodelor ierarhice sau ascendente, constă în a constitui un şir
de împărţiri în n clase, n-1 clase, n-2 clase, …, 1 clasă. Acestea sunt corelate între
ele prin faptul că împărţirea în k clase este obţinută regrupând doua din clasele
împărţirii în k+1 clase. În total vor exista n-2 împărţiri de determinat, deoarece
împărţirea în n clase este aceea în care fiecare individ este izolat şi împărţirea într-o
clasă reprezintă selectarea tuturor indivizilor.
Se numeşte clasificare ierarhica sau ierarhie, deoarece fiecare clasa. a unei
împărţiri este inclusa într-o clasă a unei împărţiri ce o precede. Seria împărţirilor
obţinute este reprezentată în mod normal sub forma unui arbore de clasificare
numit dendogramă.
Figura 2.3 descrie seria împărţirii mulţimii elementelor a, b, c, d, e, f,
considerând că la fiecare pas Pasi se obţin grupările:
Pas1 - a/b/c/d/e/f
Pas2 - ab/c/d/e/f
Pas3 = ab/cd/e/f
Pas4 = ab/cd/ef
Pas5 = ab/cdef
Pas6 = abcdef

val4

val3 val1 ≤ val2 ≤ val3 ≤ val4


val2

val1

a b c d e f

Figura 2.3 Exemplu de clasificare ierarhică

95
Loturi de programe

Se observă ca fiecarei împărţiri, din ierarhia precedenta, îi corespunde o


valoare numerica, vali. Aceste valori reprezintă nivelurile de agregare la care au loc
regrupările. Cu cât valoarea este mai mare cu atât părţile regrupărilor sunt mai
omogene decât clasa curentă.
Cunoscând arborele de clasificare este uşor de făcut împărţirea într-un
număr mai mare sau mai mic de clase, fiind necesar secţionarea arborelui la o
înălţime stabilită. Ramurile de la acel nivel descriu grupările elementelor.
Principala dificultate, a clasificării ierarhice constă în a defini criteriul de
grupare a doua clase, adică definirea distanţei dintre ele. Toţi algoritmii de
clasificare ierarhică se derulează în acelaşi fel. În fiecare etapă se caută cele mai
apropiate două clase. Odată găsite, acestea sunt selectate şi grupate, iar procedeul
continuă până când rămâne o singură clasă.
Pentru distanţe euclidiene se utilizează criteriul distanţei statice sau a
minimei varianţe [VOIN02]. Când distanţele sunt neeuclidiene există diferite
strategii de clasificare, dacă nu se produse inegalitatea d(a,b) ≤ d(a,c) + d(b,c)
pentru o serie de puncte a, b, c, d, noţiunea de inerţie nu mai are sens şi nu
dispunem de un criteriu pentru a calcula distanţa între două clase.
Cele mai utilizate formule pentru a calcula distanţa d(A, B), între două
subclase, A şi B sunt:
` criteriul celui mai apropiat vecin;

d ( A, B) = min d (ei , e j ), cu e i ∈ A, e j ∈ B

` criteriul celui mai îndepărtat vecin;

d ( A, B) = max d (ei , e j ), cu ei ∈ A, e j ∈ B

` criteriul distanţei medii

n m
1
d ( A, B) =
PA PB
∑∑ d (e , e ) , cu e ∈ A, e
i =1 j =1
i j i j ∈B

Prima formula tinde să favorizeze regruparea între două clase, din


momentul în care ele au puncte apropiate. Riscul este de a găsi într-o singura clasa
j puncte foarte depărtate. Această distanţa este utilizată datorită proprietăţilor sale
matematice.
96
Metode statistice în analiza software

A doua formulă, în lipsa unei metode a saltului minimal, necesita ca


punctele cele mai îndepărtate, deci toate punctele, să fie relativ apropiate.
Distanţa medie oferă un compromis între primele doua.
În funcţie de formula aleasa se ajunge la ierarhii diferite. De aceea este
recomandat ca în practică să se folosească mai multe tipuri de clasificare asupra
aceluiaşi ansamblu.
Pentru ca ierarhiile obţinute să nu fie diferite, nu trebuie să existe variaţii
mari în partea superioara a arborelui.
Daca se constată diferenţe mari, aceasta se datorează faptului că grupul de
indivizi nu poate fi supus oricărei clasificări.
Una din principalele dificultăţi ale clasificării constă în a defini distanţele
sau neasemănările între indivizi, mai ales când aceştia sunt descrişi prin
caracteristici calitative.

Se consideră setul de 50 de programe caracterizate prin numărul de linii


sursă şi număr de operanzi al textelor sursă, descris în tabelul 2.18. În vederea
realizării unei analize statistice, pe baza acestor variabile, trebuiesc construite loturi
de programe omogene. Pentru aceasta se utilizează o metodă de clasificare
ierarhică, în care distanţele sunt euclidiene, iar metoda de clasificare este cea a
minimelor varianţe.

Set de fişiere descrise prin numărul de linii sursă şi număr de operanzi

Tabel 2.18
Program Număr linii sursă Număr operanzi
P1 50 11
P2 71 35
P3 166 22
P4 91 39
P5 186 33
P6 157 17
P7 194 12
P8 177 23
P9 172 14
P10 86 18
P11 197 14
P12 192 44
P13 171 23
P14 155 15

97
Loturi de programe

Program Număr linii sursă Număr operanzi


P15 84 30
P16 61 34
P17 110 34
P18 123 39
P19 99 35
P20 185 25
P21 71 31
P22 128 17
P23 114 14
P24 50 32
P25 132 34
P26 150 19
P27 71 34
P28 194 13
P29 71 22
P30 179 16
P31 136 16
P32 121 44
P33 167 17
P34 115 24
P35 120 31
P36 102 15
P37 52 19
P38 66 23
P39 176 32
P40 103 28
P41 115 37
P42 86 33
P43 169 25
P44 55 17
P45 105 30
P46 78 33
P47 94 26
P48 142 20
P49 119 21
P50 109 22

98
Metode statistice în analiza software

Prin prelucrarea datelor se obţine arborele ierarhic din figura 2.4.

DIAGRAMA ARBORE
DISTANTE
0.000 1000.000
1-
+--
44+ |
||
37- |
+---------------
24- | |
+-| |
16-|| |
+- |
2-| |
|| |
27+| |
++ |
21-| |
| |
29-| |
+- |
38- |
+-----------------------------------------
46- | |
+- | |
15+| | |
|| | |
42-| | |
+----- | |
4-| | | |
|| | | |
19+| | | |
++ | | |
45+| | | |
|| | | |

99
Loturi de programe

40-| | | |
| | | |
36-| | | |
+- | | |
47+ | | |
| | | |
10- | | |
+----------- |
23- | |
+-- | |
49+ | | |
|| | |
34+ | | |
|| | |
50- | | |
+---- |
17- | |
|| |
41+ | |
+-| |
35-|| |
+- |
25-| |
+- |
18+ |
| |
32- |
+------
22- |
+- |
31+| |
|| |
48-| |
+------- |
26-| | |
+- | |
14+ | |

100
Metode statistice în analiza software

| | |
6- | |
+--------------------------------------------------
11- |
+--- |
28+ | |
| | |
7- | |
+-----
13- |
| |
43+ |
| |
3+ |
| |
33+ |
+--|
9+ ||
| ||
30+ ||
| ||
8- ||
+-
20- |
||
5+ |
+-|
39-||
+-
12--

Figura 2.4 Arborele ierarhic al datelor din tabelul 2.18

Pe baza arborelui din figura 2.4 se definesc trei loturi de programe


omogene.

101
Loturi de programe

Loturile omogene astfel obţinute sunt analizate utilizând analiza factorială


şi de corespondenţe între variabile. Cele două abordări sunt complementare, analiza
factorială permiţând, o interpretare rapidă în funcţie de caracteristicile loturilor.

2.5 Planificarea experimentelor pentru loturi

Scopul analizei software este de a crea imaginea produsului software din


punctul de vedere al caracteristicilor de comportament software, prin valorile pe
care le au pe durata execuţiilor. Descrierea astfel obţinută permite producătorilor şi
utilizatorilor să cunoască performanţele acestuia şi constituie baza de pornire a
procesului de îmbunătăţire.
Nivelurile măsurate ale caracteristicilor sunt rezultatul acţiunii simultane a
unui număr finit de factori, între care există corelaţie structural-funcţională.
Fiecare, determină o anumită variaţie a caracteristicilor produsului program. Pentru
a evidenţia efectul influenţei factorilor asupra acestora se efectuează o serie de
experimente.
Prin utilizarea experimentului se realizează o testare controlată a aplicaţiei
într-un mediu bine definit. Având avantajul cunoaşterii exacte a nivelului fiecărui
factor şi a obiectivelor urmărite, analistul este atent la modul cantitativ şi calitativ
în care sunt afectate caracteristicile.

F1
Valoarea caracteristicii măsurate ca
…… funcţie de acţiunea factorilor
……
E(F1, F2, …, Fn)
Fn

Figura 2.5 Influenţa factorilor asupra valorii variabilei dependente

Dacă se consideră programul P şi se doreşte îmbunătăţirea duratei de


execuţie, se construieşte un experiment în care sunt variaţi factorii legaţi de:
Š tipul şi numărul datelor de intrare;
Š algoritmii implementaţi pentru diferite operaţii: preluare date de intrare,
prelucrare date, afişare rezultate;

102
Metode statistice în analiza software

Š platforma hardware sau software;


urmărindu-se la fiecare rulare nivelul duratei de execuţie. Experimentul se repetă în
mod succesiv până la obţinerea valorii optime a caracteristicii cercetate.
În analiza cantitativă a dinamicii proceselor se consideră factorii F1, F2, …, Fn
fiecare dintre ei fiind caracterizaţi prin nivelurile l1, l2, …, lm. Nivelul li al
factorului cercetat reprezintă valoarea posibilă pe care acesta o are la începutul
testării. După numărul factorilor luaţi în considerare, experimentele sunt:
Š unifactoriale, în care se studiază acţiunea separată a unui factor;
Š multifactoriale, în care intervin mai mulţi factori ce descriu niveluri de
interacţiune.
Se pune problema obţinerii de loturi care să acopere comportamentul
tuturor construcţiilor de factori, care să conţină combinaţia optimă de influenţe
singulare sau compuse. Deci trebuie să:
Ž se determine modelul matematic asociat relaţiilor dintre variabilele
independente şi variabila independentă;
Ž se găsească nivelul fiecărui factor astfel încât asocierea lor să permită
obţinerea rezultatului optim.
Dacă se consideră caracteristica analizată , Y, şi factorii de care depinde F1,
F2, …, Fn atunci modelul matematic, E, are forma generală:

Y = E(F1, F2, …, Fn)

iar găsirea combinaţiei căutate de valori ale factorilor constă în determinarea


coeficienţilor funcţiei:

n n n
y = b 0 + ∑ bi xi + ∑ bij xi x j + ∑ bii xi2
i =1 i< j i =1

în care:
n – numărul de factori;
y – variabila rezultativă;
xi – factorii luaţi în considerare;
bi – coeficienţii funcţiei.

Prin determinarea coeficienţilor de regresie b0, bi, bij, bii ecuaţia este
folosită pentru a determina valoarea caracteristicii, Y, în funcţie de nivelurile
cunoscute ale factorilor.
103
Loturi de programe

Pentru aceasta se utilizează experimente în care factorii sunt modificaţi în


cadrul limitelor definite anterior şi care corespund condiţiilor de execuţie a
produsului program. Experimentele reprezintă metode utile ce permit, cu un volum
de informaţii redus, realizarea de estimări la valorilor variabilei rezultative sau la
efectul factorilor. De asemenea descriu acţiunea simultană a setului de factori.
Experimentul este caracterizat de numărul n al factorilor consideraţi,
precum şi de numărul m de niveluri al fiecărui factor. În funcţie de aceste elemente,
în practică sunt utilizate experimente:
` cu n factori cu câte două niveluri, adică experimente de tipul 2n;
` cu n factori cu număr de niveluri diferite.
Desfăşurarea experimentului se rezumă la operaţia de determinare a tuturor
combinaţiilor posibile de factori în funcţie de nivelurile acestora. Procesul continuă
cu testarea lor prin obţinerea valorilor variabilei dependente şi verificarea soluţiei
optime.
Dacă în general sunt consideraţi n factori fiecare având două niveluri,
atunci numărul de perechi de niveluri testate este N = 2n. În cazul în care cei n
factori au p niveluri, cu p > 2, numărul perechilor creşte la N = pn. Prin mărirea lui
p, se ajunge la valori ale lui N foarte ridicate, lucru care complică procesul de
calcul şi interpretare a rezultatelor. În aceste cazuri se folosesc experimente
fracţionate [BARO76], pentru că:
¾ necesită resurse umane şi materiale mai mici;
¾ numărul scăzut al efectelor interacţiunilor permit interpretarea
rezultatelor.
Experimentele utilizate în mod curent în practică conţin maxim doi sau trei
factori ce au câte două niveluri, adică experimente de tipul 22 sau 23.
Pentru un experiment de tipul 22 se consideră factorii F1 şi F2 care au
nivelurile:

F1 : {a, b}
F2 : {w, z}

Nivelurile a, b, w, z reprezintă valori numerice sau calitative ce descriu


variaţia factorilor F1 şi F2 între două limite: superioară şi inferioară.
Planificarea experimentelor presupune definirea la intrare a perechilor de
valori pe care le au cei doi factori. Prin realizarea tuturor combinaţiilor posibile ale
nivelurilor celor doi factori se obţin experimentele din tabelul 2.19.

104
Metode statistice în analiza software

Planificarea experimentelor prin determinarea combinaţiilor de niveluri

Tabel 2.19
Experiment Factor F1 Factor F2
e1 a w
e2 b w
e3 a z
e4 b z

în care:
ei – experimentul asociat unei combinaţii de niveluri;
a, b – nivelurile factorului F1;
w, z – nivelurile factorului F2.

Considerând nivelul superior al factorului F1 valoarea b, respectiv y pentru


factorul F2, experimentele conţin combinaţiile:
e1 – ambii factori la niveluri inferioare;
e2 – factorul F1 modificat, factorul F2 la nivel inferior;
e2 – factorul F2 modificat, factorul F1 la nivel inferior;
e4 – ambii factori modificaţi.

Pentru analiza combinaţiilor se realizează NR repetări ale experimentului,


înregistrându-se de fiecare dată în tabelul 2.20 valoarea obţinută pentru
caracteristica Y.

Valorile caracteristicii analizate, obţinute prin repetarea experimentelor

Tabel 2.20
Număr repetare Experiment Experiment Experiment Experiment
e1 e2 e3 e4
1 ye11 ye21 ye31 ye41
2 ye12 ye22 ye32 ye42
… … … … …
I ye1i ye2i ye3i ye4i
… … … … …
e1 e2 e3
NR y NR y NR y NR ye4NR

105
Loturi de programe

în care:
NR – numărul de repetări al experimentului;
yeji – valoarea caracteristicii analizate, obţinută pentru combinaţia de
factori a experimentului ej.

Pe baza datelor din tabelul 2.21 se determină mediile valorilor yeji pe


combinaţiile posibile ale experimentelor. Relaţia utilizată este:

NR

∑y
ej
i
e
y j = i =1

NR

Sunt determinate valorile medii y e1 , y e2 , y e3 , y e4 asociate fiecărui


experiment.
Obţinerea valorilor medii pentru seriile de valori înregistrate de
caracteristica Y cu diferite combinaţii de niveluri ale factorilor este utilizată pentru
descrierea sumară a fenomenului. Înţelegerea acestuia în totalitate este corelată cu
determinarea efectelor factorilor [BARO76].
Efectul principal al factorului F1 este media rezultatelor obţinute ca urmare
a modificării nivelului factorului F1, din care se scade media rezultatelor obţinute
când factorul F1 nu s-a modificat, sau are un nivel inferior. Determinarea acestui
efect se face prin folosirea relaţiei:

EF (F1 ) =
(y F1 ( F2 ) + y F1F2 ) − (y F2 ( F1 ) + y( F1F2 ) )
2 2

unde:
EF(F1) – efectul principal al factorului F1;
y F1 ( F2 ) – media rezultatelor obţinute pentru experimentul în care, factorul
F1 este modificat şi are nivel superior, iar factorul F2 are nivel
inferior;
y F1F2 – media rezultatelor obţinute pentru experimentului în care ambii
factori sunt caracterizaţi de niveluri superioare;

106
Metode statistice în analiza software

y F2 ( F1 ) – media rezultatelor obţinute pentru experimentul în care, factorul


F2 era nivel superior, iar factorul F1 este nemodificat, având nivel
inferior.
y( F1F2 ) – media rezultatelor obţinute pentru experimentului în care ambii
factori au niveluri inferioare.

Rezultă că efectul modificării factorului F1 reprezintă media a două efecte:

¾ efectul modificării factorului F1 în condiţiile în care nivelul factorului F2


nu se modifică sau este inferior. Acesta este descris de relaţia:

∆ F1 ( F2 ) = y F1 ( F2 ) − y( F1F2 )

¾ efectul modificării nivelului factorului F1 în condiţiile în care se


modifică şi nivelul factorului F2, determinat prin relaţia:

∆ F1F2 = y F1F2 − y F2 ( F1 )

Deci, efectul principal al factorului A este obţinut prin formula:

EF (F1 ) =
(y F1 ( F2 ) − y( F1F2 ) ) − (y F1 F2 − y F2 ( F1 ) )= y F1 ( F2 ) + y F1F2 − y( F1F2 ) − y F2 ( F1 )
2 2 2

Efectul principal al factorului F2, EF(F2), este media rezultatelor obţinute


ca urmare a modificării nivelului factorului F2, din care se scade media rezultatelor
obţinute când factorul F2 nu s-a modificat, sau are un nivel inferior. Relaţia
asociată este:

EF (F2 ) =
(y F2 ( F1 ) + y F1F2 ) − (y F1 ( F2 ) + y( F1F2 ) )
2 2

unde EF(F2) reprezintă efectul principal al factorului F2.

107
Loturi de programe

Efectul interacţiunii dintre factori reprezintă jumătate din diferenţa dintre


efectul factorului F1 măsurat la nivelul superior al factorului F2 şi efectul aceluiaşi
factor măsurat la nivelul inferior al factorului F2, adică:

EF (F1 F2 ) =
(y F1 F2 + y( F1F2 ) ) − (y F1 ( F2 ) + y F2 ( F1 ) )
2 2

unde EF(F2) reprezintă efectul principal al factorului F2.

Într-un program de experimente 22 există 22-1 consecinţe:


Š un efect principal al factorului F1;
Š un efect principal al factorului F2;
Š un efect al interacţiunii de doi factori;
Modelul matematic asociat experimentului este:

yij = µ + α i + β j + (αβ )ij + ε ij

unde:
yij – este valoarea observată a caracteristicii analizate;
µ – valoarea mediei generale;
αi – efectul factorului F1, cu i = {a, b};
βj – efectul factorului F2, cu j = {x, y};
(αβ )ij – efectul interacţiunii dintre factori;
ε ij – reprezintă eroarea de observaţie.

Odată determinate efectele factorilor, testarea ipotezelor referitoare la


acestea se face utilizând analiza dispersională bifactoriale, fiecărui efect
corespunzându-i gradele de libertate:

nglF1 = EF(F1) – 1, nglF2 = EF(F2) – 1, şi nglF1F2 = (EF(F1) – 1)( EF(F2) – 1)

Se consideră programul P pentru care producătorul urmăreşte


îmbunătăţirea timpului de obţinerea a rezultatului. În acest sens se planifică o serie
de experimente care să evidenţieze influenţa tipului datelor de intrare şi a

108
Metode statistice în analiza software

modalităţii de preluare a acestora prin metode de citire a datelor. Factorii analizaţi


sunt:
F1 – tipul datelor de intrare şi este caracterizat de două niveluri în funcţie
de spaţiul de memorie ocupat de o variabilă din tipul respectiv;
datele mai diferă între ele şi prin formatul de reprezentare, dar se
alege această caracteristică comună pentru a asigura comparabilitatea
lor;
F2 – modalitatea de preluarea a datelor prin intermediul perifericelor.
Nivelul inferior corespunde procesului de introducere a datelor de la
tastatură, iar cel superior este asociat scanerului; nivelurile reprezintă
coeficienţi de rapiditate a introducerii datelor determinate pe un set
omogen de înregistrări;

Cum experimentul este de tipul 22, există 4 testări ce corespund


combinaţiilor de nivelurile descrise în tabelul 2.21.

Planificarea experimentelor asociate programului P

Tabel 2.21
Experiment Factor F1 Factor F2 Durată de execuţie
Tipul Modul de introducere a medie
datelor datelor
e1 2 1 25
e2 4 1 46
e3 2 3 29
e4 4 3 31

Consecinţele ale modificării factorilor sunt:


` efectul schimbării factorului F1, spaţiul ocupat de date se modifică de la
2 octeţi la 4 octeţi, asupra duratei de execuţie este:

EF(F1) =
(46 + 31) − (29 + 25) = 11,5
2 2

109
Loturi de programe

` efectul modificării factorului F2, pentru preluarea datelor se utilizează


scanerul, asupra duratei de execuţie este:

EF(F2) =
(29 + 31) − (25 + 46) = -5,5
2 2

interacţiunea dintre factori:

EF(F1F2) =
(31 + 25) − (29 + 46) = -9,5
2 2

Testarea ipotezelor referitoare la cele trei efecte se face utilizând analiza


dispersională bifactoriale, fiecărui efect corespunzându-i gradele de libertate
nglF1 = EF(F1) – 1, nglF2 = EF(F2) – 1, şi nglF1F2 = (EF(F1) – 1)( EF(F2) – 1).

În cazul în care numărul factorilor este mare se impune efectuarea unei


selecţii ale combinaţiilor în aşa fel încât numărul de experienţe să scadă
semnificativ şi să se realizeze planuri parţiale, dar volumul rezultatelor obţinute să
fie nealterat.

2.6 Concluzii

Obiectivele analizei statistică a produselor program constau în:


Š evidenţierea nivelurilor caracteristicilor software luate în considerare;
Š determinarea factorilor de influenţă ai valorilor rezultate;
Š obţinerea descrierii complete şi obiective a programului analizat sau a
colectivităţii în care este integrat;
Š descrierea relaţiilor dintre factori;
Š explicarea comportamentului aplicaţiei;
Š dezvoltarea de metode de îmbunătăţire a performanţelor.

110
Metode statistice în analiza software

Pentru aceasta, în primele etape ale analizei trebuie selectate produsele


program ce sunt descrise de nivelurile esenţiale ale caracteristicilor considerate.
Realizarea unui lot de programe omogen şi reprezentativ pentru întregul set,
garantează obţinerea celor mai bune rezultate, în condiţiile aplicării corecte a
metodelor de analiză. Dar, analiza software lipsită de un astfel de lot conduce cu
siguranţă la o nereuşită.
Importanţa construirii lotului de programe supus analizei software este
evidenţiată şi de numeroasele metode şi tehnici statistice de sondaj şi de estimaţie,
[MIHO77], ce descriu cele mai bune abordări a problemei.

111
3
GRUPUL ŢINTĂ

3.1 Definirea grupului ţintă

Analiza statistică a programelor şi a datelor ce definesc aplicaţia


informatică presupune stabilirea grupului ţintă.
Definirea grupului ţintă nu reprezintă un obiectiv final, un rezultat aşteptat
al analizei statistice a produselor program. Activitatea face parte din etapele iniţiale
derulării întregului proces. Grupul ţintă este un instrument utilizat în analiză
pentru a:
¾ mări şansa obţinerii unor rezultate reprezentative;
¾ elimina numeroasele operaţii ce preced operaţie de selecţie a datelor de
analizat: normalizare, omogenizarea eşantionului, eliminarea valorilor
aberante;
¾ elimina consumul de resurse pentru pregătirea lotului de date de
analizat.

Cum produsele software sunt studiate şi comparate din punctul de


vedere al:
` datelor implementate, în funcţie de tip, mărime, structură;
` utilizatorilor finali, luând în considerare gradul de experienţă, nevoia de
asistenţă;
112
Metode statistice în analiza software

` firmelor producătoare prin resursele disponibile şi procesul de producţie


implementat;
` caracteristicilor de calitate descrise de diferite modele de calitate;
` specificaţiilor hardware sau software ce impun anumite limite asupra
implementării şi utilizării aplicaţiei;
grupul ţintă, în funcţie de orientarea analizei colectivităţii de produse software, este
format din unul dintre aceste tipuri. Dacă un lot de produse software este analizat
din punctul de vedere al utilizatorului, luând în discuţie factori ca:
Ž timp de înţelegere şi utilizare aplicaţie;
Ž eficienţa documentaţiei;
Ž nivelul de cunoştinţe informatice necesare utilizatorului;
Ž nivelul de cunoştinţe din alte domenii (contabilitate, statistică, grafică
etc.) necesare utilizatorului.

Grupul ţintă este definit ca fiind format din totalitatea persoanelor


colectivităţii utilizatorilor aplicaţiei informatice.
Dacă lotul de produse program este analizat din punctul de vedere al
specificaţiilor hardware sau software, factorii consideraţi sunt:
Š cerinţele hardware minime, necesare utilizării produsului software în
parametrii normali;
Š eficienţa utilizării resurselor hardware;
Š nivelul consumului de resurse;
Š numărul de instrumente necesare suplimentare, care nu se regăsesc în
configuraţia minimă;
iar grupul ţintă conţine toate platformele hardware şi software pe care rulează
aplicaţia.

Exemple anterioare subliniază faptul că, o analiză eficientă şi cuprinzătoare


a unui lot de produse program nu este restricţionată la utilizarea unui singur grup
ţintă. Acest lucru ar limita aria de analiză asupra unui singur criteriu. De aceea este
necesar caracterizarea produselor analizate din cât mai multe puncte de vedere,
pentru fiecare în parte definindu-se un grup ţintă.
Avantajul principal al includerii procesului de definire a grupului ţintă în
analiza produselor software este reprezentat de utilizarea factorilor din analiză ca
filtre de selecţie aplicate datelor ce constituie grupul ţintă, indiferent care sunt
acestea: persoane, firme, tipuri de date sau caracteristici de calitate.

113
Grupul ţintă

3.2 Dimensiunea grupului ţintă

Grupul ţintă este utilizat pentru a evidenţia calităţile utilizatorilor sau


pentru a determina caracteristicile de calitate software ale produsului în jurul cărora
se dezvolta sistemul de management al calităţii. Un alt factor important al analizei
software este mărimea grupului ţintă, reprezentată de numărul indivizilor ce îl
compun, pentru că:
ƒ determină dimensiunea eşantionului de indivizi care sunt chestionaţi şi
ale căror niveluri pentru diferite caracteristici sunt măsurate; obţinerea
unui grup ţintă mare, a cărui chestionare implică costuri semnificative,
implică determinarea unui eşantion semnificativ pentru întreg;
ƒ constituie motiv de continuare a analizei; în unele cazuri, din
considerente economice ca venit estimat, cost de realizare, nu este
justificat consumul de resurse pentru continuarea sau realizarea unei
analize comparate ale cărei rezultate să nu aibă semnificaţia aşteptată.
Aplicaţia informatică care permite plata electronică a taxelor şi impozitelor
se construieşte pentru un grup ţintă estimat, luând în considerare indicatorii:
Ntaxe – numărul de persoane înregistrate la ultimul recensământ;
taxe
N p – numărul maxim al plătitorilor de taxe şi impozite; rezultatul este
obţinut din numărul persoanelor înregistrate la recensământ cu
vârsta mai mare de 16 ani, ştiut fiind că nu sunt angajaţi să
primească salarii, deci nu plătesc taxe, persoanele sub această
vârstă;
taxe
N e – numărul persoanelor care au acces la Internet sau la terminale
electronice de unde efectuează plăţi. În cazul terminalelor se ia
în considerare o rază de dist m2 în jurul acestora;
taxe
N c – numărul persoanelor care au conturi în bănci sau sunt posesori de
carduri electronice.
Restricţiile care apar, sunt impuse de ordinea logică a acestor indicatori:

Ntaxe > Ntaxep > Ntaxec ≥ Ntaxee

Scopul final al analizei impune studierea cu deosebită atenţie a grupului


ţintă, odată ce acesta este definit şi construit, pentru a proiecta interfaţa om-
calculator a aplicaţiei informatice astfel încât mesajele afişate să fie:
” clare, pentru a nu da naştere la confuzii sau la interpretări ce
îndepărtează utilizatorul de cauza reală a mesajului;

114
Metode statistice în analiza software

” scurte, deoarece ecranul terminalului nu permite afişarea unui mare


număr de caractere
” neambigue, astfel încât utilizatorul indiferent de gradul de experienţă pe
care îl are în lucrul cu aplicaţia respectivă înţelege ceea ce s-a întâmplat;
” pe înţelesul tuturor categoriilor de utilizatori;
” generatoare a deciziilor care permit efectuarea de operaţii cu succes
într-un număr finit de etape.
Dacă în acest caz obiectivele analizei ar fi fost altele, este posibil ca
mărimea grupului ţintă se constituie ca o condiţie esenţială care influenţează:
` hotărârea de a implementa sau nu sistemul de plăţi electronice. Dacă
mărimea grupului ţintă este prea mică, costurile de realizare a
proiectului sunt mai mari decât beneficiile;
` modul cum este proiectată întreaga aplicaţie. Se iau în considerare prin
intermediul estimărilor, variaţiile viitoare ale mărimii acestuia.
În general, studiul colectivităţii nu se efectuează prin luarea în considerare
a tuturor indivizilor care o alcătuiesc deoarece numărul acestora este mult prea
mare pentru a permite analiza lor. De aceea, grupul ţintă este redus la un eşantion
considerat reprezentativ şi a cărui mărime se stabileşte utilizând metode statistice
de determinare a volumului sondajului:

zα2 * σ Grup
2

nesantion = , în cazul sondajului simplu repetat


∆2x
N Grup * zα2 * σ Grup
2

nesantion = , în cazul sondajului simplu nerepetat


(N − 1)∆2x + zα2 *σ Grup 2
unde:
nesantion – dimensiunea minimă a eşantionului pentru asigurarea gradului de
reprezentativitate dorit;
NGrup – dimensiunea reală a grupului ţintă;
zα – se citeşte din tabelele funcţiei Laplace pentru probabilitatea P =
1 – α;
σ Grup – valoarea dispersiei;
2

∆x – reprezintă eroarea limită, cu cât se abate media eşantionului de la


media întregii colectivităţi.

115
Grupul ţintă

În cazul aplicaţiei considerate, colectivitatea este formată dintr-o populaţie


de 22000000 locuitori din care 19000000 sunt peste 16 ani. Dintre aceştia, 6000000
sunt posesori de carduri. Din cele 10000000 persoane cu acces la Internet numai
4000000 au carduri. Rezultă că grupul ţintă este format din 4000000 de persoane.
Această aplicaţie informatică se proiectează ţinând seama de strategiile de
dezvoltare a societăţii informaţionale. În acest context se are în vedere creşterea cu
50% a numărului de persoane care vor avea acces la Internet în următoarea
perioadă de timp, Ntaxee = 15000000. Dublarea numărului de posesori de conturi de
debit, determină creşterea lui Ntaxec la valoarea de 12000000 de persoane. Păstrând
aceleaşi proporţii, rezultă că cele 4000000 de persoane posesoare de carduri şi care
au acces la Internet, vor fi 8000000 de persoane care vor folosi aplicaţia
informatică. Deci, acesta este grupul ţintă al utilizatorilor aplicaţiei în perioada
implementării ei.
Mergând pe structura populaţiei, creşterea numărului posesorilor de carduri
de la 6000000 la 12000000 este motivată de includerea în analiza structurii sociale
de noi categorii de persoane:
Š persoane cu venituri reduse;
Š persoane care îşi schimbă mentalitatea cu privire la siguranţa plăţilor
electronice;
Š persoane care nu au cunoştinţele minime, care să le permite să utilizeze
diferite instrumente pentru a accesa Internetul.
În acest context apare gradul definirii eşantionului şi efectuarea studiului
pe eşantion care trebuie să fie reprezentativ.

În cazul în care se doreşte analiza complexităţii de programe scrise în


limbajul C++, de asemenea trebuie stabilit grupul ţintă. Acesta este dat de
totalitatea programelor scrise în limbajul C++. Este dificil să se accepte un astfel de
grup ţintă, întrucât nu este operaţional. Sunt definite criterii care să selecteze şi să
diferenţieze programele respective, adică:
¾ se precizează un interval de timp în care au fost scrise programele;
¾ se indică dimensiunea minimă şi maximă exprimată ca număr de linii
sursă pe care le are programul;
¾ se impune absenţa conexiunilor cu sisteme de gestiunea bazelor de date
sau alte interacţiuni;
¾ se stabilesc reguli de scriere a codului sursă şi pe baza acestora se
stabilesc proceduri de normalizare a acestuia;

116
Metode statistice în analiza software

¾ se defineşte problema care este rezolvată prin aplicarea programelor


scrise în limbajul C++;
¾ se impune eliminarea secvenţelor de cod ce generează interfaţa grafică a
programului.
Definirea regulilor de selecţie continuă până când se consideră că
elementele grupului ţintă constituie un grup omogen şi reprezentativ pentru analiza
dorită.
În acest fel sunt create premisele pentru a se obţine o filtrare mai bună a
grupului ţintă.

În cazul aplicaţiei de taxe, obiectivul urmărit este crearea de interfeţe care


să conducă toate interacţiunile om-calculator la încheierea cu succes a operaţiilor
de plată electronică. Pentru aceasta trebuie:
Ž identificate categoriile de persoane;
Ž stabilite tipurile de taxe;
Ž definite modalităţile de plată;
Ž definirea scenariilor de utilizare a aplicaţiei;
Ž cercetarea amănunţită a cazurilor particulare de interacţiune a
utilizatorului cu terminalul electronic;
Ž definite metode directe sau indirecte de instruire a utilizatorului.

În cazul studierii programelor scrise în C++ obiectivul urmărit este


stabilirea salariului programatorilor funcţie de:
` complexitatea textelor sursă;
` fiabilitatea programelor realizate;
` resursele consumate;
` gradul de reutilizabilitate a programlui;
` productivitatea muncii.

În cazul unui program antivirus, se urmăreşte realizarea unui produs


program fiabil, cu grad ridicat de portabilitate, eficient în privinţa resurselor
consumate şi a capacităţii de descoperire şi blocare a acţiunii programelor virus.
Pentru a realiza analiza produsului program se urmăreşte definirea unui grup ţintă
format din platforme hardware şi software care să:
Š conţină procesoare de putere variată;
Š aibă implementat sisteme de operare realizate de producători diferiţi;
Š fie capabile de comunicare în reţea;

117
Grupul ţintă

Š ruleze cât mai multe aplicaţii, de tipuri diferite, în mod concurent;


Š permită preluarea de date de pe mediile externe utilizate în mod curent;
Š fie caracterizate de un grad ridicat de utilizare.

În toate cazurile, trebuie estimată dimensiunea grupului ţintă şi numai după


aceea trebuie trecut la definirea eşantionului pe care se efectuează analize.
Mărimea grupului ţintă este determinată cu aproximaţie doar definind cu exactitate
toate caracteristicile unui individ care să îi confere dreptul de apartenenţă la grup.
Oricare dintre caracteristici, este privită asemenea unui filtru care reduce grupul
total al indivizilor la un grup ţintă.
Metoda utilizată pentru determina dimensiunea grupului ţintă constă în
parcurgerea etapelor:
¾ se ia în considerare populaţia totală de elemente; în funcţie de obiectivul
studiului, elementele reprezintă persoane, texte sursă, platforme
hardware sau software, etc.;
¾ se definesc caracteristici ale elementelor; dacă acestea sunt persoane
atunci se analizează profilului utilizatorului produsului program
cercetat;
¾ setul de caracteristici construit stă la baza procesului de selecţie a
elementelor populaţiei;
¾ se definesc noi ipoteze de lucru pentru a rafina elementele grupului
ţintă;
¾ dimensiunea grupului ţintă este determinată prin numărare efectivă sau
prin realizarea de estimări;
¾ în cazul în care produsul program realizează operaţii cu caracter critic,
asemenea aplicaţiilor medicale de diagnosticare, sau dimensiunea
grupului ţintă este estimată, se definesc elemente de corecţie.
În cazul multor analize software, numărarea efectivă a elementelor
grupului ţintă reprezintă un proces costisitor. Din acest motiv, este mai avantajos
estimarea dimensiunii acestuia.
Fie că operaţia de estimare este bazată pe rezultatele :
ƒ determinări exacte a grupului ţintă în perioade anterioare;
ƒ realizări de sondaje asupra întregii populaţii de elemente din perioada
curentă;
trebuie avute în vedere, de fiecare dată, metode de corecţie a rezultatului. Acestea
sunt definite considerând că există elemente cu caracteristici sau comportament
particular.

118
Metode statistice în analiza software

În cazul în care se doreşte analiza aplicaţiilor Web se ia în considerare că în


perioada analizată există:
NW – firme care dezvoltă produse informatice;
KW – sunt firme care dezvoltă aplicaţii Web;
MW – număr de studenţi absolvenţi care ştiu să dezvolte aplicaţii Web;
TW – număr de studenţi care vor lucra strict pe aplicaţii WEB în firme
existente şi în firme noi înfiinţate;

Între variabile există relaţiile:

KW < NW şi TW < MW

Dacă ritmul de constituire a firmelor este de αweb pe an rezultă că în


următorii L ani vor fi:

β(L) = (αweb) L*KW

firme al căror domeniu principal de activitate îl constituie dezvoltarea aplicaţiilor


Web. Rata de creştere este obţinută, considerând valorile variabilelor MW şi TW
constante în următorii L ani.
Corecţia, Corec, acestei valori este dată de relaţia:

TW − ZW − θW
Corec =
kW

unde:
ZW – reprezintă numărul persoanelor care lucrează în firme noi înfiinţate;
θ W – numărul de studenţi care nu se regăsesc infirmele existente sau nou
înfiinţate în ritmul αweb pe an;
kW – numărul mediu de angajaţi al unei firme ce dezvoltă aplicaţii Web.
Deci numărul de firme de aplicaţii WEB este de:

L ⎛ TW − ZW − θ W ⎞
NRFRM = (α web ) * ⎜⎜ K − ⎟⎟
⎝ kW ⎠

119
Grupul ţintă

Dacă o firmă dezvoltă în medie βweb aplicaţii Web pe an, rezultă că grupul
ţintă va fi de:

⎡ L ⎛ TW − ZW − θ W ⎞⎤
GRTNT = β web * ⎢(α web ) * ⎜⎜ K − ⎟⎟⎥
⎣ ⎝ kW ⎠⎦

aplicaţii WEB.
Numărul total de aplicaţii în raport cu momentul T0 este:

t
T −θ
N Tapl = β * K ∑ α L + (t + 1)
L =0 Z

Dacă se doreşte studiul productivităţii muncii programatorilor trebuie luat


în considerare:
NPGi – numărul de programatori existent în anul al i-lea;
αprog – ritmul de creştere anual a numărului de programatori; la baza
acestei creşteri se consideră că se găsesc studenţii care termină
facultăţi de profil.

Considerând cunoscut numărul de programatori începând cu anul 1990, se


construieşte tabelul 31.

Dimensiunea grupului ţintă constituit din programatori


Tabel 3.1
Anii Număr de programatori
1990 NPG0
1991 NPG1
… …
2002 NPG13
2003 NPG14

Ritmul de creştere al numărului de programatori este dat de relaţia:

N nPG
α prog = n PG ,
N0

120
Metode statistice în analiza software

în care nPG reprezintă numărul de ani trecuţi de la momentul iniţial; totodată


reprezintă şi indicele ultimului an în care au fost înregistrate date;

Pentru anul 2005, NPG16, numărul de programatori va fi:

N16 = N nPG *α 2prog = N14 *α 2prog .

Dacă interesează productivitatea programatorilor ce utilizează limbajul


Java se construieşte o serie cu şirul de creştere a numărului de programatori şi cu
un indice mediu care reprezintă ponderea acestei categorii de programatori:

N16[ Java ] = N nPG *α 2prog * β Java

în care:
αprog – ritmul de creştere al numărului de programatori;
βJava – ponderea programatorilor care folosesc limbajul Java.

Pornind de la grupul ţintă astfel estimat, eşantionarea realizează un studiu


pentru anul 2005 pe date ale grupului ţintă existent în structura din 2003, ceea ce
impune o serie de corecţii:
Š deplasarea numărului de programatori spre includerea persoanelor cu
vârste mai mici care nu au terminat facultatea, dar care lucrează în
domeniu;
Š creşterea experienţei programatorilor carele permite să lucreze în
diferite limbaje de programare cu o productivitate ridicată.

Grupul ţintă are o dinamică influenţată de diferiţi factori. Se consideră


factorii FG1, FG2, …, FGt puşi în ordinea descrescătoare a importanţei şi intervalul
cuprins între anii 1990 şi 2003 pentru care se cunosc dimensiunile grupului ţintă.
Se construiesc modelele care determină numărul de indivizi ai grupului ţintă
folosind niveluri ale factorilor.

121
Grupul ţintă

Factorii de influenţă ai dimensiunii grupului ţintă


Tabel 3.2
Anii FG1 FG2 … FGj … FGt Grupul ţintă
AN1 1990 xfg1,1 xfg1,2 … xfg1,j … xfg1,t NG1
AN2 1991 xfg2,1 xfg2,2 … xfg2,j … xfg2,t NG2
… … … … … … … … …
ANi - xfgi,1 xfgi,2 … xfgi,j … xfgi,t NGi
… … … … … … … … …
AN13 2002 xfg13,1 xfg13,2 … xfg13,j … xfg13,t NG13
AN14 2003 xfg14,1 xfg14,2 … xfg14,j … xfg14,t NG14

unde:
FGj – factorul care influenţează dimensiunea grupului ţintă;
NGi – dimensiunea grupului ţintă în anul ANi;
Xfgi,j – valoarea factorului FGj în anul ANi.

Pe baza datelor din tabelul 3.2, se construiesc modelele de regresie care


determină numărul de indivizi ai grupului ţintă folosind niveluri ale factorilor.
Forma modelelor de regresie este determinată de numărul factorilor incluşi în
ecuaţie şi de graficul corelaţiei dintre valorile factorilor şi cele ale dimensiunii
grupului ţintă.
În cazul corelaţiilor lineare, modele de regresie asociate dimensiunii
grupului ţintă, NG, au forma:

NG = a*xNG + b
NG = a*xNG1 + b* xNG2 + c
NG = a* xNG1 + b* xNG2 + c* xNG3 + d

în care:
xNG, xNG1, xNG2, xNG3 – reprezintă factorii ce influenţează puternic
valoarea variabilei NG;
a, b, c, d – coeficienţii funcţiei de regresie.

Pentru modelele nelineare, se folosesc funcţii de forma:

NG = a *(xNG) 2 + b* xNG + c
NG
NG = a * e x +b
122
Metode statistice în analiza software

în care:
xNG – este factorul ce influenţează puternic valoarea variabilei NG;
a, b, c – coeficienţii funcţiei de regresie.

Indiferent de funcţiile în jurul cărora sunt construite aceste modele se fac


estimări ale dimensiunii grupului ţintă şi se alege acela pentru care erorile sunt cele
mai mici. Rezultă că dacă se dau nivelurile estimate ale factorilor, se obţine o
anumită dimensiune a grupului ţintă, dimensiune utilizată în alcătuirea
eşantionului.

De exemplu, se consideră necesară studierea numărului de firme, NFirme,


care influenţează producţia de produse software autohtone. Numărul acestora
depinde de următorii factori:
Fact1 – timpul;
Fact2 – cifra de afaceri lunară medie a unei firme;
Fact3 – capitalul social mediu al unei firme;
Fact4 – numărul angajaţilor pe care îl are în medie o firmă;
Fact5 – numărul de filiale.

Se construieşte tabelul 3.3.

Factorii de influenţă ai numărului de firme producătoare de software


Tabel 3.3
Ani Timp Cifra de Capital Număr Număr Număr
afaceri social angajaţi filiale FIRME
(mii Lei) (mii Lei)
1990 1 500 1000 2 1 4
1991 2 800 1000 2 1 11
1992 3 1100 1000 2 1 43
1993 4 2500 2000 3 1 69
1994 5 2900 2000 5 1 98
1995 6 3700 2000 5 1 125
1996 7 5000 2500 6 2 148
1997 8 8000 3000 6 2 210
1998 9 11000 3000 7 2 283
1999 10 15000 4500 8 3 320
2000 11 17500 5200 8 3 397
2001 12 21000 7000 12 3 458
2002 13 25000 9000 14 4 674
2003 14 28000 12000 20 4 983

123
Grupul ţintă

Se calculează coeficienţii de corelaţie între numărul de firme şi factorii analizaţi:

Matricea coeficienţilor de corelaţie


Tabel 3.4
Timp Cifra de Capital Număr Număr Număr
afaceri social angajaţi filiale FIRME
Timp 1 0,95 0,96 0,93 0,94 0,90
Cifra de afaceri 1 0,96 0,95 0,97 0,96
Capital social 1 0,93 0,92 0,93
Număr angajaţi 1 0,93 0,93
Număr filiale 1 0,92
Număr FIRME 1

După cum rezultă din datele tabelului 6, există legături de dependenţă


semnificative între toţi factorii consideraţi şi dimensiunea grupului ţintă. Deoarece
factorii Fact4 şi Fact5 au variaţii mari, majoritatea firmelor având o filială şi un
număr scăzut de angajaţi nu sunt incluşi în modelele de regresie.
Cum toate legăturile sunt lineare, rezultă modelele de regresie ale
dimensiunii grupului ţintă:
” în funcţie de factorul Fact1:

( Fact1 )
N Firme = -183,47 + 60,87*Fact1

” în funcţie de factorii Fact1, Fact2:

( Fact1 , Fact 2 )
N Firme = 23,98 –11,83*Fact1 + 0,0000333*Fact2

” în funcţie de factorii Fact1, Fact2 şi Fact3:

( Fact1 , Fact 2 , Fact3 )


N Firme = 1,28 –17,11*Fact1 + 0,00003*Fact2 + 0,000035*Fact3

În ipoteza că se estimează dimensiunea grupului ţintă format din NFirme


firme în funcţie de timp, rezultă:

( 2005 )
N Firme = −183,47 + 60,87 *16 = 792
124
Metode statistice în analiza software

Dacă se iau în considerare cifra de afaceri şi timpul:


7
( 2005 , 3⋅10 )
N Firme = 23,98 − 11,83 *16 + 0,00003 * 3 *107 = 834

obţin alt număr de firme.


Iar dacă se utilizează şi ultimul model, se obţine:

7 6
( 2005, 3⋅10 ,13⋅10 )
N Firme = 1,28 − 17,11*16 + 333*10−7 * 3 *107 + 35 *10−6 *13*106 = 1182

( Fact , Fact 2 , Fact3 )


Se decide că prin intermediul modelul N Firme1 se obţin cele mai
bune estimări ale dimensiunii grupului ţintă.

3.3 Stabilitatea structurală a grupului ţintă

Grupul ţintă al produsului software analizat este caracterizat cantitativ prin


numărul elementelor sau indivizilor săi şi calitativ în funcţie de caracteristicile
acestora. Reunind părţile componente în funcţie de niveluri comune ale
caracteristicilor se obţin subgrupuri distincte. Acestea definesc structura grupului
ţintă.
În cazul aplicaţia informatice care permite plata electronică a taxelor şi
impozitelor, structura grupului ţintă în funcţie de vârsta persoanelor incluse este
dată în figura 3.1.

peste 100
intre 70 s i 99 anagajati
anagajati 5%
9% m ai putin de 15
angajati
intre 40 si 69
36%
angajati
18%

intre 15 s i 39
angajati
32%

Figura 3.1 Structura grupului ţintă al aplicaţiei de plată electronică


în funcţie de vârsta persoanelor

125
Grupul ţintă

În cazul firmelor de software, numărul mediu de angajaţi al unei firme


structurează grupul ţintă în 5 subgrupe, ca în figura 3.2.

pes te 65 ani
3%
41 ani - 65 ani
16 ani - 25 ani
21%
31%

26 ani - 40 ani
45%

Figura 3.2 Structura numărului de firme în funcţie de numărul de angajaţi

Analiza structurii grupului ţintă completează procesul de estimare a


dimensiunii acestuia. Pentru aceasta se are în vedere dacă:
Ž pe perioada de timp analizată, structura grupului ţintă a fost constantă;
deci se consideră conservarea structurii elementelor pe perioadele
viitoare;
Ž se precizează structura viitoare a grupului ţintă pe baza previziunilor
economice, sociale, etc.;
Cunoaşterea structurii grupului ţintă permite realizarea de eşantioane de
dimensiuni reduse şi reprezentative, pe baza cărora să obţin rezultate ce
caracterizează întreg grupul.
Stabilitatea structurală este evidenţiată prin prelucrarea datelor ce descriu
structura grupului ţintă pe o perioadă de timp.

Analiza stabilităţii structurale a grupului ţintă implică studiul structurii pe


perioade de timp anterioare momentului curent. În aceste sens, se consideră definit
grupul ţintă GRT. Elementele grupului sunt structurate în funcţie de nct niveluri ale
caracteristicii CT. Prin înregistrarea pe parcursul a ntx perioade a ponderii
numărului de elemente caracterizate de un nivel al caracteristicii se obţine
tabelul 3.5. Pentru a stabili dacă aceasta este stabilă se utilizează indicatori statistici
ai variaţiei.
126
Metode statistice în analiza software

Structura grupului ţintă analizat


Tabel 3.5
Structura grupului ţintă
în funcţie de nivelurile caracteristicii CT
Moment Nivel1 Nivel2 … Nivelj … Nivelnct Total
(%) (%) (%) (%)
TX1 gx11 gx12 … gx1j … gx1nct 100
TX2 gx21 gx22 … gx2j … gx2nct 100
… … … … … … … …
TXi gxi1 gxi2 … gxij … gxinct 100
… … … … … … … …
TXntx gxntx1 gxntx2 … gxntxj … gxntxnct 100

în care:
ntx – numărul de perioade de timp;
nct – numărul de niveluri ale caracteristicii după care se face
structurarea;
CT – caracteristica după care se realizează structurarea;
TXi – perioada de timp în care grupul ţintă a avut structura gxi1, …,
gxinct;
Nivelj – nivelul j al caracteristicii CT;
gxij – ponderea elementelor grupului ţintă care sunt caracterizate de
nivelul Nivelj al caracteristicii CT în perioada TXi.

Nivel
Se determină amplitudinea absolută, AGRT j , a ponderilor fiecărui nivel
Nivelj al caracteristicii CT cu relaţia:

Nivel Nivel Nivel j


AGRT j = gxmax j − gxmin

unde:
Nivel
gxmax j – ponderea maximă pe care o are numărul de elemente
caracterizate de nivelul Nivelj al caracteristicii de structurare pe
parcursul celor ntx perioade;

127
Grupul ţintă

Nivel
gxmin j – ponderea minimă pe care o are numărul de elemente
caracterizate de nivelul Nivelj al caracteristicii de structurare pe
parcursul celor ntx perioade.

Dacă valoarea amplitudinii absolute a nivelului Nivelj depăşeşte valoarea


de 5 % rezultă că grupul ţintă nu are o structură stabilă, ponderea numărului de
elemente cu nivelul caracteristicii egal cu Nivelj variind semnificativ pe parcursul
perioadelor TX1, …, TXntx.
În caz contrar, se determină dispersia ponderilor structurilor faţă de
valoarea medie.

∑ (gx − gx j )
ntx
2
ij
Nivel j
σ GRT = i =1
ntx

unde:
Nivel j
σ GRT – dispersia ponderilor;
gx j – valoarea medie a ponderii numărului de elemente cu nivelul
caracteristicii CT egal cu Nivelj.

Grupul ţină analizat are o structură stabilă doar în condiţiile în care valorile
Nivel
dispersiilor σ GRT j , cu j = 1…ntx, au valori mici, apropiate de zero.
Odată stabilită stabilitatea structurală a grupului ţintă, se determină
structura grupului pe perioadă următoare cu relaţia:

1 ntx
gx ntx +1, j = ∗ ∑ gx ij
ntx i =1

unde gxntx+1j reprezintă ponderea elementelor grupului ţintă care sunt caracterizate
de nivelul Nivelj al caracteristicii CT pe perioada viitoare TXntx+1.

Proiectarea structurii grupului ţintă pe perioada viitoare se face doar în


condiţiile în care se consideră că factorilor ce determină structura au acţiune
constantă.

128
Metode statistice în analiza software

Corelând valorile ponderilor gxntx+1j cu dimensiunea grupului ţintă estimată


cu modelele de regresie se determină numărul de elemente din fiecare categorie a
caracteristicii CT pentru perioada viitoare.

Analiza site-urilor Web de tipul magazinelor virtuale este precedată de


stabilirea grupului ţintă format din persoane care utilizează în mod frecvent această
facilitate. Persoanele incluse au în comun caracteristici ca:
` au carduri cu care efectuează plăţi electronice;
` au conturi în bancă;
` au acces la Internet;
` au cunoştinţele necesare accesării site-urilor şi efectuării plăţii
electronice.
Scopul analizei este de a evidenţia metode de îmbunătăţire a serviciilor
oferite utilizatorilor. Cum fiecare categorie de vârstă este atrasă de facilităţi
diferite, producătorul trebuie să cunoască structura numărului total de utilizatori în
funcţie de vârstă. Astfel, se creează premisele determinării de eşantioane
reprezentative de utilizatori care să fie chestionate în legătură cu punctele slabe şi
tari ale site-ului.
Pornind de la datele înregistrate până în prezent se construieşte tabelul 3.6.

Structura utilizatorilor magazinului virtual în funcţie de vârsta acestora

Tabel 3.6
Structura grupului ţintă
în funcţie de nivelurile caracteristicii Vârstă
Moment între între între între Total
18-25 ani 26-35 ani 36-50 ani 51-80 ani
(%) (%) (%) (%)
2000 29 38 26 7 100
2001 26 39 29 6 100
2002 27 38 28 7 100
2003 25 40 28 7 100

Amplitudine 4 2 3 1
Dispersie 2,916 0,916 1,58 0,25

129
Grupul ţintă

Cum valorile amplitudinilor sunt mai mici decât valoarea cinci, iar
dispersiile ponderilor sunt apropiate de 0 rezultă că grupul ţintă are o structură
stabilă. Considerând în anul 2004 aceeaşi factori care i-au determinat pe utilizatori
să folosească serviciile magazinului virtual, tabelul 3.7 conţine structura grupului
ţintă în această perioadă.

Structura utilizatorilor magazinului virtual


în funcţie de vârsta acestora pe anul 2004
Tabel 3.7
Structura grupului ţintă
în funcţie de nivelurile caracteristicii Vârstă
Moment între între între între Total
18-25 ani 26-35 ani 36-50 ani 51-80 ani
(%) (%) (%) (%)
2004 26,75 38,75 27,75 6,75 100

Stabilitatea structurală a grupului ţintă este dependentă de particularităţile


domeniului analizat şi de caracteristica după care se face structurarea. Există cazuri
în care stabilitatea structurală a elementelor reprezintă caracteristică constantă a
procesului şi de asemenea situaţii când aceasta variază de la o perioadă la alta, fiind
influenţată de factori economici, sociali sau tehnologici.
Grupuri caracterizate de stabilitate structurală sunt formate din elemente cu
comportament constant. Astfel de elemente sunt:
¾ studenţii unei universităţi; structura numărului de studenţi ai
specializărilor este constantă pe perioade lungi de timp;
¾ rezultatele date de produsul software analizat; produsele program
implementează metode obiective de prelucrare a datelor care parcurg
aceleaşi etape de fiecare dată.

Pentru grupurile ţinte ale căror structură variază de la o perioadă la alta


sunt utilizate previziunile de evoluţie ale domeniului respectiv. Estimaţiile au la
bază:
` strategiile de dezvoltare din domeniul analizat;
` factorii economici şi sociali ce influenţează caracteristica de structurare;
` trendul ponderilor pe perioada anterioară.

130
Metode statistice în analiza software

3.4 Concluzii

Studierea grupului ţintă prin prisma:


” numărului de elemente ale acestuia;
” structura elementelor în funcţie de nivelurile caracteristicilor
considerate ca fiind comune tuturor elementelor grupului ţintă;
” dinamicii dimensiunii şi structurii în funcţie de momente de timp
diferite şi gruparea elementelor după niveluri comune ale
caracteristicilor;
permite clarificarea unor aspecte şi baze de eşantionare.
Orice aplicaţie informatică se adresează utilizatorilor şi nu elaboratorilor ei.
Aplicaţia informatică trebuie să intre în uz curent independent de elaboratori, adică
aceştia asigură service şi nu asistă la activarea curentă, uzuală a opţiunilor.
De aceea trebuie stabilit clar că aplicaţia informatică este sau nu este utilă.
Acest lucru se obţine astfel:
¾ se instalează aplicaţia în kinst puncte de lucru distincte;
¾ vin să o folosească nrut1, nrut2, …,nrutkinst persoane pe structura
grupului ţintă;
¾ se înregistrează simplu dacă o persoană xutilizi din grupul ţintă grti a
soluţionat cu succes sau a abandonat prelucrarea astfel:

1, dacă utilizatorul are satisfacţie în urma prelucrărilor;


xutilij =
0, în caz contrar;

¾ se determină gradul de soluţionare, Gsol, prin relaţia:

kinst nruti

∑ ∑ xutil
i =1 j =1
ij

G sol = kinst

∑ nrut
i =1
i

¾ dacă Gsol < 0,7 aplicaţia nu corespunde obiectivului pentru care a fost
realizată şi se decide dacă este abandonată sau este îmbunătăţită.

131
4
CARACTERISTICILE
DE CALITATE
ALE PRODUSELOR PROGRAM

4.1 Sistemul caracteristicilor de calitate

După cum se arată şi în definiţia dată de standardul ISO, [ISO86],calitatea


software este compusă dintr-un set de caracteristici de calitate CC1, CC2, …, CCkcc.
Acestea se împart în:
” caracteristici tehnice şi de utilizare;
” caracteristici economice;
” caracteristici sociale.
Datorită multiplelor relaţii de interdependenţă, subordonare, ierarhizare,
sau agregare, ansamblul caracteristicilor alcătuiesc un sistem, numit sistemul
caracteristicilor de calitate, Quality Characteristics System, [BARO82].
La baza construirii unui set de indicatori care să permită măsurarea
nivelurilor de calitate pentru diferite produse program, se găsesc caracteristicile
sistemului:
¾ setul de caracteristici permite analiza completă a produsului software;

132
Metode statistice în analiza software

¾ este ierarhizat;
¾ indiferent de complexitatea sa, reprezintă un subsistem al unui sistem de
calitate mai cuprinzător;
¾ caracteristicile sunt ordonate în funcţie de relaţiile de dependenţă;
¾ este organizat sub forma unei structuri arborescente, figura 4.1.

QCS

CC1
CC2

CC3 CC4 CC5 CC6


…………………………………………….

Figura 4.1 Structură ierarhizată a caracteristicilor de calitate

Construirea structurii arborescente implică parcurgerea etapelor:


Ž se consideră lotul de programe Prog1. Prog2, …, Prognprog ce conţine
nprog componente;
Ž se evaluează caracteristicile de calitate CC1, CC2, …,CCncc pentru cele
nprog programe;
Ž se construiesc seriile de valori xcc1, xcc2, …, xccncc având fiecare ncc
termeni, care măsoară nivelul caracteristicilor pentru fiecare program;
datele sunt înregistrate în tabelul 4.1.

Nivelurile măsurate ale setului de caracteristici


Tabel 4.1
Caracteri CC1 … CCj … CCncc
Program
Prog1 xcc11 … xcc1j … xcc1ncc
Prog2 xcc21 … xcc2j … xcc2 ncc
… … … … … …
Progi xcci1 … xccij … xcci ncc
… … … … … …
Prognprog xccnprog1 … xccnprogj … xccnprog ncc
Seria de valori xcc1 … xccj … xcc ncc

133
Caracteristicile de calitate ale produselor program

unde:
nprog – numărul de programe;
ncc – numărul de caracteristici de calitate;
xccj – seria de ncc termeni asociate caracteristicii CCj;
xccij – nivelul caracteristicii CCj, măsurată pentru programul Progj;

Ž se stabilesc dependenţele dintre caracteristicile de calitate r(xj, xl),


determinate de relaţia coeficientului de corelaţie:

nprog nprog nprog


nprog ∑ xccij xccil − ∑ xccij ∑ xcc il
r (xcc j , xccl ) = i =1 i =1 i =1

⎡ ⎞ ⎤⎡ ⎞ ⎤
2 2
2 ⎛ 2 ⎛
nprog nprog nprog nprog
⎢nprog ∑ xccij −⎜ ∑ xccij ⎟ ⎥ ⎢nprog ∑ xccil −⎜ ∑ xccil ⎟ ⎥
⎜ ⎟ ⎜ ⎟
⎢⎣ i =1 ⎝ i =1 ⎠ ⎥⎦ ⎢⎣ i =1 ⎝ i −1 ⎠ ⎥⎦

Ž se ordonează descrescător dependenţele măsurate, r(xccj, xccl);


Ž se alege nivelul cel mai mare al dependenţei şi se obţine nodul rădăcină
al arborelui şi un descendent;
Ž se alege următorul nivel maxim al dependenţei considerată nod rădăcină
şi se obţine nodul următor descendent şi procedeul continuă.
Se consideră caracteristicile de calitate CC1, CC2, CC3, CC4, CC5, CC6. Pentru un
lot de 30 de programe s-au efectuat măsurători şi se obţin dependenţele sub forma
coeficienţilor de corelaţie liniară din tabelul 4.2.

Matricea simetrică a coeficienţilor de corelaţie ai caracteristicilor de calitate

Tabel 4.2
CC1 CC2 CC3 CC4 CC5 CC6
CC1 0,25 0,31 0,40 0,18 0,55
CC2 0,20 0,65 0,28 0,44
CC3 0,80 0,19 0,33
CC4 0,73 0,41
CC5 0,92
CC6

134
Metode statistice în analiza software

Obţinerea structurii arborescente asociate celor şase caracteristici are loc


după parcurgerea etapelor următoare:
” se alege elementul maxim din matricea coeficienţilor de corelaţie,
r(CC5, CC6) = 0,92;
” caracteristica CC5 este considerată rădăcina arborelui binar din
figura 4.2, iar caracteristica CC6 este primul descendent;
” se caută pe coloana caracteristicii C5 următoarea cea mai mare valoare
care corespunde r(CC4, CC5) = 0,73. Caracteristica de calitate CC4 este
următorul nod descendent;

CC5

CC6
CC4

CC1 CC3 CC3

Figura 4.2 Structura arborescentă asociată tabelului 4.2

” se caută valoarea maximă de pe coloana corespunzătoare caracteristicii


CC6, r(CC1,CC6) = 0,55;
” se caută valoarea maximă pentru coloana caracteristicii CC4, r(CC2,
CC4) = 0,65. Se caută efectuarea de asocieri aşa fel încât dependenţele
cele mai mari să stabilească perechile de noduri (descendent, nod
părinte).

Structura sistemului caracteristicilor de calitate se construieşte şi sub forma


unui arbore oarecare. Dacă se iau în considerare ponderi acordate de utilizatori şi
de specialişti în realizarea de produse software, se obţin alte structuri de
dependente a caracteristicilor de calitate.
În [IEEE94] este prezentată structura de dependenţe a caracteristicilor de
calitate:
¾ mentenabilitate;
¾ corectabilitate, reprezintă gradul de efort necesar corectării erorilor şi
atingerea cerinţelor utilizatorilor;

135
Caracteristicile de calitate ale produselor program

¾ modificabilitate, descrie efortul consumat pentru a îmbunătăţi sau


modifica funcţiile produsului program;
¾ testabilitate, măsoară efortul necesar testării produsului software;
¾ dată în figura 4.3.

Mentenabilitate

Corectabilitate Modificabilitate Testabilitate

Figura 4.3. Dependenţe dintre caracteristicile de calitate

La elaborarea unui sistem de programe, utilizatorul, cel care este de fapt


client al producătorului impune o ierarhizare a caracteristicilor de calitate.
Când se stabileşte costul calităţii, cost absolut necesar a fi comunicat
clientului, se ia în considerare ierarhizarea impusă de client, [BARO84].
În contextul definirii sistemului caracteristicilor de calitate şi a stabilirii
unor ponderi a caracteristicilor se creează premisele obţinerii unui indicator agregat
al calităţii dat sub forma:
KCC
I Q = ∑ α cc i ∗ pcc i
i =1

unde:
IQ – indicator agregat al calităţii;
KCC – numărul caracteristicilor de calitate considerate;
α cc i – ponderea asociată caracteristicii de calitate CCi;
pcci – nivelul calculat al caracteristicii de calitate CCi.

Se consideră un număr de 25 de utilizatori Ut1, Ut2, …, Ut25 şi trei


caracteristici de calitate CC1 – fiabilitatea, CC2 – portabilitate, CC3 –
mentenabilitate. Utilizatorul Uti distribuie un număr de 100 de puncte neuniform
celor trei caracteristici şi se obţin ponderile din tabelul 4.3.

136
Metode statistice în analiza software

Ponderile date de utilizatori caracteristicilor de calitate


Tabel 4.3
Utilizator CC1 CC2 CC3 Total
Ut1 60 30 10 100
Ut2 35 34 31 100
Ut3 50 40 10 100
Ut4 90 6 4 100
Ut5 50 30 20 100
Ut6 40 39 21 100
Ut7 60 21 19 100
Ut8 70 20 10 100
Ut9 70 20 10 100
Ut10 60 10 30 100
Ut11 75 20 5 100
Ut12 50 30 20 100
Ut13 41 39 20 100
Ut14 40 35 25 100
Ut15 53 30 17 100
Ut16 70 10 20 100
Ut17 30 60 10 100
Ut18 45 25 30 100
Ut19 50 30 20 100
Ut20 60 30 10 100
Ut21 65 30 5 100
Ut22 70 25 5 100
Ut23 70 20 10 100
Ut24 60 25 15 100
Ut25 75 15 10 100

Total 1439 674 387 2500


Valoare αcci 0,5756 0,2696 0,1548 1

În ipoteza în care pentru caracteristicile de calitate CC1, CC2, CC3 sunt


efectuate evaluări folosind indicatori normaţi cu valori cuprinse în intervalul [0, 1],
indicatorul IQ, este de asemenea normat pe acelaşi interval.

IQ = 0,5756* nivelF + 0,2696* nivelP + 0,1548* nivelM

137
Caracteristicile de calitate ale produselor program

unde:
nivelF – nivelul calculat al fiabilităţii;
nivelP – nivelul calculat pentru portabilităţii;
nivelM – nivelul mentenabilităţii.

Dacă se consideră programul Prog pentru gestiunea contabilă a firmei, cu


nivelF = 0,8, nivelP = 0,4 şi nivelM = 0,7, indicele global al calităţii asociat acestui
program este IQ = 0,71.
Problema obţinerii unui indice agregat al calităţii produselor software este
în continuare deschisă dacă se au în vedere aspectele legate de modul în care se
realizează agregarea. Pentru ca acest indicator să ofere o imagine clară asupra
calităţii sunt necesare evaluări ale ponderilor cu evidenţierea stabilităţii valorilor
obţinute. Dinamica pe care o înregistrează tehnicile de programare, instrumentele
utilizate în dezvoltarea de software modifică importanţa caracteristicilor şi deci şi
coeficienţii de importanţă care stau la baza evaluării indicatorului global al calităţii.
Problematica sistemului caracteristicilor de calitate este esenţială în
dezvoltarea de produse software complexe, destinate pieţei, în contextul în care
firme producătoare trebuie să estimeze profitul ca diferenţă între volumul estimat al
vânzărilor şi cheltuielile de producţie, în care costurile calităţii sunt cu o pondere ce
variază în jur de 40% din totalul cheltuielilor firmei.

4.2 Descrierea caracteristicilor de calitate

Produsele software sunt rezultatul unui proces complex, format din etape
care:
Ž analizează şi proiectează;
Ž urmează scrierii textului sursa, testările, asamblarea de module;
Ž preced intrarea în execuţie.
Acestea alcătuiesc ciclul de dezvoltare, şi se constituie în categoriile:
¾ etapa de proiectare: include iniţierea proiectului de realizare a
produsului software, stabilirea criteriilor de calitate software, stabilirea
metodelor de control şi monitorizare a proiectului, alocarea resurselor şi
realizarea proiectului iniţial;
¾ etapa de dezvoltare: odată cu definirea clară a cerinţelor se realizează
eventual un produs program prototip pe baza căruia se ajunge la
produsul final;

138
Metode statistice în analiza software

¾ etapa de implementare şi testare: cuprinde instalarea produsului într-un


mediu real de lucru, verificarea şi validarea softului, realizarea
documentaţiei.

Programele sunt elaborate pentru a îndeplini funcţii de prelucrare cerute de


utilizatori, fiind dezvoltate utilizând limbaje de programare diverse: limbaj de
asamblare, limbajele Pascal, C/C++, C#, Java.
Programul este un produs pentru că:
` este realizat de o echipa si este folosit de mai mulţi utilizatori,
independent de producători;
` are caracter finit din punct de vedere al resurselor utilizate, al duratei şi
resurselor întrebuinţate de către producător;
` procesul de realizare este separat de utilizarea propriu-zisa;
` reprezintă obiect comercial prin faptul că este vândut şi cumpărat;
` realizarea sa necesită echipamente speciale, parcurgerea unor etape,
consum de resurse şi forţă de muncă calificată;
` are la baza diviziunea muncii; există analişti, proiectanţi, programatori şi
utilizatori sau cumpărători;
` se utilizează tehnici si metode de analiza, proiectare si programare care
garantează obţinerea programului în timp util, la costuri care sa asigure
accesul utilizatorilor;
` însuşirile cu care programele sunt înzestrate sunt evidenţiate în timpul
rulării acestora prin intermediul rezultatelor care se obţin;
` pentru a fi utilizat, trebuie sa fie înzestrate cu caracteristici de calitate la
anumite niveluri;
` are valoare şi valori de întrebuinţare;
` este o marfă cu dimensiune, caracteristici fizice şi de comportament.

Programele sunt produse a căror existenţă fizică este dată de ansamblul


liniilor sursă ce compun codul, de zona de memorie ocupată ca informaţie stocată,
sau de informaţia folosită în execuţia operaţiilor de prelucrare.
Uzura programelor este exclusiv morală, datorată apariţiei de produse noi
care implementează metode mai eficiente sau de noi cerinţe de prelucrare a datelor.
Numărul de execuţii nu influenţează conţinutul sau calitatea programului. În cazul
programelor cu deficienţe de proiectare şi implementare, la execuţie apare procesul
de autodistrugere, manifestat prin blocarea definitivă a aplicaţiei cu pierderea

139
Caracteristicile de calitate ale produselor program

definitivă a informaţiei. Cu toate acestea programul există, putând fi activat din nou,
cu riscul repetării evenimentului.
La definirea solicitării se stabilesc o serie de detalii care vizează:
ƒ însuşirile tehnice ale programului;
ƒ însuşirile economice ale programului;
ƒ însuşirile sociale ale acestuia.
În contextul în care prin calitate se înţelege totalitatea însuşirilor tehnice,
economice si sociale cu care este înzestrat un produs, la proiectarea şi dezvoltarea
de software se urmăreşte înzestrarea cu caracteristici care să determine atingerea
obiectivelor propuse.
Însuşirile economice ale produselor software sunt legate în principal de
capacitatea acestuia de a genera efecte directe asupra reducerii costurilor de
producţie în întreprinderi, în gestiunea resurselor, la reducerea ponderii forţei de
muncă umane în etapele de prelucrare şi interpretare a datelor, respectiv, a
rezultatelor.
Latura economica vizează şi modul de fundamentare a deciziilor, atunci
când sunt luate în considerare soluţii oferite prin implementarea de algoritmi
determinişti sau euristici. Aceştia au capacitatea de selectare a variaţiilor eficiente
dintr-un număr extrem de mare de soluţii considerate realizabile.
Însuşirile tehnice privesc produsul software ca entitate cu comportament
specific bazat pe consumuri de resurse. Produsul este caracterizat prin prisma
structurii, funcţionalităţii şi a instrumentelor cu care este înzestrat. Din aceste
puncte de vedere produsul program este:
` uşor de utilizat, dacă utilizatorul nu necesită un curs prealabil de operare
sau foloseşte foarte rar documentaţia sau ajutorul interactiv;
` uşor de întreţinut, ceea ce înseamnă că duratele de timp necesare
îmbunătăţirii programului prin introducerea de noi facilităţi sau setării
parametrilor de lucru, sunt mici;
` mentenabil; volumul modificărilor în software care să repare
eventualele erori sau sa îmbunătăţească performanţele programului este
redus;
` tolerant la erori şi elimină într-o proporţie ridicată şansele apariţiei
situaţiilor care blochează execuţia aplicaţiei cu sau fără pierderea
datelor;
` cu consum mic de resurse, permiţând instalarea şi rularea produsului pe
o gamă largă de platforme hardware şi software;

140
Metode statistice în analiza software

` cu interfaţă user friendly; performanţele de lucru ale utilizatorul nu sunt


afectate prin modul de aranjare a interfeţei.
Caracteristicile sociale se manifesta prin efectele determinate de program în
colectivităţi largi sau în grupuri restrânse de utilizatori, sau prin rolul avut în
procesul de instruire sau de rezolvarea de cerinţe ale utilizatorilor. Însuşirile
sociale vizează efortul utilizatorilor pentru a se familiariza cu un program, dar şi
măsura în care programul răspunde aşteptărilor.
Problematica esenţiala a produselor software este dată de utilitatea pe care
trebuie s-o aibă în rezolvarea de probleme concrete, de fundamentare a deciziilor.
Programele există numai împreună cu informaţiile de intrare furnizate de
utilizatori. Calitatea programelor în sensul de măsura în care acestea răspund
cerinţelor utilizatorilor, este de cele mai multe ori influenţată de datele de intrare.
Este dificil de separat situaţia când un program nu rulează din cauze interne lui, de
cea când rularea este întrerupta datorită datelor de intrare. De cele mai multe ori,
utilizatorul asociază eşecul execuţiei cu incapacitatea producătorului de a-i oferi un
produs bun. De aceea, doar definirea detaliată a contextului, creează condiţiile
pentru a realiza astfel de delimitări.
Din punct de vedere al producătorului calitatea software este un obiectiv.
Din punct de vedere al utilizatorului calitatea este forma concreta de manifestare a
produsului software. Producătorul stabileşte şi ierarhizează caracteristicile de
calitate, ce definesc programele ca produse software:
” independent de utilizatori: modularitate, mentenabilitate,
structurabilitate, testabilitate;
” în funcţie de nevoile acestora: fiabilitate, toleranta la erori, generalitate,
utilizabilitate.

Nivelurile stabilite ca obiectiv pentru caracteristicile de calitate urmărite,


sunt rezultatul unui proces interactiv în care intervin:
Š resursele umane si tehnice disponibile ale echipei de dezvoltare
software;
Š cerinţele utilizatorilor;
Š resursele financiare pe care utilizatorul le alocă dezvoltării software;
Š limitările tehnice impuse de generaţiile software si hardware la un
moment dat;
Š restricţiile de personal ale utilizatorilor.

141
Caracteristicile de calitate ale produselor program

De cele mai multe ori, aplicaţiile la nivelul companiilor impun lucrul în


timp real pentru a permite fundamentarea de decizii. Prelucrarea în timp real
presupune eliminarea decalajului dintre momentul producerii unui eveniment şi
momentul reflectării sale în baza de date. Atingerea acestui obiectiv impune:
™ instruirea personalului din toate compartimentele şi de pe toate nivelurile
ierarhice şi de execuţie în utilizarea tehnicii cu ajutorul căreia se
introduce datele;
™ definirea de chei de control care să permită gestionarea procesului de
actualizare a bazei de date pentru aplicaţia considerata;
™ crearea unui sistem de protecţie a bazei de date, prin definirea nivelurilor
de acces; la nivelul de execuţie al întreprinderii, accesul vizează exclusiv
introducerea de date privind executantul, operaţia executată şi reperul,
subansamblul sau produsul obţinut, momentul la care s-a desfăşurat
evenimentul şi durata acestuia;
™ automatizarea operaţiilor de introducere a datelor;
™ asigurarea funcţionării fără incidente de prelucrare datorate
echipamentelor utilizate; nu trebuie să apară discontinuităţi majore în
procesul de actualizare.

Calitatea software este un concept complex, iar perfecţionarea sa are la


baza comunicarea permanentă între producătorul de software şi utilizatori, chiar
dacă produsul program este proiectat sa funcţioneze independent de producător.
În contextul existentei unei canal de comunicaţie, sugestiile şi reclamaţiile
utilizatorilor sunt sursele sigure pentru reproiectarea produselor program şi pentru
dezvoltarea de noi versiuni. Acestea elimină dezavantajele semnalate sau introduce
noi opţiuni de prelucrare.
În fiecare dintre etape descrise se urmăreşte obţinerea caracteristicilor de
calitate la niveluri cât mai apropiate de cele planificate.

Factorii de calitate avuţi în vedere sunt:


¾ eficienţă:
` economia de timp: capacitatea produsului de prelucra datele şi a
oferi rezultatele în intervale optime de timp;
` economia de resurse: capacitatea softului de a oferi situaţii finale
utilizând resurse software şi hardware limitate, însă având în vedere
ca raportul calitate rezultate/cost să fie optim.

142
Metode statistice în analiza software

¾ funcţionalitate:
` completitudine: se referă la gradul în care produsul program
cuprinde funcţiile necesare şi suficiente pentru a satisface cerinţele
utilizatorului;
` corectitudine: precizează gradul în care rezultatele sunt cât mai
apropiate de cele reale;
` securitate: calitatea de a asigura securitatea datelor împotriva
pierderilor de date şi a accesului neautorizat;
` compatibilitate: gradul în care produsul este implementat fără a
modifica major programele software deja existente;
` interoperabilitate: se referă la capacitatea de a comunica cu alte
produse software.
¾ mentenabilitate
` corectare: se referă la efortul depus pentru a corecta erorile
software, precum şi pentru a îndeplini cerinţele utilizatorului;
` dezvoltare: necesarul de resurse pentru a îmbunătăţi produsul.
¾ portabilitate
` independenţa hardware: gradul în care aplicaţia nu depinde de
anumite medii hardware;
` independenţa software: gradul în care aplicaţia nu depinde de medii
software specifice, de exemplu sisteme de operare;
` reutilizare: gradul în care softul este reutilizat în produse diferite de
cel iniţial.
¾ fiabilitatea
` toleranţa erorilor: gradul în care produsul continuă să opereze în
ciuda erorilor fără a afecta utilizatorul;
` disponibilitatea: gradul în care produsul este operaţional având în
vedere defectarea sistemului hardware sau software.
¾ utilizabilitate
` uşurinţa utilizării: reprezintă efortul depus de utilizator pentru a
înţelege şi utiliza produsul.

Portabilitatea software

Pe de o parte există programul care permite rezolvarea unei probleme şi pe


de altă parte există utilizatorul care are configuraţia sa de calcul şi structura sa
pentru baza de date.

143
Caracteristicile de calitate ale produselor program

Se consideră un program P livrat în formă executabilă. Portabilitatea este


acea caracteristică de calitate care asigură lansarea în execuţie a programul P fie
direct, fie după ce s-a realizat instalarea sa prin modificarea la nivelul acceptării a
particularităţilor hardware şi de structură a bazei de date, în vederea activării
secvenţelor care sunt definite în concordanţă cu restricţiile specifice fiecărui
utilizator.
Programele livrate în formă executabilă care nu sunt proiectate pentru a fi
executate în diferite condiţii cu specificarea acestora de către utilizator, de regulă
nu sunt portabile. Totuşi, pentru a le face portabile are loc un proces de emulare a
calculatorului pentru care au fost proiectate.
Gradul de portabilitate G utiliz
p în raport cu utilizatorii Ut1, Ut2, …, Utnut a
programului Prog este dat prin relaţia:

nut

∑ (Telab i − Tmodif i )
G utiliz
p = i =1
nut

∑ Telab
i =1
i

unde:
nut – numărul de utilizatori, Uti;
Uti – utilizatorul programului;
Telabi – timpul necesar elaborării programului pentru a satisface
cerinţele utilizatorului Uti;
Tmodifi – timpul necesar elaborării de modificări pentru a face programul
existent portabil pentru utilizatorul Uti.

Programul Prog este n – portabil dacă Tmodifi e mult mai mic decât Telabi
pentru oricare ar fi i =1, 2, …, nut. În cazul în care programul Prog este livrat sub
formă de text sursă, utilizatorul are obligaţia realizării tuturor etapelor necesare
obţinerii formei executabile. Programul P are lungimea LI data ca număr de
instrucţiuni. Pentru asigurarea portabilităţii programatorul efectuează următoarele
operaţii:
™ adaugă LA instrucţiuni;
™ modifică LM instrucţiuni;
™ elimină LE instrucţiuni.

144
Metode statistice în analiza software

Gradul de portabilitate este dat de relaţia:

LI − (LA + LM + LE )
G instr
p =
LI

Un program este proiectat să fie portabil dacă se doreşte obţinerea unei arii
foarte mari de utilizare.
Portabilitatea ia în considerare multitudinea de parametrii care definesc
configuraţia unui calculator sau a unei reţele de calculatoare. Dacă nu se creează
componenta de instalare, se impune separarea componentelor vulnerabile în raport
cu variabilitatea parametrilor aşa fel încât problematica propagării de modificări
cerute de portabilitate să fie la un nivel cât mai scăzut.
În condiţiile actuale, când circulă pe Internet numeroase componente
software, problematica portabilităţii este deplasată spre identificarea acelor
componente care să fie adăugate programului în cauză, aşa fel încât toate
obstacolele să fie eliminate. Dacă programul este dat sub forma fişierului
executabil de lungime LP, iar programele care sunt identificate pentru a fi utilizate
au lungime LX, gradul de portabilitate G pfis este dat de relaţia:

LP − LX
G pfis =
LP

De exemplu, produsul program SalSal destinat calculării salariului


angajaţilor unei firme a suferit numeroase modificări pentru a corespunde
cerinţelor utilizatorilor şi a platformelor hardware şi software pe care este instalat
din mai multe unităţi comerciale în care este implementat:
Š programul are în forma iniţială LI = 6450 de linii sursă şi un fişier
executabil de LP = 24 MB;
Š se modifică trei proceduri ale programului iniţial pentru a corespunde
noilor cerinţe ale utilizatorului; acestea totalizează LA1 = 175 linii sursă
noi adăugate, LM1 = 23 linii sursă modificate şi LE1 = 32 linii sursă
eliminate şi au necesitat un timp de modificare de Tmodif1 = 83 de minute,
iar timpul de elaborare iniţial este de Telab2 = 240 de minute;
Š se introduc două noi proceduri prin adăugarea de LA2 = 143 linii sursă;
modificările codului existent pentru a face legătura cu noile proceduri
au însemnat LE2 = 12 linii sursă şterse, LM = 10 linii sursă modificate şi

145
Caracteristicile de calitate ale produselor program

s-au efectuat în Tmodif2 = 110 minute; se are în vedere că timpul de


elaborare a instrucţiunilor modificate a fost de Telab12 = 168 minute;
Š modificările suferite de produsul program sunt transmise utilizatorilor
sub forma unui fişier de update de dimensiune LX = 4 MB.

Pe baza acestor date, se obţin gradele de portabilitate:

(240 − 83) + (168 − 110)


G utiliz
p = = 0,52
240 + 168

6450 − (175 + 23 + 32 + 143 + 12 + 10 )


G instr
p = = 0,93
6450

24 − 4
G pfis = = 0,83
24

Se observă că valoarea gradului de portabilitate este dependentă de


modalitatea de determinare.
Dacă la un moment dat portabilitatea este strict dependentă de resurse
precum compilatoare, capacitate hard disk, capacitate memorie internă, viteză de
calcul, tip calculator, în timp aceste restricţii au fost eliminate. Eliminarea de pe
piaţă a calculatoarelor necompatibile IBM, dezvoltarea unor sisteme de operare
dominante, WINDOWS NT, LINUX şi apariţia unor procesoare care din start
asigură compatibilitatea IBM au creat condiţiile necesare şi suficiente pentru
portabilitatea software.
Mai mult, schimbarea concepţiei de dezvoltare software, în ideea de a
acoperi o arie foarte diversă de utilizatori a condus la modificarea de structurare a
software destinat pieţei.
Se adoptă ideea utilizării procesului de customizare la cerere şi
transmiterea spre utilizator a produsului absolut portabil.
În cele mai multe situaţii, pentru a se elimina legătura dintre producătorul
de software şi utilizator se construieşte o componentă program care se încarcă de
orice configuraţie, numită şi configuraţie minimală. Această componentă este
lansată în execuţie şi are loc iniţializarea produsului software propriu zis prin
specificarea restricţiilor sau a opţiunilor utilizatorului. Personalizarea produsului
software se face chiar de utilizator.

146
Metode statistice în analiza software

Portabilitatea produsului software în raport cu datele de intrare devină


efectivă dacă şi numai dacă proiectantul a prevăzut o diversitate de modalităţi, de
terminare şi mai ales dacă a prevăzut portabilitatea de definire a lungimii
articolelor şi a poziţiei câmpurilor, a tipurilor şi lungimilor acestora.
În acest fel, produsul software are acces la orice bază de date cu condiţia ca
aceasta să conţină toate datele necesare produsului indiferent de modul în care sunt
distribuite pe suport şi indiferent de forma de reprezentare.
Portabilitatea în acest fel este deplasată la nivelul proiectantului de produse
software, ne mai fiind înţeleasă ca o caracteristică manifestată la utilizator prin
modificări asupra textului sursă. Este cunoscută nonportabilitatea generată de
modalităţile de linearizare a masivelor bidimensionale. Au existat companii care şi-
au construit compilatoare cu linearizare pe linie, în timp ce altele au efectuat
linearizarea pe coloane pentru maşinile bidimensionale. Transferul dierct de
software dintr-o direcţie spre cealaltă prin intermediul bazelor de date care
stochează date intermediare este deja imposibil, iar cuplarea de module obiect,
realizate în două unităţi producătoare era posibilă numai prin crearea de interfeţe
care să sigure compatibilitatea liniarizării.
În momentul de faţă, toţi producătorii de software proiectează programe
portabile. Cei care elaborează software local, fie au o piaţă sigură fie nu au definite
strategii de dezvoltare compatibile cu dezvoltarea pieţelor de software.

Mentenabilitatea software

Mentenanţa este un proces specific produselor software destinate să


funcţioneze pe un interval lung de timp, aceasta însemnând mai mult de trei ani. În
timp, datorită evoluţiei proceselor tehnologice, modificărilor în legislaţie
modificărilor structurale ale colectivităţilor, se impune adoptarea produselor
software aşa fel încât acestea să răspundă cerinţelor reale ale utilizatorilor.
Modificări ale algoritmilor presupun intervenţii în modulele unde sunt
evaluate expresii sau sunt efectuate selecţii ale elementelor. Pentru a elabora
software mentenabil estre necesar să se definească suficient de clar modulele.
Astfel modulele vulnerabil a fi modificate trebuie astfel definite şi astfel plasate
încât să nu afecteze alte module prin modificările care se operează asupra lor.
Modificări in date de intrare presupun creşterea volumului de date care fac
obiectul prelucrării, introducerea de noi variabile pentru descrierea elementelor
colectivităţii sau schimbarea modului de reprezentare. În toate cazurile sunt
necesare modificări în module pentru a menţine performanţa la nivelul unei

147
Caracteristicile de calitate ale produselor program

tranzacţii şi pentru a prelucra noile date. Programul este mentenabil în măsura în


care acceptă modificările în date prin procese similare. Adică, la adăugarea de
câmpuri se adaugă module de prelucrare. la adăugarea de articole se adaugă
module de realizare acces rapid. La eliminarea de câmpuri se elimină module de
prelucrare sau se dezactivează module.
Modificări la nivel hardware presupun regândirea produsului aşa fel încât
să fie acceptate modificările hardware. Profunzimea acestor modificări este de cele
mai multe ori atât de mare încât este preferabil să se achiziţioneze un nou produs.
În condiţiile în care există o abundenţă foarte mare a software care circulă liber,
problema mentenabilităţii are o altă conotaţie. Existenţa de produse foarte ieftine
care circulă pe dischete sau Cd-uri face ca utilizatorii să-şi modifice poziţia faţă de
achiziţionarea de software nementenabil, excluzând-l din start. Mai mult,
utilizatorul are în vedere dinamica structurală a produselor pentru care dezvoltă
aplicaţii informatice şi-şi dezvoltă condiţiile pentru a trece la perioade foarte scurte
de la un produs software la altul, fiecare dezvoltat după altă concepţie, cu alte
structuri hardware.
Problema mentenabilităţii se deplasează în acest caz spre date, în sensul
stocării de volum variate care să poată fi prelucrate de orice produs.
Mentenanţa la nivelul rezultatelor este privită ca necesitatea obţinerii de
rezultate exact în forma şi de calitatea cerută de utilizator. Producătorii de software
au obligaţia de a ţine seama de structurile de rezultate necesare utilizatorilor.
Produsele software se vor proiecta astfel încât prin opţiuni specifice să ofere
utilizatorilor posibilitatea de a modifica structurile de rezultate. Pentru asigurarea
mentenabilităţii se vor lua în considerare o serie de măsuri dintre care, cele mai
importante sunt:
” definirea de rezerve pe suport pentru fiecare articol, pentru a aloca noi
câmpuri pe măsură ce se impune dezvoltarea bazei informaţionale de
descriere a proceselor sau elementelor unei colectivităţi;
” construirea de expresii modificate care prin valori ale unor coeficienţi să
permită includerea sau excluderea unor factori; de exemplu, dacă
programul iniţial evaluează expresia:

expr = a + b + c + d;

148
Metode statistice în analiza software

şi dacă această expresie este vulnerabilă a fi modificată fie prin efectuarea


de scăderi fie prin eliminarea unor termeni, se implementează forma:

4
expr = ∑ α i * xi
i =1

unde:
x1 – este pus în corespondenţă cu a;
x2 – este pus în corespondenţă cu b;
x3 – este pus în corespondenţă cu c;
x4 – este pus în corespondenţă cu d.

Pentru:
α1 = α2 = α3 = α4 = 1 rezultă e = a + b + c + d.
α1 = 1, α2 = -1, α3 = 1, α4 = -1 rezultă e = a - b + c - d.
α1 = 1, α2 = 0, α3 = 0, α4 = -1 rezultă e = a - d.

” introducerea de elemente care asigură variabilitate în efectuarea de


selecţii; astfel funcţia:

g1(x), dacă x ε [a1, b1];


g2(x), dacă x ε [a2, b2];
f(x) =
………………………
gn(x), dacă x ε [an, bn];

presupune utilizarea unui masiv unidimensional cu n+1 componente, a1,


a2 , …, an+1 se implementează prin definirea numărului de intervale n,
prin alocarea de memorie pentru cele n+1 componente ale masivului
unidimensional a[] şi prin definirea expresiilor analitice ale celor n
funcţii gi(x), i = 1, 2, …, n; toate ca date de intrare; programul
mentenabil este înzestrat cu interpreter care precizează expresiile
analitice ale funcţiilor gi(x) şi le evaluează.

Mentenabilitatea în raport cu evoluţiile hardware este posibilă în faza de


proiectare prin includerea de elemente care să accepte modificările care vor apare.
De regulă, noile generaţii de calculatoare acceptă produse realizate pentru

149
Caracteristicile de calitate ale produselor program

generaţiile precedente. Dezavantajele apar din imposibilitatea de a folosi facilităţile


de care noile calculatoare dispun.
De exemplu, un produs dezvoltat pentru un calculator la care calculele în
virgulă mobilă erau emulate prin folosirea de proceduri nu va folosi facilităţile
coprocesorului.
De asemenea, dezvoltarea spre multimedia presupune creşterea capacităţii
produselor software de a opera cu imagine şi cu sunet. Ataşarea de componente
care permit operaţii de intrare/ieşire multimedia compatibile reprezintă un element
foarte important în aria de manifestare a mentenabilităţii.
Mentenabilitatea se măsoară cu indicatorul Iment:

Tmodif
I ment =
Tdezv

unde:
Tmodif – timpul necesar efectuării modificărilor în produsul software
pentru a-l menţine în uz curent;
Tdezv – timpul necesar dezvoltării produsului (analiză, proiectare,
codificare, testare, implementare).

Experienţa arată că dacă 0,6 > Iment > 0,4 se impune luarea deciziei de
înlocuire în viitorul apropiat a produsului întrucât cerinţele viitoare de mentenanţă
vor presupune costuri foarte ridicate.
Dacă în mod constant Iment > 1 înseamnă că produsul nu a fost proiectat
pentru a face faţă unor cerinţe noi. În condiţiile actuale evaluarea mentenanţei pe
text sursă nu se dovedeşte elocventă datorită modalităţilor variate de asigurare a
mentenanţei, inclusiv prin construirea de translatoare care au rolul de a modifica
textele sursă, aducându-le la cerinţele noi impuse de utilizator.
Produsele software dezvoltate după tehnicile pe componente au procese de
mentenanţă reală, cu efort minim de realizare.

Reutilizabilitatea software

Programarea orientată obiect este rezultatul direct al necesităţii elaborării


de software reutilizabil. Încapsularea, proprietate esenţială a obiectelor vizează
izolarea într-un întreg de sine stătător a operanzilor şi a operatorilor (metode).
Când se defineşte obiectul se are în vedere luarea în considerare a tuturor
150
Metode statistice în analiza software

elementelor încât să se asigure o prelucrare completă. Operanzii şi operatorii


acoperă o arie suficient de mare şi prin garanţiile de corectitudine a calculelor şi de
generalitate sunt preluaţi ca atare.
Dacă bibliotecile de programe presupuneau existenţă procedurilor (metode)
operanzii fiind lăsaţi la latitudinea utilizatorilor atât ca definire, cât şi ca
iniţializare, obiectele exclud aportul utilizatorilor mai ales în a produce erori de
definire operanzi şi de iniţializare a acestora.
Este posibilă definirea şi utilizarea de obiecte numai atunci când în
limbajele de programare sunt implementate mecanisme specifice alocării dinamice
şi tratării diferenţiate a operanzilor şi operatorilor prin adăugarea de proprietăţi
privind accesul, referirea şi domeniile.
Moştenirea este forma cea mai clară de reutilizare software la nivelul
dezvoltării de aplicaţii. Moştenirea creează posibilitatea ca la ceea ce există să se
poată adăuga noi proprietăţi, prin construirea de clase derivate.
Polimorfismul asigură independenţa de lucru a programatorilor fără a mai
apare restricţii suplimentare asupra modului de a defini funcţii diferite ca structură
care realizează însă aceeaşi tipologie de prelucrare (scriere, calcul, sortare, desen).
Reutilizarea de software este posibilă dacă la proiectarea modulelor se
asigură generalitatea şi corectitudinea prelucrărilor.
Reutilizabilitatea asigură reducerea consumului de muncă vie şi conduce la
scurtarea duratei necesare realizării unui produs software. În primul rând, cei care
dezvoltă software trebuie să cunoască exact ceea ce există, ce modul sunt
disponibile, modul de utilizare şi măsura în care acestea sunt preluate sau sunt
disponibile.
Condiţiile de reutilizabilitate software sunt:
Š componentele să realizeze integral funcţia de prelucrare cerută;
Š nivelul calitativ al componentei reutilizabile trebuie să fie superior sau
cel puţin egal cu cel al produsului care se doreşte a fi realizat;
Š concordanţă între structurile de date cu care operează produsul care se
construieşte şi structurile de date ale componentei reutilizate, atât în
ceea ce priveşte intrările cât şi ieşirile acesteia;
Š disponibilitatea componentei prin preluarea de la un alt produs software
al firmei sau prin achiziţionarea la un preţ convenabil;
Š omogenitatea din punct de vedere al cerinţelor hardware şi software în
raport cu produsul care se dezvoltă şi care solicită reutilizarea.

151
Caracteristicile de calitate ale produselor program

Reutilizarea software devine operaţională vând componentele disponibile


îndeplinesc toate condiţiile şi îl conving pe programator asupra utilităţilor în
activarea sa.
Problema reutilizării este cu atât mai importantă cu cât firme producătoare
de software de bază au dezvoltat biblioteci de clase care prin preluare reduc cu
60% - 80% efortul de programare. Este posibil ca în acest fel să se demareze
realizarea de software cu grad de complexitate foarte mare chiar în cadrul unor
firme producătoare de software cu personal ce nu depăşeşte 15 persoane dar care
au o dotare şi o calificare la nivel foarte înalt. Problema reutilizabilităţii apare în
primul rând în zona dezvoltării interfeţelor.
În realizarea interfeţelor sunt predominante elementele de grafică şi de
căutare- regăsire a informaţiei. Toate acestea presupun definire de amplasări ale
textelor şi de constituire a părţilor de text care determină acţiuni sau selecţii de
operaţii.
Latura cantitativă este dominantă, motiv pentru care se impune definirea de
clase orientate spre dezvoltarea de interfeţe. De asemenea, se dezvoltă interfeţe
pentru definirea de tabele şi de prelucrare a datelor din tabele.
Problematica reutilizării intervine cu deosebire atunci când în produse
software noi trebuie incluse conversii, compresii, sortări, optimizări ca operaţii ce
reprezintă o pondere extrem de redusă în volumul prelucrărilor, dar care din punct
de vedere al efortului de programare reprezintă consumuri semnificative.
Gradul de reutilizabilitate GR este dat de relaţia:

LR
GR =
LT

unde:
LR – lungimea ca număr de instrucţiuni sau Kbytes a componentelor
reutilizate, incluse în produsul software considerat;
LT – lungimea totală ca număr de instrucţiuni sau Kbytes a produsului
software în care au fost reutilizate componentele.

De exemplu, programul CompSoft implementează operaţii pe matrice


necesare comparării nivelurilor caracteristicilor a unui număr definit de utilizator
de produse program. o serie de 15 proceduri însumând LR = 362 de instrucţiuni au
fost reutilizate prin preluarea acestora dintr-o bibliotecă de funcţii şi proceduri de

152
Metode statistice în analiza software

calcul cu matrice. Cum codul sursă al programului CompSoft conţine LT = 1150 de


instrucţiuni, gradul de reutilizabilitate este:

362
GR = = 0,31
1150

Când se analizează un program este necesar să se identifice:


LT – lungimea programului;
LR – lungimea componentelor efectiv reutilizate;
LRmax – lungimea maximă a componentelor care ar fi putut fi reutilizate.

În acest context se calculează gradul risipei de muncă vie inclusă în


produsul software, GS, dat de relaţia:

LRmax − LR
GS =
LT

De regulă, atunci când este apreciat un program se evaluează indicatorul


GS pentru a aduce la nivelul real costul acestuia. Risipa de muncă vie este
rezultatul necunoaşterii existenţei de componente software, aspect care nu se
impută utilizatorului, ci producătorului de software.

Modularitatea programelor

La proiectarea software se identifică operaţii de prelucrare de prelucrare


care se grupează obţinându-se module cu grad de omogenitate ridicat.
Astfel, se construiesc module care asigură efectuarea operaţiilor de
intrare/ieşire. Se definesc module pentru validarea datelor, pentru efectuarea de
conversii, pentru efectuarea de sortări, de interclasări, de calcul.
Un modul se caracterizează printr-un set de date de intrare şi printr-un set
de rezultate. Este preferabil ca în interiorul modului să nu se efectueze modificări
asupra datelor de intrare. De asemenea, este de dorit ca volumul rezultatelor finale
ale modului să fie într-un număr cât mai restrâns cu putinţă.
Modularitatea este caracteristica de calitate care evidenţiază măsura în care
proiectantul a identificat funcţiile de prelucrare omogene şi le-a legat între ele.
Această caracteristică oferă programului controlul asupra redundanţei intrinseci.

153
Caracteristicile de calitate ale produselor program

Modulele sunt înzestrate cu un grad de generalitate suficient de mare aşa


fel să fie reutilizate atât în cadrul programului cat mai ales în alte programe
contribuind la realizarea economiei de muncă vie, ore de programare care s-ar irosi
prin nereutilizabilitate.

Pentru calculul indicatorilor:

n n n n n

∑x i ∑x *y i i ∑x *y i i ∑x * y ∑w * y
i i i i
I1 = i =1
, I2 = i =1
n
, I3 = i =1
n
, I4 = i =1
n
÷ i =1
n
n
∑x
i =1
i ∑x *z
i =1
i i ∑x *z ∑w *z
i =1
i i
i =1
i i

xi − xmin n
µi = , S = ∑ ( poz ( xi ) − poz _ ord ( xi ))
2

xmax − xmin i =1

Se identifică următoarele module:

M1 – modul pentru însumare elemente masiv unidimensional;


M2 – modul pentru obţinerea masivului produs ti = xi*yi cu i = 1, …, n;
M3 – modul pentru aflare element minim;
M4 – modul pentru aflare element maxim;
M5 – modul pentru ordonare elemente masiv unidimensional cu reţinerea
poziţiei iniţiale;
M6 – modul pentru obţinerea masivului diferenţă ti = xi – yi cu i = 1, …, n;
M7 – modul pentru iniţializarea unui şir cu o valoare dată;
M8 – modul pentru obţinerea masivului cât, ti = xi/yi cu i = 1, …, n;
M9 – împărţire două numere şi afişare cât.

154
Metode statistice în analiza software

Structura modulară a aplicaţiei pentru calculul indicatorilor este dată în


figura 4.4.

Modul rădăcină

I1 I2 I3 I4

M1 M9 M2 M1 M9 M2 M2 M9 M2 M2 M9 M2 M2 M9 M9

M1 M1 M1 M1 M1 M1 M1

Modul rădăcină

I3 ui

M5 M6 M2 M1 M9 M3 M4 M7 M7 M6 M8

Figura 4.4 Structura modulară a aplicaţiei

Se observă că utilizarea modulelor determină o specializare a


programatorilor cu efecte pozitive asupra conceperii de componente reutilizabile
prin gradul lor mare de generalitate.
Mai mult, cei care dezvoltă module realizează activităţile în paralel şi nu
este necesar să aibă viziunea asupra întregii lucrări.
În cazul în care modulul este corect definit sunt prezentate toate datele de
test şi situaţiile critice, precum şi modul în care modulul trebuie să se comporte,
programatorul lucrează independent şi valorifică mai bine potenţialul său
productiv, marcând realizarea modulului aflat sarcina sa precum şi verificarea
calităţii acestuia. Programarea modulară permite scurtarea duratei de realizare a
produselor prin creşterea paralelismului în realizarea modulelor şi de asemenea
permite individualizarea mai accentuată a programatorilor. Prin crearea de module
ale căror caracteristici de calitate se controlează cu uşurinţă, managerul proiectului
gestionează din aproape în aproape calitatea proiectului.

155
Caracteristicile de calitate ale produselor program

În cazul în care se identifică module care operează pe acelaşi structuri de


date se creează mai întâi nucleele obiectelor, iar în timp prin adăugarea de noi
module, se efectuează o completare a obiectului până se ajunge la definirea
riguroasă a cestuia.
Modularitatea se măsoară prin indicatorul IM, dat de relaţia:

nmodule
IM =
mmodule
unde:
nmodule – numărul de modele diferite existente în program;
mmodule – numărul total de module folosite în program.

Pentru exemplul considerat în figura 4.4, nmodule = 7 + 9, mmodule = 40, iar


valoarea indicatorului este:
16
IM = = 0,4
40

Problema omogenităţii modulelor revine la gruparea operaţiilor în aşa fel


încât acestea să nu fie dispersate în tot programul. Astfel, operaţiile de intrare/ieşire
se vor grupa într-un modul sau în module distincte, respectiv, pentru intrări şi ieşiri.
Operaţiei de sortare, operaţiilor de calcul de asemenea se grupează. În acest fel se
creează premisa unei bune organizări a lucrului, unei bune gestionări a rezultatelor
intermediare.
Uneori, gruparea după criteriul omogenităţii funcţiei de prelucrare, vine în
contradicţie cu optimalitatea în raport cu volumul operaţiilor de prelucrare. În
contextul vitezei foarte mari de calcul, creşterea cu 10% - 20% a volumului de
prelucrări devine nesemnificativă în raport cu efectele pe care le generează
modularitatea.

Fiabilitatea software

Fiabilitatea software este o caracteristică de calitate importantă pentru că:


` de ea depinde numărul rulărilor în care se obţin rezultate complete şi
corecte;
` permite abordări particulare în elaborarea modelelor de estimare cu
luarea în considerare a faptului că produsele software nu au uzură fizică

156
Metode statistice în analiza software

şi că odată cu eliminarea cauzelor care generează întreruperea execuţiei


e posibilă obţinerea creşterii fiabilităţii;
` nivelul acestei caracteristici determină întreaga abordare în realizarea
unui produs software şi antrenează consumuri şi costuri ce depind strict
de modalităţile concrete luate în considerare pentru creşterea nivelului
fiabilităţii uneia sau alteia dintre componentele produsului.

Fiabilitatea Fiab a uni program se măsoară prin indicatorul:

rsucces
I Fiab =
rtotal

unde:
rsucces – numărul rulărilor de succes ale programului, în care s-au obţinut
rezultate complete şi corecte;
rtotal – numărul total al rulărilor programului considerat.

În timp au fost elaborate numeroase modele pentru studierea fiabilităţii


software pornind de la modulele existente din energetică în general şi din
energetică nucleară în special.
Se consideră un program Prog multiplicat în ncop copii, destinat lucrului la
utilizatorii Ut1, Ut2, …, Utnut. Utilizatorul Uti lansează în execuţie programul Prog
de muti ori într-un interval de timp ∆Tut comun tuturor utilizatorilor. Pentru
intervalul ∆Tut se înregistrează momentele de lansare în execuţie, erorile
înregistrate. Utilizatorul Uti lansează în programul Prog în execuţie la momentele
tuti1, tuti2, …, tutimi. Se consideră perechile (tutij, erj) unde erj =1 dacă rularea s-a
efectuat cu succes, respectiv erj = 0 dacă s-a înregistrat eroare în prelucrare şi
rezultatele sunt incorecte sau s-a întrerupt execuţia. Prin colectarea datelor de la cei
nut utilizatori ai programului Prog se stabilesc parametrii modelelor, estimându-se:
¾ durata medie dintre două execuţii eronate, căderi, ale programului Prog;
¾ durata medie de funcţionare corectă a programului;
¾ parametrii legilor de repartiţie ai procesului aleatoriu asociat utilizării
programului.

În realitate, odată cu semnalarea erorilor, programul Prog nu este înlocuit


cu alt program Prog identic, asemenea unui bec, ci are loc efectuarea de corecţii
(modificări de instrucţiuni, inserarea de noi instrucţiuni, eliminarea de instrucţiuni).
157
Caracteristicile de calitate ale produselor program

În acest fel se obţine programul modificat Prog’. Astfel, dacă fiecare utilizator
primeşte noua variantă, procesul fiabilităţii este studiat în continuare pe versiunea
Prog’. Modificările programului continuă pe toată durata, obţinându-se versiunile
Prog(2), Prog(3), …, Prog(k) la finalul perioadei ∆Tut.
Modelele de fiabilitate ale utilajelor sau a elementelor de iluminat sunt
dezvoltate în ipoteza menţinerii nemodificate a structurii acestora, ceea ce în cazul
produselor software nu este posibil.
În acest context este necesară abordarea fiabilităţii evolutive în condiţiile
modificării produsului program Prog cu trecerea prin versiunile Prog(2), Prog(3), …,
Prog(k).
Se ia în considerare variaţia de complexitate software.
Fie un program Prog, având nivelul de complexitate Cplx(Prog).
Pentru trecerea la programul Prog(1) are loc eliminarea secvenţei Se de
instrucţiuni, modificarea secvenţei Sm de instrucţiuni, inserarea secvenţei Sa de
instrucţiuni.
Variaţia de complexitate ∆Cplx, este dată de relaţia:

∆Cplx = Cplx(Se) + Cplx(Sm) + Cplx(Sa).

Trecerea de la versiunea Prog(1) la versiunea Prog(2) necesită o variaţie de


complexitate ∆Cplx12.
Per total, trecerea de la programul iniţial Prog la versiunea Prog(k) necesită
o variaţie a complexităţii, dată de relaţia:

∆Cplxok = ∆Cplx01 + ∆Cplx12 + ∆Cplx23 + … + ∆Cplxk-1k.

Modelul de fiabilitate include variaţia de complexitate pentru a reflecta


dinamica programului la fiecare moment, întrucât de la semnalarea unei erori are
loc corectarea ei. Evoluţia procesului de producere a erorilor de prelucrare este
marcată de calitatea corectării, de modul în care s-a identificat cauza şi de aria de
cuprindere a elementelor de din program implicate în depistarea cauzei.
Pentru fiabilitatea software este dedicată o bogată literatură cu descriere de
modele, lucrarea de faţă fiind orientată pe utilizarea de metode statistice,
accentuează pregătirea seriilor de date necesare unora dintre modelele de fiabilitate
software.

158
Metode statistice în analiza software

4.3 Modele de sisteme de caracteristici de calitate

Modelele cunoscute ale sistemelor de calitate software sunt rezultatul


direct al experienţei analiştilor în elaborarea de analize calitative asupra unui
număr semnificativ de produse program.
Modelele sunt structurate pe cel puţin două niveluri. Primul nivel
corespunde caracteristicilor generale agregate. Celelalte reprezintă structuri de
nivel elementar ce includ caracteristicile primare, reprezentate de subcaracteristici
şi factori.
Această aranjare provine din:
” experienţa practică ce porneşte cu definirea unui set iniţial de
caracteristici, care apoi este rafinat prin descompunere în termeni de
care depinde;
” ipoteza simplificatoare că toate caracteristicile de nivel înalt se obţin
prin agregarea caracteristicilor primitive.

Descompunerea caracteristicilor generale în caracteristici de nivel inferior


este necesarã deoarece astfel se urmăresc/cuantifică în procesul de elaborare,
respectivele caracteristici de calitate.
Modelele sunt definite de caracteristicile de pe nivelurile superioare, pentru
că reflectă obiectivele urmărite în caracterizarea calităţii produsului.
Subcaracteristicile şi factorii primari asigură detalierea caracteristicilor de calitate
şi constituie punctul de plecare în definirea de metrici software ale calităţii.

Modele de sisteme de caracteristici de calitate dezvoltate şi utilizate în mod


curent sunt, [TEOD01]:
ƒ Boehm;
ƒ McCall;
ƒ ICI (Institutul de Cercetări în Informatică), descris în figura 4.5;
ƒ ISO 9126;
ƒ Dromey.

159
Caracteristicile de calitate ale produselor program

aria de cuprindere

Flexibilitate extensibilitate

portabilitate

capacitatea de modificare

Corectitudine completitudine

lipsă contradicţii

consistenţă

conformitate
Fiabilitate

stabilitate

integritate

Mentenabilitate structurabilitate

simplitate

autodescriere

uşurinţa asimilării
Utilizabilitate
comoditate în exploatare

complexitatea funcţională

consum de timp
Eficienţă
resurse utilizate

precizia calculelor
Figura 4.5 Modelul ICI al caracteristicilor de calitate

160
Metode statistice în analiza software

Modelul McCall stabileşte relaţii între caracteristicile de calitate software


şi metrici, cu toate că nu este demonstrată obiectivitatea tuturor metricilor software.
Modelul nu ia în considerare funcţionalitatea produselor software şi tratează
problema calităţii software din trei puncte de vedere:
` al reviziilor ce descriu calitatea operaţiilor de testare şi a celor de
mentenanţă;
` al operaţiilor luându-se în considerare calitatea rezultatelor, al
prelucrărilor şi în general tot ce ţine de lucrul în mod curent cu produsul
software;
` al tranziţiei caracterizând procesul de modificare prin îmbunătăţire a
produsului program.

Fiecare din aceste perspective este descompusă în caracteristicile de


calitate din tabelul 4.4.

Caracteristicile de calitate ale modelului McCall


Tabel 4.4
Portabilitate
Revizii Flexibilitate
Testabilitate
Corectitudine
Fiabilitate
Operaţii Eficienţă
Integritate
Uzabilitate
Portabilitate
Tranziţii Reutilizare
Interoperativitate

Modelul Boehm este similar cu modelul McCall reprezentând


caracteristicile de calitate cu ajutorul unei structuri arborescente. Fiecare
caracteristică are o contribuţie la calitatea totală a produsului software. Spre
deosebire de modelul McCall, acest model ţine cont şi de caracteristicile de
performanţă ale componentelor hardware.
Organizaţia Internaţională pentru Standardizare a reunit multiplele puncte
de vedere asupra calităţii software într-un singur model. ISO 9126 reprezintă un
model ierarhic cu şase caracteristici de bază, descrise în figura 4.6. Fiecare dintre
161
Caracteristicile de calitate ale produselor program

caracteristici este detaliată într-un set de subcaracteristici cărora li se asociază


metrici software. Din această cauză, modelul este numit şi modelul caracteristică –
subcaracteristică – metrică. Identificând caracteristici de calitate interne şi externe,
este analizat şi comportamentul sistemului pe care rulează produsul software.

MENTENABILITATE FUNCŢIONALITATE

EFICIENŢĂ Modelul FIABILITATE


ISO 9126

PORTABILITATE UZABILITATE

Figura 4.6 Caracteristicile de bază ale modelului ISO 9126

Se aprofundează relaţiile dintre caracteristicile de calitate şi urmăreşte să


descrie cu exactitate proprietăţile produselor software care afectează atributele
calităţii.
Tabelul 4.5 conţine sinteza principalelor atribute ale modelelor prezentate.

Descrierea modelelor de sisteme de caracteristici de calitate


Tabel 4.5
Model
Boehm McCall I.C.I. ISO
9126
Număr de. caracteristici de nivel înalt 10 11 6 6
Număr de caracteristici de nivel scăzut 12 22 19 21
Număr total de caracteristici 22 33 25 27
Număr de niveluri în arbore 4 2 2 2
Caracteristicile de nivel scăzut Da Da Nu Nu
determinã mai mult de o caracteristicã
de nivel înalt?

162
Metode statistice în analiza software

Caracteristicile de calitate implementate în majoritatea modelelor sunt:


eficienţă, fiabilitate, mentenabilitate, portabilitate, uzabilitate şi funcţionalitate. Ele
sunt considerate caracteristici esenţiale ale produsului software.
Diferenţa între modele constă în numărul de caracteristici primitive, care
influenţează implicit numărul caracteristicilor de nivel înalt. Faţă de modelul ISO,
modelele McCall şi Boehm conţin un număr mai mare de caracteristici de nivel
inferior, ceea ce determină deplasarea legăturilor de interdependenţă dintre
caracteristicile structurii de nivel înalt către structura de nivel inferior.

4.4 Complexitatea software

Problema complexităţii este pusă în mod similar cu problema simplităţii.


Un program simplu, conţine puţine instrucţiuni, puţini operanzi. El este scris
fără eforturi deosebite. Mai mult, programul simplu, efectuează un număr restrâns de
tipuri de prelucrări. Un produs software este caracterizat prin:
” structură definită ca proceduri care sunt apelează şi care apelează la
rândul lor; programul principal este considerat rădăcina într-o structură
arborescentă; nodurile interne ale arborescenţei sunt procedurile care
apelează şi sunt apelate; frunzele sunt proceduri apelate, dar care nu
conţin la rândul lor apeluri; structura are un număr de proceduri şi un
număr de niveluri;
” tipuri de date utilizate, mod de agregare a acestora şi mod de referire; se
lucrează cu masive, fişiere, liste, arbori, grefuri, date elementare; referirea
se efectuează indirect prin pointeri sau direct prin expresii de referire în
care apar nume de variabile, indici şi constante; diversitatea este dată de
numărul tipurilor de date, numărul de niveluri de structurare şi de
numărul tipurilor de expresii de referire;
” modul în care se realizează introducerea datelor, capacitatea de a asigura
lucru cu date de intrare complete şi corecte; capacitatea de a efectua
corelaţii între datele de intrare introduse într-o succesiune dată sau în
succesiunea dorită de utilizator; se verifică dacă datele sunt complete şi
dacă există criterii de validare, se verifică dacă datele sunt corecte;
” diversitatea tipologiilor de rezultate care se obţin; o aplicaţie este
construită aşa fel încât să permită realizarea unui set complet de prelucrări
ce se finalizează printr-un set de rezultate care se afişează, se imprimă sau
se stochează pe suport în vederea prelucrărilor ulterioare; produsul

163
Caracteristicile de calitate ale produselor program

software se proiectează aşa fel încât să permită fie gestionarea întregului


set, fie extragerea şi gestionare (afişare, stocare, imprimare) de subseturi
de rezultate;
” modalitatea de lucru în raport cu numărul utilizatorilor; aplicaţiile
monopost sunt construite în concepţia concentrării atât a modului de
introducere a datelor, a prelucrării lor, cât şi a modului de obţinere a
rezultatelor finale; numai după efectuarea prelucrărilor complete,
responsabilul monopostului procedează la difuzarea rezultatelor; înainte
de lansarea prelucrărilor, acelaşi responsabil procedează la colectarea şi
verificarea de fond a datelor, după care declanşează procesele de
introducere şi prelucrare; aplicaţiile în reţea sunt bazate pe distribuirea
informaţiei, pe acceptarea unui număr oarecare de utilizatori care lucrează
simultan şi accesează de asemenea simultan baza de date a aplicaţiei; în
acest context, problema modului de lucru omogen este esenţială;
omogenitatea este privită aici în raport cu volumul de date: toţi utilizatorii
introduc date cu acelaşi grad de acoperire a fenomenelor, cu aceeaşi
precizie şi mai ales cu acelaşi nivel de corectitudine; datele acoperă
intervalul considerat optim pentru definirea calităţii de operare în timp
real acceptată de utilizatorii finali ai rezultatelor;
” existenţa de componente care adaptează în mod dinamic structura
produsului software pentru a răspunde integral la cerinţele utilizatorilor
sau pentru a prelucra noi cerinţe de prelucrare; problema de bază a
oricărui produs software este durata de utilizare, iar condiţia rămânerii în
uz a produsului software este acceptarea de către acesta a modificărilor, a
eliminării sau a adăugărilor de module care să conducă în final la
obţinerea de rezultate complete şi corecte în raport cu noile condiţii care
apar.

Complexitatea este o caracteristică importantă a produsului software întrucât


influenţează:
™ duratele de execuţie din cadrul fiecărei etape a ciclului de dezvoltare
software;
™ productivitatea muncii analiştilor, proiectanţilor, programatorilor şi
respectiv a utilizatorilor;
™ nivelurile resurselor necesare realizării modulelor componente;
™ costul de producţie şi preţul de vânzare;

164
Metode statistice în analiza software

™ raportul cerere/ofertă, întrucât pe piaţa de software producătorii oferă


multe produse cu complexitate mică sau medie, corespunzătoare
capacităţii lor de a aloca resurse în avans pentru dezvoltarea de aplicaţii
informatice.

Complexitatea software este o caracteristică evidenţiată numai prin


comparaţia între două sau mai multe produse software. Cel mai simplu program
este programul vid. Acesta nu conţine operanzi, variabile, constante şi nici
instrucţiuni.

void main ( )
{

Un program este simplu dacă are definite variabile de acelaşi tip şi utilizează un
singur tip de operatori. De exemplu programul:

void main ( )
{
static int a, b, c, d;
a++;
b++;
c++;
d++;
}

conţine numai variabile de tip întreg, iar prelucrările se realizează prin


postincrementare.
Analiza calitativă a complexităţii programelor prezintă importanţă întrucât
sintetizează trăsăturile de bază ale acestora. În primul rând se identifică o serie de
trăsături ale programelor de analizat. În al doilea rând se construieşte un sistem de
coeficienţi de importanţă pentru aceste trăsături, sub formă de punctaj. În al treilea
rând, se stabilesc modalităţi de măsurare (apreciere) a trăsăturilor. În al patrulea
rând, se construieşte un tabel în care se consemnează rezultatele constatărilor
referitoare la fiecare produs software. În al cincilea rând, se trece la atribuirea de
punctaje acelor trăsături identificate.

165
Caracteristicile de calitate ale produselor program

Se adună punctele. Rezultă o diferenţiere a produselor software după setul


de trăsături definite. Complexitatea este o caracteristică dinamică bazată pe
diferenţele care apar între generaţiile de software şi de hardware. Elementele noi,
introduse de noile generaţii, prin efectele pozitive sunt incluse în structurile
produselor software şi toţi indicatorii de complexitate care se definesc sunt sau nu
adecvaţi măsurării complexităţii în măsura în care au capacitatea de a reflecta noile
trăsături ale generaţiilor de software şi hardware.
În evaluarea complexităţii produselor software este importantă definirea
riguroasă a factorilor şi a modalităţilor lor de cuantificare. De asemenea, pentru
trecerea la automatizare este importantă modalitatea de definire a algoritmilor, de
identificare a factorilor şi de contorizare a prezenţei lor aşa fel încât între
metodologia stabilită de calcul a complexităţii software şi programul care
evaluează automat complexitatea să nu existe diferenţe.
Complexitatea programelor se calculează folosind textul sursă sau pe baza
grafului asociat sau prin intermediul trăsăturilor identificate.
Programul este format din instrucţiuni. Un indicator al complexităţii
programelor este numărul de instrucţiuni.
Instrucţiunea este cea mai mică parte dintr-un program care defineşte
complet un context.
Astfel:

int a, b, c;

este o instrucţiune, iar contextul revine la precizarea faptului că a, b, c sunt


operanzi având tipul întreg.
Construcţia :

a = b + c;

este de asemenea o instrucţiune. În acest caz instrucţiunea corespunde unei


expresii aritmetice de atribuire.
Construcţia:

printf( ” %d %d”, a , b);

corespunzătoare apelului unei funcţii este o instrucţiune.

166
Metode statistice în analiza software

În ipoteza în care o expresie de atribuire de forma a = b + c este o


instrucţiune, construcţia:

a + = b + = c + = d *e;

este tratată tot ca o singură instrucţiune, are loc pierderea gradului de omogenitate
a instrucţiunilor.
Dacă se doreşte menţinerea gradului de omogenitate, expresia de atribuire
multiplă este pusă în corespondenţă cu atâtea instrucţiuni, câţi operatori de atribuire
conţine.
În exemplu considerat, expresia este asociată unui număr de trei
instrucţiuni.
Expresia virgulă:

a++, ++b, c = a + b;

permite evaluarea unei liste de expresii.


Secvenţa de program:
int a;
int b;
int c;
float d;

este pusă în corespondenţă cu numărul patru, al instrucţiunilor ce o alcătuiesc.


Construcţiile compuse conţin un număr de instrucţiuni, cu luarea în
considerare a elementelor de bază care definesc o instrucţiune.
Astfel, secvenţa:

if(a>b)
{
x = y * y;
z = w –2;
}
else
{
x++;
z = w *2;
y = x * y;
}
167
Caracteristicile de calitate ale produselor program

conţine o instrucţiune if şi două blocuri. Primul bloc conţine două instrucţiuni, iar
al doilea bloc conţine trei instrucţiuni. În total secvenţa conţine şase instrucţiuni.
Secvenţa:

if ( a>b ) if (a>c) vb = a;
else vb = c;
else
if(b>c) vb = b;
else
vb = c;

conţine, trei instrucţiuni if şi patru expresii de atribuire, în total şapte instrucţiuni.


Secvenţa:

for(i = 0; i <n; i++) S+=x[i];

conţine:
Š o instrucţiune for( );
Š patru expresii, din care două expresii de atribuire.
Această secvenţă este formată din 5 instrucţiuni.
Se observă modul de descompunere a instrucţiunilor compuse prin luarea
în considerare a ipotezei conform căreia la numărare se includ atât părţile cât şi
întregul.
Astfel, regulile stabilite aici sunt:
¾ o expresie simplă este o instrucţiune;
¾ apelul funcţiei neinclus într-o expresie este o instrucţiune;
¾ apariţia unui cuvânt cheie precum int, float, char, if, for, switch, while,
do, determină contorizarea unei instrucţiuni.

Important este ca regulile stabilite să fie utilizate uniform pentru toate


loturile de programe.
Este posibilă definirea altor reguli de numărare a instrucţiunilor. Este
importantă utilizarea acestor reguli în mod nediferenţiat pentru toate programele.
Astfel este asigurat caracterul comparabilităţii valorilor măsurate.
În programele scrise în limbaj de asamblare, instrucţiunile au acelaşi grad
de agregare, egal cu unu, ceea ce conduce la simplificarea modului de numărare a
instrucţiunilor.

168
Metode statistice în analiza software

Secvenţa:

MOV SI, offset x


MOV AX, 5
CMP BX, 0
JNZ alfa
ADD AX,CX
MOV CX,8
ciclu:
ADD AX, [SI]
ADD SI, 2
LOOP ciclu
alfa:
MOV e,AX

Conţine exact zece instrucţiuni, indiferent de convenţiile de numărare


utilizate.

Dacă se acceptă ipoteza conform căreia un program cu cât este mai


complex cu atât are în alcătuire mai multe instrucţiuni, unul dintre indicatorii de
măsurare a complexităţii este numărul liniilor de cod sursă care formează
programul.
Pentru a asigura comparabilitatea programelor prin acest indicator trebuie
clarificat conceptul de linie sursă.
Linia sursă corespunde unei singure instrucţiuni sau unui număr mai mare
de instrucţiuni. Sunt foarte rare cazurile în care pe o linie sursă sunt mai mult de
cinci instrucţiuni.
De regulă, pentru asigurarea lizibilităţii programelor se recomandă plasarea
instrucţiunilor aşa fel încât să se asigure lizibilitatea programelor.

În tabelul 4.6 sunt prezentate rezultatele analizei pe texte sursă, pentru a


evidenţia legătura dintre textele sursă privite ca număr de linii sursă, respectiv, ca
număr de instrucţiuni.

169
Caracteristicile de calitate ale produselor program

Numărul de instrucţiuni şi numărul de linii sursă


Tabel 4.6
Program Număr instrucţiuni Număr linii sursă
P1 33 38
P2 25 26
P3 41 51
P4 18 23
P5 30 39
P6 14 15
P7 34 47
P8 144 149
P9 51 63
P10 22 27
P11 16 25
P12 27 45
P13 139 150

În condiţiile unui stil de programare echilibrat nivelurile coeficienţilor de


corelaţie calculaţi pentru seriile de date construite în tabelul 4.6 au niveluri care
pun în evidenţă caracterul neintenţionat al plasării de instrucţiuni într-un număr dat
pe o linie sursă aşa cum rezultă din tabelul 4.7

Coeficient de corelaţie între linii sursă şi număr de instrucţiuni pe o linie sursă


Tabel 4.7
Număr linii sursă Număr instrucţiuni
Număr linii sursă 1 0,993948
Număr instrucţiuni 0,993948 1

Coeficientul de corelaţie dintre numărul liniilor sursă şi totalul de


instrucţiuni din program are un nivel apropriat de 1 ceea ce conduce la acceptarea
ipotezei că numărul de linii sursă este un indicator reprezentativ pentru
complexitatea programului privită prin intermediul instrucţiunilor.

170
Metode statistice în analiza software

Complexitatea programului depinde de diversitatea tipurilor de variabile şi


de constante, respectiv, de diversitatea instrucţiunilor şi operatorilor folosiţi în
modulele care alcătuiesc programul.
Se consideră un program Prog în care se utilizează variabilele de tip Tip1,
Tip2, …, Tipntip, se utilizează cuvintele cheie Key1, Key2, …, Keymkey care
desemnează funcţii apelate, instrucţiuni executabile şi nu părţi din instrucţiuni. De
asemenea, se folosesc operatorii Oper1, Oper2, …, Operpoper.

void main()
{
int a,b,i;
char x,y;
float r,s,x[5];
a=b=5;
x='c';
y='d';
r=s=3.14159;
if(a>r) b++
else
b--;
if(++a<b) y--;
else
--y;
for(i=0;i<5;i++)
x[i]=i*i+1;
s=x[0]+x[1]+x[2]+x[3]+x[4];
printf("\n %d %d %d",s,b,y);
}

Figura 4.7 Program C cu teste, iniţializări şi afişare

În programul din figura 4.7:


` variabilele sunt: Tip1 – int, Tip2 – char, Tip3 – float;
` cuvintele cheie: Key1 – if, Key2 – for, Key3 – printf;
` operatorii: Oper1 - =, Oper2 – [], Oper3 - +, Oper4 - ++, Oper5 - --,
Oper6 – ( ), Oper7 - <, Oper8 - *, Oper9 - %, Oper10 – { }.

171
Caracteristicile de calitate ale produselor program

Se consideră indicatorul:

N tipuri

Indct = ∑ frecv log


i =1
i 2 frecvi

unde:
Ntipuri – numărul tipurilor de categorii ale structurii;
frecvi – frecvenţa de apariţie a categoriilor.

Dacă se consideră N = 2 pentru că se operează cu 2 categorii şi anume:


categoria operanzilor şi, respectiv, categoria operatorilor şi dacă se notează n1 –
frecvenţa de apariţie a elementelor din categoria operanzilor, şi respectiv, n2 –
frecvenţa de apariţie a elementelor din categoria operatorilor se obţine indicatorul
de complexitate Halstead.

CHalstead = n1 log2 n1+ n2 log2 n2.

Pentru programul P considerat în figura 5.4.1, n1 = 3, n2 = 13.


Indicatorul de complexitate Halstead reuneşte în categoria operatorilor atât
instrucţiunile (3) cât şi operatori aritmetici şi relaţionali (10). Complexitatea
Halstead pentru programul P este:

CHalstead = 3 log2 3 + 13 log2 13 = 51,99

Dacă se diferenţiază operatorii în instrucţiunile şi operatorii cu care se


construiesc expresii se obţine un alt nivel al complexităţii, şi anume:

~
C = 3 log2 3 + 3 log2 3 + 10 log2 10 = 41,98

În [IVAN97] este prezentat indicatorul de complexitate cu luarea în


considerare a 6 categorii, şi anume:
fh1 – numărul de tipuri fundamentale de date care apar distinct în program;
fh2 – numărul de tipuri derivate de date care apar distinct în program;
fh3 – numărul de instrucţiuni distincte utilizate de programator;
fh4 – numărul de operanzi distincţi pentru calcule care apar în program;

172
Metode statistice în analiza software

fh5 – numărul de operatori distincţi pentru referire de operanzi care apar în


program;
fh6 – numărul de funcţii distincte apelate.

Deci, complexitatea este definită de relaţia:


6
Cˆ = ∑ fhi log 2 fhi
i =1

Dacă se definesc variabilele:

η (1) fh = fh1 + fh2


η ( 2) fh = fh3 + fh4 + fh5 + fh6

atunci valoarea complexităţii este determinată de relaţia:

(
C = η (1) fh log 2 η (1) fh + η ( 2) fh log 2 η ( 2 ) fh

Aceasta este identică cu forma relaţiei complexităţii Halstead. Datorită


relaţiei:
a log 2 a + b log 2 b ≤ ( a + b ) log 2 ( a + b ), unde a, b ∈ N
*

demonstrată în [IVAN97], rezultă că Cˆ < C Halstead . Deci metrica derivată a


complexităţii Halstead este mai fină decât metrica iniţială şi aproximează mai
riguros diversitatea de componente din program.
Indicatorul:
N
C = ∑ f i log 2 f i
i =1

creează o imagine bună asupra programelor. Pentru a realiza compararea


programului Prog în sensul stabilirii poziţiei sale într-o mulţime de programe, este
necesară normarea indicatorului folosind relaţia:
N

∑f i log 2 f i
IC = i =1
, cu IC ∈ [0,1]
⎛ N ⎞ ⎛ N ⎞
⎜ ∑ f i ⎟ log 2 ⎜ ∑ f i ⎟
⎝ i =1 ⎠ ⎝ i =1 ⎠

173
Caracteristicile de calitate ale produselor program

Dacă nivelul calculat al indicatorului IC pentru un program este 0,


complexitatea programului are nivelul minim, iar dacă nivelul calculat este 1,
complexitatea este maximă. Valoarea normată evidenţiază modul cât de bine sunt
utilizaţi operanzii şi operatorii în alcătuirea programelor.
Pentru programul P indicatorul normat al complexităţii este:

3 log 2 3 + 13 log 2 13
IC = = 12,9 cu IC ∈ [0,1].
16 log 2 16

Complexitatea programelor bazate pe structură obţinută prin graful asociat


foloseşte indicatorii McCabe şi indicatorul LIL, [IVAN99].

Fie un program Md principal, care apelează procedurile Proc2, Proc3.


procedura Proc1 apelează la rândul ei procedurile Proc11 şi Proc12. Procedura Proc2
apelează procedurile Proc21, Proc22 şi Proc23. Procedura Proc3 apelează procedurile
Proc31, Proc32, Proc33. Procedurile Proc11, Proc12, Proc21, Proc22, Proc23, Proc31,
Proc32, Proc33 nu conţin apeluri ale altor proceduri.
Structura de tip graf asociată acestui program este dată în figura 4.8.

Md

Proc1 Proc2 Proc3

Proc11 Proc12 Proc21 Proc22 Proc23 Proc31 Proc32 Proc33

Figura4.8 Structura arborescentă asociată programului

Structura arborescentă este caracterizată prin


` număr de niveluri;
` numărul de componente ale fiecărui nivel;
` modul de grupare a elementelor în cadrul fiecărui nivel.

174
Metode statistice în analiza software

Dacă se asociază fiecărui nivel o pondere, 1 pentru primul nivel, 2 pentru


nivelul unde se află procedurile Proc1, Proc2, Proc3, respectiv, 3 pentru nivelul unde
se află procedurile Proc11, Proc12, Proc21, Proc22, Proc23, Proc31, Proc32, Proc33,
dintre modalităţile de agregare se propune relaţia corespunzătoare nivelului j din
structura dată în figura 4.9.

nrmodule nivelj

I ( j)
Complex (Proc) = α nivejl * ∑ I Complex (Proci )
i =1

în care:
αnivelj – ponderea asociată nivelului j din arbore pe care se află
modulul procedurii Proc;
nrmodulenivelj – numărul de module ale nivelului j;
Proc – modulul pentru care se determină valoarea agregată a
complexităţii subarborelui al cărui rădăcină este;
IComplex(Proc) – complexitatea agregată a subarborelui cu rădăcină în
modulul Proc.

Md

Nivel αnivelj
M1 M2 Mp
………….

Figura 4.9 Parte din structura arborescentă corespunzătoare nivelului αnivelj.

Dacă procedurilor de la bază li se asociază complexitatea egală cu 1, pentru


structura arborescentă dată în figura 4.8, organizată pe trei niveluri, în care nivelul
programul principal Md are ponderea 1, procedurile Proc1, Proc2, Proc3 au
ponderea 2, iar celelalte proceduri se află pe nivelul cu pondere 3, complexitatea
calculată este:

IComplex (Proc11) = IComplex (Proc12) = IComplex (Proc21) = IComplex (Proc22) = IComplex


(Proc23) = IComplex (Proc31) = IComplex (Proc32) = IComplex (Proc33) = 1;

175
Caracteristicile de calitate ale produselor program

IComplex (Proc1) = 3*( IComplex (Proc11) + IComplex (Proc12) ) = 6;


IComplex (Proc2) = 3*( IComplex (Proc21) + IComplex (Proc22) + IComplex (Proc23) ) = 9;
IComplex (Proc3) = 3*( IComplex (Proc31) = IComplex (Proc32) = IComplex (Proc33) ) = 9;
IComplex (Md) = 2*( IComplex (Proc1) + IComplex (Proc2) IComplex (Proc3)) = 48.

Generalizarea modelului de calcul pentru structura arborescentă organizată


pe pniveluri niveluri este:

⎛ nrmodulenivel 2 ⎛ ⎞⎞
⎛ nrmodulenivelpniveluri
( )⎞⎟⎟...⎟⎟ ⎟⎟
nrmodule nivel 1
I (Md ) = α nivel 1 ∑ ⎜
⎜ ∑ ∑ I MdiN
α nivel 2 ⎜
α niveli3 ....α nive lpniveluri ⎜⎜

i1 =1
⎝ i2 =1 ⎝ ⎝ i N =1 ⎠ ⎠⎠

Normarea acestui indicator de complexitate se realizează în raport cu graful


dat în figura 4.10.

Modul M1 Nivel 1

Modul M2 Nivel 2

Modul MPniveluri-1 Nivel pniveluri-1

…………. Nivel pniveluri


A1 A2 AQProc

Figura 4.10 Graf de normalizare asociat unui arbore cu pniveluri niveluri

Se defineşte indicatorul:
NProc = pniveluri –1 + QProc

unde:
NProc – numărul de proceduri, noduri, asociate programului considerat;
pniveluri – numărul de niveluri al grafului de normalizare;
QProc – numărul de module aflate pe ultimul nivel.

176
Metode statistice în analiza software

Pentru programul cu structură arborescentă din figura 4.8, caracterizat prin


NProc = 12, graful de normalizare asociat este reprezentat în figura 4.11.

M1 Nivel 1

M2 Nivel 2

…………. Nivel 3
A1 A2 A3 A10

Figura 4.11 Graful de normalizare asociat programului M

Valoarea complexităţii agregate este:


13
I (M 2 ) = 3 * ∑ I ( Ai ) = 30
i =1

în ipoteza:
I(Ai) = 1;
I(M1) = 2*I(M2) = 60.
Complexitatea relativă este:

I (M ) 48
IR = = = 0,8
I (M 1 ) 60

Problema complexităţii modulelor unui program este abordată şi incluzând


parametrii care se transmit de la un modul al altul sau de la nivelul i la nivelul i+1
din arborescenţă. În acest caz, complexitatea modulului Md este:

ComplexitateMd = nprm I log 2 nprm I + nprm E log 2 nprm E + nprm S log 2 nprm S

unde:
nprmI – numărul parametrilor de intrare;
nprmE – numărul parametrilor de ieşire;
nprmS – numărul parametrilor de stare, care arată cum s-a făcut
prelucrarea.

177
Caracteristicile de calitate ale produselor program

Mergând la nivel de instrucţiuni, programului i se asociază graful prin


punerea în corespondenţă a fiecărei instrucţiuni cu un nod. Instrucţiunile care
formează secvenţe lineare sunt puse în corespondenţă cu nodul dat în figura 4.12.

I1 Secvenţă de instrucţiuni Instrucţiune

I2 Instrucţiune simplă; I1
Instrucţiune simplă; I2
I3 Instrucţiune simplă; I3

Figura4.12 Instrucţiuni în secvenţă lineară

Instrucţiunii de salt condiţionat i se asociază modelul dat în figura 4.13.

Secvenţă de instrucţiuni Instrucţiune


I1
if
I2 (condiţie) I1
Instrucţiune simplă; I2
I3
if
(condiţie) I3
I4 I5
Instrucţiune simplă; I4
else
I6
Instrucţiune simplă; I5
Instrucţiune simplă; I6

Figura 4.13 Nodul asociat instrucţiunii de salt condiţionat

Instrucţiunii repetitive WHILE i se asociază graful descris în figura 4.14.


I1 Secvenţă de instrucţiuni Instrucţiune

while
I2 {
(condiţie) I1
Instrucţiune simplă; I2
}
I3 Instrucţiune simplă; I3

Figura 4.14 Nodul asociat instrucţiunii repetitive WHILE

178
Metode statistice în analiza software

Reprezentarea instrucţiunii repetitive FOR printr-un graf conduce la


obţinerea figurii 4.15.

I1
Secvenţă de instrucţiuni Instrucţiune
I2
for
I4 (iniţializare contor; I1
condiţie; I2
I3 modificare contor) I3
Instrucţiune simplă; I4
I5 for
(iniţializare contor; I5
I6 ; I6
modificare contor) I7
I8 If
(condiţie) I8
I9 I7 break; I9
Instrucţiune simplă; I10
I10

Figura 4.15 Nodul asociat instrucţiunii repetitive FOR

Instrucţiunii de salt condiţionat SWITCH i se asociază secvenţa de graf


dată în figura 4.16.

Secvenţă de instrucţiuni Instrucţiune


I1
switch
I2 I3 (condiţie) { I1
case 0:
Instrucţiune simplă; I2
case 1:
I4 Instrucţiune simplă; I3
default:
I5 Instrucţiune simplă; I4
}
Instrucţiune simplă; I5

Figura 4.16 Graf asociat instrucţiunilor de salt condiţionat SWITCH

179
Caracteristicile de calitate ale produselor program

Pentru programul dat în figura 4.17 care evaluează expresia:

a+b
expres =
c*d

Cu verificarea numitorilor c şi d pentru a nu se efectua împărţirea prin 0,


graful asociat este descris în figura 4.18

void main()
{

int vb;
float a,b,c,d,e;
vb=0;
do
{
scanf("%f,%f",&a,&b);
scanf("%f,%f",&c,&d);
if((c!=0)&&(d!=0))
{
e=(a+b)/(c*d);
printf("Rezultatul este: %f", e);
vb=1;
}
else
printf("\n Nu se poate calcula
expresia !");
} while(vb!=1);
}

Figura 4.17 Program pentru evaluarea expresiei e

180
Metode statistice în analiza software

I1 – iniţializare vb

I2 – scanf( );

I3 – scanf( );

I4 – verificare c = 0

I5 – verificare d = 0

I6 – calcul e I9 - printf( )

I7 – printf( )

I8 – vb = 1

I10 – verificare vb

Figura 4.18 Graful asociat programului de evaluare a expresiei e = (a + b) / (c*d)

Dacă se notează:
nnoduri – numărul de noduri din graf ;
marce – numărul de arce din graf;

Indicatorul de complexitate McCabe, numărul ciclomatic al grafului,


CMcCabe, este dat de relaţia:

CMcCabe = marce – nnoduri + 2

Pentru graful dat în figura 4.18, există nnoduri = 10 noduri, şi marce = 11 arce,
iar complexitatea în sens McCabe, CMcCabe are valoarea 3. Indicatorul de
complexitate prezentat în [IVAN99] ia în considerare precedenţele.
Clasificarea indicatorilor utilizaţi pentru a măsura complexitatea se face în
funcţie de mai multe criterii.

181
Caracteristicile de calitate ale produselor program

După valoarea determinată a complexităţii există:


¾ indicatori cu valori cuprinse în intervalul [0; 1/3], ce descriu un grad
scăzut al complexităţii;
¾ indicatori cu valori cuprinse în intervalul (1/3; 2/3), ce descriu nu grad
ridicat al complexităţii;
¾ indicatori cu valori cuprinse în intervalul [2/3; 1], ce descriu nu grad
foarte mare al complexităţii.

După tipul datelor de intrare, sunt definiţi indicatori ce folosesc:


` textul sursă al secvenţei de cod;
` graful asociat.

După modul în care sunt tratate elementele ce formează datele de intrare,


indicatorul asociat complexităţii software este:
Š omogen, considerând toate intrările de acelaşi fel;
Š diferenţiat, ţinând seama de cum au fost obţinuţi sau de ce reprezintă.

După structura indicatorilor, aceştia utilizează:


™ o variabilă; de exemplu numărul de instrucţiuni executabile;
™ două variabile; complexitatea în sens Halstead este determinată în
funcţie de numărul operatorilor şi numărul operanzilor;
™ mai mult de două variabile.

Este important să se găsească un indicator care să reflecte cât mai fidel


complexitatea, întrucât în faza de proiectare, estimarea complexităţii are un rol
esenţial în asigurarea necesarului de resurse, în estimarea costurilor şi mai ales în
definirea condiţiilor în care produsul software este profitabil.

4.5 Concluzii

Calitatea software este obiectivul central al procesului de dezvoltare


software. Pentru aceasta, numeroase cercetări au evidenţiat o serie de caracteristici
de calitate ce descriu în totalitate performanţele produsului program.
În condiţiile în care societatea depinde tot mai mult de aplicaţiile
informatice, consumatorul a căpătat abilitatea de a diferenţia produsele cu nivel

182
Metode statistice în analiza software

ridicat la calităţii de produsele predispuse la erori şi care nu îi satisfac nevoile


legate de:
” obţinerea rezultatelor dorite;
” caracter general de rezolvare a problemelor;
” uşurinţă în utilizare şi înţelegere;
” instrumentele puse la dispoziţie;
” prelucrarea datelor între limite stabilite;
” probabilitatea de blocare a execuţiei şi pierderea informaţiei;
” resursele hardware şi software minime.

Calitatea produsului software a devenit o condiţie esenţială de a rămâne pe


piaţă. Pentru a învinge concurenţa produsele trebuie să coste puţin, să aibă calitate
cât mai mare şi să fie realizate în cel mai scurt timp. Acest obiectiv este atins doar
printr-o abordare organizată, planificată a procesului de determinare şi
implementare a caracteristicilor software de calitate.

183
5
ALEGEREA
CARACTERISTICILOR
DE CALITATE

5.1 Specialiştii

Produsele software sunt analizate comparativ cu alte produse sau


individual din punctul de vedere al caracteristicilor software comune. Ele se
diferenţiază prin limbajul de programare utilizat, platforma de lucru pentru care
sunt create să ruleze, domeniul IT în care se încadrează funcţiile sale etc. şi deci nu
sunt comparabile din aceste puncte de vedere. Cu toate acestea, orice produs
software este descris prin prisma caracteristicilor de calitate software, şi astfel acest
set de caracteristici constituie o bază universală de comparabilitate.
Categoriile principale de caracteristici de calitate software sunt:
” eficienţa, reprezintă capacitatea produsului software de a realiza un
consum optim de resurse hardware şi software pentru a rezolva cu un
anumit nivel de performanţă o problemă de complexitate cunoscută;
” funcţionalitatea, reprezintă gradul în care produsul software pune la
dispoziţia utilizatorului funcţii şi instrumente care să conducă la
184
Metode statistice în analiza software

îndeplinirea cerinţelor acestuia şi a obiectivelor pentru care a fost


realizat;
” mentenanţa, reprezintă costul actualizării rapide şi facile, având ca
obiectiv realizarea funcţiilor de prelucrare în condiţii superioare, cât şi
costul implementării unor noi funcţii. Cu cât acest cost este mai mic cu
atât produsul software este mai uşor mentenabil;
” portabilitatea produsului software se referă la posibilitatea instalării şi
rulării acestuia pe platforme hardware şi software diferite de cele pe
care a fost creat fără a necesita modificări majore;
” fiabilitatea, reprezintă toleranţa la erori a produsului software,
probabilitatea apariţiei unor întreruperi de execuţiei datorate unor
evenimente particulare. De exemplu, apariţia situaţiei de împărţire la 0;
” utilizabilitatea, reprezintă gradul de cunoştinţe, echipament şi efort
necesare utilizatorului pentru a utiliza în condiţii optime produsul
software.

În procesul de analiză şi proiectare a produsului software, producătorul este


limitat nu de lipsa ideilor inovatoare ci de cantitatea finită a unor resurse vitale ca:
™ resurse financiare ce asigură continuitatea procesului de producţie prin
susţinerea costurilor;
™ timpul măsurat până la momentul când produsul software este oferit
utilizatorilor; pierderea acestui moment are consecinţe pe piaţă
concurenţială a produselor software;
™ forţă de lucru prin numărul persoanelor implicate în procesul de
producere a programului şi prin gradul de calificare al acestora.

Este obligat să considere primară dezvoltarea doar a numitor caracteristici


de calitate către care îşi îndreaptă majoritatea resurselor. Alegerea acestora este
impusă de piaţa produselor software şi de utilizatorii finali care cumpără produsul.
Procesul de alegere a caracteristicilor de calitate este privit şi prin prisma
utilizatorului, dar mai precis din punctul de vedere al celor care realizează studii
comparative pe piaţa produselor software. Asemenea producătorului de software,
aceştia trebuie să aibă o situaţie reală a ierarhiei caracteristicilor de calitate în
funcţie de importanţa acordată de utilizatori, pentru a alege baza procesului de
comparaţie a produselor software.

185
Alegerea caracteristicilor de calitate

Se consideră o mulţime de persoane Sp1, Sp2, …, Spnspec numită


colectivitatea specialiştilor, care îndeplineşte condiţiile:
¾ experienţa în domeniul informaticii aplicată este comparabilă, suficientă
şi recunoscută;
¾ rezultate concrete date prin produse, proiecte realizate şi aflate în
utilizare curentă;
¾ dispun de capacităţi de evaluare corectă, obiectivă a situaţiilor concrete;
¾ au cunoştinţe de management şi de acordare a calificativelor pentru
diferenţierea factorilor de influenţă şi pentru ierarhizarea persoanelor
din echipe în concordanţă cu eforturile şi eficienţa rezultatelor obţinute;
¾ cunosc metode de măsurare şi de agregare a datelor pentru obţinerea
unor indicatori necesari cuantificării nivelurilor unor factori, unor
caracteristici şi a unor interacţiuni dintre acestea;
¾ lipsa dominării de subiectivism prin abordarea argumentată a tuturor
deciziilor.

Colectivitatea specialiştilor este instruită cu o serie de proceduri pentru


definirea obiectivelor, efectuarea identificării elementelor din mulţimile cu care
operează şi pentru acordarea de puncte sau note, respectiv pentru construirea
listelor de caracteristici, de factori, de niveluri ale calităţii.
De asemenea, sunt instruiţi asupra definirilor de elemente care să
îndeplinească o serie de condiţii, dintre care ortogonalitatea fiind cea mai
importantă.
Aceasta revine la:
` acordarea de puncte diferite, caracteristicilor;
` includerea de caracteristici diferite în liste;
` obţinerea de niveluri diferite pentru a obţine o ierarhizare adecvată a
factorilor.

Colectivitatea Sp1, Sp2, …, Spnspec este mai întâi construită pornind de la


înregistrarea unor date cantitative referitoare la performanţele individuale ale
membrilor.
Se consideră CD1, CD2, …, CDmcd caracteristicile de descriere a fiecărui
membru din colectivitatea specialiştilor, de exemplu anii de experienţă, numărul de
proiecte evaluate, limbaje de programare cunoscute etc.

186
Metode statistice în analiza software

Se construieşte tabelul 5.1 după datele declarate de fiecare specialist, unde


awij este nivelul declarat pentru caracteristica CDj de către specialistul Spi. Se
obţine matricea ASp cu nspec linii şi mcd coloane.

Caracterizarea specialiştilor
Tabel 5.1
Caracteristică CD1 … CDj … CDmcd
Specialist
Sp1 aw11 … aw1j … aw1mcd
Sp2 aw21 … aw2j … aw2mcd
… … … … … …
Spi awi1 … awij … awimcd
… … … … … …
Spnspec awnspec1 … awnspecj … awnspecmcd

în care:
nspec – numărul de specialişti;
mcd – numărul caracteristicilor specialiştilor;
Spi – specialistul al i-lea din colectivitate;
CDj – caracteristica j utilizată pentru a descrie specialiştii;
awij – nivelul declarat pentru caracteristica CDj de către specialistul Spi.
Datele sunt pentru toate caracteristicile de ordin cantitativ. Acest lucru
permite agregarea acestora în niveluri totalizatoare, precum şi construirea de
indicatori de tipul celor statistici care aplicaţi asupra înregistrărilor conferă analizei
un caracter pur obiectiv.
Pentru selecţia candidaţilor din colectivitatea propusă şi formarea unui
eşantion care să fie atât reprezentativ cât şi omogen este propus un algoritm ce
constă în parcurgerea următoarelor etape:
¾ se construieşte un tabel de forma 5.1 în care sunt înregistrate valorile
măsurate ale caracteristicilor specialiştilor; şirul celor mcd caracteristici
CD1, CD2, …, CDmcd constituie coloanele tabelului, iar pe fiecare linie
sunt trecute valorile ce caracterizează specialistul Spi, cu i = 1..nspec;
¾ fiecărei coloane de caracteristici, CDj, i se asociază o coloană paralelă
de variabile etichetă, Etj, care au una din valorile 0 sau 1; utilizarea
acestor coloane are scopul simplificării operaţiile aferente studiului
colectivităţii de specialişti, fapt demonstrat în etapele următoare ale
analizei;
187
Alegerea caracteristicilor de calitate

¾ elementele coloanele Et1, Et2, …,Etmcd, notate cu etij reprezentând


eticheta asociată valorii caracteristicii CDj în cazul specialistului Spi,
sunt iniţializate cu valoarea 1, iar tabelul are forma 5.2.

Utilizarea variabilelor etichetă


Tabel 5.2
Caracteristică CD1 Et1 … CDj Etj … CDmcd Etmcd
Specialist
S1 aw11 et11=1 … aw1j et1j=1 … aw1mcd et1mcd=1
S2 aw21 et21=1 … aw2j et2j=1 … aw2mcd et2mcd=1
… … … … … … … … …
Si awi1 eti1=1 … awij etij=1 … awimcd etimcd=1
… … … … … … … … …
Snspec awnspec1 etnspec1=1 … awnspecj etnspecj=1 … awnspecmcd etnspecmcd=1

™ se alege elementul minim al fiecărei coloane din matricea A, obţinându-


se mcd valori, awmin[ j ] , cu j = 1..mcd;
™ se alege elementul maxim al fiecărei coloane din matricea A,
obţinându-se mcd valori, awmax[ j ] , cu j = 1..m;
™ pentru fiecare element al coloanei CDj care are valoarea egală cu
awmin[ j ] sau respectiv cu awmax[ j ] , elementul echivalent din coloana Etj
ia valoarea 0;

awij = awmin[ j ]
dacă , atunci etij = 0;
awij = awmax[ j ]

™ pentru fiecare coloană Eti se calculează ponderea elementelor cu valoare


egală cu 0; aceasta este notată cu pet j , şi este calculată utilizând
formula matematică:

nspec
nspec − ∑ et ij
pet j = i =1
*100
nspec

unde nspec reprezintă numărul de specialişti.

188
Metode statistice în analiza software

Valoarea acestei ponderi este necesară alegerii modului în care este


calculată în etapele următoare media colectivităţii analizate. Dezavantajul utilizării
formulei mediei aritmetice pentru determinarea valorii reprezentative care să
descrie ceea ce este esenţial în colectivitate, constă în influenţă mare pe care o au
asupra ei valorile îndepărtate, numite în Statistică valori aberante. Şi tocmai aceste
valori, sunt acelea care se află la capetele intervalului, aparţinând elementului
maxim şi minim.
În cele mai multe colectivităţi analizate, indivizii ale căror caracteristici
măsurate au fie valoarea maximă, fie valoarea minimă nu sunt unici, iar numărul
lor împiedică catalogarea lor ca fiind situaţii particulare şi chiar
impun considerarea acestora ca parte importantă a lotului. Deci, cunoaşterea
ponderii acestor valori implică luarea în considerare la calculul valorii medii sau
ignorarea lor.

™ se calculează media aritmetică corectată a elementelor de pe fiecare


coloană, a w *j , fără a include elementele minime şi maxime ale fiecărei
coloane determinate în etapele precedente, dacă pet j < 25%; formula de
calcul este:

nspec

∑ aw ij * etij nspec
aw =
*
j
i =1
nspec
, cu ∑ et ij ≠0
∑ et
i =1
ij
i =1

Înlăturându-se valorile extreme ce influenţează puternic valoarea medie


calculată ca o medie aritmetică, se obţine pentru fiecare caracteristică o valoarea
agregată reprezentativă pentru colectivitatea specialiştilor.
Dacă pet j ≥ 25% , atunci formula de calcul este:

nspec

∑ aw ij
aw =
*
j
i =1
, cu nspec ≠ 0
nspec

189
Alegerea caracteristicilor de calitate

Cazul particular cel mai des întâlnit în practică, este acela în care indivizii
din colectivitate ce au caracteristica cu valoare minimă sau maximă sunt unici şi
atunci formula de calcul a mediei corectate este:

nspec

∑ aw ij − awmin[ j ] − awmax[ j ]
aw =*
j
i =1
, cu nspec > 2
nspec − 2

` folosind regula de stabilire a intervalului mulţimii omogene se definesc


intervalele pentru apartenenţa fiecărei caracteristici; regula constă în
alegerea noilor valori minime şi maxime pe fiecare coloană, aawmin[ j ]
şi respectiv aawmax[ j ] , cu j = 1..mcd, dintre elementele awij, pentru care
etij = 1.
Dacă mulţimea valorilor asociată caracteristicii CDj pentru cei nspec
specialişti se găseşte într-una din situaţiile particulare:
ƒ ponderea pet j calculată în etapele precedente este 1. În acest caz, nu

există în mulţime alte valori care să fie diferite de awmax[ j ] şi awmin[ j ] .


Noile valori aawmin[ j ] şi aawmax[ j ] sunt cele anterioare;
ƒ mulţimea în care nivelurile măsurate ale caracteristicii CDj ia valori
conţine doar trei valori distincte; această situaţie permite alegerea unor
elemente aawmin[ j ] şi aawmax[ j ] care să fie egale;
noile valori aawmin[ j ] şi aawmax[ j ] sunt egale cu cele anterioare, awmax[ j ] şi
awmin[ j ] ;

Considerând şirul de valori val1, val2, …, valn ca fiind asociat caracteristicii


CDj şi şirul corespunzător coloanei etichetă, atunci după etapa de iniţializare există
corelaţia din tabelul 5.3:

Corelaţia iniţială dintre valorile caracteristicilor şi valorile etichetelor


Tabel 5.3
Valorile caracteristicii CDj: val1 val2 val3 … valn-1 valnspec
↕ ↕ ↕ … ↕ ↕
Valorile etichetelor: 1 1 1 … 1 1

190
Metode statistice în analiza software

În etapa identificării elementelor awmax[ j ] şi awmin[ j ] mulţimii valorilor


caracteristicii CDj pentru cei n specialişti, echivalenţa anterioară devine:

Valorile etichetelor pentru caracteristicile ce au valoarea maximă sau minimă


Tabel 5.4
Valorile caracteristicii val1 val2 val3 … valg … valh … valnspec
CDj:
↕ ↕ ↕ … ↕ … ↕ … ↕
Valorile etichetelor: 1 1 1 … 0 … 0 … 1

cu valg = awmin[ j ] , valh = awmax[ j ] şi g < h < nspec. Este exemplificat cazul
particular în care valorile minime şi maxime apar odată în mulţime.

Deci, în etapa curentă se caută valoarea minimă, respectiv maximă, dintre


acele elemente ale şirului val1, val2, …, valnspec care mai au eticheta asociată egală
cu 1;
™ se determină variaţia ∆CD
j valorilor pe care le ia caracteristică CDj
efectuând diferenţa:

∆CD
j = aawmax[ j ] − aawmin[ j ]

™ se determină intervalele corectate pentru fiecare caracteristică CDj în


parte; se consideră ipoteza că mărimea intervalului care conţine acele
valori reprezentative pentru colectivitate, (∆CD
j )
corectat
, reprezintă 40 %

din mărimea intervalului valori, ∆CD


j , calculat anterior:

(∆CD
j )
corectat
= ∆CD
j *0,4

™ se determină limita inferioară a intervalului corectat:

(∆CD
j )
corectat
∆CD
j * 0,4
Liminf[ j ] = a w −
*
j = aw −
*
j
2 2

191
Alegerea caracteristicilor de calitate

™ se determină limita superioară a intervalului corectat:

(∆CD
j )
corectat
∆CD
j * 0,4
Limsup[ j ] = a w *j + = a w *j +
2 2

™ se extrag elementele din colectivitatea Sp1, Sp2, …, Spi, …, Spnspec care


satisfac simultan apartenenţa caracteristicilor la intervalele obţinute:

awij ∈ [ Liminf[ j ] , Limsup[ j ] ] cu j = 1..mcd .

Pentru colectivitatea de evaluatori a programelor scrise în limbajele C++ se


consideră datele declarate în tabelul 5.5.

Caracteristici ale evaluatorilor programelor scrise în limbajul C++


Tabel 5.5
Specialist Vârsta Vechime Experienţă Experienţă
programare în în evaluare
limbajul C++ software
(ani) (ani) (ani) (ani)
S1 35 1 10 1 6 1 5 1
S2 44 1 14 1 5 1 8 1
S3 45 1 14 1 6 1 8 1
S4 37 1 12 1 7 1 9 1
S5 40 1 8 1 8 1 8 1
S6 32 1 8 1 8 1 5 1
S7 29 1 6 1 5 1 6 1
S8 45 1 15 1 8 1 7 1
S9 40 1 12 1 9 1 6 1
S10 39 1 13 1 7 1 8 1
S11 44 1 16 1 7 1 9 1
S12 43 1 9 1 5 1 9 1
S13 35 1 11 1 9 1 8 1
S14 42 1 10 1 7 1 12 1
S15 47 1 16 1 8 1 8 1
S16 33 1 10 1 7 1 11 1
S17 46 1 18 1 5 1 5 1

192
Metode statistice în analiza software

Specialist Vârsta Vechime Experienţă Experienţă Specialist


programare în în evaluare
limbajul C++ software
(ani) (ani) (ani) (ani)
S18 34 1 11 1 6 1 6 1
S19 40 1 14 1 6 1 6 1
S20 41 1 9 1 9 1 7 1
S21 38 1 12 1 7 1 7 1
S22 34 1 10 1 9 1 8 1
S23 42 1 12 1 10 1 8 1
S24 40 1 14 1 8 1 11 1
S25 42 1 9 1 7 1 8 1
S26 39 1 9 1 9 1 7 1
S27 45 1 20 1 8 1 10 1
S28 38 1 10 1 10 1 7 1
S29 42 1 16 1 7 1 9 1
S30 44 1 17 1 7 1 11 1
S31 39 1 14 1 9 1 9 1
S32 45 1 15 1 5 1 8 1
S33 40 1 11 1 7 1 12 1
S34 46 1 14 1 7 1 9 1
S35 38 1 12 1 9 1 7 1
S36 34 1 16 1 8 1 7 1
S37 50 1 15 1 5 1 6 1
S38 42 1 8 1 9 1 8 1
S39 38 1 12 1 7 1 8 1
S40 40 1 9 1 6 1 9 1
S41 40 1 12 1 8 1 5 1
S42 44 1 6 1 5 1 5 1
S43 42 1 12 1 8 1 7 1
S44 38 1 10 1 7 1 7 1
S45 42 1 10 1 6 1 5 1
S46 46 1 15 1 7 1 9 1
S47 39 1 8 1 5 1 6 1
S48 35 1 8 1 7 1 6 1
S49 46 1 16 1 8 1 8 1
S50 46 1 15 1 9 1 8 1

193
Alegerea caracteristicilor de calitate

Determinarea mulţimii specialiştilor care participă la alegerea


caracteristicilor de calitate implică parcurgerea etapelor descrise anterior:
Š se iniţializează valorile etichetelor cu 1;
Š se determină valorile awmin[ j ] şi awmax[ j ] pentru fiecare caracteristică
CDj, cu j = 1..4, rezultatul fiind trecut în tabelul 5.6:

Valorile lui awmin[ j ] şi awmax[ j ] .

Tabel 5.6
Vârsta Vechime Experienţă programare în Experienţă în
limbajul C++ evaluare software
awmin[j] 29 6 5 5
awmax[j] 50 20 10 12

Š se determină ponderea, pet j , a elementelor care au valoarea egală cu

awmin[ j ] sau awmax[ j ] .

Valoarea determinată a ponderii pet j

Tabel 5.7
Vârsta Vechime Experienţă programare Experienţă în evaluare
în limbajul C++ software
pet j 4% 6% 20% 16%

Cum valorile ponderilor sunt foarte mici şi valorile awmin[ j ] şi awmax[ j ]


sunt unice în mulţimile asociate caracteristicilor CDj, media se calculează utilizând
formula:
nspec

∑ aw ij − awmin[ j ] − awmax[ j ]
aw =
*
j
i =1
, cu nspec > 2
nspec − 2

Această decizie este luată în cele mai multe cazuri, după o observaţie
sumară a valorilor din tabelul 5.5, fără a mai determina ponderile; restul de etape

194
Metode statistice în analiza software

ale algoritmului sunt rezumate în tabelul 5.8:

Determinarea intervalului corectat pentru colectivitatea celor 50 de specialişti

Tabel 5.8
Vârsta Vechime Experienţă Experienţă în
programare evaluare
în limbajul C++ software
awmin[j] 29 6 5 5
awmax[j] 50 20 10 12
pet j 4% 6% 20% 16%

a w *j 40,54 ≈ 12,15 ≈ 7,55 ≈ 8 7,90 ≈ 8


41 12
aawmin[j] 32 8 6 6
aawmax[j] 49 18 9 11
∆CD 17 10 3 5
j

∆cautat 6,8 4 1,2 2


j

Liminf[ j ] 47,34 ≈ 16,14 ≈ 8,75 ≈ 9 9,90 ≈ 10


47 16
Limsup[ j ] 33,74 ≈ 8,14 ≈ 8 6,35 ≈ 6 5,90 ≈ 6
34

Odată cu determinarea intervalului


awij ∈ [ Liminf[ j ] , Limsup[ j ] ] cu j = 1..mcd , se obţine tabelul omogen al
specialiştilor care participă la analiza loturilor de produse software. Pentru
exemplul considerat, descris în tabelul 5.5, dintre aceştia se aleg 30 de specialişti
care îndeplinesc condiţiile de omogenitate.

195
Alegerea caracteristicilor de calitate

Grupul omogen al programatorilor în limbajul C++


care evaluează produsele software
Tabel 5.9
Specialist Vârsta Vechime Experienţă Experienţă
al grupului programare în evaluare
omogen în limbajul C++ software
Sp’1 45 14 6 8
Sp’2 37 12 7 9
Sp’3 40 8 8 8
Sp’4 45 15 8 7
Sp’5 40 12 9 6
Sp’6 39 13 7 8
Sp’7 44 16 7 9
Sp’8 35 11 9 8
Sp’9 47 16 8 8
Sp’10 34 11 6 6
Sp’11 40 14 6 6
Sp’12 41 9 9 7
Sp’13 38 12 7 7
Sp’14 34 10 9 8
Sp’15 42 9 7 8
Sp’16 39 9 9 7
Sp’17 42 16 7 9
Sp’18 39 14 9 9
Sp’19 46 14 7 9
Sp’20 38 12 9 7
Sp’21 34 16 8 7
Sp’22 42 8 9 8
Sp’23 38 12 7 8
Sp’24 40 9 6 9
Sp’25 42 12 8 7
Sp’26 38 10 7 7
Sp’27 46 15 7 9
Sp’28 35 8 7 6
Sp’29 46 16 8 8
Sp’30 46 15 9 8

196
Metode statistice în analiza software

Trebuie avut în vedere că numărul specialiştilor din aceste grupuri


omogene să fie suficient de mare, întrucât în procesul de evaluare apar situaţii de
eliminare a liniilor din tabelele de note datorită unor incompatibilităţi privind
procedurile de acordare a notelor. Chiar dacă indivizii selectaţi sunt omogeni şi
reprezentativi din punctule de vedere al tuturor caracteristicilor analizate, în
momentul acordării de note produselor software, aceştia sunt influenţaţi de factori
mai puţin obiectivi. Din acest motiv, eşantionul punctajelor este la rândul său
curăţat de elementele particulare, care se abat cu mult de la medie, iar în finalul
analizei, numărul de specialişti participanţi trebuie să reprezinte un argument
important, care să susţină rezultatele.

5.2 Atribuirea de calificative

Există mai multe modalităţi de obţinere a ierarhizărilor unor componente


ale colectivităţilor supuse analizei, acestea fiind descrise în detaliu în capitolul de
ierarhizare.
Unele dintre aceste metode au ca obiectiv definirea de tehnici de acordare a
punctajelor componentelor analizate. În funcţie de regulile pe care se bazează şi
mulţimea din care se acordă notele, metodele facilitează analiza prin:
” eliminarea situaţiilor de egalitate a poziţiilor ierarhice rezultate pentru
două sau mai multe componente;
” definirea exactă a mulţimii punctelor, lucru care simplifică şi clarifică
etapa acordării acestora;
” obligarea specialistului de a realiza o ierarhizare proprie a
componentelor, în momentul acordării punctelor;
” comparabilitatea rezultatelor.
Datele sunt centralizate în tabelul 5.10. Ele nu sunt supuse unui proces de
normalizare sau omogenizare suplimentar, care să se constituie din operaţii
succesive de eliminare a acelor elemente aflate în exteriorul tendinţei centrale a
colectivităţii. Motivele acestei decizii se bazează pe faptul că:
™ operaţia complexă de acest tip a condus la selectarea specialiştilor şi
constituirea lor în loturi omogene şi reprezentative; deci, datorită sursei
lor, şansele ca eşantionul datelor să fie reprezentativ sunt ridicate;
™ chiar tehnica de acordare a notelor, prin impunerea limitelor superioară
şi inferioară a intervalului din care se iau valori, reduce semnificativ
riscul apariţiei elementelor nereprezentative.

197
Alegerea caracteristicilor de calitate

În etapele următoare se definesc indicatori agregaţi sub formă de totaluri şi


ponderi. Prin simpla comparaţie ale nivelurilor acestora, se defineşte ierarhia
componentelor analizate.

Acordarea de punctaje independente prezintă avantajul că specialiştii sunt


degrevaţi de obligativitatea de a efectua calcule de corelare a punctelor acordate
pentru a se menţine în totalul definit.
Pentru elementele At1, At2, …, Atkat ale unei liste de atribute se fixează un
interval între care trebuie să se găsească notele acordate de specialişti fiecărui
atribut. De exemplu, pentru caracteristicile de calitate: fiabilitate, mentenanţă şi
portabilitate se consideră intervalul de note de la 1 la 10.
Fiecare specialist are dreptul să acorde note diferite cuprinse în acest
interval, celor trei caracteristici. Condiţiile impuse de cei care realizează analiza
specialiştilor sunt:
¾ notele să fie numere întregi;
¾ notele acordate celor trei caracteristici să fie distincte între ele;
¾ notele, ordonate crescător, să nu se găsească în progresie aritmetică de
raţie 1.
Pentru un lot omogen de specialişti au fost colectate datele din tabelul 5.10.

Notele acordate celor trei caracteristici


Tabel 5.10
Specialist Fiabilitate Mentenanţă Portabilitate Total
Sp1 10 7 5 22
Sp2 10 6 4 20
Sp3 10 6 5 21
Sp4 9 7 5 21
Sp5 10 7 3 20
Sp6 9 7 5 21
Sp7 10 7 6 23
Sp8 10 7 5 22
Sp9 9 7 5 21
Sp10 9 6 5 20
Sp11 9 6 5 20
Sp12 10 7 6 23
Sp13 8 6 3 17
Sp14 10 6 5 21
198
Metode statistice în analiza software

Specialist Fiabilitate Mentenanţă Portabilitate Total


Sp15 9 7 5 21
Sp16 9 7 5 21
Sp17 10 7 4 21
Sp18 10 8 6 24
Sp19 9 5 4 18
Sp20 10 7 6 23
Sp21 10 8 5 23
Sp22 9 7 5 21
Sp23 10 7 6 23
Sp24 8 6 5 19
Sp25 10 5 6 21
Sp26 9 6 5 20
Sp27 10 5 4 19
Sp28 8 4 3 15
Sp29 8 8 4 20
Sp30 9 6 5 20

Total 281 195 145 621

Dacă se utilizează notaţiile:


kat – numărul de atribute;
nspec – numărul specialiştilor;
notaij – punctul dat de specialistul Spi pentru atributul Atj;
LInf[j] – limita inferioară a punctajului pentru atributul Atj, reprezentând
punctajul minim acordat;
LSup[j] – limita superioară a punctajului pentru atributul Atj, reprezentând
punctajul maxim acordat;
Pentru aceste date se definesc indicatorii agregaţi:
TSpi – totalul punctelor acordate de specialistul Spi, obţinut prin agregarea
punctelor acordate de el, prin formula:

kat
TSpi = ∑ notaij , cu i = 1..nspec şi notaij ∈ [1,10]
j =1

199
Alegerea caracteristicilor de calitate

TAtj – totalul punctelor acordate atributului Atj, nivel obţinut agregarea


punctelor primite de acest atribut, prin intermediul formulei:
nspec
TAtj = ∑ nota
i =1
ij , cu j = 1..kat

Acest indicator este caracterizat de relaţia:

nspec * LInf [ j ] ≤ TAtj ≤ nspec * LSup[ j ]

TT – totalul punctelor acordate de eşantionul de specialişti, obţinut prin


însumarea fie a totalurilor pe atribute, fie a totalurilor pe specialişti
sau a tuturor punctelor din tabel:

nspec nspec nspec kat


TT = ∑T
i =1
Spi , TT = ∑T
j =1
Atj sau TT = ∑∑ nota
i =1 j =1
ij

PAtj – ponderea punctelor primite de caracteristica Atj în totalul punctelor


acordate, calculată ca raport:

TAtj
PAtj = , cu j = 1..kat
TT

Pentru datele din tabelul 5.10, indicatorii definiţi anterior au valorile din
tabelul 5.11:
Valorile indicatorilor
Tabel 5.11
Indicator Fiabilitate Mentenanţă Portabilitate
LInf[j] 8 4 3
LSup[j] 10 8 6
TAtj 281 195 145
TT 621 621 621
PAtj 0,45 0,31 0,24

ceea ce arată că fiabilitatea are rang 1, mentenanţa are rang 2 şi portabilitatea are
rang 3.

200
Metode statistice în analiza software

Acordarea de puncte corelate presupune stabilirea unui nivel de punctaj


din care se distribuie părţi pentru fiecare atribut.
Se consideră nivelul WPT al punctelor care se distribuie de către specialişti
celor kat atribute. Rezultă că în final, punctajele trebuie să îndeplinească una din
condiţiile:
kat

∑ nota
j =1
ij = WPT , cu i = 1..nspec

nspec kat

∑∑ nota
i =1 j =1
ij = nspec *WPT

unde:
kat – numărul de atribute analizate;
nspec – numărul de specialişti;
notaij – punctul dat de specialistul Spi pentru atributul Atj;
WPT – nivelul total al punctelor distribuie de un specialist atributelor
analizate.

Pentru cele trei caracteristici din exemplul anterior: fiabilitate, mentenanţă


şi portabilitate se consideră WPT =100 şi se înregistrează pentru acelaşi lot
specialişti datele din tabelul 5.12 respectând regulile:
¾ notele acordate sunt numere întregi şi pozitive;
¾ notele acordate de fiecare specialist sunt distincte între ele;
¾ suma lor să fie egală cu nivelul W definit.

Punctaje acordate cu sumă impusă, WPT


Tabel 5.12
Specialist Fiabilitate Mentenanţă Portabilitate Total
Sp1 60 30 10 100
Sp2 35 34 31 100
Sp3 50 40 10 100
Sp4 90 6 4 100
Sp5 50 30 20 100
Sp6 40 39 21 100
Sp7 60 21 19 100
Sp8 70 20 10 100
Sp9 70 20 10 100
201
Alegerea caracteristicilor de calitate

Specialist Fiabilitate Mentenanţă Portabilitate Total


Sp10 60 10 30 100
Sp11 75 20 5 100
Sp12 50 30 20 100
Sp13 41 39 20 100
Sp14 40 35 25 100
Sp15 53 30 17 100
Sp16 70 10 20 100
Sp17 30 60 10 100
Sp18 45 25 30 100
Sp19 50 30 20 100
Sp20 60 30 10 100
Sp21 65 30 5 100
Sp22 70 25 5 100
Sp23 70 20 10 100
Sp24 60 25 15 100
Sp25 75 15 10 100
Sp26 80 15 5 100
Sp27 65 20 15 100
Sp28 45 35 20 100
Sp29 50 30 20 100
Sp30 40 39 21 100

Total 1719 813 468 3000

Cu notaţiile următoare:
kat – numărul de atribute analizate;
nspec – numărul de specialişti;
notaij – punctul dat de specialistul Spi pentru atributul Atj;

Se definesc indicatorii agregaţi:


TAtj – totalul punctelor acordate atributului Atj, nivel obţinut agregarea
punctelor primite de acest atribut, prin intermediul formulei:

nspec
TAtj = ∑ nota
i =1
ij , cu j = 1..kat .

202
Metode statistice în analiza software

Pentru exemplul curent, se calculează trei asemenea indicatori: TAfiabilitate


TAportabilitate şi TAmentenanta;
TTotal – totalul punctelor acordate de eşantionul de specialişti, obţinut
prin însumarea totalurilor pe atribute sau a tuturor notelor din
tabel:

nspec nspec kat


TTotal = ∑T
j =1
Atj sau TTotal = ∑∑ nota
i =1 j =1
ij

PAtj – ponderea punctelor primite de caracteristica Atj în totalul


punctelor acordate, calculată ca raport:

TAtj
PAtj = , cu j = 1..kat
TTotal

În cazul acestei metode de punctare, nu se mai calculează totalul punctelor


date de către fiecare specialist, pentru că această valoare este cunoscută, ea fiind
constantă şi egală cu WPT.
Valorile pe care le iau aceşti indicatori pentru datele din tabelul 5.12 sunt
descrise în tabelul 5.13.

Valorile indicatorilor
Tabel 5.13
Indicator Fiabilitate Mentenanţă Portabilitate
TAtj 1719 813 468
TTotal 3000 3000 3000
PAtj 0,58 0,27 0,15

şi rangurile sunt:
` Fiabilitate cu rangul 1;
` Mentenanţă cu rangul 2;
` Portabilitate cu rangul 3.

Acordarea de puncte dintr-o mulţime impusă are menirea de obţinere a


unei mai pronunţate separări a atributelor.

203
Alegerea caracteristicilor de calitate

Se consideră mulţimea de puncte: RP = {rp1, rp2, …,rpkrp} care are krp


elemente distincte, atâtea cât sunt şi atributele analizate. Specialiştii au dreptul de a
înscrie în tabelul 6.14 numai elemente ale mulţimii RP. Fiecare valoare din
mulţimea RP este folosită o singură dată pentru a puncta părerea specialistului
referitor la un atribut.
Punctajele acordate verifică relaţia:

kat krp

∑ notaij = ∑ rpl , cu i = 1..nspec, kat = krp ,


j =1 l =1

în care:
kat – numărul de atribute analizate;
krp – numărul de puncte posibile;
nspec – numărul de specialişti;
notaij – punctul dat de specialistul Spi pentru atributul Atj;

iar pentru validarea lor se definesc regulile:


ƒ nu există element al mulţimii R care să nu fie utilizat;
ƒ nu există două punctaje acordate de acelaşi specialist care să fie egale.
Şi în cazul acestei tehnici de notare a atributelor, se definesc indicatori
agregaţi care să permită ulterior stabilirea unei ierarhii a elementelor analizate.
Aceşti indicatori sunt identici din punctul de vedere al semnificaţiei şi metodei de
calcul cu cei definiţi în exemplele anterioare: sume totalizatoare pe fiecare
caracteristică şi pe total eşantion. Cel mai important dintre indicatori este ponderea,
PAtj cu j = 1..nspec, deoarece valorile obţinute permit determinarea rangului
fiecărui atribut, Atj, în ierarhia finală.

De exemplu, pentru grupul celor trei atribute analizate, fiabilitate,


mentenanţă şi portabilitate, se defineşte mulţimea RP a notelor ca fiind compusă
din:

RP = {7, 12, 20}.

204
Metode statistice în analiza software

Punctele acordate de cei 30 de specialişti sunt trecute în tabelul 5.14:

Punctaje acordate cu mulţime impusă, RP


Tabel 5.14
Specialist Fiabilitate Mentenanţă Portabilitate Total
Sp1 20 12 7 39
Sp2 20 7 12 39
Sp3 12 7 20 39
Sp4 20 7 12 39
Sp5 20 12 7 39
Sp6 12 20 7 39
Sp7 20 12 7 39
Sp8 12 20 7 39
Sp9 20 7 12 39
Sp10 12 20 7 39
Sp11 20 7 12 39
Sp12 20 12 7 39
Sp13 12 20 7 39
Sp14 20 12 7 39
Sp15 20 12 7 39
Sp16 20 7 12 39
Sp17 20 12 7 39
Sp18 20 7 12 39
Sp19 7 20 12 39
Sp20 20 12 7 39
Sp21 20 12 7 39
Sp22 20 7 12 39
Sp23 12 7 20 39
Sp24 20 7 12 39
Sp25 12 20 7 39
Sp26 20 12 7 39
Sp27 20 12 7 39
Sp28 12 20 7 39
Sp29 20 7 12 39
Sp30 20 12 7 39
Total 523 361 286 1170

205
Alegerea caracteristicilor de calitate

Şi în cazul acestei metode de punctare, totalul punctelor date de către


fiecare specialist, nu mai este calculat, pentru că această valoare este cunoscută, ea
fiind constantă şi egală cu suma elementelor mulţimii RP.
Valorile pe care le iau indicatori agregaţi, TAtj, TTotal şi PAtj pentru datele din
tabelul 5.14 sunt descrise în tabelul 5.15.

Valorile indicatorilor
Tabel 5.15
Indicator Fiabilitate Mentenanţă Portabilitate
TAtj 523 361 286
TTotal 1170 1170 1170
PAtj 0,45 0,30 0,24

şi rangul fiecărui atribut în ierarhie este:


` fiabilitate cu rangul 1;
` mentenanţă cu rangul 2;
` portabilitate cu rangul 3.

După cum se observă, ponderile obţinute pentru cele trei atribute analizate
sunt destul de apropiate şi nu depăşesc prin valoarea cea mai mare pragul de 60%.
Doar în cazul tehnicii de acordare a punctelor cu impunerea sumei WPT, poziţia de
lider a atributului fiabilitate în cadrul ierarhiei este mai conturată, acesta având o
pondere de 58%. Acest lucru nu afectează reprezentativitatea rezultatului, a
ierarhiei celor trei atribute, deoarece valorile obţinute pentru ponderile respective
sunt normale. Dovada acestei afirmaţii este formula de calcul a ponderii PAtj:

TAtj
PAtj = , cu j = 1..kat şi variabila kat reprezentând numărul de atribute
TTotal

care împarte numărul total de puncte, TAtj, primite de atributul Atj la numărul total
de puncte acordat de toţi specialiştii pentru toate atributele. Chiar dacă atributul Atj
primeşte din partea tuturor specialiştilor nota maximă posibilă, nu trebuie uitat

206
Metode statistice în analiza software

faptul că şi celelalte atribute sunt punctate. Astfel valoarea lui TTotal, calculată ca:

kat
TTotal = ∑T
j =1
Atj

se măreşte, iar ponderea scade.


De exemplu, în cazul tehnicii acordării de puncte dintr-o mulţime impusă,
pentru datele din tabelul 6.2.3 valoarea maximă posibilă a lui TAtj este 600. Cum
valoarea lui TTotal este aceeaşi, 1170, indiferent de combinaţiile posibile de punctare
a celor trei atribute, valoarea maximă posibilă a lui PAtj este 0,51.
Se alege pentru calculul ponderii P’Atj utilizarea formulei:

TAtj
P ' Atj = , cu j = 1..kat
TAtj[max]

unde T Aj[max] reprezintă punctajul pe care îl are atributul Atj primind din partea
fiecărui specialist nota maximă;
În acest caz valorile maxime ale ponderii sunt mult mai apropiate de
valoarea 1.

Tehnicile de punctare descrise în acest capitol sunt prezentate în ordinea


crescătoare a gradului de limitare şi controlare impus specialistului, Spi, în procesul
acordării notelor. Cu cât acest grad este mai mare, libertatea specialistului de a-şi
exprima părerea în legătură cu importanţa componentelor respective nu este
îngrădită. Dar, fiecare individ îşi exprimă opinia într-un mod care conduce în final
la un set omogen de note.
În cazul primei tehnici, specialistul dă note din intervalul [a,b], fără a i se
impune corelaţia dintre ele. Astfel, există riscul apariţiei de situaţii particulare
descrise de acordarea unor note apropiate pentru majoritatea componentelor cu
excepţia uneia, care este punctată cu valori aflate la cealaltă extremă a intervalului.
Dacă, întreaga colectivitate de specialişti este caracterizată de tendinţa aceasta, nu
există implicaţii asupra omogenităţii eşantionului. Pentru un număr mic al acestor
cazuri, este afectată reprezentativitatea rezultatelor finale. De asemenea,
omogenitatea colectivităţii din punctul de vedere al totalului de puncte acordate de

207
Alegerea caracteristicilor de calitate

fiecare specialist este afectată de situaţii în care unii indivizi dau numai note mari
sau numai note mici.
Tehnica acordării de puncte corelate diminuează apariţia situaţiilor
particulare aferente metodei precedente. Impunându-se o legătură strictă între note,
suma lor este constantă pentru toţi specialiştii, diferenţa dintre ele este controlată,
nivelurile lor sunt corelate şi întreaga colectivitate a specialiştilor este omogenă din
acest punct de vedere. De exemplu, un individ nu acordă pentru toate atributele de
calitate numai note mari. El trebuie să le coreleze astfel încât suma lor să fie egală
cu pragul impus.
Ultima tehnică, în care mulţimea punctelor este impusă, reprezintă cazul de
omogenitate maximă al setului de note. Acest lucru se datorează faptului că notele
sunt deja stabilite de către cei care conduc analiza, specialiştii urmând doar să le
acorde.
Este importantă utilizarea uniformă a metodelor de selecţie a specialiştilor
şi acordare de puncte pentru a obţine date comparabile.

În situaţia în care acelaşi set de caracteristici At1, At2, …, Atzn este punctat
pe parcursul unor analize software distincte se impune corelarea rezultatelor prin
evidenţierea unei metode de agregare a punctajelor. Astfel, este posibilă
compararea rezultatelor sau realizarea unei analize pe un set mai mare de date.
Premisa dezvoltării unei metode de agregare a punctajelor constă în
unicitatea metodei de punctare utilizată în toate analizele de alegere a
caracteristicilor de calitate.
Se consideră analizele ANA1, ANA2, …, ANAnana în care:
™ sunt acordate punctaje prin aceeaşi metodă setului At1, At2, …, Atzn;
™ colectivităţile de specialişti sunt construite pe baza de criterii de
omogenitate identice;
™ numărul de specialişti este acelaşi; în caz contrar colectivităţile de
specialişti sunt reduse la numărul minim al acestora.
În urma reunirii tuturor datelor se obţine pentru fiecare caracteristică Atj,
cu j = 1..zn, tabelul 5.16.

208
Metode statistice în analiza software

Punctajele acordate caracteristicii sau atributului Atj în analize diferite


Tabel 5.16
Punctaje atribut Atj
Specialist Analiza Analiza … Analiza … Analiza
ANA1 ANA2 ANAk ANAnana
1 2
ST1 ay 1j ay 1j … ayk1j … ayzn1j
1 2
ST2 ay 2j ay 2j … ayk2j … ayzn2j
… … … … … … …
1 2
STi ay 2j ay ij … aykij … ayznij
… … … … … … …
1 2
STnst ay nstj ay nstj … ayknstj … ayznnstj

în care:
nst – numărul de specialişti al tuturor colectivităţilor; în cazul în care
dimensiunile acestora sunt diferite, nst reprezintă numărul
minimă de specialişti;
STi – specialistul al i-lea din colectivităţile tuturor analizelor;
Atj – atributul j din setul de caracteristici At1, At2, …, Atzn;
zn – numărul de analize ale căror punctaje se agregă;
ANAk – analiza k;
aykij – punctajul acordat atributului Atj de către specialistul STi în
cadrul analizei ANAk.

Dacă punctajele sunt obţinute folosind metoda acordării de punctaje


independente sau a acordării de puncte corelate rezultă că fiecare analiză ANAk
are asociat intervalul [akANA,bkANA] din care fac parte punctele acordate.
Aducerea punctajelor la o formă comună care să faciliteze agregarea
acestora într-un singur set de puncte ay’1j, ay’2j, …, ay’ij, …, ay’nsttj se face
utilizând relaţia:

ayijk
ay *k ij = *100, cu i = 1..nst, j = 1..zn, k = 1..nana
k
bANA − a ANA
k

209
Alegerea caracteristicilor de calitate

în care:
akANA – limita inferioară a intervalului din care se acordă puncte în
cadrul analizei ANAk;
bkANA – limita superioară a intervalului din care se acordă puncte în
cadrul analizei ANAk;
zn – numărul de atribute;
nst – numărul de specialişti ai fiecărei colectivitate;
nana – numărul de analize;
aykij – punctajul acordat atributului Atj de către specialistul STi în
cadrul analizei ANAk;
ay*kij – punctajul aykij adus la forma comună.

În final prin reunirea tuturor punctajelor ay* kij cu k = 1…nana, aduse la


forma comună se obţine setul ay’1j, ay’2j, …, ay’ij, …, ay’nsttj, cu:

nsttj = nana * nst


unde:
nst – numărul de specialişti ai fiecărei colectivitate;
nana – numărul de analize.

În cazul utilizării metodei de acordare de puncte dintr-o mulţime impusă se


prelucrează fiecare mulţime de puncte RPk asociată analizei ANAk prin ordonarea
crescătoare a elementelor sale.
Cum fiecare dintre mulţimile de puncte RP1, RP2, …, RPnana are acelaşi
număr de elemente distincte krp, din premisa realizării agregării, se fac corelaţii
între punctajele analizelor. Forma comună a punctajelor este definită de către
analist prin:
¾ crearea unei mulţimi noi de puncte RP’ cu nana elemente;
¾ selectare unei mulţimi RPi existente, ale cărei elemente conduc la
obţinerea de separări pronunţate ale atributelor.

Pentru a aduce punctajele acordate la forma comună se corelează poziţiile


elementelor din mulţimile ordonate crescător. Considerând mulţimile de punctaje,
RPk a analizei ANAk şi RP’ comună, cu elementele:

RPk = { rpk1, rpk2, …, rpkkrp}, cu rpk1 < rpk2 < … < rpkkrp şi k = 1…nana
RP’ = {rp’1, rp’2, …, rp’krp} cu rp’1 < rp’2 < … < rp’krp

210
Metode statistice în analiza software

operaţia de agregare implică înlocuirea elementului rpki ∈ RPk cu corespondentul


său din mulţimea RP, rp’i.

Prin agregarea punctajelor acordate în cadrul unor analize diferite prin:


ƒ momentul când au avut loc;
ƒ colectivitatea de specialişti.

Se obţin analize complexe şi de mari dimensiuni, pe baza cărora se obţin


rezultate mult mai semnificative decât cele obţinute separat.

5.3 Stabilitatea ponderilor

Sistemului de atribute analizat îi corespund ponderi care se constituie într-


un sistem de ponderi. Valorile din aceste sisteme aparţin unor analize diferite prin
colectivităţile de specialişti care au dat note, dar identice prin componentele
sistemului de atribute şi prin metodologia. Fiind comparabile, rezultatele finale
sunt agregate într-un cadru nou, a cărui analiză dă valoarea medie a variaţiei
ponderilor pentru fiecare atribut în parte.

Dacă se consideră:
Š hg colectivităţi reprezentative şi omogene de specialişti, Gsp1, Gsp2,
…,Gsphg;

Š setul de mat atribute At1, At2, …, Atmat, care au fost analizate de către
mai multe colectivităţi de specialişti în studii separate;

Š ponderile calculate pgij, cu i = 1..hg şi j = 1..mat, reprezentând ponderea


obţinută pentru caracteristica Atj de către colectivitatea Gspi;

se analizează stabilitatea acestora, folosind calcule bazate pe medii corectate. În


acest scop se construieşte tabelul 5.17.

211
Alegerea caracteristicilor de calitate

Setul de date necesar analizei stabilităţii ponderilor

Tabel 5.17
Caracteristică At1 … Atj … Atmat
Colectivitate de
specialişti
Gsp1 pg11 … pg1j … pg1mat
Gsp2 pg21 … pg2j … pg2mat
… … … … … …
Gspi pgi1 … pgij … pgimat
… … … … … …
Gsphg pgh1 … pghj … pghmat

Pentru ca rezultatele obţinute să fie semnificative, sunt necesare seturile de


ponderi de la minim 3 colectivităţi de specialişti.
Metoda bazată pe medii corectate este asemănătoare cu cea aplicată în
procesul de selecţie a specialiştilor, dar este simplificată prin stabilirea unei singure
formule de calcul a valorii ponderii medii corectate, pg *j :

hg

∑ pg ij − pg min[ j ] − pg max[ j ]
pg =
*
j
i =1
, cu hg > 2 şi j = 1..mat
hg − 2

în care:
hg – numărul de grupuri de specialişti;
mat – numărul de atribute Atj analizate;
pgij – ponderea obţinută pentru caracteristica Atj de către
colectivitatea Gspi
pgmin[j] – valoarea minimă înregistrată de ponderea atributului Atj în cele
hg grupuri de specialişti;
pgmax[j] – valoarea maximă înregistrată de ponderea atributului Atj în cele
hg grupuri de specialişti;

212
Metode statistice în analiza software

Algoritmul constă în parcurgerea etapelor:


” validarea datelor din tabelul 5.17; acestea trebuie să fie cuprinse în
intervalul (0,1), iar suma lor pentru fiecare colectivitate Gspi să fie egală
cu valoarea1:
mat

∑ pg
j =1
ij = 1, cu i = 1..hg

” stabilirea pentru fiecare atribut, Atj cu j = 1..mat, a valorii minime şi


maxime, pe care le au ponderile sale în toate cele h analize. Pentru
atributul Atj aceste valori sunt notate cu pg min[ j ] şi respectiv pg max[ j ] ;
” calculul valorii medii corectate a ponderii atributului Atj în totalitatea
setului de atribute, utilizând formula de calcul:
hg

∑ pg ij − pg min[ j ] − pg max[ j ]
pg *j = i =1
, cu hg > 2 şi j = 1..mat
hg − 2
Motivul definirii acestui indicator, ponderea medie corectată, derivă din
obiectivul final al alegerii caracteristicilor de calitate, stabilirea ierarhiei acestora,
pentru că sintetizează într-o singură valoarea rezultatele recente ale mai multor
analize sau variaţia în timp importanţei acordate caracteristicii respective.
Este important pentru reprezentativitatea rezultatelor ca:
¾ periodic să se reevalueze ponderile pentru a ţine pasul cu noile
tehnologii şi noile exigenţe ale utilizatorilor;
¾ ierarhiile caracteristicilor să fie realizate de colectivităţi de specialişti
din domenii IT diferite.

Pentru a exemplifica metoda stabilirii ponderii medii corectate se


consideră:
` colectivităţile omogene de specialişti Gsp1, Gsp2, Gsp3, Gsp4, Gsp5;
` atributele analizate:
ƒ At1 – Eficienţa;
ƒ At2 – Funcţionalitatea;
ƒ At3 – Mentenanţa;
ƒ At4 – Portabilitatea;
ƒ At5 – Fiabilitatea;
ƒ At6 – Utilizabilitatea.

213
Alegerea caracteristicilor de calitate

Tehnica de punctare utilizată de specialişti este acordarea de puncte din


mulţimea impusă RP, care este compusă din elementele:

RP = {1, 3, 7, 8, 13, 20}.

Datele obţinute pentru cele şase atribute sunt centralizate în tabele 5.18, 5.19
şi 5.20.

Punctele acordate atributelor de către colectivităţile de specialişti Gsp1 şi Gsp2


Tabel 5.18
Colectivitate Gsp1 Colectivitate Gsp2
Specialist At1 At2 At3 At4 At5 At6 At1 At2 At3 At4 At5 At6 Total

Sp1 13 20 3 1 7 8 7 13 1 20 3 8 52
Sp2 20 13 1 7 8 3 7 8 1 13 20 3 52
Sp3 8 20 1 13 7 3 8 20 3 7 13 1 52
Sp4 8 13 3 20 7 1 8 13 1 20 7 3 52
Sp5 7 20 13 8 3 1 13 20 8 3 7 1 52
Sp6 13 8 1 3 20 7 8 1 3 13 20 7 52
Sp7 13 8 3 20 7 1 1 13 7 8 20 3 52
Sp8 20 7 1 13 8 3 20 3 1 8 13 7 52
Sp9 20 13 1 8 3 7 20 3 7 1 8 3 52
Sp10 20 13 1 8 7 3 20 13 1 7 8 3 52
Sp11 20 13 1 8 7 3 20 8 7 3 13 1 52
Sp12 20 13 8 3 1 7 20 7 8 3 1 13 52
Sp13 7 8 1 13 3 20 20 13 3 1 7 8 52
Sp14 20 13 3 7 1 8 13 20 8 1 3 7 52
Sp15 20 13 3 8 7 1 20 8 1 13 7 3 52
Sp16 7 13 1 3 20 8 8 20 7 3 13 1 52
Sp17 20 13 1 3 7 8 20 7 1 3 13 8 52
Sp18 20 13 7 3 8 1 20 13 8 1 3 7 52
Sp19 20 7 3 13 8 1 20 13 7 1 8 3 52
Sp20 20 8 13 7 1 3 20 8 13 7 3 1 52
Sp21 20 8 3 1 13 7 7 8 3 13 1 20 52
Sp22 8 20 3 1 7 13 8 20 13 1 3 7 52
Sp23 20 3 1 13 8 7 7 13 1 8 20 3 52
Sp24 20 7 13 8 3 1 13 20 1 8 7 3 52
Sp25 13 20 1 8 7 3 13 20 1 8 7 3 52
Sp26 20 8 1 13 7 3 13 1 3 20 8 7 52
Sp27 8 7 1 13 3 20 7 8 13 20 3 1 52
Sp28 20 13 1 8 7 3 20 13 7 8 3 1 52
Sp29 13 20 3 7 8 1 7 13 1 8 3 20 52
Sp30 13 8 1 7 20 3 20 13 1 3 8 7 52

Total 471 363 97 248 223 158 408 353 140 223 253 163 1560

PAtj 0,30 0,23 0,07 0,16 0,14 0,10 0,26 0,23 0,09 0,15 0,16 0,11 1

214
Metode statistice în analiza software

Punctele acordate atributelor de către colectivităţile de specialişti Gsp3 şi Gsp4

Tabel 5.19
Colectivitate Gsp3 Colectivitate Gsp4
Specialist At1 At2 At3 At4 At5 At6 At1 At2 At3 At4 At5 At6 Total

Sp1 20 8 3 13 7 1 13 1 7 8 3 20 52
Sp2 13 20 1 7 3 8 20 8 7 13 3 1 52
Sp3 3 13 1 8 7 20 20 13 1 3 8 7 52
Sp4 3 20 1 8 7 13 20 13 7 8 3 1 52
Sp5 20 8 1 7 13 3 20 13 1 3 8 7 52
Sp6 13 20 1 8 3 7 13 20 8 1 3 7 52
Sp7 20 13 1 7 3 8 20 8 3 1 13 7 52
Sp8 20 13 7 3 8 1 13 20 1 7 3 8 52
Sp9 8 20 3 7 13 1 20 13 7 3 8 1 52
Sp10 20 8 3 13 7 1 13 20 3 8 7 1 52
Sp11 13 20 8 3 7 1 13 20 1 8 7 3 52
Sp12 20 13 8 7 3 1 13 20 3 1 8 7 52
Sp13 13 20 1 8 7 3 13 20 1 7 3 8 52
Sp14 20 13 1 7 3 8 7 20 1 13 8 3 52
Sp15 13 20 1 8 7 3 13 20 7 1 8 3 52
Sp16 20 13 3 1 7 8 13 20 3 1 8 7 52
Sp17 20 7 3 8 1 13 13 20 7 1 8 3 52
Sp18 7 20 3 1 8 13 13 8 7 3 1 20 52
Sp19 20 8 3 1 13 7 3 7 8 1 20 13 52
Sp20 20 7 1 8 3 13 8 13 7 1 3 20 52
Sp21 20 13 8 7 3 1 20 13 1 3 8 7 52
Sp22 20 8 3 1 7 13 20 13 7 3 8 1 52
Sp23 13 20 1 7 3 8 13 20 1 8 3 7 52
Sp24 8 20 3 7 1 13 20 13 8 3 7 1 52
Sp25 8 20 7 3 1 13 20 8 7 13 3 1 52
Sp26 8 20 7 3 1 13 20 7 3 13 8 1 52
Sp27 13 20 3 8 1 7 13 20 1 3 7 8 52
Sp28 20 8 3 1 7 13 7 8 1 13 3 20 52
Sp29 20 7 3 1 13 8 8 20 3 1 13 7 52
Sp30 20 13 1 3 8 7 1 3 20 8 7 13 52

Total 456 433 93 174 175 229 423 422 142 160 200 213 1560

PAtj 0,30 0,28 0,06 0,11 0,11 0,14 0,27 0,27 0,09 0,10 0,13 0,14 1

215
Alegerea caracteristicilor de calitate

Punctele acordate atributelor de către colectivitatea de specialişti Gsp5

Tabel 5.20
Colectivitate Gsp5
Specialist At1 At2 At3 At4 At5 At6 Total

Sp1 13 20 3 7 8 1 52
Sp2 13 20 8 3 7 1 52
Sp3 20 8 7 13 3 1 52
Sp4 8 20 13 7 3 1 52
Sp5 20 8 3 7 13 1 52
Sp6 20 8 1 3 13 7 52
Sp7 20 1 7 13 8 3 52
Sp8 13 8 1 7 20 3 52
Sp9 20 13 7 8 3 1 52
Sp10 13 20 3 8 7 1 52
Sp11 20 3 8 1 13 7 52
Sp12 13 20 1 7 8 3 52
Sp13 20 7 3 1 8 13 52
Sp14 20 13 7 1 3 8 52
Sp15 13 20 1 7 8 3 52
Sp16 20 13 3 1 7 8 52
Sp17 20 7 3 8 1 13 52
Sp18 7 20 3 1 8 13 52
Sp19 20 8 3 1 13 7 52
Sp20 20 7 1 8 3 13 52
Sp21 20 13 8 7 3 1 52
Sp22 20 8 3 1 7 13 52
Sp23 13 20 1 7 3 8 52
Sp24 8 20 3 7 1 13 52
Sp25 8 20 7 3 1 13 52
Sp26 8 20 7 3 1 13 52
Sp27 13 20 3 8 1 7 52
Sp28 20 8 3 1 7 13 52
Sp29 20 7 3 1 13 8 52
Sp30 20 13 1 3 8 7 52

Total 483 393 125 153 202 204 1560

PAtj 0,31 0,25 0,08 0,10 0,13 0,13 1

216
Metode statistice în analiza software

Valorile ponderilor PAtj cu j = 1..5, din tabelul 5.21, sunt prelucrate în


vederea calculării ponderii medii corectate pentru fiecare atribut în parte.

Valorile ponderilor obţinute, pentru cele şase atribute

Tabel 5.21
Atribute
Colectivităţi At1 At2 At3 At4 At5 At6 Total
Gsp1 0,30 0,23 0,07 0,16 0,14 0,10 1
Gsp2 0,26 0,23 0,09 0,15 0,16 0,11 1
Gsp3 0,30 0,28 0,06 0,11 0,11 0,14 1
Gsp4 0,27 0,27 0,09 0,10 0,13 0,14 1
Gsp5 0,31 0,25 0,08 0,10 0,13 0,13 1

Odată determinate pentru fiecare dintre atribute ponderea maximă şi respectiv


minimă se obţin valorile următoare:

Valoarea ponderii medii corectate

Tabel 5.22
At1 At2 At3 At4 At5 At6
pmin[ j ] 0,26 0,23 0,06 0,1 0,11 0,1
pmax[ j ] 0,31 0,28 0,09 0,16 0,16 0,14

p *j 0,29 0,25 0,08 0,12 0,134 0,126 1

Deci, ierarhia celor şase caracteristici este:


rang 1: Eficienţa;
rang 2: Funcţionalitatea;
rang 3: Fiabilitatea;
rang 4: Utilizabilitatea;
rang 5: Portabilitatea;
rang 6: Mentenanţa;

217
Alegerea caracteristicilor de calitate

După cum se observă, atributele care au obţinut în cele 5 analize ponderi


mari şi deci locuri înalte în ierarhie îşi menţin poziţia. Cu toate acestea, utilitatea
utilizării ponderii medii stabileşte clar poziţia acelor perechi de atribute cu ponderi
foarte apropiate şi ale căror ranguri variază, interschimbându-se, în funcţie de
colectivitatea de specialişti chestionată. În exemplul descris anterior, situaţia
este întâlnită pentru atributele At4, At5 şi At6, ale căror ranguri se modifică de mai
multe ori.

5.4 Construirea de liste de atribute

Procedeele de alegere a caracteristicilor de calitate descrise anterior


presupun definirea clară a obiectivelor urmărite şi a grupului de atribute analizat.
Acest lucru are influenţe negative asupra reprezentativităţii rezultatelor, pentru că
de multe ori nu se includ acele atribute care sunt considerate neimportante de cei ce
realizează studiul. Acestea contribuie la descrierea completă a produsului software
deşi îl caracterizează într-o mică măsură.
Această metodă permite specialiştilor să aleagă dintr-o mulţime grupul
celor mai relevante atribute şi totodată să le ierarhizeze. Etapele parcurse sunt:
¾ se consideră grupul de nsps specialişti Ssps1, Ssps2, …, Sspsnsps
considerat colectiv omogen şi li se propune să întocmească o listă de
atribute sau factori, după importanţa pe care o consideră în raport cu un
obiectiv dat;

¾ se construieşte mulţimea VCO, considerată vocabularul studiului, din


cele mvc cuvinte ce definesc factorii sau atributele din care se alcătuiesc
listele;

¾ fiecare specialist Sspsi defineşte lista Listai de forma:

< Vcoi1 , Vcoi 2 ,...,Vcoij ,...,VcoiLi > , cu Vcoij ∈ VCO si 0 < L i ≤ mvc

ce conţine Li cuvinte din vocabularul VCO ordonate crescător după


importanţa. Pentru cuvântul Vcoij, j reprezintă rangul în lista
specialistului Sspsi, acesta luând valori de la 1 la Li;

218
Metode statistice în analiza software

¾ pe baza datelor din cele nsps liste Listai, cu i = 1..nsps, se construieşte


tabelul 5.23:

Listele celor nsps specialişti


Tabel 5.23
Cuvânt Vco1 Vco2 … Vcoj … Vcomvc
Specialist
Ssps1 rv11 rv12 … rv1j … rv1mvc
Ssps2 rv21 rv22 … rv2j … rv2mvc
… … … … … … …
Sspsi rvi1 rvi2 … rvij … rvimvc
… … … … … … …
Sspsnsps rvnsps1 rvnsps2 … rvnspsj … rvnspsmvc

unde:
nsps – numărul de specialişti;
mvc – numărul de atribute;
Sspsi – specialist care creează lista de cuvinte Listai;
rvij – reprezintă rangul cuvântului Vcoj din mulţimea V, ce a fost
acordat de către specialistul Sspsi prin poziţionarea sa pe poziţia
rvij în lista Listai.

Metoda nu obligă specialiştii să folosească toate cuvintele din mulţimea


VCO, doar pe cele considerate importante; de aceea, elemente tabelului care au
valoarea 0, reprezintă cuvintele neutilizate în lista respectivă;
` pe baza datelor din tabelul anterior se definesc indicatorii agregaţi:
frecvenţa de apariţie a cuvântului Vcoj în listele specialiştilor, FVcoj, şi
rangul final al acestui cuvânt RVcj. Frecvenţa de apariţie se calculează
utilizând formula:

FVcoj = numarul elementelor rij ≠ 0, cu i = 1..nsps

şi reprezintă numărul total al apariţiilor cuvântului Vcoj în listele


specialiştilor; rangul final al cuvântului Vcoj reprezintă nivelul

219
Alegerea caracteristicilor de calitate

totalizator al elementelor rvij, cu i = 1..nsps, obţinut prin:

nsps
RvVcj = ∑ rvij , cu j = 1..mvc
i =1

` se defineşte indicatorul agregat, RVcj , ce descrie rangul mediu pe care


caracteristica definită de cuvântul Vcoj îl are în finalul analizei. Acesta
este determinat pentru fiecare cuvânt, Vcoj, pe baza valorilor frecvenţei
de apariţie, FVcoj, şi a rangului final, RVcoj, astfel:

RVcoj
RVcoj = , cu FVcoj ≠ 0
FVcoj

Prin această abordare se conservă rangul în ierarhie a acelor caracteristici


aflate pe primele poziţii în majoritatea listelor Listai, cu i = 1..nsps. Dacă cuvintele
Vcoh şi Vcok au valori egale pentru rangurilor finale, RVcoh = RVcok, dar frecvenţe de
apariţie diferite, FVcoh ≠ FVcok , atunci, cuvântul cu frecvenţa de apariţie mai mare
este cuvântul care are în listele specialiştilor cele mai mari ranguri. Motivul este
simplu: sunt necesare mai multe valori mici pentru a ajunge la un nivel totalizator
decât valori mari. De aceea, valorile obţinute prin formula precedentă reprezintă o
imagine apropiată de realitate a rangului cuvântului în ierarhia elementelor
mulţimii VCO, şi cu cât acestea sunt mai apropiate de valoarea 1 denotă un rang
ridicat.
Cuvintele care nu se găsesc în nici o listă Lvi, cu frecvenţa de apariţie
egală cu valoarea 0, nu mai sunt luate în considerare începând cu această etapă;
Š pentru fiecare cuvânt Vcoj care apare cel puţin odată în listele
specialiştilor se determină valoarea frecvenţe relative de apariţie,
raportând frecvenţa sa la nivelul total al apariţiei cuvintelor în cele n
liste:
FVcoj
rel
FVcoj = mvc
, cu j = 1..mvc
∑F
k =1
Vcok

220
Metode statistice în analiza software

Š se construieşte o listă reuniune cu poziţionarea cuvintelor în ordinea


crescătoare a valorii rangului mediu. Se obţine lista celor p cuvinte care
sunt utilizate în liste:
Vco1, Vco2, …, Vcok, …, Vcoj, …, Vcop cu p ≤ mvc şi RVcok < RVcoj ;

Š se extrag din lista reuniune acele xvoc cuvinte a căror sumă totală a
nivelurilor frecvenţelor relative acoperă cel puţin 95% din total:

xv
0,95 ≤ ∑ FVcj
rel
≤1
j =1

Această listă este folosită ulterior în dezvoltarea de analize statistice şi în


construirea de modele.

De exemplu, se consideră mulţimea VCO formată din şase cuvinte ce


reprezintă caracteristici de calitate definite de standardul ISO/IEC 9126:

VCO = {funcţionalitate, fiabilitate, utilizabilitate, eficienţă, mentenabilitate,


portabilitate}

Se formează un grup omogen ce cuprinde zece specialişti. Acestora li se


cere să construiască câte o listă care să conţină cuvinte din mulţimea VC şi care
să fie ordonate în ordinea descrescătoare a importanţei pe care ei o
acordă caracteristicilor reprezentate de acestea. Listele obţinute sunt descrise în
tabelul 5.24.

Poziţia cuvintelor în listele create de cei zece specialişti


Tabel 5.24
Specialist Utilizabilitate Fiabilitate Funcţionalitate Eficienţă Mentenabilitate Portabilitate
S1 - 2 1 3 - -
S2 3 4 2 1 - -
S3 4 2 1 3 - 5
S4 4 2 1 3 - -
S5 4 3 2 1 6 5
S6 4 2 1 3 - 5
S7 4 2 1 3 - 5
S8 - 1 2 3 - -
S9 3 4 1 2 6 5
S10 - 3 1 2 - -

221
Alegerea caracteristicilor de calitate

Prin parcurgerea etapelor metodei de prelucrare a datelor ce au fost


descrise anterior, s-au obţinut rezultatele din tabelul 5.25.

Valorile indicatorilor

Tabel 5.25
Utilizabilitate Fiabilitate Funcţionalitate Eficienţă Mentenabilitate Portabilitate

FVj 7 10 10 10 2 5
RVj 26 25 13 24 12 25

RVj 3,7 2,5 1,3 2,4 6 5

FVjrel 0,16 0,23 0,23 0,23 0,04 0,11

În acest caz, lista reuniune este de forma:

Funcţionalitate, Eficienţă, Fiabilitate, Utilizabilitate, Portabilitate, Mentenabilitate;


0,23 0,23 0,23 0,16 0,11 0,04

0,46

0,69

0,85

0,96

iar însumarea nivelurilor frecvenţelor acestor cuvinte până la atingerea sau


depăşirea pragului de 95% conduce la crearea listei: Funcţionalitate, Eficienţă,
Fiabilitate, Utilizabilitate, Portabilitate, care reprezintă 96% din totalul cuvintelor
folosite.

222
Metode statistice în analiza software

5.5 Concluzii

Decizia de a efectua un studiu comparativ al unui lot de produse software


trebuie să fie argumentată de:
™ obiectivul urmărit;
™ implicaţiile rezultatelor asupra ciclului de viaţă al produsului sau asupra
deciziilor viitoare ale utilizatorului.

Alegerea caracteristicilor prin prisma cărora sunt măsurate şi analizate


produsele trebuie făcută cu grijă pentru a nu afecta reprezentativitatea rezultatelor
şi în primul rând pentru că produsele software din momentul în care intră în aceste
analize nu mai sunt privite ca entităţi diferite, autonome ci sunt descrise şi reduse la
acest set de caracteristici comune.
Metodele descrise în acest capitol au avut ca subiecţi colectivităţi omogene
de specialişti, sunt utilizabile şi în analize ce se realizeze pe colectivităţi de
utilizatori.

223
6
METRICI SOFTWARE

6.1 Definirea metricei software

Metrica software este un model matematic dezvoltat în jurul unei ecuaţii de


forma:

y = f( x )

Un model matematic cuprinde una sau mai multe ecuaţii, inecuaţii şi are
una sau mai multe funcţii obiectiv, iar rolul lui este de a descrie starea sistemului
asociat. Metrica software are rolul de a măsura o anumită caracteristică a unui
produs program, luând în calcul factorii ce influenţează nivelul caracteristicii
măsurate. Aplicându-se tuturor produselor software dintr-un lot omogen, metrica
devine instrumentul prin intermediul căruia se efectuează clasificări şi ierarhizări
ale produselor software. O metrică software este funcţie obiectiv a modelului
matematic căruia îi aparţine, dacă prin aplicarea ei se are în vedere maximizarea
sau minimizarea nivelului caracteristicii cercetate în funcţie de toţi factorii de
influenţă:

f(X) < α sau f(X) > β

224
Metode statistice în analiza software

unde:
X – vectorul factorilor ce influenţează caracteristica software
măsurată;
α şi β – niveluri limită admise.

Metrica software este restricţie a modelului matematic dacă plasează


nivelul măsurat al caracteristicii într-un interval definit de:

β < f(X) < α

În timp ce modelul matematic are ca obiectiv definirea structurii software,


metrica creează condiţiile care permit compararea şi are caracter normativ.
Metricile software au rolul de a realiza:
Funcţia de măsurare. Cu siguranţă cea mai importantă funcţie a metricilor
software, măsurarea reprezintă obiectivul principal în jurul căruia sunt dezvoltate
aceste instrumente. Produsele software aparţin unui domeniu strict obiectiv, în care
orice realizare are fundamente matematice şi caracteristici descrise de valori
numerice, deci care sunt măsurabile şi reprezentate prin numere. La baza tuturor
indicatorilor şi chiar la baza sistemului de caracteristici de calitate definit de
standardul IEEE se găsesc datele primare, obţinute prin simplele înregistrări ale
nivelurilor caracteristicilor software: numărul de linii sursă, numărul de rulări,
numărul de erori, numărul de instrucţiuni, numărul de cicluri maşină. Cum în
ansamblul analizei lotului de produse software aceste date sunt considerate de bază,
ele sunt supuse unor prelucrări ulterioare prin introducerea de metrici agregate,
adâncind astfel cercetarea. Rezultatul utilizării unei metrici este exprimat în unităţi
concrete de măsură şi are o poziţie precisă în sistemul de metrici software prin
intermediul căruia este descris un lot de program.
Funcţia de comparare. Scopul final al utilizării metricilor software este de
a analiza din punctul de vedere al unei caracteristici software un program şi de a-l
compara cu el însuşi , încadrându-l într-o categorie definită de programe, sau de a-l
compara cu alte produse software, plasându-l pe o anumită treaptă din ierarhia
software. Comparare se rezumă la realizarea diferenţei între doi termeni exprimaţi
în aceeaşi unitate de măsură cu verificarea poziţiei rezultatului faţă de 0, sau la
calcularea raportului, cu verificarea poziţiei rezultatului faţă de 1.
Funcţia de analiză. Rezultă din dorinţa de a da semnificaţie rezultatelor
numerice obţinute prin aplicarea modelelor matematice asociate metricilor. În
finalul analizei, pe baza numerelor obţinute, produsului software i se conferă
225
Metrici software

calităţi ca fiabilitate, economie de timp, economie de resurse, calităţi care sunt mult
mai puternice şi mai semnificative decât simplele valori numerice din care sunt
deduse. De asemenea, funcţia de analiză este rezultatul dorinţei de a înţelege şi
descompune metricile software complexe în termeni primari, ceea ce implică
analiza relaţiilor existente între părţi componente şi întreg, între variabilele
exogene şi cele endogene din fiecare model. Nu trebuie ignorată nici contribuţia pe
care o are la generarea unui lot de programe omogen, prin găsirea şi eliminarea
cazurilor particulare sau excesive.
Funcţia de sinteză. În situaţia cercetării pe grupe generale de produse
software, de exemplu analiza statistica a programelor scrise în limbajul C++ şi
Pascal, este imposibilă verificarea tuturor programelor scrise într-unul din limbaje
şi se construiesc loturi omogene cu număr optim de programe. Valorile măsurate
prin utilizarea diferitelor metrici sintetizează într-o singură expresie numerică ceea
ce este esenţial şi tipic pentru întreaga categorie de programe.
Funcţia de estimare. Metrica software, asemenea indicatorilor statistici,
este folosită pentru măsurarea tendinţei de creştere\scădere a nivelului
caracteristicii software cercetate, plecându-se de la ipoteza că variabilele exogene
sunt aceleaşi.
Funcţia de verificare. Rezultatele obţinute aplicând metrica software sunt
totodată utilizate pentru a confirma şi întări sau pentru a infirma concluziile
obţinute prin alte metode. Utilizarea unei metrici software în practică implică
ipoteza validării acesteia şi asigurarea independenţei rezultatelor. În cazul
caracteristicilor complexe a căror studiere necesită matrice agregate, verificarea se
realizează prin descompunerea fiecărei caracteristici în componente primare şi
analiza separată a acestora.

Definirea de metrici software revine la a construi modele, indicatori care


pornesc de la mărimi ce se măsoară cu obiectivitate (număr linii sursă, număr erori,
număr variabile, număr instrucţiuni de Intrare/Ieşire, număr funcţii, număr
parametrii transmişi, număr nivelurile ale arborelui asociat).
Practica arată că există o strânsă legătură între comportamentul efectiv al
unui program şi structura lui exprimată prin mărimi ce se determină exact, obiectiv.
Indicatorii, metricile software, se construiesc în aşa fel încât valorile
obţinute caracterizează corect produsul. Astfel, funcţia:

f(x) : R → [0,1]

226
Metode statistice în analiza software

este pusă în corespondenţă cu aprecieri asupra comportamentului unui program


astfel:
ƒ dacă f(x) = 0 programul este lipsit de calitate şi există riscuri pentru
utilizator în cazul folosirii;
ƒ dacă f(x) = 1 programul are un nivel de calitate deosebit, deci
utilizatorul are încredere în rezultatele obţinute la execuţia
programului;
ƒ dacă α ≤ f(x) < 1, unde α este o valoare numită prag de acceptare,
programul este implementabil, riscurile de obţinere a rezultatelor
eronate fiind minore;
ƒ dacă 0 < f(x) < α, frecvenţa cu care se obţin rezultate incorecte este atât
de mare încât eforturile de a utiliza un astfel de program sunt
ineficiente.

O metrica de acest tip are rolul de a poziţiona un program într-una din două
categorii: program acceptabil a fi în uz curent şi program imposibil de utilizat.
Considerându-se mulţimea programelor P={Prog1,Prog2,...,Progm} şi
construind un indicator de performanţă sau de caracterizare

f(x):P→N

programele sunt comparabile.


Un exemplu de metrică este lungimea fişierului executabil măsurat ca
număr de bytes. Comparaţiile sunt directe:
¾ dacă f(Pi) > f(Pj) se spune că programul Pi este mai mare sau mai lung
sau că ocupă spaţiu de stocare (memorie externă) mai mare decât
programul Pj;
¾ dacă f(Pi, Pj) > 100, unde:
Pi
f(Pi, Pj) = *100
Pj

rezultă că programul Pi este mai lung decât programul Pj.


¾ dacă f(Pi, Pj) < 100, unde:
Pi
f(Pi, Pj) = *100
Pj
rezultă că programul Pi este mai scurt decât programul Pj.
227
Metrici software

Spre deosebire de situaţiile ideale în care loturile de produse software sunt


omogene, este dificil de construit aceste mulţimi omogene, condiţie esenţială
pentru realizarea de comparaţii care să aibă sens. De aceea, metricile software sunt
concepute astfel încât programul să fie raportat prin el însuşi la modele ideale,
adică:
f(x)=1 sau f(x)=0

Rolul metricilor 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 sunt măsurate fie în textul sursă al
programului, fie pe durata utilizării şi implementării;
` 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 endogenă, relevă comportamentul programului sau
caracteristicile 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 nivelul măsurat de metrică la momentul iniţial.
În cazul în care se evidenţiază că metrica a subliniat un comportament
confirmat de realitate, are loc validarea metricii.

6.2 Forma analitică

Forma analitică a unei metrici software este

y = f(x1, x2, …,xnfc)

unde:
nfc – numărul de factori identificaţi, care influenţează evoluţia
fenomenului studiat;

228
Metode statistice în analiza software

xi – nivelul măsurat asociat factorului i de influenţă a fenomenului;


f( ) – o formă concretă analitică de reprezentare a dependenţei dintre
factorii de influenţă şi variabilele rezultative cu ajutorul căreia se
descrie şi se studiază un fenomen;
y – variabila rezultativă care concretizează evoluţia unui fenomen.

Forma concretă analitică a unei metrici este:


™ liniară, dacă:

y = f(x)

y = f(kx)=kf(x)

deci dacă graficul asociat funcţiei este liniar;


™ neliniară, dacă graficul asociat funcţiei nu este liniar.

Forme liniare sunt reprezentate de funcţii:


” constante :

y = f(x) = a

cu a constantă reală;
” liniare:

y = f(x) = ax

cu a coeficient real;
” afine:

y = f(x) = ax + b

cu a şi b coeficienţi reali;
” compuse din mai multe funcţii:
nfc
y = f(x) = ∑a x + b
i =1
i i

229
Metrici software

Forme neliniare uzuale sunt reprezentate de funcţii:


ƒ putere:
y = f(x) = axnfc

cu n număr natural fixat şi a constantă reală;


ƒ pătratice:

nfc
y = f(x) = ∑a x
i =1
2
i i

reprezentând forme particulare a funcţiei putere;


ƒ polinomiale:

y = f(x) = anxnfc + an-1xnfc-1 + … + a1x + a

cu nfc ≥ 2 număr natural fixat şi coeficienţi reali;


ƒ exponenţială:

y = f(x) = e x

ƒ logaritmice:

y = f(x) = logb x

cu baza un număr pozitiv b ≠ 1;


ƒ radical:

nfc
y = f(x) = x

cu n număr natural fixat;


ƒ raţionale:
g( X )
y = f(x) =
h( x )

unde funcţia h(x) nu întoarce valori nule.

230
Metode statistice în analiza software

6.3 Proprietăţi ale metricilor software

O metrică software trebuie să fie caracterizată de următoarele proprietăţi:


Senzitivitate. Funcţia liniară este senzitivă dacă funcţia

y = f(x)

are proprietatea că:

y = f(x+α) = f(x) + f(α)

Adică, la variaţia factorilor care determină nivelul caracteristicii respective


şi nivelul măsurat de către metrica software trebuie să varieze.
Necompensatorie. La variaţii simultane ale unor factori exogeni, care
influenţează caracteristica măsurată, nu se obţin aceleaşi variaţii ale nivelului
măsurat.
De exemplu, funcţia

y=x+z

Pentru x = 5 şi z = 3 se obţine y = 8, lucru identic şi pentru x = 4 şi z = 4.


Dacă y = x2 + y2, atunci pentru cele două seturi de valori se obţin valori diferite ale
lui y, 34 respectiv 32.
Necatastrofic. Nu trebuie să existe valori particulare ale variabilelor
exogene care să conducă la imposibilitatea măsurării nivelului caracteristicii
cercetate, variabila endogenă.
De exemplu, funcţia>

a
y=
x

unde a este o constantă reală diferită de 0. Dacă x = 1 atunci y = a, însă dacă x


tinde către valoarea 0, y tinde către infinit şi dacă x = 0 valoarea lui y nu se poate
calcula.

231
Metrici software

Nu există indicatori care să aibă toate cele 3 proprietăţi satisfăcute la nivel


maxim, dar cuantificându-se măsura în care cele trei proprietăţi sunt satisfăcute,
metricile software pentru o aceeaşi caracteristică software sunt ierarhizate.
Cele trei proprietăţi descrise anterior conferă din punct de vedere
matematic metricii software validitate şi corectitudine însă nu specifică gradul de
utilizabilitate. Acesta este dovedit de utilizarea practică a metricilor şi de
reprezentativitatea rezultatelor. Astfel:
™ prin interpretarea măsurătorii nivelului caracteristicii software, produsul
software trebuie să fie clasificat din acel punct de vedere; de exemplu,
orice program care are mai mult de 1000 linii sursă este considerat de
lungime medie;
™ modificarea unor elemente ale programului care nu influenţează
caracteristica măsurată nu implică modificarea nivelului acesteia; dacă
în textul sursă al unui program se introduc comentarii, aceasta nu
conduce la modificarea numărului de instrucţiuni;
™ metrica trebuie definită în aşa fel încât să aibă în vedere toate variabilele
exogene, eliminându-se situaţiile particulare; de exemplu, pentru a
număra lungimea programului ca număr de instrucţiuni se definesc
regulile:
ƒ comentariile nu se iau în calcul;
ƒ acoladele care delimitează blocurile ocupă câte o linie;
ƒ expresiile de atribuire simplă sau multiplă se scriu pe câte o linie;
ƒ instrucţiunile aceluiaşi bloc sunt pe linii separate.
™ cu cât numărul variabilelor exogene creşte, cu atât creşte şi gradul de
reprezentativitate al nivelului măsurat;
™ nivelul măsurat al caracteristicii software este acelaşi dacă nici un una
din variabilele endogene nu se modifică.

Ceea ce este caracteristic unei metrici, generalitatea, adică se aplică


modelul matematic oricărui program în mod clar, fără interpretări. Mărimile
obiective trebuie riguros definite încât oricine are la dispoziţie un program P şi
metrica, să obţină aceleaşi rezultate.
Metricile trebuie să fie definite astfel încât să fie generale dar şi specifice.
Oricărei caracteristici software definită a unui program să i se asocieze o metrică
pentru a răspunde cerinţelor atât formulate de programatori cât şi de utilizatorii
programelor. Metricile sunt cu atât mai valoroase cu cât sunt mai simplu de
calculat şi cu cât efortul de a culege datele este mai redus.

232
Metode statistice în analiza software

De asemenea, odată cu lansarea unei metrici software, să se realizeze şi


instrumentele care culeg automat datelor obiective şi calculează nivelurile
caracteristicilor măsurate.

6.4 Analiză dimensională

Pentru ca valorile diferitelor niveluri ale caracteristicilor software măsurate


să aibă semnificaţie atunci când sunt scoase din contextul modelului, trebuie să li
se asocieze unităţi de măsură specifice. Dintre acestea fac parte: număr instrucţiuni,
număr linii sursă, număr operatori, număr operanzi, număr tipuri fundamentale de
date, număr structuri, frecvenţe de apariţie, număr rulări, număr erori, număr
crectări.
Se consideră factorii Factor1, Factor2, …,Factornfactor cărora li se asociază
unităţile de măsură um1, um2, …,umnum. Dacă există forma analitică liniară:

nfactor
y= ∑a x
i =1
i i

unde:
ai – reprezintă constante reale diferite de 0;
xi – reprezintă nivelul măsurat al factorului Factori;
rezultă că unităţile de măsură um1, um2, …,umnum sunt identice între ele şi
rezultatul este tot de tipul u. Dacă x1, x2, …,xnfc se măsoară în metrii atunci:
nfc
” valoarea lui y = ∑ a x , se măsoară tot în metrii;
i =1
i i

nfc
” valoarea lui y = ∑a x
i =1
2
i i , se măsoară în metrii pătraţi;

xi
” valoarea lui y = ,cu i = 1..nfc, atunci y reprezintă o valoarea
xi +1
adimensională.

Orice metrică este supusă analizei dimensionale pentru a se asigura


corectitudinea agregării.

233
Metrici software

Dacă
x1 * x2 * x3
y=
x4

unde x1, x2, x3, x4 reprezintă 4 variabile ale căror unităţi de măsură sunt:
um1 – număr bucăţi;
um2 – metrii pătraţi;
um3 – Lei;
um4 – metrii pătraţi;

atunci unitatea de măsura a lui y, uy, este:

um1 * um 2 * um 3 [numar bucati] ∗ [metrii patrati] ∗ [lei]


umy = =
um 4 [metrii patrati]

În final se obţine:

umy = [numar bucati] ⋅ [lei]

Cum um1 este adimensională, rezultă că:

umy = [ lei ]

Orice unitate de măsură ridicată la puterea zero reprezintă valoarea


adimensională unu. În general semnificaţia unei mărimi adimensionale este de
pondere a unei părţi faţă de întreg. În cazul modelelor neliniare, analiza
dimensională este absolut necesară.
Între componentele sistemului internaţional de măsură există corelaţii, de
exemplu în cazul legilor fizicii:

[Forţa]um = [masa]um * [acceleraţie]um

unde [ ]um reprezintă unitatea de măsură a elementului;

234
Metode statistice în analiza software

Se consideră unităţile de măsură um1, um2, …, umnum şi se definesc


operaţiile:

umi + umi + … + umi = umi

n * umi = umi

kum

∏ um = (um )
kum
umi * umi * … * umi = i i
1

(umi )k = (um )k −r
(umi )r i

De asemenea şi în cazul analizei dimensionale a caracteristicilor software


este necesară construirea unui sistem de legături între aceste unităţi de măsură
pentru a realiza o analiză în profunzime.

6.5 Forme analitice uzuale

Cum caracteristicile software măsurate ale programelor sunt primare sau


complexe, matricele software au forme analitice uzuale primare sau agregate.
Formele analitice primare ale metricilor software sunt utilizate în faza
iniţială a analizei programelor. Sunt măsurate nivelurile caracteristicilor care au
conţinut concret, formă concretă de exprimare şi care constituie punctul de start al
unei cercetări. Dintre aceste caracteristici fac parte numărul de linii sursă, numărul
de instrucţiuni, sau numărul de tipuri fundamentale de date utilizate.
Considerând lotul de npro programe Pro1, Pro2, …, Pronpro şi caracteristicile
software XCR1, XCR2, …, XCRmxcr comune tuturor produselor, formele analitice
primare cele mai utilizate sunt:

yji = fi (xj)

npro npro
Yj = ∑
i =1
f i ( x j ) = ∑ y ji
i =1

235
Metrici software

unde:
yji – reprezintă valoarea măsurată a caracteristicii XCRj pentru
programul Proi;
fi (xj) – reprezintă aplicarea metricii pentru a măsura nivelul
caracteristicii XCRj în cazul programului Proi.

Forme analitice primare ale metricilor software


Tabel 6.1
Programul Caracteristica software măsurată
analizat XCR1 XCR2 … XCRj … XCRmxcr
Pro1 y11 y21 … yj1 … ymxcr1
Pro2 y12 y22 … yj2 … ymxcr2
. . . … . … .
. . . … . … .
Proi y1i y2i … yji … ymxcri
. . … … . … .
. . … … . … .
Pronpro y1npro y2npro … yjnpro … ymxcrnpro
npro npro npro npro
Total ∑ x1i = Y1
i =1
∑ x2i = Y2
i =1
… ∑ x ji = Y j
i =1
… ∑x
i =1
mxcri = Ym xcr

Forma analitică

npro
Yj = ∑y
i =1
ji

descrie nivelul cumulat al caracteristicii software XCRj pe ansamblul lotului de


programe Pro1, Pro2, …, Pronpro. Această formă de reprezentare a funcţiei de
măsurare este validă numai dacă:
` caracteristicile yij sunt direct însumabile; dacă nivelul măsurat al
caracteristicii XCRj este descris utilizând unitatea de măsură
umi = [XCRj], atunci şi unitatea de măsură a lui Yj, este tot umi;
` valoarea totală obţinută are sens; această situaţie apare în cazul în care
valorile caracteristicilor nu sunt primare, ele fiind obţinute din aplicarea
altor metrici software care măsoară productivitatea, randamentul sau
niveluri medii.

236
Metode statistice în analiza software

Între formele analitice primare se stabilesc relaţii pe orizontală, la acelaşi


nivel de caracteristică, şi pe verticală, între treptele ierarhice ale caracteristicilor
software.
În etapa de construire şi definire a metricilor software se are în vedere
ierarhizarea posibilă a caracteristicilor produselor software. De exemplu numărul
de linii sursă, numărul de instrucţiuni, numărul de blancuri, numărul de tipuri
fundamentale de date definite sunt plasate pe primul nivel deoarece nu depind de
alte variabile exogene care la rândul lor sunt măsurabile. Pe nivelul următor se află
lungimea codului sursă măsurată în bytes şi numărul de cicluri maşină, aceste
caracteristici putând fi exprimate în funcţie de indicatorii de pe nivelul inferior.
O analiză statistică bazată exclusiv pe utilizarea metricilor software cu
formă analitică primară are capacitatea de comparare şi descriere limitată. În ciuda
acestui neajuns, acest lucru reprezintă chiar etapa de start a unei analize statistice
complexe.
Formele analitice derivate ale metricilor software se obţin prin prelucrarea
formelor primare aplicând metode şi procedee de calcul statistic. Rolul lor este de a
adânci analiza produselor software şi de a evidenţia acele diferenţe sau asemănări
care nu sunt observabile prin prisma formelor primare.
Pentru a analiza formele analitice independente, primare, care dau rezultate
diferite pentru fiecare produs software al lotului, se calculează un indicator absolut
totalizator, sau unul calculat ca medie.

I= ∑ valori = total valoare


măsurată prin intermediul unităţii de măsură u.

Formele analitice compuse, derivate, sunt implementate în analiza statistică


a produselor software pentru a descrie:
¾ relaţii cantitative între caracteristicile software ale programului;
¾ relaţii cantitative între părţile unui lot de produse software;
¾ rolul şi ponderea factorilor la formarea şi variaţia nivelului măsurat al
unei caracteristici software;
¾ variaţia valorilor pe care le ia caracteristica cercetată;
¾ legăturile de interdependenţă dintre caracteristici software.

237
Metrici software

Formele derivate se obţin de obicei prin aplicarea unui model de calcul


statistic de comparare sau estimare. Compararea a două sau mai multor metrici
software se realizează fie sub forma unei diferenţe, fie sub forma unui raport.
Compararea sub formă de diferenţă constă în scăderea dintre nivelul
măsurat al caracteristicii software XCRj pentru programul Proi şi nivelul măsurat al
aceleiaşi caracteristici pentru programul Proi+1.

∆I/I+1 = yji – yji+1


unde:
∆I/I+1 – reprezintă variaţia valorii caracteristicii XCRj între cele două
niveluri măsurate;
yji – nivelul măsurat al caracteristicii software XCRj pentru programul
Proi.

După cum se observă, această formă este condiţionată de faptul că


termenii, yji şi yji+1, sunt comparabili din punctul de vedere al conţinutului şi unităţii
de măsură.
Rezultatul analizei statistice a unui lot de produse software bazată pe
această formă derivată diferă în funcţie de semnificaţia lui yji şi yji+1:
¾ dacă yji şi yji+1 sunt două programe oarecare din lot, atunci în funcţie de
poziţia valorii lui ∆I/I+1 faţă de valoarea zero, se trage una concluziile:
unul din programe este mai bun din punctul de vedere al caracteristicii
măsurate, sau programele sunt la fel;
¾ dacă yji şi yji+1 sunt programele din lot care au cea mai mare valoarea
măsurată a caracteristicii XCRj, respectiv cea mai mică, atunci ∆I/I+1
caracterizează variaţia caracteristicii.

Compararea sub formă de raport constă în raportarea a două forme primare


şi descrie proporţia elementului raportat faţă de baza de comparaţie.
În cazul formelor analitice compuse, agregate, obţinute prin raportul
nivelurilor măsurate a două caracteristici, nu este necesar ca ele să fie exprimate
prin aceeaşi unitate de măsură ci doar să existe între termeni o relaţie de
interdependenţă astfel încât rezultatul final să fie exprimat printr-o unitate de
măsură definită. Rezultatul este un număr întreg sau o fracţie ce reprezintă una din
ipostazele:
¾ un procent, care arată câte părţi din variabila raportată revin la 100 de
părţi ale variabilei bază de raportare;

238
Metode statistice în analiza software

¾ un coeficient, care arată câte părţi din variabila raportată revin la o parte
a variabilei bază de raportare.
Forma generală a acestui tip de metrică software este:

Acol
Ipond =
Bcol

unde :
Bcol – numărul total de elemente din colectivitate;
Acol – numărul de elemente din colectivitate care îndeplinesc o anumită
cerinţă;
Ipond – indice de pondere, măsurat în procente.

În funcţie de obiectivul analizei statistice, formele analitice agregate obţine


prin raportare se împart în:
Forme ce descriu structura. Sunt utilizate în cazul în care este necesară
cunoaşterea structurii lotului de produse software grupat după caracteristica XCRj.
Rezultatul final descrie în ce raport se află fiecare produs sau categorie de produse
faţă de nivelul întregii colectivităţi din care fac parte. Semnificaţia formei este de
pondere şi este dată de relaţia:

yxcrji yxcrji
gxcri = npro
=
Yxcrj
∑ yxcr
i =1
ji

unde:
gxcri – reprezintă ponderea valorii caracteristicii XCRj, măsurată pentru
programul Proi, din valoarea totală a caracteristicii software
înregistrate la nivelul întregului lot; în acest caz, gxcri se
calculează numai dacă valorile yxcrij sunt însumabile, iar
rezultatul are sens;
npro – numărul de programe analizate;
yxcrij – reprezintă valoarea măsurată a caracteristicii software XCRj
pentru programul Proi;
Yxcrj – reprezintă nivelul total măsurat pentru întregul lot.

239
Metrici software

Forme de coordonare. Descrie raportul în care se găsesc nivelurile


măsurate ale aceleiaşi caracteristici software pentru programe care au rezultat
identic dar care fac parte din categorii diferite. Relaţia reprezentativă pentru această
formă este:

yxcrji yxcr ' ji


K Pro/Pro' = sau K Pro'/Pro =
yxcr ' ji yxcrji
unde:
KPro/Pro’ – descrie în procente raportul dintre nivelul măsurat al
caracteristicii XCRj pentru programul Proi şi nivelul măsurat
pentru programul Pro’i; raportul este reversibil;
yxcrij – reprezintă valoarea măsurată a caracteristicii software XCRj
pentru programul Proi;
yxcr’ij – reprezintă valoarea măsurată a caracteristicii software XCRj
pentru programul Pro’i.

Pentru datele din tabelul 6.2, aplicarea metricii software cu această formă
duce la rezultatele din coloana KPro/Pro’:

Aplicarea formei de coordonare pentru două seturi de programe

Tabel 6.2
Caracteristica măsurată: număr de linii sursă.
Programe care (Programe scrise (Programe scrise
realizează sortare de în C++) în Pascal) KPro/Pro’
tipul:
Yxcr1 Yxcr’1
Metoda 1 yxcr11 yxcr’11 yxcr11
yxcr '11
yxcr12
Metoda 2 yxcr12 yxcr’12
yxcr '12
yxcr13
Metoda 3 yxcr13 yxcr’13 yxcr '13

240
Metode statistice în analiza software

Forme ale dinamicii. Descriu evoluţia în timp a nivelului măsurat al


caracteristicii software pentru acelaşi set de programe software care sunt
modificate în scopul de a le îmbunătăţi. Relaţia este:

zxcrji +1
K Ri+1 / Ri =
zxcrji

unde:
K Ri+1 / Ri – descrie în procente raportul dintre nivelul măsurat al
caracteristicii XCRj pentru programul Pro în momentul rulării
i+1 şi nivelul măsurat pentru acelaşi program Pro în momentul
rulării i.
Zxcrji+1 – reprezintă valoarea măsurată a caracteristicii software XCRj
pentru programul Pro la momentul i+1;
Zxcrji – reprezintă valoarea măsurată a caracteristicii software XCRj
pentru programul Pro la momentul i.

Metricile software nu sunt utilizate doar pentru a caracteriza un program şi


pentru a-l pune într-o categorie de programe. Rezultatele sunt utilizate şi pentru a
constitui baza de plecare în procesul de îmbunătăţire a programului. Un astfel de
proces este descris în tabelul 6.3, unde punctele cheie ale evoluţiei programului
analizat sunt marcate de rularea indice Ri.

Evoluţia programului în timp


Tabel 6.3
Rulări Caracteristica software măsurată
program XCR1 XCR2 … XCRj … XCRm
R1 zxcr11 zxcr21 … zxcrj1 … zxcrm1
R2 zxcr12 zxcr22 … zxcrj2 … zxcrm2
. . . … . … .
. . . … . … .
Ri zxcr1i zxcr2i … zxcrji … zxcrmi
. . . … . … .
. . . … . … .
Rn zxcr1n zxcr2n … zxcrjn … zxcrmn
- - … - … -

241
Metrici software

Forme ale planificării. Descriu aspectele economice ale procesului de


dezvoltare a unui produs software. Pentru această etapă din ciclul de viaţă al
programului nu se definesc noi caracteristici software, utilizându-se aceiaşi
parametrii care descriu un produs software implementat.
yxcrjpl yxcrj1
Kxcrpl / 0 = *100 , Kxcr1/ pl = *100
yxcrj 0 yxcrjpl
unde:
Kxcrpl / 0 – măsoară nivelul planificat al caracteristicii XCRj pentru etapa
viitoare raportat la nivelul măsurat al caracteristicii XCRj din
etapa de bază;
Kxcr1/ pl – măsoară gradul în care nivelul planificat al caracteristicii XCRj
a fost atins în etapa curentă de dezvoltare sau îmbunătăţire a
programului;
yxcrj0 – reprezintă valoarea măsurată a caracteristicii software XCRj
pentru programul Pro în etapa bază de comparaţie;
yxcrjpl – reprezintă nivelul planificat al caracteristicii software XCRj
pentru programul Pro în etapa viitoare;
yxcrj1 – reprezintă valoarea măsurată a caracteristicii software XCRj
pentru programul Pro în prezent.

Datele utilizate de acest tip de formă agregată sunt înregistrate asemenea


celor din tabelul 6.4.

Niveluri planificate şi măsurate ale caracteristicii software XCRj

Tabel 6.4
Caracteristica cercetată XCRj
Etapa de bază Etapa curentă
- nivel înregistrat - - nivel planificat - - nivel măsurat-
yxcrj0 yxcrjpl yxcrj1

Aceste forme analizează în primul rând productivitatea muncii


programatorilor, caracteristică care este considerată software deoarece descrie
produsul software în etapa de proiectare şi realizare.
O altă categorie de forme agregate ale metricilor software sunt cele care
măsoară nivelul mediu al unei caracteristici pentru un program sau pentru un lot
242
Metode statistice în analiza software

omogen de programe. Aceste modele matematice implementează formulele


diferitelor medii matematice:
` media aritmetică:
1 npro
y= ∑ y ji
npro i =1
unde npro reprezintă numărul de programe ale lotului, iar yxcrji măsoară nivelul
caracteristicii XCRj pentru programul Proi;
` media armonică:
npro
1
yh = ∑
i =1 y ji
unde yxcrji măsoară nivelul caracteristicii XCRj pentru programul Proi;
` media pătratică:

npro

∑y 2
ji
yp = i =1
n
unde npro reprezintă numărul de programe ale lotului, iar yxcrji măsoară nivelul
caracteristicii XCRj pentru programul Proi;
` media geometrică:
npro
y g = npro ∏ y ji
i =1

unde npro reprezintă numărul de programe ale lotului, iar yxcrji măsoară nivelul
caracteristicii XCRj pentru programul Proi.
Prin aplicarea metricilor software construite în jurul acestor forme agregate
se doreşte obţinerea unei valori care să sintetizeze tot ce este esenţial, tipic şi
obiectiv în legătură cu variaţia nivelului măsurat al caracteristicii software
cercetate. Omogenitatea lotului pentru care se determină media constituie o
condiţie a aplicării şi a reprezentativităţii pentru oricare din tipurile de medii.
În statistică, media este considerată ca nivelul la care ar fi ajuns
caracteristica înregistrată, dacă toţi factorii esenţiali şi neesenţiali ar fi acţionat
constant în toate cazurile.
Alte forme analitice agregate sunt utilizate pentru a măsura nivelul unor
caracteristici de calitate a produsului software:
( (
numar rulari de succes
¾ fiabilitatea = ( ( ;
numar total rulari
243
Metrici software

(
numar erori corectate
¾ mentenanţa = ( ;
numar total de erori
(
numar componente activate
¾ testabilitatea = ;
numãr total componente

(
numar interfete compatibile
¾ interoperabilitatea = ( ;
numar total interfete

( (
numar componente gasite corecte
¾ corectitudine = ( ;
numar total componente

(
numar componente libere de contradictii
¾ consistenţă = ( ;
numar total componente

timp întelegere program comentat


¾ lizibilitate = .
timp întelegere program lipsit de comentarii

Pentru a caracteriza un produs software din punctul de vedere al


corelaţiilor dintre caracteristicile sale XCR, YCR şi ZCR folosind indicatori de
forma:

nrec nrec

∑ xcr ycri
1
i
1
um 1 ∑ xcr ycr
i
1
i
1
um31 nrec
I= i =1
nrec
=
um
3
, I=
0
i =1
nrec
=
um30
, I= ∑ xcr ycr
i i

∑ xcri ycri
i =1
0 0 3
∑ xcri ycr
i =1
0
i
1 i =1

unde :
xcri – măsoară caracteristica XCR, utilizând ca unitatea de măsură um1;
ycri – măsoară caracteristica YCR, utilizând ca unitate de măsură um2;
xcriycri – are sens şi măsoară caracteristica software ZCR, utilizând ca
unitate de măsură um3;
nrec – reprezintă numărul de înregistrări;
0,1 – reprezintă momentele din evoluţia programului.

se utilizează metodele şi indicatorii analizei statistice şi nu se definesc noi metrici


software.
244
Metode statistice în analiza software

6.6 Concluzii

Există numeroase lucrări care conţin tabele ce sistematizează modelele


(metricele) asociate caracteristicilor de calitate, cu prezentarea ipotezelor de lucru
şi cu descrierea variabilelor exogene. Problema care se pune 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.
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 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 nivelurile variabilelor
exogene din program;
” verificarea în toate cazurile a cestui software se evidenţiază că
într-adevăr nivelurile 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
” identificarea cazuisticii reale prin intermediul căreia se înregistrează
nivelurile de comportament; în caz contrar, se obţin nivelurile ale
factorilor ce sunt diferite semnificativ de nivelurile aceloraşi factori
măsurate la utilizarea efectivă la beneficiarii 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.

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 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.

245
7
CONSTRUIREA
DE INDICATORI
AI PRODUSULUI PROGRAM

7.1 Comportamentul statistic al programelor aplicative

Programele aplicative sunt produse program folosite de un număr foarte


ridicat de utilizatori şi care beneficiază de un grad de generalitate ridicat în ceea ce
priveşte problema pe care o rezolvă. Pentru a asigura îndeplinirea cerinţelor, pe
care fiecare utilizator potenţial le furnizează, programele aplicative sunt elaborate
asigurându-se un nivel ridicat al calităţii cât mai ridicat. Sunt construite pentru a
rezolva clase de probleme bine definite, urmărindu-se:
` un nivel direct de comunicare om-calculator;
` fiabilitate la o astfel de rată încât să satisfacă exigenţele utilizatorilor;
` acoperirea tuturor tipurilor de probleme aparţinând unei clase;
` oferirea de informaţii clare privind rezultatele şi alte elemente legate de
modul în care s-a efectuat prelucrarea.

Performanţele programelor aplicative sunt prezentate în documentaţia care


însoţeşte fiecare program. Un rol important îl joacă punerea în evidenţă de

246
Metode statistice în analiza software

către utilizator a calităţilor comportamentului fiecărui program în raport cu


particularităţile pe care le prezintă problemele supuse rezolvării.
Evaluarea comportamentului aplicaţiei este necesară pentru a estima:
¾ necesarul de resurse alocate rezolvării unei categorii de probleme;
¾ niveluri de performanţă care să permită o analiză comparată cu alte
produse de acelaşi tip;
¾ costul total al programului aplicativ şi a condiţiilor în care se face
recuperarea investiţiei;
¾ capacitatea de a rezolva o gamă largă de probleme.
Evaluarea cât mai riguroasă presupune stabilirea informaţiilor iniţiale şi
efectuarea înregistrărilor în principal de către producător în faza de testare. Ulterior
datele legate de comportamentul programului sunt completate cu informaţii noi pe
măsură ce rezolvă probleme curente ale utilizatorilor. Valorile prezentate au
menirea de a asigura comparabilitatea între programele aplicative elaborate de către
diferiţi producători software.
Indicatorii statistici utilizaţi în analiza comportamentului programului
urmăresc resursele necesare pentru implementarea programului aplicativ precum şi
niveluri ale unor caracteristici de calitate care nu se modifică în timp.
Aceşti indicatori sunt concentraţi pentru programele aplicative din
eşantionul considerat, în tabelul 7.1.

Caracterizarea programelor aplicative prin intermediul indicatorilor statistici


Tabel 7.1
Indicator Itor1 Itor2 … Itorj … Itormitor
Program aplicativ
PrAp1 kcp11 kcp12 … kcp1j … kcp1mitor
PrAp 2 kcp21 kcp22 … kcp2j … kcp2mitor
… … … … … … …
PrAp i kcpij kcpi2 … kcpij … kcpimitor
… … … … … … …
PrAp nprap kcpinprap kcpnprap2 … kcpnprapj … kcpnprapmitor

unde:
nprap – dimensiunea eşantionului de programe;
mitor – numărul de caracteristici luate în discuţie;
PrApi – programul aplicativ i analizat;
Itorj – indicator statistic asociat unei caracteristici măsurate;
kcpij – nivelul măsurat al caracteristicii j pentru programul i.

247
Construirea de indicatori ai produsului program

Indicatorii Itor1, Itor2, …, Itormitor sunt de tipul celor primari, măsurând


direct nivelul unei caracteristici, fie reprezintă niveluri agregate a influenţelor mai
multor atribute. Ei sunt asociaţi setului de mitor caracteristici ce include informaţii
cu privire la:
ƒ spaţiul de memorie fizică şi logică necesar activării aplicaţiei;
ƒ numărul şi tipul perifericelor suplimentare cu care se interacţionează
prin citirea sau printarea de date;
ƒ precizia rezultatelor;
ƒ caracterul general în acceptarea de diferite tipuri de date de intrare;
ƒ setul de caracteristici software: portabilitate, eficienţă, mentenabilitate,
productivitate, fiabilitate, utilizabilitate, funcţionalitate;
ƒ limbajul de programare utilizat;
ƒ structura modulelor;
ƒ complexitatea programului calculată prin diferite metode.
Chiar dacă eşantionul analizat conţine programe aplicative ce nu rezolvă
aceeaşi problemă, se fac referiri privind caracteristicile comune:
Š dimensiunea lor;
Š flexibilitate în utilizare;
Š complexitatea;
Š calitatea rezultatelor;
Š structura de date implementată;
Š structura componentelor.
Comportamentul programelor aplicative este pus în evidenţă la fiecare
activare a acestora, după un număr suficient de mare de rulări. Prin comportament
definim:
` durata rezolvării problemei;
` resursele necesare, pe care le cere programul pentru a le utiliza;
` modul în care se corectează problemele;
` efortul depus pentru interpretarea soluţiilor;
` numărul de rulări necesare până la obţinerea rezultatelor corecte.
Comportamentul programului aplicativ se caracterizează prin:
” grad de stabilitate; în cazul problemelor asemănătoare, condiţiile
execuţiei programului nu diferă semnificativ;
” nivel de fiabilitate; ponderea întreruperilor calculelor fără a obţine
mesaje proprii programului aplicativ este foarte mică pentru aplicaţiile
fiabile;

248
Metode statistice în analiza software

În continuare este pus în evidenţă, prin utilizarea analizei statistice,


comportamentul unui program P de rezolvat probleme de programare liniară.
Variabilele care definesc o problemă de programare liniară şi un proces de
soluţionare a cesteia prin programul P sunt:
NR – numărul restricţiilor ale modelului;
NV – numărul de variabile iniţiale;
DIM – dimensiunea problemei, reprezentată de produsul dintre
numărului de restricţii şi cal al variabilelor;
GRI – gradul de umplere al matricei tehnologice iniţiale;
NMN – numărul de elemente ale matricei nenule;
GRF – gradul de umplere al matricei finale;
NIT – numărul de iteraţii;
NRV – numărul de reinversări;
DPR – durata de prelucrare.
Pentru a evidenţia variabilele şi rolul lor, acestea se clasifică în funcţie de
obiectul pe care îl caracterizează. Categoriile obţinute descriu:
¾ dimensiunea problemei de rezolvat: NR, NV şi DIM;
¾ structura problemei de rezolvat: GRI, NMN şi GRF;
¾ procesul de rezolvare: NIT, NRV şi DPR.
S-a considerat un eşantion Sprob1, Sprob2, …, Sprobnprob format din
nprob = 26 probleme de rezolvat. Datele obţinute din lansarea în execuţie a
programului ce rezolvă probleme de programarea liniară PrAp sunt date în
tabelul 7.2.

Descrierea procesului de rezolvare a problemelor de către programul PrAp


Tabel 7.2
Variabile
NR NV DIM GRI NMN GRF NIT NRV DPR
Problema
Sprob1 11 20 220 81,82 168 60 12 2 596
Sprob2 17 20 340 29,41 92 17,97 17 2 601
Sprob3 4 4 16 75 15 53,57 0 1 446
Sprob4 17 20 340 25 80 14,29 5 2 570
Sprob5 17 21 357 17,93 64 11,11 6 2 588
Sprob6 17 20 340 29,41 95 16,96 11 2 557
Sprob7 17 20 340 25,88 93 16,61 3 2 518
Sprob8 17 20 340 37,06 122 21,79 11 2 578
Sprob9 17 20 340 35,88 117 20,89 10 2 587
Sprob10 17 20 340 60,29 201 35,89 9 2 788

249
Construirea de indicatori ai produsului program

Variabile
NR NV DIM GRI NMN GRF NIT NRV DPR
Problema
Sprob11 17 20 340 28,24 92 16,43 6 2 572
Sprob12 17 21 357 57,7 201 34,9 14 2 681
Sprob13 17 20 340 26,47 81 16,33 14 2 669
Sprob14 17 20 340 46,47 153 27,32 9 2 733
Sprob15 7 20 140 0 125 83,33 7 2 526
Sprob16 8 20 160 60 103 47,69 7 2 578
Sprob17 17 20 340 33,53 100 16,46 9 2 670
Sprob18 22 15 330 36,36 125 17,01 29 2 626
Sprob19 14 20 280 73,57 198 47,6 13 2 753
Sprob20 17 15 255 56,47 144 30 17 2 643
Sprob21 6 20 120 0 104 86,67 0 1 642
Sprob22 16 34 544 82,9 431 59,86 5 2 925
Sprob23 11 25 275 77,45 196 59,39 28 2 761
Sprob24 10 20 200 77,5 143 56,75 14 2 526
Sprob25 28 16 448 77,46 255 33,73 24 2 920
Sprob26 42 168 7056 6,69 501 6,06 54 2 2163

Punctul de start al analizei statistice a comportamentului produsului


aplicativ îl constituie datele tabelului 7.2. Pe baza acestora se calculează valorile
indicatorilor:
” valoarea medie K vb j a variabilei j, după relaţia:

1 nprob
K vb j = ∑ kvbij
nprob i =1

unde:
kvbij – valoarea variabilei j în cazul problemei Sprobi;
nprob – dimensiunea eşantionului de probleme.

” abaterea medie pătratică, σ vb J a valorilor variabilei j faţă de valoarea


medie:

σ vbj =
1 nprob
∑ (kvbij − K vb j )2
nprob i =1

250
Metode statistice în analiza software

unde:
kvbij – valoarea variabilei j în cazul problemei i;
K vb j – valoarea medie a seriei de valori înregistrate pentru
variabila j;
nprob – dimensiunea eşantionului de probleme.

” coeficientul de variaţie, υ vbj , al valorilor variabilei j:


σ vbj
υ vbj = *100
K vb j
unde:
K vb j – valoarea medie a seriei de valori asociate variabilei j;
σ vb J – abaterea medie pătratică a valorilor variabilei j.
Odată determinate valorile indicatorilor statistici utilizaţi, tabelul 7.3,
programul aplicativ este descris pe larg, cu referire la valorile medii ale factorilor
ce-i influenţează comportamentul. De asemenea, sunt conturate performanţele sale
din punctul de vedere al duratei de timp consumate.

Descriere statistică a valorilor înregistrate


la rezolvarea celor nprob = 26 de probleme
Tabel 7.3
Variabilă NR NV DIM GRI NMN GRF NIT NRV DPR
Indicator
Medie 16,03 25,34 557,61 44,55 153,80 34,94 12,84 1,92 700,65
Abatere
7,34 29,46 1329,69 25,99 106,034 22,44 11,17 0,27 319,79
medie
Coeficient
de 44,91 114 55,53 57,22 67,60 62,51 58,27 13,86 44,76
variaţie

Astfel, o problemă Sprobi din eşantion, caracterizată în medie de


16 restricţii, 23 de variabile iniţiale, şi un grad de umplere al matricei iniţiale de
44,55 este rezolvată de către programul PrAp, în aproximativ 12 iteraţii şi
700 unităţi de timp. Valorile mari ale abaterilor şi ale coeficienţilor de variaţie
pentru majoritatea variabilele analizate subliniază faptul că supoziţiile făcute nu
sunt bazate pe un set de valori omogene, iar valorile medii nu sunt reprezentative.

251
Construirea de indicatori ai produsului program

Scopul analizei este de a obţine o caracterizare obiectivă a


comportamentului programului. De aceea, setul de probleme conţine situaţii
selectate din cazurile reale, iar acest lucru are implicaţii negative asupra
omogenităţii sale.
Studiul este continuat prin cercetarea corelaţiei dintre variabilele ce
caracterizează comportamentul programului şi cele asociate problemei. Pentru a se
descrie natura relaţiilor de dependenţă dintre ele, sunt determinate valorile
coeficienţilor de corelaţie. Aceştia reprezintă elementele matricei de corelaţie din
tabelul 7.4.
Matricea simetrică de corelaţie
Tabel 7.4
NR NV DIM GRI NMN GRF NIT NRV DPR
NR 0,726031 0,76497 - 0,62007 -0,6665 0,76299 0,44239 0,79199
0,2098
NV 0,99183 - 0,73541 -0,2423 0,74258 0,13334 0,94915
0,2899
DIM - 0,69928 -0,3037 0,76357 0,1084 0,94785
0,2904
GRI 0,20169 0,28771 -0,0152 0,07991 -
0,12646
NMN 0,05366 0,62396 0,26183 0,84725
GRF -0,2964 -0,4613 -
0,21057
NIT 0,33855 0,78909
NRV 0,14421
DPR

Prin selectarea elementelor matricei de corelaţie ce au valori cuprinse în


intervalul [−1; − 0,5] ∪ [0,5;1] rezultă legături intense de dependenţă între
variabilele:
” numărul de variabile, NV şi numărul de restricţii, NR;
” dimensiunea problemei, DIM, şi numărul de variabile, NV, respectiv
numărul de restricţii, NR;
” numărul de elemente ale matricei nenule, NMN, şi dimensiunea
problemei, DIM, numărul de variabile, NV, numărul de restricţii, NR;
” gradul de umplere al matricei finale, GRF, şi numărul de variabile, NV;
” numărul de iteraţii, NIT, şi dimensiunea problemei, DIM, numărul de
variabile, NV, respectiv numărul de restricţii, NR;

252
Metode statistice în analiza software

” durata de prelucrare, DPR, şi dimensiunea problemei, DIM, numărul de


variabile, NV, numărul de restricţii, NR, numărul de elemente ale
matricei nenule, NMN, numărul de iteraţii, NIT;
Dintre legăturile puternice găsite, sunt selectate pentru a fi analizate în
continuare doar acelea care includ o variabilă strict legată de comportamentul
aplicaţiei. Celelalte descriu relaţiile dintre structura problemei de rezolvat şi
structura sa, iar acest lucru nu reprezintă obiectivul analizei comportamentului
programului P.
Deci, legăturile care interesează sunt între:
¾ numărul de iteraţii, NIT, şi dimensiunea problemei, DIM, numărul de
variabile, NV, respectiv numărul de restricţii, NR;
¾ durata de prelucrare, DPR, şi dimensiunea problemei, DIM, numărul de
variabile, NV, numărul de restricţii, NR, numărul de elemente ale
matricei nenule, NMN, numărul de iteraţii, NIT;
Acestea sunt utile pentru a estima duratele de prelucrare şi numărul de
iteraţii.
Pentru a asocia o ecuaţie de regresie unei relaţii de dependenţă dintre două
variabile, este necesară studierea prealabilă prin metoda grafică a tipului legăturii.
De exemplu, figurile 7.1 şi 7.2 descriu grafic legătura dintre durata de prelucrarea a
problemei Sprobi şi dimensiunea acesteia, respectiv dintre numărul de iteraţii al
procesului şi numărul restricţiilor problemei.

2500

2000

1500

1000

500

0
0 1000 2000 3000 4000 5000 6000 7000 8000
Dimensiune problema (DIM )

Figura 7.1 Legătura dintre durata de prelucrare şi dimensiunea problemei

253
Construirea de indicatori ai produsului program

60

50

Numarul de iteratii (NIT)


40

30

20

10

0
0 5 10 15 20 25 30 35 40 45
Numarul restrictiilor (NR)

Figura 7.2 Legătura dintre numărul de iteraţii şi numărul de restricţii

Variabila agregată, DIM, ce descrie dimensiunea problemei Sprobi este


reprezentativă pentru nivelurile numărului de restricţii şi numărului de variabile
iniţiale, fiind rezultatul produsului valorilor lor. De aceea, este suficient să se
analizeze doar legătura dintre durata de prelucrare respectiv numărul de iteraţii şi
acestea.
Cum toate legăturile sunt de formă liniară, se construiesc modele de
regresie liniară din tabelul 7.5, care au forma:

YX i = a + b * X i

în care notaţiile reprezintă:


Y – caracteristica rezultativă, ale cărei valori depind de variabila
factorială;
X – caracteristică factorială sau variabila independentă;
a – parametrul constant al ecuaţiei;
b – coeficientul de regresie.

254
Metode statistice în analiza software

Modele de regresie liniară

Tabel 7.5
Termenii ecuaţiei de Valoarea coeficienţilor Verificarea semnificaţiei ecuaţiei de
regresie din funcţia de regresie regresie
Model Tip Variabila Variabila Coeficient Coeficient Coeficient Coeficient Eroare
model dependentă independentă de variabila de de standard
(Y) (X) regresie constantă corelaţie determinaţie

Mreg1 liniar D DIM 0,22796 573,53955 0,947 89,843 % 106,091


Mreg2 liniar D NMN 2,55527 307,63269 0,8472 71,784 % 173,371
Mreg3 liniar D NIT 22,59086 410,44804 0,7890 62,267 % 200,491

Mreg4 liniar NIT NMN 0,06573 2,73598 0,6239 38,933% 8,90902


Mreg5 liniar NIT DIM 0,006414 9,269296 0,763 58,305 % 7,361

Pentru fiecare din modele create se recalculează valoarea variabilei


dependente. Valorile de intrare ale variabilelor independente sunt cele iniţiale, din
tabelul 7.1.

Valorile recalculate după modelele de regresie


pentru durata de prelucrare şi numărul de iteraţii
Tabel 7.6
Valori recalculate pentru DPR Valori recalculate pentru
NIT
Problema Model Model Model Model Model
Mreg1 Mreg2 Mreg3 Mreg4 Mreg5
1 623,6908 642,6911 736,9181 13,7786 10,6804
2 651,046 724,2154 542,7175 8,7831 11,4501
3 577,1869 653,2997 345,9617 3,7219 9,3719
4 651,046 731,0752 512,0543 7,9943 11,4501
5 654,9213 742,0726 471,17 6,9427 11,5591
6 651,046 724,2154 550,3833 8,9803 11,4501
7 651,046 729,7063 545,2728 8,8488 11,4501
8 651,046 712,3157 619,3756 10,7550 11,4501
9 651,046 714,1512 606,5993 10,4263 11,4501
10 651,046 676,1812 821,242 15,9477 11,4501
11 651,046 726,0353 542,7175 8,7831 11,4501
12 654,9213 680,2101 821,242 15,9477 11,5591
13 651,046 728,7886 514,6096 8,0601 11,4501

255
Construirea de indicatori ai produsului program

Valori recalculate pentru DPR Valori recalculate pentru


NIT
Problema Model Model Model Model Model
Mreg1 Mreg2 Mreg3 Mreg4 Mreg5
14 651,046 697,6784 698,589 12,7926 11,4501
15 605,454 769,9629 627,0414 10,9522 10,1673
16 610,0132 676,6323 570,8255 9,5061 10,2955
17 651,046 717,8067 563,1597 9,3089 11,4501
18 648,7664 713,4046 627,0414 10,9522 11,3859
19 637,3684 655,5241 813,5762 15,7505 11,0652
20 631,6694 682,1233 675,5916 12,2011 10,9049
21 600,8948 769,9629 573,3808 9,5719 10,039
22 697,5498 641,0112 1408,954 31,0656 12,7585
23 636,2286 649,4887 808,4656 15,6190 11,0331
24 619,1316 649,4109 673,0363 12,1353 10,5521
25 675,6656 649,4731 959,2265 19,4971 12,1428
26 2182,0253 759,5566 1587,823 35,6667 54,5265

Pentru a alege modelul de regresie cel mai bun al fiecărei variabilă


dependentă, se calculează suma pătratelor diferenţelor dintre valorile recalculate şi
cele măsurate direct utilizând relaţia:

∑ (Y )
nprob 2

Sum j = Mreg j − Xvbdi


i =1

în care:
nprob – numărul de probleme din eşantion;
YMreg j – valoarea recalculată a variabilei dependente utilizând modelul
Mregj şi datele de intrare iniţiale;
Xvbdi – valoarea înregistrată pentru variabila dependentă, la rezolvarea
problemei Sprobi utilizând programul PrAp.
Suma Sumj reprezintă nivelul total al abaterii valorilor recalculate faţă de
valorile reale, înregistrate prin măsurare directă.
Valorile obţinute în cazul modelelor asociate duratei de prelucrare
sunt date în tabelul 7.7, iar pentru numărul de iteraţii în tabelul 7.8.

256
Metode statistice în analiza software

Valorile lui Sumj calculate pentru variabila durata de prelucrare, DPR


Tabel 7.8
Model Mreg1 Model Mreg2 Model Mreg3
Problema (Y − Xvbd ) 2 (Y − Xvbd ) 2 (Y − Xvdb ) 2
Mreg1 i Mreg 2 i Mreg 3 i

1 766,7804 19857,9 7316,8179


2 2504,6021 3396,846 37439,425
3 17210,0027 10007,65 1263,9447
4 6568,4541 3357,705 2171,3456
5 4478,4604 13649,26 1764,5712
6 8844,6501 43,7802 10393,2928
7 17701,2381 743,8056 1582,4007
8 5335,7181 1711,943 6552,4978
9 4101,8901 384,1318 2436,074
10 18756,3981 1105,028 30357,5564
11 6248,2701 857,463 676,3536
12 680,0986 19667,81 2090,3275
13 322,3461 23836,41 3331,6099
14 6716,4581 1184,117 14216,7944
15 6312,9381 10209,37 1813,4056
16 1024,845 51,4735 88,6592
17 359,2541 11414,85 3162,2852
18 518,309 1,0846 193233,2139
19 13370,6669 3669,47 2388,3551
20 128,3825 1062,21 22950,0382
21 1689,6375 4708,599 53616,3287
22 51733,5935 234211,5 161280,7126
23 15567,9023 2252,984 79519,5445
24 8673,4949 21619,67 40288,5585
25 59699,299 1538,721 1064,6321
26 361,962 330828,6 283711,2287

Valoarea lui Sumj 259675,65 721732,4 964709,97

Un model de regresie bun, estimează cu cea mai mare precizie valoarea


variabilei Y. Din setul de modele construite, este ales acela care are valoarea totală
a abaterii faţă de valorile reale minimă.

257
Construirea de indicatori ai produsului program

Minimul valorilor lui Sumj se obţine pentru modelul Mreg1, construit în


jurul dependenţei de dimensiunea problemei de rezolvat. Acest lucru îl indică ca
fiind cea mai bună estimare a duratei de prelucrare.

Valorile lui Sumj pentru variabila număr de iteraţii, NIT


Tabel 7.8
Model Mreg4 Model Mreg5
Problema (YMreg 4 − Xvbd i ) 2 (YMreg5 − Xvbd i ) 2
1 3,1635 1,7413
2 67,5168 30,8014
3 13,8528 87,8325
4 8,9663 41,6038
5 0,8887 30,9036
6 4,0791 0,2026
7 34,2093 71,4042
8 0,06 0,2026
9 0,1818 2,1028
10 48,2707 6,003
11 7,7459 29,7036
12 3,7936 5,958
13 35,2823 6,502
14 14,3843 6,003
15 15,6201 10,0318
16 6,2809 10,8603
17 0,0955 6,003
18 325,722 310,2565
19 7,5654 3,7435
20 23,0294 37,1502
21 91,6213 100,7815
22 679,416 60,1943
23 153,2877 287,8757
24 3,4768 11,888
25 20,2758 140,5932
26 336,1095 0,2772

Valoarea lui Sumj: 1904,896 1300,6196


258
Metode statistice în analiza software

Minimul este 1300,6196 deci modelul ales pentru a se estima valorile


numărului de iteraţii este Mreg5. Modelul descrie dependenţa faţă de dimensiunea
problemei.

Odată verificată legătura dintre durata sau număr de iteraţii şi una din
variabilele de care depind se trece la definirea modelelor de ecuaţii de regresie
multiplă care să aprofundeze analiza şi să explice comportamentul aplicaţie în
funcţie de toţi factorii de care depinde:
Modelele de regresie multiplă construite sunt:
` durata de prelucrare, DPR, în funcţie de dimensiunea problemei, DIM,
şi gradul de umplere al matricei finale GRF; modelul este descris în
tabelul 7.9.

Parametrii funcţiei de regresie multiplă

Tabel 7.9
Model de regresie multiplă Mreg6 - Ecuaţia variabilei durata de prelucrare
Nume variabilă din Valoarea coeficientului Eroare standard a
ecuaţiei de regresie din funcţia de regresie coeficientului de regresie
Constanta 526,834228 -
DIM 0,234292 0,000501
GRF 1,231381 0,009725

Verificarea semnificaţiei ecuaţiei de regresie


Raport de corelaţie 0,951
multiplă
Coeficient de 90,514
determinaţie (%)
Eroare standard 96,577
Coeficient de variaţie 13,783

259
Construirea de indicatori ai produsului program

` durata de prelucrare, DPR, în funcţie de dimensiunea problemei, DIM,


numărul de iteraţii, NIT, şi numărul de reinversări, NRV; modelul este
descris în tabelul 7.10.

Parametrii funcţiei de regresie multiplă


Tabelul 7.10
Model de regresie multiplă Mreg7 - Ecuaţia variabilei durata de prelucrare
Nume variabilă Valoarea coeficientului Eroare standard
a ecuaţiei de regresie din funcţia de regresie a coeficientului de
regresie
Constanta 528,480712 -
DIM 0,19933 0,000477
NIT 4,456539 0,031607
NRV 1,962497 0,807203

Verificarea semnificaţiei ecuaţiei de regresie


Raport de corelaţie multiplă 0,953
Coeficient de determinaţie (%) 90,867
Eroare standard 94,766
Coeficient de variaţie 13,525

` durata de prelucrare, DPR, în funcţie de dimensiunea problemei dată de


numărul restricţiilor ale modelului * numărul de variabile iniţiale, NR *
NV şi gradul de umplere al matricei iniţiale, GRI; modelul este descris
în tabelul 7.11.

Parametrii funcţiei de regresie multiplă


Tabelul 7.11
Model de regresie multiplă Mreg8 - Ecuaţia variabilei durata de prelucrare
Nume variabilă Valoarea coeficientului Eroare standard
a ecuaţiei de regresie din funcţia de regresie a coeficientului de regresie
Constanta 478,143798 -
DIM 0,23931 0,000560
GRI 1,998922 0,009209

Verificarea semnificaţiei ecuaţiei de regresie


Raport de corelaţie 0,96
multiplă
Coeficient de 92,261
determinaţie (%)
Eroare standard 87,232
Coeficient de variaţie 12,450
260
Metode statistice în analiza software

` durata de prelucrare în funcţie de dimensiunea problemei, DIM,


numărul variabilelor NV, gradul de umplere al matricei iniţiale GRF,
numărul de elemente ale matricei nenule, NMN, gradul de umplere al
matricei finale GRF, numărul de iteraţii, NIT, numărul de reinversări,
NRV; modelul este descris în tabelul 7.12.

Parametrii funcţiei de regresie multiplă


Tabelul 712
Model de regresie multiplă Mreg9 - Ecuaţia variabilei durata de prelucrare
Nume variabilă Valoarea Eroare standard a coeficientului
a ecuaţiei de regresie coeficientului de regresie
din funcţia
de regresie
Constanta 664,085449 -
DIM 0,142971 0,002088
NV -0,800667 0,088139
GRI -0,436453 0,011380
NMN 1,339373 0,006607
GRF -0,977957 0,01729
NIT 3,575891 0,037463
NRV -114,954956 1,353450

Verificarea semnificaţiei ecuaţiei de regresie


Raport de corelaţie 0,986
multiplă
Coeficient de determinaţie 97,316
(%)
Eroare standard 51,364
Coeficient de variaţie 7,330

261
Construirea de indicatori ai produsului program

` numărul de iteraţii în funcţie de dimensiunea problemei şi gradul de


umplere al matricei iniţiale GRI; modelul este descris în tabelul 7.13.

Parametrii funcţiei de regresie multiplă


Tabelul 7.13
Model de regresie multiplă M10 - Ecuaţia variabilei: numărul de iteraţii
Nume variabilă a Valoarea Eroare standard a coeficientului de regresie
ecuaţiei de coeficientului din
regresie funcţia de regresie
Constanta 4,644474 -
DIM 0,006964 0,000258
Gradul de 0,096908 0,008529
umplere GRI

Verificarea semnificaţiei ecuaţiei de


regresie
Coeficient de 0,793
corelaţie multiplă
Coeficient de 62,963
determinaţie (%)
Eroare standard 51,364
Coeficient de 7,330
variaţie

Valorile recalculate pentru variabilele dependente, DPR şi NIT,


pe baza modelelor de regresie multifactoriale
Tabelul 7.14
Valori recalculate pentru DPR Valori
pentru
NIT
Problema Mreg6 Mreg7 Mreg8 Mreg9 Mreg10
1 652,2606 629,7371 694,3438 623,1532 14,1056
2 628,6205 675,9394 618,2975 620,3748 9,8623
3 596,5477 533,6328 631,8919 483,1828 12,024
4 624,089 622,4609 609,4823 566,9153 9,4349
5 624,1562 630,3061 599,4181 556,8867 8,8682
6 627,3768 649,2001 618,2975 603,9253 9,8623
7 626,9458 613,5478 611,2413 574,5224 9,5202
8 633,3244 649,2001 633,5892 632,026 10,6036
9 632,2161 644,7436 631,2305 623,1484 10,4893
10 650,6868 640,2871 680,0242 706,7567 12,8548
11 626,7242 626,9174 615,9588 583,0567 9,7489

262
Metode statistice în analiza software

Valori Valori Valori


recalculate pentru recalculate
pentru DPR NIT pentru DPR
Problema Mreg6 Mreg7 Mreg8 Problema Mreg6 Mreg7
12 653,4507 665,9584 678,9153 728,3646 12,7222
13 626,601 662,5698 612,4207 597,8011 9,5774
14 640,1339 640,2871 652,3991 656,8797 11,5155
15 662,2455 591,508 511,6472 549,1378 5,6194
16 623,0449 595,4946 636,3687 531,1983 11,5732
17 626,7611 640,2871 626,5331 602,1612 10,2616
18 625,0955 727,4246 629,7969 707,9639 10,4662
19 651,0489 646,1534 692,2113 691,2159 13,7239
20 623,5194 658,9963 652,047 658,2978 11,8927
21 661,6725 554,3631 506,861 604,8089 5,4802
22 727,9982 663,1242 774,0391 985,1558 16,4666
23 664,3954 712,0049 698,7706 724,2338 14,0651
24 643,5728 634,6636 680,9223 599,025 13,5476
25 673,3304 728,6628 740,1912 845,9832 15,2708
26 2187,446 2179,532 2180,088 2163,745 54,4308
Şi în cazul tipului de model de regresie multifactorială, metoda de alegere a
celui mai bun este bazată pe găsirea minimului din şirul abaterilor valorilor,
descrise în tabelul 7.15.
Suma totală a abaterilor, Sumj,
pentru fiecare model de regresie multifactorială
Tabelul 7.15
Model regresie Mreg6 Mreg7 Mreg8 Mreg9 Mreg10

Suma pătratelor
diferenţelor 242815,3 233497,8 197849 68187,4 1155,298
Sumj

Modelul care estimează cel mai bine valoarea duratei de prelucrare, este
Mreg9, fiind reprezentat de o ecuaţie ce include toate caracteristicile problemei de
rezolvat.
În cazul ambelor variabile dependente, DPR şi TIM, modelele
multifactoriale au o precizie de estimare mai bună decât modelele de regresie
liniară simplă, lucru dovedit de inegalităţile:
SumMreg9 < SumMreg1 şi SumMreg10 < SumMreg5.
Acest rezultat subliniază încă o dată importanţa definirii şi includerii în
ecuaţia de regresie a tuturor factorilor care influenţează valoarea variabilei
dependente.
263
Construirea de indicatori ai produsului program

7.2 Comportamentul dinamic al programului

Pentru a analiza un produs program se construieşte un set de caracteristici


software ale căror niveluri sunt ulterior măsurate şi analizate, având drept scop:
” determinarea nivelului de performanţă sau calitate al programului în
comparaţie cu alte programe sau valori standard;
” evidenţierea factorilor de influenţă al caracteristicilor măsurate;
” corectarea deficienţelor;
” obţinerea unui nivel mai ridicat de performanţă, prin îmbunătăţirea
programului;
” evidenţierea calităţilor şi punctelor slabe.
Prin utilizarea acestor metode, descrierea produsului din punct de vedere al
comportamentului omite analiza dinamismului comportamentului chiar dacă
măsoară durata de execuţie a programului sau durata unei tranzacţii. Noua abordare
include cercetarea modului în care performanţa aplicaţiei este influenţată de erorile
de execuţie şi de operaţiile efectuate de utilizator sau producător în vederea
remedierii lor.
Se consideră un program ProdSoft care se lansează în execuţie la
beneficiarii Ben1, Ben2, …, Bennben pe un set identic şi omogen de date de intrare.
Programul este testat şi conţine mesajele Mes1, Mes2, …, Mesmmes asociate
unor erori probabile, respectiv Err1, Err2, …, Errmemes.
Utilizatorii au obligaţia de a derula procedurile αp1, αp2, …, αpmmes
destinate remedierii cauzei ce a determinat întreruperea şi pentru a continua
prelucrarea setului de date de intrare, în vederea obţinerii de rezultate necesare
fundamentării deciziilor sau desfăşurării unor activităţi curente.
La apariţia unei erori Erri, fiecare beneficiar notează într-un formular
tipizat data, ora şi minutul producerii erorii, Te, precum şi data, ora minutul
relansării în execuţie a programului ProdSoft în vederea continuării sau reluării de
la început a prelucrărilor, Tr. În intervalul definit de [Te, Tr] utilizatorul
programului împreună cu elaboratorul acestuia declanşează unele dintre
procedurile αp1, αp2, …, αpmmes şi efectuează modificări asupra textului
programului sau asupra datelor.
Astfel, la beneficiarul Bi se obţine tabelul 7.16 pentru un perioada de
testare delimitată de elaborator şi cuprinsă în intervalul [Tstart, Tfinal], în care:
Tstart – momentul descris prin data, ora, minut, la care are loc începerea
testărilor;

264
Metode statistice în analiza software

Tfinal – momentul la care are loc încetarea perioadei de testare, indiferent


dacă nu au fost rulate toate datele de intrare;

Motivul impunerii intervalului de testare, [Tstart, Tfinal], beneficiarilor de


către producător derivă din necesitatea asigurării comparabilităţii datelor
înregistrate pe parcursul testării. În momentul centralizării rezultatelor este posibilă
agregarea acestora deoarece au un reper comun, momentul începerii testului.
Mărimea intervalului este suficient de mare pentru a cuprinde toate
prelucrările şi pentru a permite utilizarea aplicaţiei în condiţii normale, fără
restricţii de timp.

Înregistrarea erorilor programului P în intervalul [Tstart, Tfinal]


de către un beneficiar
Tabel 7.16
Nr. Data, ora, Data, ora, Data, ora, Data, ora, Cod tip
crt. minutul minutul minutul minutul eroare
lansării în apariţiei relansării în terminării
execuţie erorii execuţie execuţiei
1 Ts1 Te1 Tr1 Tf1 Err(i)1
2 Ts2 Te2 Tr2 Tf2 Err(i)2
… … … … … …
j Tsj Tej Trj Tfj Err(i)j
… … … … … …
nle Tsnle Tenle Trnle Tfnle Err(i)nle

unde:
nle – numărul de rulări sau lansări în execuţie a programului;
Tsj – momentul lansării în execuţie a programului pentru a j-a oară;
Tej – momentul apariţiei erorii Err(i)ij la rularea j;
Trj – momentul reluării execuţiei j, odată cu remedierea întreruperii;
Tfj – momentul final al execuţiei j determinat de obţinerea rezultatelor
sau de acţiunea utilizatorului;
(i)
E j – eroarea i din setul de erori probabile Err1, Err2, …, Errmmes.
Validitatea datelor este asigurată de completarea tuturor celulelor tabelului
şi de relaţiile:
Tsj < Tsj+1
Tsj ≤ Tej

265
Construirea de indicatori ai produsului program

Tej ≤ Trj
Trj ≤ Tfj
Erri ∈ {Err1, Err2, …, Errmmes}

care asigură continuitatea în timp a evenimentelor.


În cazul în care execuţia i a programului decurge fără întreruperi,
indicatorii Tei şi Tri iau valoarea lui Tfi.
În ipoteza că toţi beneficiarii lucrează cu programul ProdSoft după acelaşi
reguli se impune analiza seturilor de date care provin de la cei nben beneficiari.
Prin concatenarea datelor provenind de la beneficiarii Ben1, Ben2, …,
Bennben şi după ordonarea crescătoare a înregistrărilor pe baza momentului de
lansare în execuţie, rezultă tabelul 7.17.

Înregistrarea erorilor programului ProdSoft în intervalul [Tstart, Tfinal]


pentru toţi beneficiarii
Tabel 7.17
Nr. Data, ora, Data, ora, Data, ora, Data, ora, Cod tip
crt. minutul minutul minutul minutul eroare
lansării în apariţiei relansării în terminării
execuţie erorii execuţie execuţiei
1 T’s1 T’e1 T’r1 T’f1 Err(i)1
2 T’s2 T’e2 T’r2 T’f2 Err(i)2
… … … … … …
j T’sj T’ej T’r3 T’f3 Err(i)j
… … … … … …
NLE T’sNLE T’eNLE T’rNLE T’fNLE Err(i)NLE

unde:
nleb – numărul de rulări sau lansări în execuţie a programului la fiecare
beneficiar;
nben – numărul de beneficiari;
NLE – numărul total de lansări în execuţie.
Între înregistrări au loc relaţiile:

T’sj < T’sj+1


T’ej < T’ej+1
T’rj < T’rj+1
Err(i)j ∈ {Err1, Err2, …, Errmmes}
266
Metode statistice în analiza software

Este foarte important de analizat calitatea datelor înregistrate şi concatenate


pentru a evita situaţiile în care durata depanării este foarte mare şi momentul final
al execuţiei curente depăşeşte momentul de start al rulării următoare. Acest lucru
conduce la apariţia de erori ce afectează reprezentativitatea şi corectitudinea
rezultatelor.
Pentru a valida datele tabelului trebuie ca momentele T’fj şi T’sj+1 să fie
caracterizate de relaţia:

T’fj < T’sj+1, cu j = 1.. NLE -1

În caz contrar se propune ipoteza lansării în execuţie imediate şi


presupunem că durata de soluţionare a prelucrării devine momentul de start al
execuţiei următoare. Deci dacă există:

T’sj+1 < T’fj

atunci T’sj+1 devine egal cu T’fj şi toate datele glisează cu ∆ = T’fj – T’sj+1:

T’eh+1 = T’eh+1 + ∆
T’rh+1 = T’rh+1 + ∆
T’fh+1 = T’fh+1 + ∆

pentru h = j…NLE-1.
În cazul situaţiei:

T’sj+1 = Tsj

generată de faptul că două activări ale aplicaţiei au loc în acelaşi timp, atunci T’sj+1
devine egal cu T’fj şi datele următoare sunt modificate tot cu ∆ = T’fj – T’sj+1

Stabilirea legii de repartiţie a duratelor dintre momentele înregistrate în


tabel 7.17 presupune definirea variabilelor:
∆1 – durata dintre două defectări, cu relaţia:

∆1j = Tej+1 – Tej, cu j = 1… NLE -1;

267
Construirea de indicatori ai produsului program

∆2 – durata de execuţie care precede erorile, ale cărei valori sunt


determinate de:

∆2j = Tej – Tsj, cu j = 1…NLE;

∆3 – durata de execuţie care urmează depanării, determinată ca:

∆3j = Tfj – Trj, cu j = 1…NLE;

∆4 – durata de depanare, dată de relaţia:

∆4j = Trj – Tej, cu j = 1…NLE;

Se concatenează diferenţele ∆1, ∆2, ∆3 şi ∆4 obţinându-se tabelul de


forma 7.18.

Valorile diferenţelor ∆1, ∆2, ∆3 şi ∆4


Tabel 7.18
Valoare ∆1 Valoare ∆2 Valoare ∆3 Valoare ∆4
∆11 ∆21 ∆31 ∆41
∆12 ∆22 ∆32 ∆42
… … … …
∆1i ∆2i ∆3i ∆4i
… … … …
NLE-1 NLE-1 NLE-1
∆1 ∆2 ∆3 ∆4NLE-1
∆2NLE ∆3NLE ∆4NLE

După cum se observă, pentru durata dintre două defectări, ∆1, există doar
n*N-1 valori.
Pentru stabilirea legii de repartiţie se aleg elementele minime şi maxime de
pe fiecare coloană. Fiecărei durate, ∆1, ∆2, ∆3 şi ∆4, se asociază:
∆jmin – valoarea minimă a indicatorului ∆j;
∆jmax – valoarea maximă a indicatorului ∆j.

Se construiesc kben intervale de valori pentru fiecare durată, definite de


[lbeninf, lbensup] unde:
lbeninfi – limita inferioară a intervalului i, determinată de relaţia:

lbeninfi = ∆min + (i-1)*rben

268
Metode statistice în analiza software

lbensupi – limita superioară a intervalului i, obţinută ca:

lbensupi = ∆min + i*rben

rben – mărimea intervalelor, definită de relaţia:

∆ max − ∆ min
rben =
kben

Datele astfel obţinute sunt trecute în tabelul 7.19.

Intervalele de valori ale duratelor


şi frecvenţa valorilor pentru durata ∆j
Tabel 7.19
Interval Frecvenţe
[lbeninf1, lbensup1) fben1
[lbeninf2, lbensup2) fben2
… …
[lbeninfi, lbensupi) fbeni
… …
[lbeninf , lbensupk]
k
fbenk

în care fbeni reprezintă numărul de valori ale duratei ∆j analizate ce sunt cuprinse în
intervalul [lbeninfi,lbensupi].

Datele din tabel verifică relaţiile:

kben

∑ fben
i =1
i = NLE , în cazul duratelor ∆2, ∆3, ∆4

kben

∑ fben
i =1
i = NLE − 1 pentru ∆1

lbeninf1 = ∆min
lbensupk = ∆max

Se folosesc teste statistice pentru a vedea dacă frecvenţele urmează o


anumită lege de repartiţie.

269
Construirea de indicatori ai produsului program

De exemplu, se consideră programul P rulat de trei beneficiari Ben1, Ben2


şi Ben3 şi ale căror date sunt înregistrate în tabelele 7.20, 7.21, respectiv 7.22.
Deoarece scopul analizei nu constă în determinarea ponderii de apariţie a
unui tip anume de eroare, nu este inclusă şi coloană care descrie tipul erorii. Cum
toţi beneficiarii efectuează rulările aplicaţiei în intervalul [Tstart, Tfinal], şi pentru a se
asigura comparabilitatea rezultatelor, momentele de timp sunt reprezentate ca
numărul de minute trecute de la momentul iniţial, Tstart.

Înregistrarea erorilor programului ProdSoft


în intervalul [Tstart, Tfinal] pentru beneficiarul Ben1

Tabel 7.20
Nr. Ts Te Tr Tf
crt. (minute faţă (minute faţă (minute faţă (minute faţă
de momentul de momentul de momentul de momentul
Tstart) Tstart) Tstart) Tstart)
1 1 2 4 12
2 17 19 23 30
3 35 40 52 61
4 80 85 88 92
5 98 100 102 108
6 110 120 133 142
7 150 156 161 168
8 172 179 188 198
9 205 208 213 220
10 231 238 240 248
11 256 262 269 278
12 282 290 301 312
13 320 322 328 335
14 341 347 355 362
15 363 366 368 379

270
Metode statistice în analiza software

Înregistrarea erorilor programului ProdSoft


în intervalul [Tstart, Tfinal] pentru beneficiarul Ben2

Tabel 7.21
Nr. Ts Te Tr Tf
crt. (minute faţă (minute faţă (minute faţă (minute faţă
de momentul de momentul de momentul de momentul
Tstart) Tstart) Tstart) Tstart)
1 4 6 8 12
2 15 16 19 23
3 24 30 32 35
4 40 47 53 57
5 63 70 75 84
6 97 100 110 119
7 121 122 126 130
8 148 155 158 165
9 173 180 189 204
10 212 217 225 233
11 235 240 244 252
12 257 263 265 269
13 275 282 286 291
14 298 301 306 312
15 322 328 333 339

271
Construirea de indicatori ai produsului program

Înregistrarea erorilor programului ProdSoft


în intervalul [Tstart, Tfinal] pentru beneficiarul Ben3
Tabel 7.22
Nr. Ts Te Tr Tf
crt. (minute faţă (minute faţă (minute faţă (minute faţă
de momentul de momentul de momentul de momentul
Tstart) Tstart) Tstart) Tstart)
1 5 7 8 9
2 10 14 18 25
3 28 31 37 40
4 42 47 52 69
5 75 78 84 88
6 92 95 98 112
7 118 121 128 138
8 139 150 153 160
9 167 173 181 196
10 200 208 212 221
11 232 236 238 242
12 248 252 261 265
13 269 278 291 301
14 320 324 331 339
15 341 347 356 362

Concatenarea celor 3 tabele cu ordonarea datelor după timpul de start, Ts,


şi validarea datelor conform regulilor definite, conduce la obţinerea tabelului 7.23.

Datele înregistrate la beneficiarii Ben1, Ben2 şi Ben3

Tabel 7.23
Nr. crt. Ts Te Tr Tf Beneficiar
1 1 2 4 12 Ben1
2 12 14 16 20 Ben2
3 20 22 23 24 Ben3
4 25 29 33 40 Ben3
5 40 41 44 48 Ben2
6 48 50 54 61 Ben1
7 61 67 69 72 Ben2
8 72 75 81 84 Ben3
9 84 89 101 110 Ben1
10 110 117 123 127 Ben2

272
Metode statistice în analiza software

Nr. crt. Ts Te Tr Tf Beneficiar


11 127 132 137 154 Ben3
12 154 161 166 175 Ben2
13 175 178 184 188 Ben3
14 188 193 196 200 Be1
15 200 203 206 220 Ben3
16 220 223 233 242 Ben2
17 242 244 246 252 Ben1
18 254 264 277 286 Ben1
19 286 289 296 306 Ben3
20 306 307 311 315 Ben2
21 324 335 338 345 Ben3
22 345 352 355 362 Ben2
23 362 368 373 380 Ben1
24 380 386 394 409 Ben3
25 409 416 425 435 Ben1
26 435 442 451 466 Ben2
27 466 474 478 487 Ben3
28 487 490 495 502 Ben1
29 502 507 515 523 Ben2
30 523 530 532 540 Ben1
31 540 544 546 550 Ben3
32 550 555 559 567 Ben2
33 567 571 580 584 Ben3
34 584 590 597 606 Ben1
35 606 612 614 618 Ben2
36 618 627 640 650 Ben3
37 650 657 661 666 Ben2
38 666 674 685 696 Ben1
39 696 699 704 710 Ben2
40 718 720 726 733 Ben1
41 733 737 744 752 Ben3
42 752 758 763 769 Ben2
43 771 777 785 792 Ben1
44 792 798 807 813 Ben3
45 814 817 819 830 Ben1
273
Construirea de indicatori ai produsului program

Pentru a stabili legea de repartiţie a valorilor se determină duratele ∆1, ∆2,


∆3 şi ∆4 din tabelul 7.24.

Valorile diferenţelor ∆1, ∆2, ∆3 şi ∆4 pentru valorile înregistrate în tabelul 7.23


Tabel 7.24
Valoare ∆1 Valoare ∆2 Valoare ∆3 Valoare ∆4
(Tej+1 – Tej) (Tej – Tsj) (Tfj – Trj) (Trj – Tej)
- 1 8 2
12 2 4 2
8 2 1 1
7 4 7 4
12 1 4 3
9 2 7 4
17 6 3 2
8 3 3 6
14 5 9 12
28 7 4 6
15 5 17 5
29 7 9 5
17 3 4 6
15 5 4 3
10 3 14 3
20 3 9 10
21 2 6 2
20 10 9 13
25 3 10 7
18 1 4 4
28 11 7 3
17 7 7 3
16 6 7 5
18 6 15 8
30 7 10 9
26 7 15 9
32 8 9 4
16 3 7 5
17 5 8 8
23 7 8 2
14 4 4 2
11 5 8 4
16 4 4 9
19 6 9 7
22 6 4 2
15 9 10 13
30 7 5 4
17 8 11 11
25 3 6 5
21 2 7 6
17 4 8 7
21 6 6 5
19 6 7 8
21 6 6 9
19 3 11 2

274
Metode statistice în analiza software

În continuare se aleg elementele minime şi maxime de pe fiecare coloană,


rezultând tabelul 7.25.

Valorile minime şi maxime ale fiecărei durate


Tabel 7.25
Durata
∆1 ∆2 ∆3 ∆4
Minim 7 1 1 1
Maxim 32 11 17 13

Se stabileşte numărul de intervale pentru cele patru seturi de valori, astfel:


¾ valorile asociate variabilei ∆1 sunt grupate în kben1 = 5 intervale;
¾ valorile asociate variabilei ∆2 sunt grupate în kben2 = 5 intervale;
¾ valorile asociate variabilei ∆3 sunt grupate în kben3 = 4 intervale;
¾ valorile asociate variabilei ∆4 sunt grupate în kben2 = 4 intervale;

Se determină pentru fiecare dintre duratele ∆1, ∆2, ∆3 şi ∆4 limita inferioară,


respectiv superioară a celor kbenj intervale, precum şi frecvenţă de apariţie a
valorilor înregistrate în aceste intervale. Rezultă tabelele 7.26, 7.27, 7.28 şi 7.29.

Intervalele de valori ale duratei dintre două defectări, ∆1

Tabel 7.26
Limita Limita Frecvenţe Frecvenţe
Interval
inferioară superioară absolute relative
7 12 [7 , 12) 6 0,13
12 17 [12 , 17) 10 0,22
17 22 [17 , 22) 17 0,38
22 27 [22 , 27) 5 0,11
27 32 [27 , 32] 6 0,17

Total: 44 1

275
Construirea de indicatori ai produsului program

Intervalele de valori ale duratei de execuţie ce precede erorile, ∆2


Tabel 7.27
Limita Limita Interval Frecvenţe Frecvenţe
inferioară superioară absolute relative
1 3 [1 , 3) 8 0,17
3 5 [3 , 5) 12 0,28
5 7 [5 , 7) 15 0,33
7 9 [7 , 9) 7 0,15
9 11 [9 , 11] 3 0,07

Total: 45 1

Intervalele de valori ale duratei de execuţie care urmează depanării, ∆3


Tabel 7.28
Limita Limita Frecvenţe Frecvenţe
Interval
inferioară superioară absolute relative
1 5 [1 , 5) 12 0,27
5 9 [5 , 9) 18 0,40
9 13 [9 , 13) 11 0,24
13 17 [13 , 17] 4 0,09

Total: 45 1

Intervalele de valori ale duratei de depanare, ∆4


Tabel 7.29
Limita Limita Frecvenţe Frecvenţe
Interval
inferioară superioară absolute relative
1 4 [1 , 4) 14 0,31
4 7 [4 , 7) 16 0,36
7 10 [7 , 10) 10 0,22
10 13 [10 , 13] 5 0,11

Total: 45 1

Pentru a verifica ipoteza că frecvenţele urmează o anumită lege de


repartiţie se utilizează teste statistice specifice.

276
Metode statistice în analiza software

Abordarea analizei comportamentului dinamic permite cercetarea


ulterioară a seriei de erori probabile Err1, Err2, …, Errmmes care să le caracterizeze
din punct de vedere al:
` timpului necesar corectării;
` probabilităţii apariţiei în prima parte a rulării aplicaţiei sau în ultima
parte;
` ponderii timpului de întrerupere din timpul total al execuţiei;
` şi care, eventual să le clasifice pe categorii de importanţă.

7.3 Estimarea duratei de prelucrare

Durata de prelucrare a datelor, pentru un produs program, este timpul pe


care acesta îl consumă din momentul în care aduce în memoria internă datele de
intrare urmând a le procesa pentru a obţine un rezultat. Rezultatul reprezintă un
rezultat final, sau unul intermediar, utilizat într-o altă prelucrare.
Pentru a măsura sau estima nivelul indicatorului analizat, procesul este
independent de utilizatorul produsului. Fiind lipsit de control în tot acest timp, el
nu influenţează execuţia aplicaţiei. Dacă, rezultatul prelucrării este intermediar, iar
aplicaţia aşteaptă decizia utilizatorului pentru a continua, următoarea etapă de
procesare a datelor constituie baza altei analize.
De cele mai multe ori, produsele software sunt catalogate ca fiind de slabă
calitate, pentru simplul motiv al incapacităţii de prelucrare a unui volum dat de
date, într-un timp rezonabil. Situaţia este generată de neluarea în considerare a
acestei caracteristici software, producătorul considerând din punct de vedere
teoretic, că aceasta rezultă prin obţinerea unor niveluri ridicate al calităţii pentru
alte caracteristici ale produsului program.
Pentru majoritatea produselor software, nivelul de performanţă este asociat
cu rapiditatea obţinerii rezultatelor. Obţinerea unui timp de prelucrare a datelor de
intrare cât mai mic se impune ca fiind un obiectiv de urmărit încă din primele etape
ale ciclului de viaţă al produsului software.
Necesitate definirii unor indicatori care să măsoare sau să estimeze timpul
de prelucrare a datelor pentru un produs software este dată de importanţa acestuia
în:
¾ realizarea de analize comparate a produselor program; pe baza
caracteristicii, sau în corelaţie cu altele, utilizatorul face comparaţii între
produse software şi decide ce să implementeze;

277
Construirea de indicatori ai produsului program

¾ obţinerea de rezultate reprezentative în cercetările statistice, utilizând


instrumente software; în analizele statistice sunt avute în vedere două
tipuri de erori, statice şi dinamice; dacă cele statice sunt previzibile şi
uşor de evitat, cele dinamice apar în timpul prelucrării datelor, iar una
din cauza acestora este timpul de prelucrare prea mare al datelor;
¾ descrierea unei imagini clare a resurselor consumate în etapa de
prelucrare pentru a se rezerva acestea sau pentru a stabili noi obiective
legate de nivelurile acestora;
¾ efectuarea de operaţii în cel mai scurt timp; de exemplu o aplicaţie
bursieră, bancară sau din domeniul medical este implicată în activităţi
din sectoare ale societăţii, în care corectitudinea rezultatului este vitală,
dar în aceeaşi măsură şi timpul în care este obţinut, fiecare secundă
fiind la fel de importantă.
Estimarea timpului de prelucrare este o operaţie complexă, care necesită
costuri şi a cărei realizare este avantajată de situaţiile precum:
Š existenţa aplicaţiei şi testarea acesteia pe un lot reprezentativ de tipuri
de seturi de date; în finalul analizei se obţin indicatori ale căror valori
sunt estimate;
Š realizarea unui prototip al aplicaţiei care nu necesită să fie funcţional în
proporţie de 100%, dar care să permită o abordare teoretică a acestei
probleme prin determinarea pe baza codului sursă a numărului de cicluri
maşină şi estimarea timpului necesar unei prelucrări; în cazul
aplicaţiilor cu grad de complexitate ridicat, această abordare implică
costuri mult mai ridicate decât testarea produsului finit, iar rezultatele
nu sunt reprezentative.
Trebuie luate în considerare şi cauzele care determină obţinerea cu greutate
a valorilor estimate pentru durata de prelucrare a unui set de date:
” în cazul aplicaţiilor complexe, ce implementează procese de prelucrare
a volumelor mari de date, obţinute din surse diverse, este dificil
simularea prelucrării acestora, fără realizarea în prealabil a unui
prototip;
” există produse software ce prelucrează date de tipuri diferite, fiecare
dintre ele necesitând activarea de funcţii şi proceduri specifice;
” chiar dacă, acest timp este dependent într-o mare măsură de
echipamentul hardware, pentru aplicaţiile distribuite luându-se în calcul
şi capacitatea reţelei, este importantă definirea unei configuraţii minime,

278
Metode statistice în analiza software

pe care să se testeze produsul; rezultatele testelor constituie pentru


utilizator sau producător o bază de comparaţie;
” definirea stării optime a sistemului pe care rulează produsul software
respectiv, este o operaţie complexă, luându-se în calcul diferitele
aplicaţii care rulează în acelaşi timp şi care influenţează negativ sau
pozitiv trendul nivelului timpului de prelucrare;
” durata de prelucrare este pentru multe domenii o caracteristică software
vitală, de exemplu în cazul produselor software din centralele atomo-
electrice; în altele este încă condiţionată de tehnica de calcul şi de
complexitatea rezultatului, de exemplu pentru produsele program ce
simulează fenomene atmosferice sau geologice; de aceea, înaintea
analizei trebuie studiat gradul de importanţă al caracteristicii şi trebuie
definite praguri valorice clare;
” există numeroşi factori de care depind acest timp, iar monitorizarea lor
este o operaţie complexă, uneori imposibil de realizat.
Indicatorul asociat duratei de prelucrare, D, se obţine ca diferenţă între
momentul de încheiere al prelucrării datelor, Tf, şi momentul de lansare în execuţie,
Ts, a unui program:

DP = Tf – Ts.

Se consideră problemele Px1, Px2, …, Pxi, …, Pxnpx de rezolvat prin


elaborare de produse program. Toate cele npx probleme fac parte din aceeaşi
categorie, iar pentru rezolvarea lor se utilizează un singur produs program.
Obţinerea rezultatului Rezi pentru problema Pxi nu implică parcurgerea aceloraşi
paşi necesari găsirii rezultatului Rezj, al problemei Pxj, unde i este diferit de j. Însă
ambele situaţii sunt rezolvate de către aceeaşi etapă de prelucrare. Diferenţa există
dacă seturile de date de intrare sunt diferite şi prelucrarea lor implică operaţii
specifice.
De exemplu, un produs program care rezolvă ecuaţii de gradul 2, dă
rezultate diferite în funcţie de datele de intrare, fără a se parcurge toţi paşii posibili
ai algoritmului. Dacă valoarea discriminantului, calculată în primele etape ale
algoritmului, este negativă, atunci rezultatul dat de aplicaţie indică faptul că nu
există soluţie în spaţiul real. Dar durata etapei de prelucrare este comună şi datelor
de intrare care conduc la o soluţie reală, întrucât se schimbă semnul
discriminantului şi se calculează soluţiile x1, x2.

279
Construirea de indicatori ai produsului program

În cazul general pentru programul PG destinat soluţionării problemei


concrete Pxi se calculează duratele de prelucrare DPi = Tfi – Tsi, cu i = 1,2, …, npx,
date care sunt înregistrate în tabelul 7.30.

Înregistrarea valorilor asociate duratelor de prelucrare


Tabel 7.30
Timp de start Timp de final Durata de prelucrare
Problema Ts Tf DP = Tf – Ts
P1 Ts1 Tf1 DP1
P2 Ts2 Tf2 DP2
… … … …
Pi Tsi Tfi DPi
… … … …
Pnpx Tsnpx Tfnpx DPnpx

în care:
Tsi – timpul de start al rezolvării problemei Pxi;
Tfi – timpul final al rezolvării problemei Pxi;
DPi – durata de prelucrare înregistrată pentru procesul de rezolvare a
problemei Pxi.

Din prelucrările statistice rezultă o durată medie de prelucrare D P ,


obţinută după relaţia:
npx

∑ DP i
DP = i =1
, cu n ≠ 0
npx
unde:
DPi – durata de prelucrare a problemei Pxi;
npx – numărul de probleme rezolvate.

Indicatorul, reprezintă un model al estimării duratei de timp necesare


programului analizat pentru a prelucra datele şi a da un rezultat. Valoarea sa,
descrie faptul că indiferent de setul datelor de intrare, obţinerea rezultatului
necesită în medie durata de D P unităţi de timp, fie că acestea sunt secunde,
minute sau chiar ore.

280
Metode statistice în analiza software

În cazul produselor software de o complexitate redusă a algoritmului,


reprezentativitatea valorii medii este ridicată, pentru că aceasta are variaţii mici,
iar setul de durate DP1, DP2, …, DPnpx este dispus în jurul ei.
Dar, pentru a realiza estimări pe baza valorii medii se iau în considerare
restricţiile privind:
™ omogenitatea lotului de date;
™ gradul de cuprindere a tipurilor de probleme, astfel încât nici una să
influenţeze într-o măsură mai mare valoarea indicatorului mediu.

Cele două condiţii nu sunt complementare, lucru care conduce ca analiza să


fie greu de realizat. De aceea, indicatorul D P este folosit numai pentru a descrie
nivelul caracteristicii de timp consumat, el constituind o bază de pornire a
procesului de estimare.

Pentru obţinerea de indicatori care să permită găsirea de valori estimate cu


nivel de rigurozitate sporit, se procedează la descrierea problemei de rezolvat prin
luarea în considerare a caracteristicilor sale, a factorilor primari ce o definesc:
” numărul unităţilor de date cuprinse într-un set de intrare, pe baza căruia
se obţine un rezultat;
” tipul datelor; în situaţia în care produsul program acceptă tipuri de date
de intrare diferite, asemenea tipurilor fundamentale definite în limbajele
de programare (integer, float, double, character), sau tipuri descrise de
programator, este indicat ca tipul de dată să fie descris prin lungimea pe
care el o ocupă, în octeţi; astfel există comparabilitate între ele, şi se
definesc indicatori care să măsoare gradul de influenţă al tipului datelor
de intrare asupra duratei de prelucrare.

În funcţie de particularităţile fiecărui tip de problemă, se definesc noi


factori, care derivă din tipul datelor utilizate şi ale căror niveluri sunt măsurabile.
Cu toate acestea, toate problemele sunt caracterizate de cei doi factori primari.
De exemplu, în cazul efectuării unor prelucrări statistice, o problemă este
definită prin:
ƒ numărul seriilor de date;
ƒ lungimea seriilor de date;
ƒ numărul indicatorilor de calculat;
ƒ tipul datelor din serii;
ƒ volumul de prelucrări pe care îl presupun fiecare dintre indicatori.
281
Construirea de indicatori ai produsului program

În cazul problemelor de gestiune a materialelor, se iau în considerare:


` numărul de înregistrări în baza de date;
` numărul de actualizări produse;
` tipul înregistrărilor;
` tipul bazei de date.
Pentru problemelor de optimizare, durata prelucrării depinde de:
” dimensiunea problemei;
” numărul de iteraţii;
” tipul datelor;
” precizia care se obţine.
Identificarea dependenţei dintre timpul de prelucrare şi factorii care o
influenţează reprezintă analiza intensităţii si semnificaţiei legăturii dintre
caracteristica rezultativă şi cele care o determină, precum: numărul înregistrărilor
la intrare, respectiv tipul lor exprimat ca spaţiul de memorie ocupat.
În acest scop se construieşte un tabel în care se includ variabilele asociate
celor doi factori.
Se consideră programul PR care rezolvă o anumită problemă PROB. Datele
de intrare ale problemei sunt stocate într-un fişier FIS. Acesta are înregistrări în
număr de kfis.
Există nutl utilizatori ai programului PR. Fiecare din cei nutl utilizatori are
câte un fişier. Deci există fişierele FIS1, FIS2, …, FISnutl fiecare având kfis1, kfis2,
…, kfisnutl articole. Se colectează duratele de execuţie, DP, în tabelul 7.31.

Înregistrarea duratelor de execuţie

Tabel 7.31
Problema Fişier Numărul înregistrărilor Durata de execuţie
kfis DP
PROB FIS1 kfis1 DP1
PROB FIS2 kfis2 DP2
… … … …
PROB FISi kfisi DPi
… … … …
PROB FISnutl kfisnult DPnutl

282
Metode statistice în analiza software

Se studiază corelaţia între numărul de articole şi duratele de prelucrare prin


determinarea coeficientului de corelaţie lineară, rDP/kfis, prin relaţia:

nutl nutl nutl


nutl ∑ kfisi DPi − ∑ kfisi ∑ DPi
rD / kfis = i =1 i =1 i =1

⎡ nutl
2 ⎛
nutl
⎞ ⎤⎡
2 nutl
2 ⎛
nutl
⎞ ⎤
2

⎢nutl ∑ kfisi −⎜ ∑ kfisi ⎟ ⎥ ⎢nutl ∑ DPi −⎜ ∑ DPi ⎟ ⎥


⎣⎢ i =1 ⎝ i =1 ⎠ ⎦⎥ ⎣⎢ i =1 ⎝ i −1 ⎠ ⎦⎥

Indicatorul statistic măsoară numai intensitatea legăturii liniare dintre cele


două variabile, DP şi kfis, DP fiind măsurat pentru fiecare rulare a problemei
PROB. Ia valori cuprinse între –1 şi 1, iar semnul său semnifică tipul de legătură
dintre durata de execuţie şi lungimea fişierului ca număr de înregistrări:
¾ rDP/kfis > 0 corespunde situaţiei conform căreia la creşterea volumului de
înregistrări, K, al fişierului, se înregistrează mărirea duratei de
prelucrare, DP;
¾ rDP/kfis < 0 descrie situaţiei în care conform căreia creşterea volumului
de înregistrări determină micşorarea duratei de prelucrare.
Cu cât coeficientul are valori mai apropiate de 1 sau –1 cu atât corelaţia
dintre cele două variabile este mai puternică. În cazul în care rDP/kfis = 0, variabilele
sunt independente, adică durata de prelucrare nu este influenţată de mărimea
fişierului, iar pentru rDP/kfis = 1, variabilele sunt dependente funcţional.
Alte interpretări a rezultatului:
ƒ 0 ≤ rDP/kfis < 0,2 nu există legătură semnificativă între cele două
variabile;
ƒ 0,2 ≤ rDP/kfis < 0,5 există o legătură slabă;
ƒ 0,5 ≤ rDP/kfis < 0,75 există o legătură medie;
ƒ 0,75 ≤ rDP/kfis < 0,95 există o legătură puternică.

De exemplu, pentru problema de calcul a mediilor şcolare semestriale se


consideră fişierele FIS1, FIS2, …, FIS15 ce conţin notele înregistrate la examenele
finale de grupelor de studenţi. Fişierele sun omogene din punctul de vedere al
tipului datelor conţinute, însă mărimea lor ca număr de articole variază în intervalul
[30, 200], deoarece ele reprezintă atât studenţii unei grupe cât şi a unui an
universitar. Duratele înregistrate pentru prelucrarea datelor reprezintă zecimi de
secundă şi sunt trecute în tabelul 7.31.

283
Construirea de indicatori ai produsului program

Înregistrarea duratelor de execuţie


Tabel 7.32
Fişier Numărul înregistrărilor Durata de execuţie
kfis DP
FIS1 88 11
FIS2 173 12
FIS3 128 12
FIS4 58 9
FIS5 161 12
FIS6 117 12
FIS7 145 12
FIS8 78 10
FIS9 81 10
FIS10 100 12
FIS11 200 13
FIS12 53 9
FIS13 60 9
FIS14 72 9
FIS15 32 9

iar coeficientul de corelaţie liniară are valoarea rDP/kfis = 0,99, ceea ce evidenţiază
dependenţa funcţională dintre timpul de prelucrare şi mărimea fişierului de intrare
în cazul acestui tip de produs program.
Există programe cu grad de generalitate a problemelor de rezolvat deosebit
de ridicat, aşa cum este programul de sortare a fişierelor.
În acest caz este important să se studieze dependenţa duratelor de execuţie,
numărul de articole şi tipul de date. În acest sens se construieşte tabelul 7.33 în care
se iau în considerare:
mdt – numărul de tipuri de date;
npb – numărul de probleme de rezolvat;
kfisi – lungimea fişierului problemei Pxi ca număr de articole;
Tipdj – tipul de date j;
Tipd j
DPi – reprezintă durata de prelucrare a articolelor de tipul Tipdj
aflate în număr de kfisi.

284
Metode statistice în analiza software

Descrierea valorilor factorilor K şi L

Tabel 7.33
Numărul Tipului de Tipului de Tipului
Problema înregistrărilor dată … dată … de dată
Tipd1 Tipdj Tipdmdt
Px1 kfis1 DP1Tipd1 … DP1
Tipd j … DP1Tipd mdt
Px2 kfis2 DP2Tipd1 … DPnpb
Tipd j … DP2Tipd mdt
… … … … … … …
Pxi kfisi DPi Tipd1 … DPi
Tipd j … Tipd mdt
DPnpb
… … … … … … …
Pxnpb kfisnpb DP Tipd1 … DP
Tipd j … Tipd mdt
DPnpb
npb npb

unde:
kfisi – reprezintă numărul de unităţi de intrare asociate problemei Pxi;
Tipdj – reprezintă un tip de date de intrare acceptat de produsul program.

Studiul dependenţei liniare impune şi în acest caz determinarea


coeficientului de corelaţie liniară rDP/kfis. Dacă, tipul legăturii nu este clar din
observarea datelor înregistrate, anterior analizei semnificaţiei corelaţiei dintre
variabile se utilizează metoda grafică pentru a se stabili forma legăturii.
Pentru dimensionarea resurselor este important să se cunoască factorii care
influenţează duratele de execuţie, necesarul de memorie care se alocă dinamic,
spaţiul de memorie fizică necesar păstrării datelor de intrare şi ieşire.
Se are în vedere faptul că valorile coeficientului de corelaţie obţinute
pentru fiecare din tipurile de date sunt comparabile. Astfel se scoate în evidenţă
dacă programul este sau nu sensibil la tipul sau categoria datelor. Dacă pentru
aceeaşi factori cercetaţi se obţin dependenţe diferite asociate fiecărei categorii în
parte, se trage concluzia că aceasta influenţează durata de prelucrare.
Pentru a exemplifica, se consideră un produs program ce implementează
algoritmul de sortare a fişierelor bazat pe metoda quicksort şi nset seturi de date
Set1, Set2, …, Seti, …, Setnset ştiind că dacă Set1 este un fişier cu ki înregistrări,
Setnset este un fişier cu nset*ki înregistrări. De asemenea, tipul înregistrărilor este
reprezentat pe rând de numere întregi fără semn, unsigned int, şi de numere reale,

285
Construirea de indicatori ai produsului program

double. Se construieşte tabelul 7.34:


Duratele sortării fişierelor
Tabel 7.34
Tip de date Număr Tipul de date Tipul de date
de înregistrări unsigned int double
Date de intrare KI (2 byte) (8 bytes)
Set1 ki1 DP Tipd1 DP Tipd 2
1 1
Set2 ki2 DP Tipd1
DP Tipd 2
2 2
… … … …
Seti kii DPi Tipd1 DPi Tipd 2
… … … …
Setnset kinset DP Tipd1
DnTipd 2
n
Tipd j
unde DPi reprezintă durata sortării setului de date Seti cu kii articole de tip
Tipdj.
Se calculează coeficienţii de corelaţie rDP/Tipd1 şi rDP/Tipd2, unde:
rDP/Tipd1 – reprezintă coeficientul de corelaţie liniară dintre durata de
prelucrare a fişierelor ce conţin articole de tipul Tipd1;
rDP/Tipd2 – reprezintă coeficientul de corelaţie liniară dintre durata de
prelucrare a fişierelor ce conţin articole de tipul Tipd2;
şi se analizează valorile acestora.
Se consideră setul de date din tabelul 7.35.

Date pentru a studia corelaţia dintre numărul de date de intrare


şi durata de prelucrare a acestora pentru două tipuri de date
Tabel 7.35
Tip de date Număr Durata înregistrată Durata înregistrată
de înregistrări pentru tipul Tipd1 pentru tipul Tipd2
Date de intrare (zecimi de secundă) (zecimi de secundă)
Set1 ki 4 4
Set 2 2ki 5 5
Set 3 3ki 5 7
Set 4 4ki 6 8
Set 5 5ki 6 11
Set 6 6ki 7 13
Set 7 7ki 8 15
Set 8 8ki 9 15
Set 9 9ki 10 16
Set 10 10ki 11 18

286
Metode statistice în analiza software

Tipd j
nset are o valoare dată (de exemplu 10), DPi au valori numerice reprezentând
timpul în zecimi de secunde, iar ki reprezintă valoarea de 10 octeţi. Seriile de date
de intrare conţin numere generate random pentru a nu exista situaţii particulare în
care înregistrările sunt: de aceeaşi valoare, sortate în ordine inversă, sau sortate
deja.
Valoarea coeficientului de corelaţie este rDP/Tipd1 este: 0,97 şi cum este
apropiată de 1, concluzia este că cele două variabile, durata de prelucrare şi
numărul de înregistrări pentru tipul de dată unsigned int, sunt dependente
funcţional. Valoarea lui rDP/Tipd2 este: 0,988, deci şi în acest caz între cele două
variabile există o legătură puternică.
Cum rDP/Tipd1 şi rDP/Tipd2 descriu dependenţe de intensitate asemănătoare
rezultă că durata de prelucrare este dependentă de numărul datelor de intrare
indiferent de tipul lor.
Pentru a analiza dependenţa dintre durata de prelucrare şi tipul datelor este
necesar agregarea datelor din tabelul 7.36 prin calcularea duratelor medii de
prelucrare pentru cele două categorii, Tipd1 şi Tipd2.

Date pentru a studia corelaţia dintre tipul seturilor datelor de intrare


şi durata medie de prelucrare a acestora

Tabel 7.36
Tipul datelor Durata medie de prelucrare
(spaţiul ocupat în bytes)
tp1 D Tipd1 *

tp2 D*Tipd 2
… …
tpj D*
Tipd j

… …
tpmtp D*Tipd m

unde:
mtp – numărul de tipuri de date;
Tipd j
D * – durata medie de prelucrare a unei singure date de tipul Tipdj, cu
j=1..mtp.

287
Construirea de indicatori ai produsului program

Se impune agregare datelor sub această formă, pentru că prin această


reprezentare a datelor este posibilă descrierea dependenţei dintre tipul
înregistrărilor şi durata de prelucrare într-un mod care să permită calcularea
coeficientului de corelaţie dintre cele două variabile. În tabelul 7.37 este
evidenţiată corelaţia dintre modificarea tipului datei de intrare şi variaţia duratei de
prelucrare.
Se impune efectuarea unui studiu distinct pentru luarea în considerare a
cazurilor particulare în care fişierele sunt deja sortate sau sunt sortate invers în
raport cu modul în care se face sortat în program (fişierul e sortat crescător şi
programul îl sortează descrescător).
Tipd j
Valoarea lui D* este determinată prin relaţia:

mtp

∑D
Tipd j
i
Tipd j
D* = i =1
mtp

∑ KI
i =1
i

şi reprezintă durata medie de prelucrare a unei singure date de tipul Tipdj. Se


utilizează această relaţie pentru a se diminua influenţa pe care o are numărul de
date asupra duratei medii de prelucrare în momentul în care se cercetează corelaţia
dintre aceasta şi tipul datelor. Decizia este motivată de există numeroaselor produse
program care sunt caracterizate de o corelaţie neliniară dintre numărul datelor de
intrare şi timpul de prelucrare.

Date pentru a studia corelaţia dintre tipul seturilor datelor şi durata medie de
prelucrare a acestora pentru produsul program de sortare

Tabel 7.37
Tipul datelor Durata medie de prelucrare
a unei unităţi de dată
(spaţiul ocupat în bytes) (zecimi de secundă)
2 0,13
8 0,20

288
Metode statistice în analiza software

Coeficientul de corelaţie este calculat după aceeaşi formulă, în care X este


T
reprezentat de valoarea timpului de execuţie, timpj, iar Y de D* j . Pentru datele din
tabelul 8.3.8 se obţine valoarea:

2 2 2
2∑ timpi D*Tipd i − ∑ timpi ∑ D*Tipd i
rD Tipd / timp = i =1 i =1 i =1
= 0,99
*
⎡ 2 Tipd 2 ⎛ 2 ⎞ ⎤ ⎡ 2 Tipd 2 ⎛ 2 Tipd ⎞ 2 ⎤
2

⎢2∑ D* i −⎜ ∑ ti ⎟ ⎥ ⎢2∑ D* i −⎜ ∑ D* i ⎟ ⎥
⎣⎢ i =1 ⎝ i =1 ⎠ ⎦⎥ ⎣⎢ i =1 ⎝ i −1 ⎠ ⎦⎥

Rezultă că nivelul coeficientului de corelaţie rD Tipd / timp are o valoarea


*

aproape egală cu 1 ceea ce conduce la concluzia că între durata de prelucrare şi


tipul datelor de intrare există o legătură de dependenţă funcţională puternică.
Legăturile de dependenţă dintre variabile sunt observabile direct pe baza
datelor din tabele. Cercetarea este finalizată, o analiză suplimentară care să testeze
dacă legătura dintre caracteristici este semnificativă şi nu este întâmplătoare,
nefiind necesară. În cazul problemelor complexe caracterizate de numeroase
variabile şi de serii de valori ce nu au un trend liniar, se impune efectuarea testului
t, în care pentru coeficientul de corelaţie simplă se calculează:

r
t = n−2 .
1− r2

Dacă t > t p ;n − 2 , unde p reprezintă probabilitatea , iar n numărul de valori,


atunci legătura dintre caracteristici nu este întâmplătoare, ci semnificativă.

Pentru produsele program caracterizate de legături neliniare între factori ce


descriu reprezentări grafice de forma unei parabole de gradul doi, hiperbole sau
unei funcţii exponenţiale, se utilizează metode statistice cunoscute:
` corelaţia simplă curbilinie;
` raportul de corelaţie.
Prin intermediul cărora se măsoară gradul de intensitate a dependenţei.
Scopul analizei de corelaţie liniară simplă pentru fiecare dintre variabilele
ce influenţează durata de prelucrare este de a descoperi factorii care au o influenţă
mare, şi care sunt baza construirii unui model de regresie.
289
Construirea de indicatori ai produsului program

Odată definiţi factorii X1, X2, …, Xp ce influenţează valoarea variabilei


dependente, aceasta din urmă se consideră ca fiind o funcţie de forma: D = f( X1,
X2, …, Xp ). Dacă legătura dintre fiecare factor şi valoarea duratei de prelucrare
este de liniară, atunci ecuaţia de estimare este:

YX 1 , X 2 ,..., X p = a0 + a1 X 1 + a2 X 2 + ... + a p X p
în care:
a0 – reprezintă parametrul asociat acţiunii constante a
factorilor incluşi în model;
a1, a2, …, ap – sunt coeficienţii de regresie care arată cât se modifică
variabila rezultativă la modificarea factorului respectiv
cu o unitate;
X1, X2, …, Xp – variabilele asociate factorilor cu influenţă semnificativă.

Pentru programul de sortare, în care:


X1 – numărul datelor de intrare;
X2 – tipul datelor;
modelul de regresie liniară este:

YX1 , X 2 = a0 + a1 X 1 + a2 X 2 .

Determinarea coeficienţilor ecuaţie de regresie, conduce la obţinerea


acesteia:

YX1,X2 = -3,5166 + 0,118 *X1 + 2,05*X2


în care :
X2 – reprezintă tipul datelor, luând valorile 2 pentru integer şi 4 pentru
double.

Abordarea complexităţii algoritmului şi a programului nu dezvăluie noi


factori care să influenţeze rezultatele studiului, deoarece prin această analiză se
estimează durata de prelucrare pentru un singur produs software, iar acei indicatori
au aceeaşi valoare indiferent de problemă. Dacă obiectivul consta în alegerea unui
produs program pe baza unei analize comparate, sau în descoperirea factorilor care
să îmbunătăţească timpul de prelucrare al aplicaţiei, atunci era indicată această
direcţie de urmat.

290
Metode statistice în analiza software

7.4 Înregistrarea consumului de resurse

Consumul de resurse vizează latura cantitativă a proceselor de elaborare a


produsului program.
La realizarea unui produs program participă analişti, programatori, testeri,
personal specializat în implementare, în elaborarea documentaţiei.
Consumurile de resurse în acest caz sunt:
¾ numărul de persoane din fiecare categorie care participă la elaborarea de
componente, la testare;
¾ durata activităţii desfăşurate de fiecare persoană; dacă este vorba de
analişti se măsoară durata procesului de analiză şi durata procesului de
elaborare a soluţiei; dacă este vorba de programatori, se măsoară durata
de scriere a programului, durata de compilare, duratele de depanare,
durata necesară creării documentaţie; dacă este vorba de testări, se
înregistrează duratele operaţiilor de testare, de comunicare, de întocmire
de rapoarte.

În toate cazurile duratele sunt efectiv măsurate şi planificate. Este


important ca duratele planificate să fie cât mai apropiate de duratele efective.
Alte consumuri vizează:
` software de bază utilizat care există sau care trebuie achiziţionat;
` calificarea persoanelor pentru a lucra cu noul software;
` achiziţionarea de echipament, terminal pentru a implementa soluţiile
cele mai noi.

Se impune elaborarea unui model care să vizeze consumurile în expresie


cantitativă, în expresie valorică. De exemplu, pentru a descrie prin prisma
numărului de peroane implicate în ciclul de dezvoltare şi comercializare a unui
produs program se definesc variabilele:
NRPRS – numărul de persoane antrenate în procesul de dezvoltare a
programelor;
NRPA – numărul de analişti;
NRPP – numărul de programatori;
NRPT – numărul persoanelor care se ocupă cu testarea produsului
software;
NRPI – numărul persoanelor ce implementează aplicaţia în mediul de
lucru al clientului;

291
Construirea de indicatori ai produsului program

NRPD – numărul persoanelor care comercializează produsul program.


între care există relaţia:

NRPRS = NRPA + NRPP + NRPT + NRPI + NRPD

Pentru realizarea unui program în primul rând se consumă forţă de muncă


foarte înalt calificată. De la proiectarea programului până la testarea lui lucrează
persoane cu înaltă calificare.
Ciclul de realizare a unui program este format din fazele Faz1, Faz2,
…,Fazkfaz. În cadrul fiecărei etape sunt sarcini realizate de persoane cu calificare
omogenă, în etapa Fazi lucrează numai o categorie de specialişti. Durata de lucru se
măsoară ca număr de zile. Rezultă tabelul 7.38.

Înregistrarea costurilor etapelor procesului de dezvoltare a produsului software


Tabel 7.38
Etapa Număr de Număr zile Salariu pe zi Cost pe etapă
persoane lucru
Faz1 PersI1 Nzi1 Salz1 CST1
Faz2 PersI2 Nzi2 Salz2 CST2
… … … … …
Fazi PersIi Nzii Salzi CSTi
… … … … …
Fazkfaz PersIkfaz Nzikfaz Salzkfaz CSTkfaz
Nivel kfaz kfaz Salz= CST=
total PersI= ∑ Persi Nzi= ∑ Nzi i kfaz kfaz
i =1 i =1
∑ Salzi
i =1
∑ CST
i =1
i

în care:
kfaz – numărul de etape al procesului;
PersIi – numărul de persoane implicate în etapa de lucru Fazi;
Nzii – numărul de zile lucru înregistrate pentru realizarea obiectivelor
etapei Fazi;
Salzi – salariul primit de fiecare persoană pentru fiecare zi de lucru;
CSTi – costul etapei Fazi din punctul de vedere al renumeraţiei
persoanelor implicate; este determinat de relaţia:

CSTi = PersIi * Nzii * Salzi

292
Metode statistice în analiza software

Costul total al procesului de producţie este obţinut prin luarea în


considerare şi a celorlalte cheltuieli ale fiecărei etape, prin formula:

kfaz kfaz kfaz


CSTTotal = ∑ CST + ∑ KCST
i =1
i
i =1
i = CST + ∑ KCSTi
i =1

unde:
CST – costul total al personalului angajat în procesul de producţie
software;
KCSTi – alte cheltuieli ale etapei Fazi.

Pentru programe se înregistrează aceste consumuri efective, prin a căror


agregare rezultă costul total al produsului software calculat real. La costul
produsului se adaugă şi alte cheltuieli: taxe, impozite, resurse hardware şi software
necesare, etc.
În cazul în care producătorul a orientat procesul de dezvoltare către
realizarea unui singur tip de produs software, datele înregistrate pe parcursul
acestor proiecte sunt utilizate pentru a stabili o bază a modelelor de estimare.
În acest sens se construiesc mprogr tabele de tip 7.38 pentru programele
Progr1, Progr2, …, Progrmprogr omogene din punct de vedere al problemei pe care o
rezolvă, a funcţiilor implementate şi numărului de etape în care au fost realizate.
Prin agregarea datelor din cele mprogr tabele se determină tabelul 7.39.

Agregarea costurilor efective pentru setul de programe omogene


Tabel 7.39
Etapa Progr1 Progr2 … Progrj … Progrmprogr Durata medie a
etapei Fazi
Faz1 nrzi11 nrzi12 … nrzi1j … nrzi1mprogr NRZI1
Faz2 nrzi21 nrzi22 … nrzi2j … nrzi2mprogr NRZI2
… … … … … … … …
Fazi nrzii1 nrzii2 … nrziij … nrziimprogr NRZIi
… … … … … … … …
Fazkf nrzikf1 nrzikf2 … nrzikfj … nrzikfmprogr NRZIkf
Total: NRZI

293
Construirea de indicatori ai produsului program

în care:
kf – numărul de etape al procesului de dezvoltare a produsului
software;
mprog – numărul de programe;
Fazi – etapa i a procesului;
Progrj – programul j realizat de producător pentru care s-au înregistrat
consumurile efective;
nrziij – durata etapei Fazi din ciclul de dezvoltare a programului Progrj,
exprimată ca număr zile efectiv lucrate;
NRZIi – durata medie a etapei Fazi, obţinută ca:

mprogr
1
NRZIi = * ∑ nrziij
mprogr j =1

Pe baza datelor tabelului 8.4.2 se determină ponderea, pondi, etapei Fazi în


procesul de realizare a produselor program:

NRZI i NRZI i
pondi = kf
=
NRZI
∑ NRZI
i =1
i

Aceste ponderi oferă informaţii privind definirea de modele pentru


estimarea costurilor aferente fiecărei etape.

Când se distribuie modulele se prezintă fiecărui executant coordonatele:


` durata de execuţie a modulului;
` elemente de calitate, precum şi nivelurile de atins ale acestora;
` elemente de complexitate şi indicaţii privind abordarea eficientă a
acestora.
Se înregistrează fişe proiectate suficient de clar pentru a obţine informaţii
utile elaborării modelelor de estimare a consumului de resurse.
” se dă tema de realizat;
” se stabileşte clasa de software prin comparaţie cu alte produse;
” se estimează după clasă, nivelul de complexitate pe care produsul îl are;
” se estimează pornind de la nivelul complexităţii:
ƒ costul estimat al produsului;

294
Metode statistice în analiza software

ƒ numărul estimat al personalului implicat în proces;


ƒ durata maximă de realizare a programului.
Principii implementate de modelele de estimare sunt descrise în figurile 7.3
şi 7.4

Obiectivul Estimarea
produsului de Complexitate devizului de
realizat estimată cheltuieli

Figura7.3 Model de bază al estimării costurilor de realizare a produsului software

În modelul din figura 7.3 se utilizează experienţa specialiştilor în realizarea


proiectelor anterioare, şi prin plasarea produsului software curent într-o clasă de
programe de aceeaşi complexitate se obţin estimări bune ale costurilor de
producţie.

Obiectivul Structura produs Componente Estimarea


produsului
program produs program consumuri
de realizat

Figura 7.4 Model clasic al estimării costurilor de realizare a produsului software

În cazul modelului clasic şi al produselor complexe, obţinerea unei


structuri reprezintă un proces laborios ce ia în discuţiei un număr foarte mare de
factori şi care în final poate să nu conducă la obţinerea unei estimări exacte. De
asemenea, abordarea necesită cantităţi însemnate de resurse.
În final, se realizează devizul care conţine:
™ cost estimat al procesului de dezvoltare a produsului software;
™ consumuri de resurse estimate pe bază de modele;
™ durate estimate, pe baza cărora producătorul planifică lansarea pe piaţă
a produsului.

Când se realizează produsul se înregistrează valorile efective ale


elementelor devizului şi acestea sunt comparate cu nivelurile estimate.

295
Construirea de indicatori ai produsului program

Compararea nivelului estimat cu cel efectiv


Tabel 7.40
Element Nivel efectiv Nivel estimat Diferenţa
Cost Costef Costest ∆cost
Consum Consef Consest ∆cons
Durată Duraef Duraest ∆dura

în care:
Elemef – valoarea efectivă înregistrată pentru elementul Elem = {Cost,
Consum, Durată};
Elemest – valoarea estimată pe bază de modele la începutul procesului de
dezvoltare a produsului program pentru elementul Elem =
{Cost, Consum, Durată};
∆elem – diferenţa dintre valoarea estimată şi cea reală, dată de relaţia:

∆elem = | Elemest – Elemef |

Pe baza datelor tabelului 7.40 se stabilesc diferenţele ∆cost, ∆cons, ∆dura şi se


analizează calitatea estimării. Modelul este bun dacă diferenţele sunt minime.
În comparare de software se fac înregistrări ale consumului efectiv pentru a
corecta modelele pentru a obţine niveluri estimate foarte apropiate de cele efective,
în viitor.

7.5 Lucrul programatorilor în realizarea software

Activitatea de programare nu este o activitate continuă şi uniformă.


De fiecare dată se înregistrează datele tabelului 7.41

Descrierea momentelor de lucru efectiv


Tabel 7.41
Moment start Moment încheiere Secvenţă
DST1 DFN1 SCV1
DST2 DFN2 SCV2
… … …
DSTi DFNi SCVi
… … …
DSTnscv DFNnscv SCVnscv

296
Metode statistice în analiza software

unde:
DSTi – momentul de începere a activităţii de programare continuă;
DFNi – momentul de încheiere;
SCVi – secvenţă de lucru neîntrerupt definită de intervalul [DSTi, DFNi]
în care se elaborează instrucţiuni.
Într-o zi există numeroase secvenţe de timp de lucru delimitate prin
momentele DSTi şi DFNi, în care DSTi+1 > DFNi.
De asemenea se înregistrează codul compilării modulului MDLi:

Cod1(MDLi), Cod2(MDLi), …, Codtcod(MDLi)

şi durata depanărilor aceluiaşi modul:

DDep1(MDLi), DDep2(MDLi), …, DDeptcod(MDLi)

Programatorul consumă timp pentru:


” a scrie secvenţe de program;
” a compila;
” a lansa în execuţie cu exemple de test modulul MDLi:

EXC1(MDLi), EXC2(MDLi), …, EXCkexc(MDLi);

” elaborare documentaţiei;
” perfecţionare produs.
Toate aceste activităţi consumă timp şi se înregistrează pentru a stabili
structuri de modele pentru estimare consum de resurse, pentru că programatorii
sunt plătiţi la zi lucru.

Înregistrarea duratelor de timp consumate în procesul de realizare


a produselor program de complexitate determinată
Tabelul 7.42
Program Complexitate Durată scriere Durată obţinere cod Durată
texte sursă sursă executabil execuţie teste
Program1 Complex1 DTS1 DCEX1 DEXT1
Program2 Complex2 DTS2 DCEX2 DEXT2
… … … … …
Programi Complexi DTSi DCEX3 DEXTi
… … … … …
ProgramNprog ComplexNprog DTSNprog DCEXNprog DEXTNprog

297
Construirea de indicatori ai produsului program

în care:
Nprog – numărul de produse program realizate pentru care s-au
înregistrat duratele analizate;
Programi – programul i a cărui realizare a furnizat datele necesare
analizei;
Complexi – complexitatea determinată a programului Programi;
DTSi – durata efectivă a dezvoltării textului sursă al programului
Programi;
DCEXi – durata obţinerii sursei executabile a programului Programi
prin compilări repetate, în urma cărora au fost rezolvate toate
erorile;
DEXTi – durata testării programului Programi pentru a obţine forma
sa finală şi a descoperi eventualele erori de realizare.

Valorile variabilelor DTS, DCEX şi DEXT sunt obţinute din înregistrările


directe şi constituie baza pentru construirea modele ale estimării resurselor ce au la
bază complexitatea programului.
De exemplu, încadrând produsul software de realizat într-o clasă de
complexitate prin prisma problemei ce o rezolvă şi a funcţiilor implementate, se
determină valorile estimate pentru:

numărul programatorilor = a(nr. prog) * valoare complexitate + b(nr. prog)

numărul compilărilor = a(nr. compilări) * valoare complexitate + b(nr. compilări)

durată testări = a(durata testări) * valoare complexitate + b(durata testări)

unde a( ) şi b( ) reprezintă coeficienţii modelelor de estimare.

Astfel, pornind de la complexitatea produsului să se ajungă la a planifica:


¾ durata ciclului de realizare;
¾ numărul de persoane;
¾ costul produsului.

298
Metode statistice în analiza software

7.6 Utilizarea analizei dispersionale


în compararea tehnicilor de programare

Evoluţia tehnicilor de programare este determinată de factori cum sunt:


` reducerea duratei de realizarea a produselor program;
` creşterea nivelului calitativ al produselor program urmărindu-se
caracteristicile: fiabilitate, mentenabilitate, corectitudine,…;
` gradul de complexitate la problemelor ce trebuie rezolvate impune
selectarea atentă a tehnicii de programare adecvată;
` implementarea unor componente evoluate ale sistemelor de operare;
` dezvoltarea tehnicilor de alocare a resurselor sistemelor de calcul.
În timp s-au dezvoltat tehnici de programare începând cu „programarea
clasică”, programarea structurată, programarea modulară, LCP.
Implementarea uneia dintre aceste tehnici trebuie să răspundă unor cerinţe
specifice fiecărei unităţi de informatică.
Lucrarea de faţă îşi propune să compare unele tehnici de programare pentru
a identifica situaţiile în care este oportună utilizarea curentă a fiecăreia dintre ele,
folosind avantajele pe care le prezintă metodele statisticii matematice.
Extinderea pe care au luat-o în practica de zi cu zi rezultatele puse la
dispoziţie de statistica matematică a permis extinderea acestora şi la domeniul
informaticii aplicate în economie. Astfel, prezentarea limbajelor de programare,
analiza complexităţii programelor, studiul fiabilităţii programelor sunt numai
câteva dintre aspectele tratate cu metode ale statisticii matematice.
În continuare se procedează la prezentarea modului în care se foloseşte
analiza dispersională la compararea tehnicilor de programare.

Această metodă utilizează analiza datelor provenind din observaţii


efectuate pe baza unor planuri riguros întocmite, date care depind de factori acţiune
simultană. Această metodă permite ierarhizarea factorilor şi estimează influenţele
pe care aceştia le au asupra variaţiei caracteristicii rezultative.
Analiza dispersională este utilizată diferenţiat în raport cu:
™ numărul factorilor care influenţează evoluţia fenomenului;
™ numărul observaţiilor efectuate pentru nivelurile fiecărui factor;
™ ipotezele privind repartiţiile variabilelor aleatoare.
În mod practic analiza dispersională constă în efectuarea de înregistrări şi
sistematizarea acestora în tabele, care să permită calcularea de sume, dispersii,
grade de libertate şi rapoarte de dispersie.

299
Construirea de indicatori ai produsului program

Folosind dispuneri adecvate a datelor şi organizarea calculelor, se


construiesc tabele pentru:
ƒ analiza dispersională unifactorială cu factor nealeator;
ƒ analiză bifactorială cu o experienţă în celulă şi interacţiuni nule;
ƒ analiză bifactorială cu experienţe echilibrate în celulă;
ƒ analiză bifactorială cu număr oarecare de experienţe în celulă.
În toate cazurile se procedează la compararea rapoartelor de dispersie cu
valori tabelate având praguri de semnificaţie stabilite. Rezultatele comparărilor
conduc la acceptarea sau respingerea ipotezelor privind omogenitatea
colectivităţilor analizate.
O tehnică de programare se caracterizează prin:
” conceptele fundamentale pe care le defineşte şi introduce;
” restricţiile de utilizare ale limbajelor şi facilităţilor sistemelor de
operare;
” reguli de construire a secvenţelor de program;
” convenţii privind tipizarea unor construcţii;
” organizarea activităţii de realizare a programelor şi de delimitare a
etapelor.
Este cunoscut faptul că aceste tehnici de programare sunt utilizate în
anumite unităţi de informatică, iar generalizarea lor este o problemă în studiu
având în vedere noi posibilităţi de perfecţionare în activitatea de programare.
Analiza cuprinzătoare a tehnicilor de programare este posibilă prin
elaborarea simultană a unor programe pentru aceleaşi probleme de către echipe de
programatori cu acelaşi grad de complexitate şi performanţe folosind aceste tehnici
de programare.
Admiţând totuşi ca fiind dificil de realizat un asemenea deziderat pentru un
eşantion suficient de mare, compararea tehnicilor de programare este posibilă prin
formarea de grupe de programe cu funcţii de prelucrare de complexitate
asemănătoare folosind tehnici de programare diferită.
Factorii luaţi în considerare sunt:
Š tehnica de programare;
Š clasa de complexitate.
Variabila rezultativă este pe rând:
¾ durata de realizare a produselor program (volum de muncă);
¾ numărul ore-calculator pentru:
ƒ compilare;
ƒ testare;

300
Metode statistice în analiza software

ƒ compilare-testare;
¾ numărul de erori înregistrate la:
ƒ compilare;
ƒ testare;
ƒ execuţie;
¾ costul de realizare a produsului program.

Organizarea evidenţei pentru înregistrarea datelor presupune măsurarea pe


baza unei metodologii unitare a duratelor, a numărului de erori şi
apartenenţa programului şi apartenenţa programului la o anumită clasă
de complexitate.
Pentru a mări gradul de flexibilitate în vehicularea datelor (nu se asigură
echilibrarea experienţelor în celulă datorită diferenţelor care apar în volumul
programelor elaborate pentru fiecare clasă de complexitate) folosind realizarea în
condiţii normale a produselor program în unităţi de informatică este indicat să se
utilizeze analiza dispersională bifactorială cu un număr oarecare de experienţe în
celulă.

În continuare este descris programul PABO utilizat în analiza dispersională


şi al cărui text sursă este descris în Anexa 2.
Datele de intrare în program sunt:
` numărul tehnicilor;
` numărul grupelor de program;
` valoarea observată a caracteristicii rezultative pentru fiecare celulă.
Datele se introduc din fişiere text. Primele date din fişier reprezintă
numărul NI de tehnici de programare, precum şi numărul NJ de grupe de
programare. În continuare sunt trecute valorile de observaţie, precizându-se celula
la care se referă fiecare dată.
Modulul de intrare citeşte datele, face o verificare a corectitudinii lor şi pe
baza celor valide încarcă două matrice.
Programul calculează valorile statisticilor de testare pentru cinci ipoteze, în
condiţiile următorului fundament:

⎧ yijk = ηij + eijk , 1 ≤ i ≤ I, 1 ≤ j ≤ J, 1 ≤ k ≤ K ⎫


Ω:⎨ σ este constant,
(
⎩e ijk sunt independente, cu repartitia N θ , σ ⎭ ) 2 ⎬, unde

ηij = µ + α i + β j

301
Construirea de indicatori ai produsului program

Cele 5 ipoteze sunt:


` HAB : M(yijk) = µ + α i + β j ;
` ω1 A : H AB ∩ H A , cu H A : α i = 0, 1 ≤ i ≤ I ;
` ω1B : H AB ∩ H B , cu H B : β j = 0, 1 ≤ j ≤ J ;

` ω 2 A : H AB ∩ H A ;
` ω 2 B : H AB ∩ H B .

Rezultatele sunt redate într-un tabel de forma 7.43 unde sunt trecute
valorile calculate ale statisticii de testare corespunzătoare celor cinci ipoteze şi
numărul gradelor de libertate corespunzătoare.

Rezultatele analizei dispersionale cu un număr oarecare de experienţe în celulă


Tabel 7.43
Numărul de niveluri al factorului A: 6
Numărul de niveluri al factorului B: 8
Numărul total de observaţii: 250

Număr grade de
Situaţia Ipoteza F libertate
I II
Verificarea ipotezei HAB 257,823 35 202
interacţiunilor
Cazul interacţiunilor nule HA 83,24 237 5
HB 78,524 237 7
Cazul interacţiunilor nenule HA 3,78 5 202
HB 12,54 7 202

Programul lucrează cu masive ce cuprind modele de până la zece tehnici de


programare considerate şi douăzeci de grupe de programe după complexitate.

302
Metode statistice în analiza software

7.7 Concluzii

Indicatorii statistici utilizaţi în estimarea consumului şi costului creează o


imagine de ansamblu asupra resurselor ce trebuie folosite.
Avantaje utilizării lor sunt:
¾ furnizează informaţii suficient de riguroase în legătură cu efortul ce
trebuie făcut, cu limitele pe care le înregistrează orice produs software;
¾ se creează o solidă bază de analiză, departajare obiectivă a procesului şi
a produsului;

Dezavantaje sunt definite de faptul că:


` conţin erori, calitatea estimării depinde de calitatea datelor cu care au
fost construite modelele; la fiecare modificare a condiţiilor trebuie
modificate şi modelele de estimare;
` indicatorii realizează o predicţie în viitor a unor condiţii existente în
trecut.

303
8
PROPRIETĂŢILE
INDICATORILOR STATISTICI
UTILIZAŢI ÎN ANALIZA
SOFTWARE

8.1 Structuri de indicatori

În analiza componentelor software sunt utilizaţi numeroşi indicatori


statistici, fiind necesar studiul caracteristicilor lor de calitate pentru a vedea măsura
în care sunt sau nu operaţionali, au sau nu o semnificaţie în raport cu obiectivul
definit. Având ca bază de pornire metodologia statistică de analiză şi descriere a
seriilor de valori, analiza software utilizează indicatori primari sau agregaţi cu
forme de reprezentare definite în teoria statistică. Acestora le este conferită
particularitatea de a descrie nivelurile caracteristicilor de calitate software. Pentru a
caracteriza caracteristici complexe sunt definiţi noi indicatori pornind de la
modelele metricelor software. Considerând variabilele:
n – numărul de elemente ale seriei de valori; acestea reprezintă niveluri
ale caracteristicilor produselor program măsurate direct prin
intermediul metricelor software sau prin agregări de valori primare;

304
Metode statistice în analiza software

Xi – valoarea caracteristicii analizate pentru un program sau pentru o


situaţie de comportament;
Yi – valoarea unei variabile independente inclusă în analiză; în cele mai
multe cazuri, reprezintă frecvenţa valorilor Xi;
cei mai utilizaţi indicatori în analiza software sunt definiţi de relaţiile:

A
I1 =
B

Indicatorul I1 descrie forma generală a indicatorilor construiţi în jurul


raportului dintre două valori, A şi B. Aceştia sunt utilizaţi în mod curent pentru a
analiza:
` mărimi relative legate de structura şi dinamica valorilor;
` productivitatea;
` funcţii de repartiţie;
` ponderile diferitelor valori;
` raportul de corelaţie;
` coeficientul de variaţie, în care A reprezintă abaterea medie pătratică,
iar B valoarea medie.

∑X i
I2 = i =1
n

Indicatorul I2 este folosit pentru a determina media seriei de valori asociate


variabilei X. Are complexitate redusă şi se regăseşte în formelor indicatorilor
compuşi. Fiind unul dintre cei mai utilizaţi indicatori, oferă în etapele de început
ale analizei o descriere sumară a variabilei cercetate.

∑XY i i
I3 = i =1
n

∑Y
i =1
i

305
Proprietăţile indicatorilor statistici utilizaţi în analiza software

∑XY i i
I4 = i =1
n

∑X Z
i =1
i i

Indicatorii I3 şi I4 implică luarea în considerare a mai mult de o variabilă


independentă. Descriu procesul de analiză al perechilor de caracteristici ale căror
valori sunt corelate. În mod uzual sunt utilizaţi în operaţiile de:
¾ descriere a variaţiei seriei de valori împărţite în grupe sau clase;
¾ normalizare a valorilor ; se creează premisele studiului comparabil al
valorilor obţinute în mai multe analize sau se determină valorile unor
indicatori agregaţi.
n
I 5 = ∑ Fi log 2 Fi
i =1

Indicatorul I5 provine din modelele de calcul a complexităţii, fiind foarte


apropiat de formula de calcul a complexităţii Halstead.

n
I6 = ∑ X i
i =1
n
I7 = ∑ X i
i =1
n
I 8 = ∑ X i2
i =1

Indicatorii I6, I7 şi I8 definesc niveluri totalizatoare determinate ca diferite


forme de sume:
” a seriei de valorilor înregistrate pentru variabila cercetată;
” a modulelor valorilor;
” a pătratelor valorilor.
În funcţie de obiectivul analizei, utilizarea indicatorilor prezintă avantaje
prin eliminarea sau luarea în considerare a influenţelor datorate poziţionării
valorilor faţă de elementul nul. Indicatorii descriu formule de complexitate redusă
iar valorile astfel obţinute sunt implementate în modelele indicatorilor compuşi. Ca
bază de determinare sunt folosite tabelele de observaţii, în care valorile înregistrate

306
Metode statistice în analiza software

nu sunt prelucrate, reprezentând nivelurile primare ale caracteristicilor măsurate.

2 ⎛ ⎛ n
2
⎞ ⎛ n ⎞ ⎞⎟
2
⎛ ⎞ ⎜
∑ i ∑ i
n
⎜ X ⎟ ⎜ X ⎟
⎜ ∑ Xi ⎟ n
⎜ 2 ⎝ i =1 ⎠ + ⎝ i =1 ⎠ ⎟

n
⎜ X − i =1 ⎟ −

i =1
⎜ i
n ⎟ i =1 ⎜
X
⎜ i 2 * X i *
n2 n2


⎜ ⎟ ⎜ ⎟
I9 = ⎝ ⎠ = ⎝ ⎠
n n

Indicatorul I9 descrie modalitatea de calcul al dispersie seriei de valori


asociate variabilei X. Este utilizat pentru a analiza variaţia valorilor înregistrate şi a
omogenităţii lotului.
n

∑X i
k

I10 = i =1
n

Indicatorul I10 reprezintă forma generală a calculului diferitelor valori


medii.
min{X 1 , X 2 ,..., X n }
I11 =
max{X 1 , X 2 ,..., X n }

max{X 1 , X 2 ,..., X n }− min{X 1 , X 2 ,..., X n }


I12 =
r

Indicatorul I11 determină raportul dintre valoarea minimă şi cea maximă a


seriei de valori asociate variabilei X. Utilizat de cele mai multe ori în operaţiile de
normalizare a valorilor, forma indicatorului implementează modelele a trei
indicatori primari ce determină: minimul, maximul şi raportul dintre două valori.
Cazurile de utilizare a indicatorului I12 sunt asociate operaţiilor de stabilire a
mărimii intervalelor egale de valori, unde variabila r reprezintă numărul de grupări.
n

∑ f * log
i 2 fi
I13 = i =1

⎛ n ⎞ ⎛ n ⎞
⎜ ∑ f i ⎟ log 2 ⎜ ∑ f i ⎟
⎝ i =1 ⎠ ⎝ i =1 ⎠
I14 = marce − nnoduri + 2
307
Proprietăţile indicatorilor statistici utilizaţi în analiza software

Indicatorii I13 şi I14 provin din modelele metricilor software asociate


procesului de calcul a complexităţii produselor program şi nu se regăsesc în
practica statistică uzuală. În cazul utilizării indicatorului I14 pentru a determina
complexitatea programului în sens McCabe, semnificaţia elementelor este:
marce – numărul de arce al grafului asociat programului;
nnoduri – numărul de noduri al grafului asociat programului.
Indicatorul I13 este întâlnit cu precădere în situaţiile în care este studiată
complexitatea programului determinată în sens Halstead.

n
I15 = a0 + ∑ ai * X i
i =1

I16 = a * y bx

Indicatorul I15 reprezintă forma generală a ecuaţiei de regresie liniară. Este


utilizat în analizele software, pentru a estima valorile caracteristicilor software în
funcţie de variabilele independente, împreună cu care formează legături de
dependenţă puternice. Indicatorul I16 descrie modelul de regresie probabilist
exponenţial.
n
I17 = n ∏X
i =1
i

n
I18 = n
1
∑Xi =1 i

∑X i
2

I19 = i =1
n

Indicatorii I17, I18 şi I19 sunt construiţi pe baza formulele de calcul a


mediilor: geometrică, armonică şi pătratică.

∑X i − Yi
I 20 = i =1
n
308
Metode statistice în analiza software

Indicatorul I20 este utilizat în analiza caracteristicilor software pentru a


descrie variaţia valorilor înregistrate. Forma sa este echivalentă formulei de calcul
a abaterii medii liniare.

Modelele diferă unele de celelalte prin conţinut şi prin semnificaţia


asociată rezultatului obţinut. În aceste expresii analitice se identifică:
Š niveluri înregistrate ale unor factori de influenţă;
Š numărul factorilor de influenţă consideraţi;
Š operatori de agregare;
Š coeficienţi estimaţi sau stabiliţi experimental.

Aceşti indicatori diferă unii de alţii prin numărul de variabile, numărul de


coeficienţi şi diversitatea operatorilor utilizaţi. În analizele software cu un nivel
ridicat al complexităţii calculelor, modelele indicatorilor descrişi, conţin pe lângă
seriile, X, de înregistrări şi valori de indicatori primari.

8.2 Senzitivitatea indicatorilor

Toţi indicatorii sunt analizaţi în raport cu trei proprietăţi, şi anume:


senzitivitate, noncatastroficitate şi caracterul necompensatoriu.
Senzitivitatea este o proprietate esenţială care evidenţiază faptul că la
variaţii mici sau mari ale variabilelor independente se înregistrează variaţii ale
valorilor variabilelor dependente. Se consideră variabila Y a cărei valoarea este
funcţie de variabilele independente X1, X2, …, Xn:

Y = f(X1, X2, …, Xn)

Se înregistrează variaţiile x1, x2, …,xn diferite de zero, asociate variabilelor


independente şi se defineşte indicatorul I având forma funcţiei f. Acesta este
senzitiv dacă are loc inegalitatea:

Y '−Y ≠ 0 , unde Y’= f(X1+x1, X2+x2, …, Xn+xn)

Din punct de vedere matematic, indicatorul I este caracterizat de


senzitivitate dacă funcţia f implementată este injectivă.

309
Proprietăţile indicatorilor statistici utilizaţi în analiza software

De exemplu indicatorul:

n
I 8 = ∑ X i2
i =1

este senzitiv întrucât, dacă variabilele independente înregistrează variaţiile pozitive


x1, x2, …, xn influenţele se regăsesc în construcţia:

I '8 = ∑ ( X i + xi ) = ∑ (X i2 + 2 X i xi + xi2 ) = I 8 + 2∑ X i xi + ∑ xi2


n n n n
2

i =1 i =1 i =1 i =1

Luând în considerare aceeaşi variaţie, A > 0, pentru toate variabilele, adică


x1 = x2 = … = xn = A, rezultă:

n
I '8 = I 8 + 2 A∑ X i + nA2 = I 8 + 2 AI 6 + nA2
i =1

Cum I’8 > I8 rezultă că variaţia valorilor variabilelor X1, X2, …, Xn a


determinat obţinerea unei noi valori a indicatorului analizat.
Dacă se iau în considerare variaţiile x1k, x2k, …, xnk şi variaţiile x1k+1, x2k+1,
k+1
…, xn între care există relaţiile:

x1k < x1k+1


x2k < x2k+1
……………
xnk < xnk+1

se calculează noile valori ale indicatorilor:

I '8k = I 8 + 2∑ X i xik + ∑ (xik )


n n
2

i =1 i =1

I '8k +1 = I 8 + 2∑ X i xik +1 + ∑ (xik +1 )


n n
2

i =1 i =1

310
Metode statistice în analiza software

unde:
I '8k – reprezintă valoarea indicatorului pentru variaţiile x1k, x2k, …, xnk;
I '8k +1 – reprezintă valoarea indicatorului pentru variaţiile x1k+1, x2k+1, …,
xnk+1.
Din analiza comparată a acestora rezultă că:

I '8k < I '8k +1

iar variaţiile indicatorului sunt date de relaţia:

( ) ( )( )
n n
∆I 8 = I '8k +1 − I '8k = 2∑ X i xik +1 − xik + ∑ xik +1 − xik ⋅ xik +1 + xik
i =1 i =1

Cum xik +1 − xik > 0, ∀ i = 1,..., n rezultă că ∆I 8 > 0 şi dimensiunea


variaţiei depinde strict de:

[
∆xi = xik +1 − xik şi ∆I 8 = ∑ (xik +1 − xik ) 2 X i + (xik +1 + xik ) ]
n

i =1

Aceste relaţii subliniază faptul că pentru ∆xi cu valori reduse, ∆I8 conduce
la valori reduse, iar pentru ∆xi cu valori foarte mari şi ∆I8 are, de asemenea, valori
foarte mari. Deci indicatorul I8 este senzitiv.

A
Indicatorul I 1 = este nesenzitiv atunci când valorile variabilelor A şi B
B
au creşteri proporţionale.
În cazul în care A1 = k*A şi B1 = k*B, cu k ≠ 0 , indicatorul

A1
I '1 =
B1

are acelaşi nivel pe care îl are indicatorul I pentru valorile iniţiale A şi B. Situaţia
descrie circumstanţa în care două sau mai multe valori ale variabilelor
independente conduc la obţinerea de valori identice ale indicatorului analizat.
Aceste cazuri caracterizează indicatorul ca fiind necompensatoriu.
311
Proprietăţile indicatorilor statistici utilizaţi în analiza software

Se analizează indicatorul:

n
I 5 = ∑ Fi log 2 Fi
i =1

în care:
Fi – reprezintă frecvenţa de apariţie a variabilelor studiate;

Considerând f i ∈ N variaţia frecvenţei Fi rezultă indicatorul:

n n n
I '5 = ∑ ( f i + Fi ) log 2 ( f i + Fi ) =∑ Fi log 2 ( f i + Fi ) + ∑ f i log 2 ( f i + Fi )
i =1 i =1 i =1

Cum log 2 ( f i + Fi ) > log 2 Fi rezultă că:

n
I '5 > I 5 + ∑ f i log 2 ( f i + Fi )
i =1

iar variaţia valorii indicatorului este:

n
∆I 5 = I '5 − I 5 ≥ ∑ f i log 2 ( f i + Fi )
i =1

Deci indicatorul I5 este senzitiv, variaţia valorilor sale fiind dependentă de


variaţia variabilelor independente.
În cazul anumitor indicatori este necesară studierea atentă a caracteristicii
de senzitivitate prin măsurarea variaţiei valorilor obţinute în funcţie de variaţia
valorilor variabilelor ce compun indicatorul respectiv. Astfel, se pun bazele
determinării gradului de senzitivitate, ce caracterizează legătura dintre variaţiile
valorilor. În acest sens se construieşte un tabel de forma 8.1.

312
Metode statistice în analiza software

Corespondenţa dintre variaţia valorilor variabilelor independente


şi cea a indicatorului analizat
Tabel 8.1
Valoarea Variaţia Valoarea Valoarea Variaţia Raportul
variabilei variabilei indicatorului indicatorului valorilor min/max
X X I I’ indicatorului
X1 x1 Y1 Y’1 ∆Y1 R1
X2 x2 Y2 Y’2 ∆Y2 R2
… … … … … …
Xi xi Yi Y’i ∆Yi Ri
… … … … … …
Xn xn Yn Y’n ∆Yn Rn

în care:
n – numărul de valori luate în considerare;
Xi – valoarea sau setul de valori asociate variabilei independente;
Yi – valoarea indicatorului analizat obţinută pentru valoarea sau setul de
valori, Xi;
xi – variaţia valorii Xi;
Y’i – valoarea indicatorului analizat obţinută pentru valoarea sau setul de
valori, Xi+xi;
∆Yi – variaţia valorilor indicatorului, determinată de relaţia:

∆Yi = |Yi – Y’i|;

Ri – raportul dintre valoarea minimă a mulţimii {Yi, Y’i} şi valoarea


maximă a aceleiaşi mulţimi; este dat de relaţia:

min{Yi , Y 'i }
Ri =
max{Yi , Y 'i }

Pentru forma particulară a indicatorului I1 dată de relaţia:

1
Y=
X

analiza gradului de senzitivitate conduce la obţinerea datelor din tabelul 8.2.

313
Proprietăţile indicatorilor statistici utilizaţi în analiza software

Corespondenţa dintre variaţia valorilor variabilei X


şi cea a indicatorului Y
Tabel 8.2
Valoarea Variaţia Valoarea Valoarea Variaţia Raportul
variabilei variabilei indicatorului indicatorului valorilor min/max
X X I I’ indicatorului
1 0,2 1 0,833 0,167 0,833
2 0,3 0,5 0,435 0,065 0,87
3 0,4 0,333 0,294 0,039 0,883
4 0,5 0,25 0,222 0,028 0,888
5 0,6 0,2 0,179 0,021 0,895
6 0,7 0,167 0,149 0,018 0,892
7 0,8 0,143 0,128 0,015 0,895
8 0,9 0,125 0,112 0,013 0,896
9 1 0,111 0,1 0,011 0,901
10 1,5 0,1 0,087 0,013 0,87
15 2 0,067 0,059 0,008 0,881
20 3,5 0,05 0,043 0,007 0,86
25 4 0,04 0,034 0,006 0,85
30 4,5 0,033 0,029 0,004 0,879
35 5 0,029 0,025 0,004 0,862

Analiza coloanei variaţiei valorilor indicatorului şi respectiv celei asociate


raportului evidenţiază micşorarea acesteia odată cu creşterea variaţiei variabilei X.
Utilizarea raportului descrie ritmul de creşte sau scădere a valorilor datorită
variaţiilor. Rezultatele analizei sunt strict legate de particularităţile indicatorului şi
de graficul funcţiei implementate. Astfel, considerând valorile variabilei X strict
pozitive, pe intervalul (0; 1], indicatorul Y este caracterizat de un grad ridicat al
senzitivităţii, înregistrându-se variaţii mari ale valorilor pentru variaţii mici, xi. În
schimb, gradul de senzitivitate scade, pentru valori ale variabilei X mai mari ca
valoarea unu.

Dacă este analizat alt indicator, rezultatele diferă. Pentru indicatorul cu


forma:
Y = 2X

314
Metode statistice în analiza software

şi acelaşi set de valori al variabilei X se obţin datele din tabelul 8.3:

Corespondenţa dintre variaţia valorilor variabilei X şi cea a indicatorului Y


Tabel 8.3
Valoarea Variaţia Valoarea Valoarea Variaţia Raportul
variabilei variabilei indicatorului indicatorului valorilor min/max
X X I I’ indicatorului
1 0,2 2 2,297 0,297 0,871
2 0,3 4 4,925 0,925 0,812
3 0,4 8 10,556 2,556 0,758
4 0,5 16 22,627 6,627 0,707
5 0,6 32 48,503 16,503 0,66
6 0,7 64 103,968 39,968 0,616
7 0,8 128 222,861 94,861 0,574
8 0,9 256 477,713 221,713 0,536
9 1 512 1024 512 0,5
10 1,5 1024 2896,309 1872,309 0,354

Cum indicatorul I8 este senzitiv, această caracteristică este moştenită şi de


indicatorul Y analizat. Prin analiza datelor din tabelul 8.3 este evidenţiat gradul
ridicat al senzitivităţii, deoarece prin variaţii mici ale valorilor variabilei X se obţin
variaţii mari ale indicatorului pentru majoritatea cazurilor.
Indicatorul I6 descris de relaţia:

n
I6 = ∑ X i
i =1

este nesenzitiv deoarece:

n n n n
I '6 = ∑ X i + ∑ xi = I 6 + ∑ xi , pentru ∑ xi ≠ 0
i =1 i =1 i =1 i =1

este caracterizat de un grad stabil al senzitivităţii independent de valorile variabilei


X sau de variaţia lor. Acesta se datorează faptului că variaţia valorilor indicatorului
este aceeaşi cu variaţia valorilor de intrare, adică:

∆Yi = xi;

315
Proprietăţile indicatorilor statistici utilizaţi în analiza software

Proprietatea de senzitivitate aparţine indicatorilor ce măsoară caracteristici


software dependente funcţional de o serie de factori. Printre acestea se află:
™ durata de prelucrare în funcţie de numărul şi tipul datelor de intrare;
™ complexitatea în funcţie de limbajul de programare sau mărimea
textului sursă;
™ productivitatea în funcţie de complexitatea produsului program;
™ costul de producţie în funcţie de numărul de programatori.

8.3 Analiza caracterului necompensatoriu

Indicatorii trebuie să fie necompensatorii, adică la variaţii ale nivelurilor


variabilelor independente nu trebuie să se obţină niveluri identice ale variabilelor
rezultative. Această necesitate constituie un factor de influenţă important al
analizelor, deoarece stă la baza ipotezei unicităţii situaţiilor incluse în studiu.
Pentru a asigura reprezentativitatea şi semnificaţia rezultatelor trebuie evitate
cazurile în care se obţin aceleaşi rezultate pentru niveluri diferite ale variabilelor de
intrare.
De exemplu, indicatorul:

I=x+y

unde:
x, y – reprezintă două variabile independente;
este compensatoriu pentru că la variaţii ∆x, respectiv ∆y, egale şi de semn contrar
ale variabilelor x şi y se obţine acelaşi nivel al indicatorului:

I’ = (x + ∆x) + (y + ∆y) = x + y + (∆x + ∆y) = I + (∆x + ∆y)

Dacă ∆x = -∆y atunci:

I’ = (x + ∆x) + (y - ∆x) = x + y = I

de unde rezultă caracterul compensatoriu.


Indicatorul:
n
I6 = ∑ X i
i =1

316
Metode statistice în analiza software

descrie un caracter compensatoriu în cazul în care suma variaţiilor variabilelor X1,


X2, …, Xn este egală cu 0, fapt care conduce la:

n n n
I '6 = ∑ X i + ∑ ∆xi = I 6 pentru ∑ ∆xi = 0
i =1 i =1 i =1

unde ∆xi reprezintă variaţia valorilor variabilei Xi;


Situaţia este posibilă pentru înregistrări caracterizate de variaţii de semne
diferite.
Indicatorul:
n
I14 = a0 + ∑ ai * X i
i =1

este compensatoriu atunci când variaţiile ∆xi al indicatorilor îndeplinesc condiţia:

∑ a * (∆x ) = 0
i =1
i i

rezultată din:
n n
I '14 = a0 + ∑ ai * ( X i + ∆xi ) = I14 + ∑ ai * (∆xi )
i =1 i =1

Indicatorul:
min{X 1 , X 2 ,..., X n } xm
I11 = =
max{X 1 , X 2 ,..., X n } xr

unde:
xm – valoarea minimă a mulţimii de valori;
xr – valoarea maximă a mulţimii de valori.

este compensatoriu dacă elementele mulţimii X1, X2, …, Xn variază astfel încât
noua valoare minimă şi maximă sunt proporţionale în aceeaşi măsură cu valorile
iniţiale:
min{k1x1, k2x2, …, knxn} = kmxm
max{k1x1, k2x2, …, knxn} = krxr
317
Proprietăţile indicatorilor statistici utilizaţi în analiza software

Pentru km=kr rezultă caracterul compensatoriu al indicatorului, pentru că


valoarea raportului este aceeaşi, adică:

k m ⋅ xm xm
I '11 = = = I11 pentru k m = k r .
k r ⋅ xr xr

Indicatorul:
n
I 5 = ∑ Fi log 2 Fi
i =1

ca să fie compensatoriu trebuie ca:

n
I '5 = ∑ ( f i + Fi ) log 2 ( f i + Fi ) =I 5
i =1

Egalitatea există dacă:

n n n

∑ Fi log 2 ( f i + Fi ) + ∑ fi log 2 ( fi + Fi ) = ∑ Fi log 2 Fi


i =1 i =1 i =1

unde:
fi ∈ N – reprezintă variaţia frecvenţei Fi.

Cum fi > 0 rezultă că:

log 2 (Fi + f i ) > log 2 F

adică I '5 −I 5 ≠ 0 , ceea ce demonstrează că indicatorul I5 nu este compensatoriu.

Indicatorul:
n
I 8 = ∑ X i2
i =1

318
Metode statistice în analiza software

este compensatoriu dacă variaţia valorilor indicatorului este egală cu zero, ∆I8 = 0,
pentru ∆xi > 0, sau:

n n n n n n
I '8 = ∑ ( X i + ∆xi ) = ∑ X i2 + 2∑ X i ∆xi + ∑ (∆xi ) = I 8 + 2∑ X i ∆xi + ∑ (∆xi )
2 2 2

i =1 i =1 i =1 i =1 i =1 i =1

Dacă unele variaţii sunt pozitive şi altele sunt negative, trebuie ca:

n n
2∑ X i ∆xi + ∑ (∆xi ) = 0 .
2

i =1 i =1

Pentru modelul

y = ax 2 + bw 2 + c

şi cu noile niveluri de valori x + ∆x, respectiv w - ∆w se obţine:

y ' = a (x + ∆x ) + b(w − ∆w) + c = ax 2 + bw2 + c + 2a∆x − 2b∆w + (∆x ) + (∆w) =


2 2 2 2

= y + 2a∆x − 2b∆w + (∆x ) + (∆w)


2 2

Pentru ca y’ = y trebuie să fie adevărată egalitatea:

2a∆x − 2b∆w + (∆x ) + (∆w) = 0


2 2

fapt demonstrat, dacă între ∆x şi ∆w există relaţia:

(∆x )2 + 2a(∆x ) + [(∆w)2 − 2b∆w] = 0

Aceasta reprezintă o ecuaţie de gradul 2 cu necunoscuta ∆x, şi are soluţii


reale doar dacă:

[
4a 2 − 4 (∆w) − 2b∆w ≥ 0
2
]
319
Proprietăţile indicatorilor statistici utilizaţi în analiza software

Deci, pentru soluţiile ecuaţiei este verificat caracterul compensatoriu al


indicatorului.
Modelul

I16 = a * y bx

unde y reprezintă o constantă cu valori pozitive, este compensatoriu dacă pentru


valori diferite ale lui x se obţin valori identice pentru I16. Cum modelul este
constituit dintr-o funcţie bijectivă strict crescătoare, caracterul compensatoriu este
asigurat doar dacă pentru valorile x1 şi x2 diferite între ele este adevărată relaţia:

ay bx1 = ay bx2

de unde rezultă ca x1 = x2, ceea ce contrazice ipoteza. Rezultă că indicatorul I16 este
necompensatorie.
În schimb , modelul

2
I = ay x

este compensatoriu dacă se consideră variabilele x1 şi x2 cu x1 = -x2. Se obţine:

2 2
I (1) = ay ( x1 ) şi I ( 2 ) = ay ( − x1 )

de unde rezultă că y1 = y2.


Caracterul necompensatoriu al indicatorilor este analizat pentru seturile de
valori care asigură această proprietate cu scopul de a verifica corelaţia dintre
variaţia valorilor variabilelor independente şi variaţia indicatorului. În acest sens
datele sunt înregistrate într-un tabel având forma tabelului 4.
Pentru indicatorul:

I = X log 2 X

unde X reprezintă variabila independentă, se obţin datele din tabelul 8.4.

320
Metode statistice în analiza software

Corespondenţa dintre variaţia valorilor variabilei X şi cea a indicatorului I


Tabel 8.4
Valoare Valoare Variaţie Valoare Valoare Variaţie Valoare Valoare
X I x X’ I’ ∆I RImin/max RXmin/max
3 4,755 0,2 3,2 5,37 0,615 0,885 0,938
9 28,529 0,9 9,9 32,744 4,215 0,871 0,909
25 116,096 3 28 134,606 18,51 0,862 0,893
30 147,207 5,2 35,2 180,84 33,633 0,814 0,852
37 192,75 6 43 233,329 40,579 0,826 0,86
43 233,329 7,5 50,5 285,74 52,411 0,817 0,851
52 296,423 7,6 59,6 351,476 55,053 0,843 0,872
59 347,076 8 67 406,428 59,352 0,854 0,881
70 429,05 9 79 497,999 68,949 0,862 0,886
82 521,319 10 92 600,168 78,849 0,869 0,891

în care:
x – variaţia valorii variabilei X;
X’ – noua valoarea a variabilei X;
I’ – valoarea indicatorului pentru X’ dată de relaţia:

I ' = X ' log 2 X '

∆I – variaţia înregistrată de valorile indicatorului;


RImin/max – raportul dintre minimul valorilor I, respectiv I’ şi maximul
acestora; formula de calcul este:

min{I , I '}
max =
I
Rmin/
max{I , I '}

RXmin/max – raportul dintre minimul valorilor X, respectiv X’ şi maximul


acestora date de relaţia:

min{X , X '}
max =
X
Rmin/
max{X , X '}

321
Proprietăţile indicatorilor statistici utilizaţi în analiza software

Pe baza acestor date este analizată legătura dintre cele două variaţii. Pentru
a sprijini concluziile finale, se verifică legătura dintre ponderea variaţiei valorilor
din valoarea iniţială atât pentru variabila independentă, cât şi pentru indicatorul I.

8.4 Caracterul necatastrofic al modelului

Un indicator este catastrofic dacă există valori particulare care fac


imposibilă obţinerea unei valori pentru variabilelor rezultative.
Caracterul catastrofic al unui indicator nu implică utilizarea unui alt
indicator care să fie lipsit de acest atribut, ci doar atrage atenţia asupra situaţiilor
particulare. Acestea sunt definite de valori ale variabilelor, ce sunt măsurate în
condiţii speciale. Utilizarea de astfel de indicatori trebuie precedată de definirea şi
analiza clară a problemei.
Luând în considerare regulile de calcul matematic, caracterul catastrofic
este generat de situaţiile în care apare:
™ anularea numitorului;
™ valori negative sau egale cu 0 pentru argumentul funcţiei logaritmice;
™ radical din valori negative;
situaţii în care platforma de calcul nu efectuează operaţiile generând eroare. La
baza cazurilor de acest tip se găsesc evenimente, ce nu caracterizează fenomenul
studiat.
Printre indicatorii afectaţi se găsesc aceia ale căror modele conţin funcţii
sub formă de:
¾ raport;
¾ radical;
¾ logaritm.

De exemplu, pentru indicatorul:

A
I1 =
B

atunci, când B are valoarea 0, este imposibil de determinat valoarea indicatorului


I1. Rezultă că indicatorul este catastrofic, iar acest lucru impune eliminarea din
eşantionul de valori asociat variabilei B a acelora care au valoarea 0.

322
Metode statistice în analiza software

Indicatorul de diversificare generalizat ce caracterizează un produs


program presupune relaţia:

n
I 5 = ∑ Fi log 2 Fi
i =1

unde:
n – numărul de instrucţiuni definite în limbajul de programare utilizat;
Fi – frecvenţa de apariţie a instrucţiunilor.

În cazul în care în programul P un anumit tip de instrucţiune nu este folosit


implică Fi = 0 şi indicatorul I5 se dovedeşte a fi catastrofic. De aceea, este necesar
să se specifice luarea în considerare numai a instrucţiunilor utilizate în program.
Deci limbajul are n tipuri de instrucţiuni, dintre care sunt folosite m
instrucţiuni, acestea având frecvenţele f1, f2, …, fm de apariţie în program, ceea ce
conduce la un indicator de diversificare necatastrofic.
Indicatorul:
n
I6 = ∑ X i
i =1

nu este catastrofic pentru că nu există valori în setul X1, X2, …, Xn care să facă
imposibilă determinarea valorii indicatorului I6.
Indicatorul:
n

∑XY i i
I3 = i =1
n

∑X i =1
i

n
este catastrofic dacă şi numai dacă ∑X
i =1
i = 0.

Indicatorii asociaţi diferitelor modele de valori medii:

n
I18 = n
1
∑X i =1 i

323
Proprietăţile indicatorilor statistici utilizaţi în analiza software

∑X i
2

I19 = i =1
n
sunt catastrofici în condiţiile în care:
n

n
1 ∑X i
2

∑i =1 Xi
= 0 sau X i = 0 şi i =1

n
≤0

Deci, pentru determinarea acestora, se evită includerea situaţiilor în care


valorile variabilei X sunt nule.
Pentru analiza gradului de necatastroficitate se construieşte tabelul de
forma 5. Scopul urmărit este de a cerceta indicatorii cu caracter catastrofic din
punct de vedere al variaţiei foarte mari a valorilor acestora pentru variaţii mici ale
variabilelor independente, ce tind către valorile catastrofice.
Pentru indicatorul
A
I1 =
B
se consideră:
` valoarea variabilei A este constantă şi egală cu 1;
` valoarea variabilei B tinde către valoarea 0.
Utilizând un set de zece valori ale variabilei B se obţin datele din tabelul 8.5.

Corespondenţa dintre variaţia valorilor variabilei B şi cea a indicatorului I


Tabel 8.5
Valoare Valoare Variaţie Valoare Valoare Variaţie Valoare Valoare
B I b B’ I’ ∆I RImin/max RBmin/max
2 0,5 -1 1 1 0,5 0,5 0,5
1 1 -0,5 0,5 2 1 0,5 0,5
1,5 0,667 -0,2 1,3 0,769 0,102 0,867 0,867
0,5 2 -0,3 0,2 5 3 0,4 0,4
0,1 10 -0,09 0,01 100 90 0,1 0,1
0,01 100 -0,009 0,001 1000 900 0,1 0,1
0,001 1000 -0,0009 0,0001 10000 9000 0,1 0,1
0,0001 10000 -0,00009 0,00001 100000 90000 0,1 0,1
0,00001 100000 - 0,000001 1000000 900000 0,1 0,1
0,000009
1E-06 1000000 -9E-07 1E-07 10000000 9000000 0,1 0,1

324
Metode statistice în analiza software

Se observă cazul în care setul de valori al variabilei B tinde către 0, la


variaţii mici ale acestora se obţin variaţii mari ale lui indicatorului I. Dacă valorile
1
variabilei B sunt de forma B = , cu k = 1, …,n atunci valorile indicatorului
10 k
sunt:

I = 10k*A.

1
Trecerea la o variaţie a lui B către B’ conduce la relaţia B = .
10 k +1
Rezultă că:

I’1 = 10k+1*A,

Deci, la o variaţie foarte mică de la B la B’ se obţine o variaţie foarte mare


a indicatorului analizat.

8.5 Analiza completă a indicatorilor

Este necesar ca un indicator să fie analizat din toate punctele de vedere.


Acest lucru permite descoperirea acelor situaţii particulare în care valorile
variabilelor componente conduc la erori. De asemenea se pun bazele unui criteriu
de construcţie a eşantionului de valori analizate.
De exemplu, dacă indicatorul este senzitiv, se selectează pentru variabilelor
independente valori de test apropiate pentru ca dispersia lotului să nu fie afectată şi
implicit reprezentativitatea mediei. Dacă indicatorul este caracterizat de caracter
compensator sau catastrofic, se elimină din eşantionul valorilor, acele elemente
care verifică ipoteza proprietăţi