Sunday, November 19, 2017

Corelația cost-complexitate software

Corelația cost-complexitateîn software merită analizată, pentru că intuitiv ar exista concluzia că la programe mai complexe și costurile de realizare ar trebui să fie mai mari. Trebuie văzut cât de mare este nivelul acestei corelații.
Pentru a studia această corelație, dacă managerul companiei de dezvoltare software nutrește astfel de ambiții, trebuie procedat astfel:
- se ia o mulțime de programe P finalizate deja și aflate în exploatare curentă;
- întrucât programele sunt finalizate, înseamnă că se știe care sunt costurile efective ale lor;
- folosind textele sursă și niște instrumente open source se măsoară complexitatea progeamelor;
- se scriu datele într-un tabel cu trei coloane, nume program, cost și complexitate;
- se accesează un utilitar care permite calculul coeficientului de corelație;
- se introduc datele, se apelează funcția de calcul și se obțin rezultatele;
- se interpretează rezultatele și normal ar fi ca valoarea să fie destul de apropiată de 1.
Formula de calcul a coeficientului de corelație este:


unde:
r          - coeficientul de corelație;
n         - numărul de programe;
xi        - valoarea prețului pentru programul Pi;
xbarat - media prețurilor celor n programe;
yi        - valoarea complexității pentru programul Pi;
ybarat - media complexităților celor n programe.
Dacă:
 r=0 înseamnă că nu există nicio corelație între preț și complexitate;
 r este apropiat de zero, înseamnă că este o legătură foarte slabă între preț și complexitate;
 r > 0 și apropiat de 1 înseamnă că este vorba de o corelație directă puternică; cu cât complexitatea crește, cu atât crește și prețul programului;
 r < 0 și apropiat de 11 înseamnă că este vorba de o corelație inversă puternică; cu cât complexitatea crește, cu atât scade și prețul programului, ceea ce în realitate nu prea se întâmplă.
Acum foarte mulți ani când am avut posibilitatea, am studiat cu niște prieteni această corelație pentru vreo câteva sute de programe COBOL și corelația dintre cost și complexitate era de r= 0,95 indiferent de modelul după care se calcula complexitatea. Ceea ce a rezultat prin 1981 era strict legat de faptul că această corelație diferă de la limbaj de programare la limbaj de programare. Cred că și tehnicile de programare joacă un rol esențial dar nu am avutr posibilitatea să fac un studiu căci o astfel de cercetare ar presupune:
- K probleme de rezolvat;
- scrierea a K programe pentru acele probleme folosind tehnica  de programare H;
- scrierea a K programe pentru acele probleme folosind tehnica  de programare L;
- măsurarea complexității programelor scrise cu tehnica H;
- măsurarea complexității programelor scrise cu tehnica L;
- măsurarea prețurilor pentru programele scrise cu tehnica H;
- măsurarea prețurilor pentru programele scrise cu tehnica L;
- calculul coeficientului de corelație rH cu datele de la tehnica H;
- calculul coeficientului de corelație rL cu datele de la tehnica L;
- compararea celor doi coeficienți de corelație.
Chiar și așa, rezultatele au caracter relativ, căci cele K probleme sunt doar un eșantion, iar programele sunt și ele tot eșantion. În plus, este greu să găsești pe cineva să scrie cel puțin 20-30 de programe, fiecare în două variante, când se știe că totul este pe bani.
Corelația cost-complexitate  software este o chestie greu de măsurat nu din cauza efortului de calcul, ci pentru a culege date despre programe care alcătuiesc o mulțime omogenă în raport cu niște ipoteze. În caz contrar ne vom găsi în aceeași situație în care apar bancurile cu cercetătorii britanici care identifică cele mai stranii corelații, de te apucă râsul.




(18 noiembrie 2017)

No comments:

Post a Comment