Documente Academic
Documente Profesional
Documente Cultură
APLICAŢIILOR DISTRIBUTE
2 Fiabilitate
Fiabilitatea estimatǎ se referǎ la un produs software în fazǎ de proiect sau într-un stadiu
de elaborare.
Abordarea teoreticǎ vizeazǎ o serie de modele folosite în estimarea fiabilitǎţii software.
Standardul ISO/IEC 9126 [****91], defineşte fiabilitatea ca un set de atribute bazat pe
capabilitatea produsului software de a-şi menţine nivelul de performanţă, în condiţii şi pe o
perioadă de timp stabilite. Analiza acestei caracteristici pune accentul pe toleranţa la defecte
şi corectitudine.
Tehnicile de obţinere a toleranţei la defecte se aplică în special la componentele
hardware şi la sistemele de operare. Principala problemă în programare este corectitudinea
sistemelor de programe, în sensul că acestea trebuie să îndeplinească specificaţiile funcţionale
stabilite.
Fiabilitatea aplicaţiilor informatice se apreciazǎ prin:
- disponibilitatea - implică conservarea unei capacităţi ridicate de prelucrare a unei
aplicaţii software, chiar dacă apare o anomalie în textul sursă al componentelor
acesteia;
- integritatea - impune ca rezultatele să fie exacte;
- reproductibilitatea prelucrării - urmăreşte obţinerea aceloraşi rezultate, cu ajutorul
unor seturi de date identice, la momente şi condiţii de execuţie diferite.
Factorii care influenţează în mod deosebit fiabilitatea aplicaţiilor software sunt:
- funcţionalitatea – definită în standardul ISO/IEC 9126, [****91], ca un set de
atribute bazate pe existenţa unui set de funcţii şi pe proprietăţile lor specificate;
3
funcţiile satisfac necesităţile stabilite sau implicite; datorită acestui set de atribute
care definesc funcţionalitatea se demonstrează scopul căruia serveşte aplicaţia,
pentru a îndeplini cerinţele; în acest timp, alte seturi arată momentul şi modul în
care aplicaţia distribuitǎ corespunde nevoilor utilizatorilor; pentru a face referire la
nevoile stabilite sau implicite, se porneşte de la definiţia dată calităţii în standardul
ISO 8402 [****86], ca totalitatea trăsăturilor şi caracteristicilor unui produs sau
serviciu bazat pe abilitatea sa de a satisface nevoile stabilite sau implicite; atunci
când o aplicaţie informaticǎ distribuitǎ îşi îndeplineşte scopul nu mai este necesar să
se intervină asupra sa pentru îmbunătăţirea unor funcţiuni sau pentru introducerea de
noi funcţiuni; acest lucru reduce riscul apariţiei de erori, aspect care permite
menţinerea fiabilităţii aplicaţiei la un nivel ridicat;
- utilizabilitatea - este definită în [****91], ca un set de atribute bazate pe efortul
necesar pentru utilizarea produsului software şi pe evaluarea individuală a utilizării
acestuia, de către un grup stabilit sau implicit de utilizatori; în accepţiunea pe care o
oferă standardul, termenul utilizator are un înţeles larg şi include aici categorii
diverse de persoane ca: operatori, utilizatori finali şi indirecţi, precum şi toate
categoriile care îşi defăşoară activitatea dependent, sau sub influenţa utilizării
produsului software respectiv; aplicaţiile informatice sunt complexe şi oferă o gamă
largă de funcţiuni; unele dintre acestea sunt uşor de înţeles şi de folosit de personal
care nu necesită pregătire de specialitate; în cazul aplicaţiei informatice de
contabilitate realizarea funcţiunilor de salvare sau restaurare colecţii de date sau
obţinerea listei facturilor emise este la îndemâna unui operator; apar însă şi situaţii
în care utilizarea unei funcţiuni necesită cunoştiinţe aprofundate precum funcţia de
verificare corelaţii pentru întocmirea bilanţului contabil;
- eficienţa – este definită în [BARO83], ca o corelaţie optimă între consumul de
resurse implicat de utilizarea aplicaţiei informatice şi complexitatea problemei de
rezolvat; aici este introdusă şi noţiunea de ieşire a produsului software, definită ca o
relaţie între complexitatea datelor iniţiale şi a rezultatelor finale; în standardul
ISO/IEC 9126 [****91], definiţia se referă la un set de atribute bazat pe relaţia
dintre nivelul de performanţă al aplicaţiei informatice şi cantitatea de resurse
utilizate, în anumite condiţii stabilite; în comparaţie cu accepţiunea pe care o
întâlnim în [BARO82a], standardul ISO 8402 [****86], oferă un înţeles mai larg
termenului resurse consumate şi include aici memoria, timpul de execuţie, precizia,
serviciile de operare, mentenanţă sau suport de personal.;
- mentenabilitatea - este definită în [****91], ca un set de atribute bazate pe efortul
necesar de a face modificările specificate în produsul software respectiv; acestea
includ corecţii, îmbunătăţiri sau adaptări la modificări ale platformelor de dezvoltare
sau a celor cărora le sunt destinate, modificări în cerinţe şi specificaţii funcţionale;
în [BARO83], se afirmă că, un produs software este mentenabil în măsura în care
permite o rapidă şi uşoară actualizare astfel încât să se utilizeze în continuare, în
bune condiţii; sensul în care sunt privite aceste actualizări este mult mai restrâns,
deoarece ele se referă la operaţiile realizate la nivelul sistemului de programe, al
programelor şi modulelor componente, secvenţelor de instrucţiuni şi instrucţiunilor;
nivelul mentenabilităţii se stabileşte pe baza datelor obţinute în etapele de proiectare,
4
testare şi utilizare curentă;
- robusteţea - este cunoscută şi sub numele de toleranţă la erori; fiabilitatea sistemelor
de programe este dependentă de toleranţa la defecte hardware; facilităţi cum sunt
detectarea erorilor de prelucrare şi faptul că atunci cînd apar solicitări eronate,
acestea nu sunt executate, iar sistemele continuă să rămână în execuţie, conduc la
creşterea robusteţei şi implicit a fiabilităţii acestora; pentru detectarea erorilor se
folosesc verificări dinamice ale informaţiei şi proceduri care să semnaleze
incompatibilităţi de date sau încercări de încălcare a restricţiilor de acces;
- portabilitatea - este definită în [BARO83], ca o caracteristică de ordin calitativ a
sistemelor de programe ce se executǎ pe mai multe tipuri de calculatoare; asigurarea
portabilităţii sistemelor de programe contribuie la menţinerea fiabilităţii la nivel
ridicat; varietatea mediilor de dezvoltare specifice fiecărui tip de calculatoare,
precum şi volumul modificărilor necesar adaptării face ca în cele mai multe cazuri
să se opteze pentru soluţia rescrierii acestor sisteme de programe; cazurile în care se
alege varianta modificării sistemelor existente sunt cele în care acestea trebuie
transferate într-un timp scurt; în această situaţie s-a constatat însă că nivelul
fiabilităţii este scăzut, iar costurile de exploatare sunt mari şi nu se justifică din
punct de vedere economic;
- siguranţa în utilizare - conform [BARO83], această caracteristică stabileşte măsura
în care un sistem de programe nu permite efectuarea de modificări neautorizate sau
nedorite în volumele de date, precum şi distrugerea parţială sau totală a volumelor
de date;
- stabilitatea – exprimă rezistenţa sistemului de programe faţă de efectele generate de
o modificare a datelor iniţiale, cât şi a secvenţelor de instrucţiuni care compun
programele şi modulele componente ale acestuia; în funcţie de nivelul la care se
efectuează modificarea se definesc stabilitatea la nivel de instrucţiune, la nivel de
secvenţă, la nivel de modul, la nivel de program şi respectiv, stabilitatea globală a
sistemului;
- adaptabilitatea - reprezintă, conform [****91], capacitatea sistemului de programe
de a permite integrarea de noi obiecte şi de a include acele secvenţe de instrucţiuni
care măresc performanţa sistemului şi îl aduc la nivelul eficienţei de utilizare de la
un moment dat, ulterior elaborării; adaptabilitatea influenţează fiabilitatea sistemului
de programe şi este influenţată de nivelul stabilităţii şi de complexitate;
- testabilitatea - oferă utilizatorilor posibilitatea de a evidenţia comportamentul
sistemului de programe în situaţii particulare; prin asigurarea testabilităţii se
urmăreşte descoperirea cât mai multor variante de probleme rezolvabile cu aceste
sisteme de programe; în practică s-a observat că un sistem de programe cu robusteţe
ridicată are un nivel de fiabilitate superior şi este în acelaşi timp un sistem de
programe testabil;
- complexitatea - este caracteristica de calitate pentru care s-au dezvoltat cele mai
multe sisteme de metrici şi se studiază în corelaţie cu alte caracteristici;
complexitatea determină şi creşterea cheltuielilor de exploatare a aplicaţiilor
informatice distribuite, precum şi eforturile de a dezvolta noi versiuni sau de a
rescrie aplicaţiile sau numai anumite componente;
5
- flexibilitatea - determină volumul de restricţii impus utilizatorilor pentru a obţine
rezultate complete şi corecte prin folosirea aplicaţiilor informatice; flexibilitatea este
relaţionată cu numărul opţiunilor pe care aplicaţiile informatice le pun la dispoziţia
utilizatorilor.
Pentru aplicaţiile problema fiabilitǎţii se pune cu mai multǎ aquitate pentru cǎ:
- numǎrul de utilizatori creşte
- dezvoltatorii de aplicaţii nu interactioneazǎ direct cu utilizatorii pentru a depana in
timp real aplicaţia
- erorile au efecte directe prin plǎţi, prin livrǎri, prin opţiuni ce genereazǎ acţiuni,
tranzacţionǎri la bursǎ prin Internet sau prin mobile.
Proasta funcţionare sau nefuncţionarea a unuia din calculatoarele sistemului distribuit nu
trebuie să atragă după sine şi nefuncţionarea întregii aplicaţii informatice distribuite.
Elementele care definesc fiabilitatea unei aplicaţii sunt:
- serviciul aşteptat – serviciile aplicaţiei trebuie să corespundă aşteptărilor clienţilor
sau utilizatorilor;
- garantarea comportamentului – trebuie să existe o modalitate de garantare a
funcţionării operaţiilor critice ale aplicaţiei;
- gestiunea situaţiilor excepţionale – nu existǎ o garanţie absolută a funcţionării
tuturor serviciilor, existând potenţial de eşec în orice componentă sau nivel al
aplicaţiei, însă aplicaţia trebuie să fie capabilă să-şi reia funcţionarea fără coruperea
informaţiilor;
- securitate – o aplicaţie distribuită trebuie să fie securizată faţă de agenţii externi;
deoarece elementele care ţin de securitate afectează toate componentele aplicaţiei,
ele sunt incluse în infrastructura acesteia.
Pentru a mări fiabilitatea software prin prevenirea erorilor, trebuie analizate cerinţele şi
planurile de testare, pentru a se asigura testarea cerinţelor. De asemenea, trebuie acordată
atenţie şi activităţii de întreţinere a software pe timpul utilizării. Această activitate implică
asistenţă din partea programatorilor.
Procesul de prevenire a erorilor software necesită parcurgerea următoarelor etape:
- analiza cerinţelor, urmăreşte ca aplicaţia informaticǎ obţinutǎ să fie cea cerutǎ, iar
funcţionalitatea ei să fie compatibilă cu cerinţele;
- asigurarea unui mecanism facil de intervenţie asupra codului sursă, care să elimine
sau să minimizeze riscul introducerii de noi erori;
- aplicarea unui program de testare care să verifice funcţionalitatea şi să stabilească
compatibilitatea cu cerinţele.
Principalii factori care influenţează fiabilitatea aplicaţiilor informatice sunt: redundanţa,
timpul, spaţiul de intrare şi profilul operaţional.
Redundanţa – este folosită pentru a construi aplicaţii informatice fiabile; se disting două
tipuri: spaţială şi temporală;
- redundanţa spaţială - foloseşte mai multe componente decât strictul necesar pentru a
implementa un sistem de programe; cu cât redundanţa este mai mare, cu atât sunt
detectate sau tolerate mai multe erori;
- redundanţa temporală - constă în folosirea aceluiaşi set de instrucţiuni, pentru a
efectua acelaşi lucru în mod repetat, după care rezultatele sunt comparate între ele.
6
Timpul - din punct de vedere al exprimării cantitative, fiabilitatea este descrisă adesea
prin intermediul unor intervale de timp. Există diferite tipuri ale unităţilor de timp;
- timpul calendar - reprezintă modul de exprimare uzuală a timpului. Este util ca
fiabilitatea să fie exprimată în concordanţă cu timpul calendar, deoarece oferă
managerilor şi celor ce dezvoltă software, şansa de a vedea data la care sistemul
atinge obiectivele referitoare la fiabilitate;
- timp de execuţie – utilizat de cele mai multe modele pentru evaluraea fiabilităţii;
motivul constă în faptul că aceste modele sunt superioare celor care utilizează
timpul calendar. Pentru a fi capabil să exprime fiabilitatea prin intermediul timpului
calendar, modelele convertesc timpul de execuţie în timp calendar într-o etapă
ulterioară.
Modelele utilizate pentru calculul fiabilităţii se bazează pe defectele care apar în mod
aleator. Deoarece un defect apare numai pe durata procesului de execuţie, este important ca
timpul calendar să fie utilizat în calculele referitoare la fiabilitate.
Spaţiul de intrare şi profilul operaţional - reprezintă mulţimea de seturi şi stări de
intrare, pe care aplicaţiile informatice trebuie să le trateze. Dacă ulterior se adaugă, pentru
fiecare stare particulară, probabilitatea de a fi aleasă, se obţine profilul operaţional. Urmează
să se decidă care este probabilitatea ce trebuie selectată pe durata testului, pentru fiecare stare
de intrare. Diferitele probabilităţi sunt determinate astfel încât profilul operaţional să reflecte
modul în care componentele sistemului de programe sunt executate în timpul unei operaţii
normale.
Modelele de fiabilitate software existente sunt grupate conform [FARR83], [NICO91],
[RAMA82], [****83], în funcţie de diferite sisteme de clasificare:
- bazate pe natura erorilor; multe modele consideră programul ca pe o cutie-neagră şi
realizează o predicţie asupra fiabilităţii sale, fără să ţină cont de structura
programului;
- bazate pe etapele din ciclul de viaţă al sistemelor de programe în care se aplică
modelele.
Modelele folosite în timpul etapei de testare/validare sau în etapa operaţională sunt
împărţite în modele pentru:
- timpi între erori;
- numărarea erorilor;
- însămânţarea erorilor;
- intrări pe domeniul de bază.
Modelele de predicţie sunt aplicate în fazele preliminare din ciclul de realizare a
sistemelor de programe. Ele folosesc date colectate în procesul de dezvoltare şi metrici de
produs în scopul obţinerii unui nivel preliminat pentru densitatea de defectare. Utilizarea
acestora permite determinarea nivelului fiabilitatăţii preliminate şi obţinerea de predicţii
referitoare la comportamentul sistemelor de programe în timpul etapelor de testare şi
exploatare.
Modelul bazat pe faze, prezentat în [FARR83], utilizează statisticile de eroare obţinute
în timpul etapelor de analiză a cerinţelor tehnice, proiectare şi implementare, pentru a estima
fiabilitatea pe durata testării şi utilizării efective [GAFF88]. Necesitǎ existenţa unui program
de înregistrare sistematicǎ a comportamentului stadiilor intermediare în cadrul etapelor
7
ciclului de dezvoltare software.
Acest model se exprimă prin:
2 2
∆Vt = E[e − B (t −1) − e − Bt ]
unde:
∆Vt - numărul de erori descoperite / KLOC (mii de linii de cod), de la momentul t-1
până la momentul t;
E - rata totală a intervalului de eroare, exprimată în erori / KLOC;
t - indexul asociat etapelor de detectare a erorilor;
B = ½τp2, iar τp este constanta aferentă etapei în care au fost descoperite erorile.
Volumul de resurse depinde de efortul de dezvoltare raportat direct la complexitatea
aplicaţiei, la experienţa echipei de dezvoltatori, toate influenţând numărul de erori produse şi
care sunt detectate în etapele procesului de dezvoltare. Cu cât identificarea erorilor este mai
depǎrtatǎ de momentul producerii, costurile de depanare sunt mai mari. Estimările sunt
realizate în dependenţǎ cu dimensiunea codului şi sunt utilizate diferenţiat în etapele
incipiente faţǎde etapele finale ale ciclului de dezvoltare.
Erorile descoperite în timpul analizei cerinţelor şi a proiectării software sunt
normalizate cu ajutorul estimărilor obţinute pentru dimensiunea codului.
Modelul RADC, dezvoltat în [ROLB92], conţine estimări care se bazeazǎ pe densitatea
erorilor, preluate în modele ale fiabilităţii. Rata erorilor, intervalul dintre douǎ întreruperi ale
execuţiei generate de aceeaşi tipologie de erori, probabilitatea ca produsul sǎ aibǎ o
întrerupere de execuţie într-un interval specificat şi multe alte nuanţǎri ale evenimentelor,
transferate din teoria înlocuirii optime a echipamentelor sunt adaptate în modelele de
fiabilitate software, care prin extensie de tip serial – fiabilitate date – fiabilitate software –
fiabilitate rezultate sunt transferate spre aplicaţiile distribuite. Factorii selectaţi în cadrul
modelului fac referire la densitatea erorilor în fazele primare ale ciclului de viaţă.
Pentru aplicaţiile informatice sunt selectaţi factori precum, tipul aplicaţiei, mediul de
dezvoltare şi sunt adaptate metrici ce vizeazǎ managementul proiectului, elementele de
structurǎ ale proiectului, limbajele de programare, dimensiunea aplicaţiei, structurabilitatea
acesteia, nivelul de reutilizare de componente obţinânduse un model iniţial pentru densitatea
erorilor δ0, de forma:
δ0 = AD x (AM x TM x QM) x (LT x SS x MD x ER x CX x SA x FU)
unde:
A – este tipul aplicaţiei reprezentat, în majoritatea cazurilor, prin aplicaţii de baze de
date;
D – este mediul de dezvoltare caracterizat prin dezvoltarea metodologiei respectiv a
instrumentelor disponibile;
AM – este metrica pentru anomalii în managementul proiectului;
TM – este metrica de trasabilitate;
QM – reprezintǎ metrica de calitate ce încorporeazǎ rezultatele analizei calităţii
software;
LT – reprezintǎ tipul de limbaj de comandă, de interogare, orientat pe obiecte, etc.;
8
SS – reprezintǎ dimensiunea sistemului de programe;
MD – reprezintǎ modularitatea;
ER – reprezintǎ extinderea reutilizării;
CX – reprezintǎ complexitatea;
SA – reprezintǎ analiza standard pentru încorporarea în sistemele de programe a
rezultatelor analizei standardelor;
FU – este frecvenţa de utilizare a sistemului de programe.
Aceastǎ clasǎ de modele are la bazǎ estimǎri ce necesitǎ seturi de date privind
comportamentul de aplicaţii informatice numeroase şi omogene. Calitatea modelului este
strict dependentǎ de calitatea estimǎrilor.
Modelele de estimare sunt utilizate în etapele finale din ciclul de viaţă: testarea
integrării la nivel de componentă, testarea la nivel de sistem, testare funcţională şi exploatare.
Modelele de estimare incluse în categoria domeniul datelor utilizează datele de test
pentru sistemele de programe alese în concordanţă cu distribuţiile de probabilitate ale
utilizărilor operaţionale anticipate. Cele incluse în categoria domeniul timpului utilizează ca
element principal timpul, în următoarele variante: timpul de apariţie a erorilor, timpul de
execuţie între erori succesive, timpul de testare între erori succesive.
Modelele care utilizează timpul ca element principal sunt mai potrivite pentru
evaluarea fiabilităţii aplicaţiilor informatice distribuite, deoarece parametrul timp, în toate
formele lui de manifestare, este mai uşor de urmărit şi înregistrat de către utilizatori. În acest
sens, trebuie menţionat faptul că multe sisteme au funcţiuni speciale pentru contorizarea
timpului de execuţie şi înregistrarea codului erorii respectiv a momentului de timp şi a
modulului în care apare.
Modelul logaritmic Musa-Okumoto [MIOK90], foarte cunoscut în literatura
destinatǎ fiabilitǎţii software este aplicabil atunci când testarea se efectuează în concordanţă
cu un profil operaţional neuniform. Modelul ia în considerare:
t - timpul de execuţie consumat de la începutul testării;
λ0 - intensitatea iniţială de defectare;
λ(t) - intensitatea de defectare la momentul t;
θ - parametru de descreştere a intensităţii de defectare;
µ(t) - numărul aşteptat de defectări la momentul t.
pe baza cǎruia se obţin informaţii importante asupra intensitǎţii de apariţie a defectelor.
În cazul în care procesul de testare este eficient nivelul parametruluiλ(t) se reduce, iar
tendinţa de scǎdere se menţine dacǎ şi numai dacǎ prin eliminǎri de instrucţiuni, introduceri
de instrucţiuni sau modificǎri ale instrucţiunilor existente nu se introduc erori noi în program,
situaţie extrem de rar întâlnitǎ.
Modelul Littlewood-Verrall [LITT90], ia în calcul generarea de erori în procesul de
corectare şi admite că probabilitatea scade prin corectarea erorii.
Intenţia este de a face o aplicaţie informaticǎ distribuitǎ mai fiabilǎ atunci când o
eroare este detectată şi corectată, însă este puţin probabil că acest scop este realizat. Odată cu
fiecare eroare corectată o nouă componentă a sistemului este generată. Fiecare componentă
este obţinută din cea anterioară ca urmare a corectării erorii. Datorită incertitudinii implicate
în acest proces de corecţie, relaţia pe care un program o are cu predecesorul, este nesigură.
Aplicarea modelului Littlewood-Verrall pe aplicaţiile informatice nu ţine seama de
9
valoarea iniţială a intensităţii de defectare. Numărul defectelor descoperite la începutul
procesului de testare este mare şi descreşte pe măsură ce testarea avansează. Intensitatea de
defectare este influenţată de erorile care intervin în timpul procesului de testare. În cazul
aplicaţiilor informatice un factor de influenţă important este complexitatea. Numărul de
defecte este direct proporţional cu complexitatea sistemelor de programe. Aceasta determină o
creştere a dificultăţii sarcinilor de programare.
Aşa cum reiese din literatura de specialitate [FARR99], [KEIL89], [LUBL92],
[LYUM90], modelele de creştere a fiabilitǎţii consideră momentul apariţiei erorii ca intrare,
apoi calculează fiabilitatea curentă şi proiectează fiabilitatea viitoare. Prin utilizarea aceastei
metode, managerul de proiect determină care este volumul de teste ce trebuie efectuat înainte
atingerii obiectivelor fixate.
Pentru acest tip de modele, fiabilitatea noilor versiuni ale sistemelor de programe este
predictată în funcţie de cea a versiunilor anterioare.
Modelele de creştere realizează predicţii bazate pe numărul de erori observate pe
parcursul testului, iar parametri sunt estimaţi prin metoda verosimilităţii maxime sau a celor
mai mici pătrate. Ele produc rezultate diferite pentru aceleaşi date de intrare.
După alegerea modelului, factorii ce afectează fiabilitatea sunt modul de introducere
respectiv eliminare a defectelor şi mediul de lucru.
Introducerea de erori depinde de:
- experienţa persoanelor care activeazǎ în cadrul echipei de analişti, programatori;
- orientarea spre obţinerea de module de calitate la nivelul organizaţiei ;
- rigurozitatea cu care sunt utilizate procedurile de dezvoltare software;
- sistemul de metrici utilizat în planificarea, urmǎrirea şi creşterea calitǎţii aplicaţiei
distribuite;
- caracteristicile codului sursă dezvoltat;
- dimensiunea iniţială a codului;
- caracteristicile procesului de dezvoltare a sistemelor de programe;
- tehnicile ingineriei software utilizate;
- instrumentele folosite;
- pregătirea profesională şi nivelul de experienţă al personalului. SE DEZVOLTA
Eliminarea defectelor depinde de:
- performanţa echipei de testare;
- capacitatea de dezvoltare a seturilor de date de test;
- timpul alocat procesului de testare;
- nivelul planificat al erorilor maxim admise într-un interval dat şi pentru un numǎr
minim de activǎri specificate ale aplicaţiei
- profil operaţional;
- calitatea activităţii de depanare.
Mediul de lucru depinde de profilul operaţional.
Anumiţi factori sunt probabilistici şi prin urmare, multe modele sunt bazate pe procese
aleatoare. Diferitele modele existente utilizează probabilităţi de distribuţie a timpilor de
defectare sau a numărului de defecte experimentate şi iau în considerare variaţiile în timp ale
proceselor aleatoare. Toate modelele au un set de parametri care sunt stabiliţi pentru fiecare
proiect în parte.
10
Se consideră că sistemul de programe are un nivel scăzut al fiabilităţii şi pentru fiecare
modificare succesivă se calculează creşterea fiabilităţii. Timpul necesar obţinerii nivelului
dorit de fiabilitate este mare.
3 Generalitate
11
La implementare în diferite faze se scriu componente ce corespund anumitor
subprobleme.
Generalitatea se mǎsoarǎ cu indicatorul IGR dat de relaţia:
NPI
IGR =
NPRB
unde:
NPI – numǎrul de subprobleme implementat
NPRB – numǎrul de subprobleme maxim definit
Dacǎ pentru fiecare subproblemǎ SPRBi este estimat un coeficient de complexitate
C(SPROBi) asociat modulelor software care o implementeazǎ rezultǎ cǎ pentru problema
PROB în forma ei cea mai generalǎ complexitatea este datǎ de relaţia:
NPRB
C ( PROB) = ∑ C (SPROB )
i =1
i
NPRB
∑α C (SPROB )
i =1
i i
IGR =
C ( PROB)
Se considerǎ aplicaţia din figura 1 în care existǎ definite patru subprobleme SPROB1,
SPROB2, SPROB3 şi SPROB4 cu gradele de complexitate 10, 20, 15 şi respectiv 30
SPROB1
C(SPROB1) = 10
12
IGR = (10 + 15) / (10 + 20 + 15 + 30) = 25 / 75 = 0,33
4 Corectitudine
13
- rapoarte detaliate privind rezultatul testǎrii pentru reluarea etapelor din ciclul de
dezvoltare în vederea efectuǎrii de corecţii.
Spre deosebire de demonstrarea corectitudinii folosind aparatul matematic prezentat în
[DIJK68], [HOAR69], [MANN69], pentru orice seturi de date de intrare în aplicaţia
informaticǎ, rezultatul fiind ori cǎ aplicaţia este corectǎ şi trebuie lansatǎ în execuţie curentǎ,
ori cǎ aplicaţia este incorectǎ şi trebuie reluate etape ale ciclului de dezvoltare, testarea
evidenţiazǎ modul în care funcţioneazǎ aplicaţia pentru un numǎr dat de seturi de date de test.
Nu se trag concluzii pentru extinderea spre orice seturi de date de test, ceea ce înseamnǎ cǎ nu
se pune semn de egalitate între testarea şi demonstrarea corectitudinii unei aplicaţii
informatice distribuite.
Pentru echipa care dezvoltǎ software, un rezultat categoric legat de corectitudinea sau
incorectitudinea aplicaţiei informatice este irelevant în raport cu cheltuielile post-testare. De
aceea, este necesar sǎ se defineascǎ un indicator al corectitudinii ICP definit pe intervalul [0,
1].
Dacǎ ICP = 0 rezultǎ cǎ toate seturile de date de test au condus la rezultate RPi diferite
de rezultatele din specificaţii RTi pe toatǎ gama de tipuri de erori.
Dacǎ ICP = 1 rezultǎ cǎ toate seturile de date de test au condus numai la rezultate
identice cu RTi, fǎrǎ a înregistra erori.
Înseamnǎ cǎ pentru ICP aparţine intervalului (0, 1) trebuie stabilit un mod de agregare
prin care sǎ se ia în considerare erorile.
Într-un modul, apar erori pe niveluri de agregare ERR11, ERR12, ... ERRij, ... ERRNE NT.
Pentru fiecare tip de eroare se stabileşte un coeficient de importanţǎ PC1, PC2, ... PCNE.
Se defineşte indicatorul de corectitudine ICP prin relaţia:
NT NE
5 Eficacitate
NU
∑ CAPI
j =1
j
EUAI = NU
∑ COST
j =1
j
Dacǎ EUAI < 1 rezultǎ cǎ la nivelul utilizatorilor aplicaţia informaticǎ îşi dovedeşte
eficacitatea datoritǎ economiilor pe care le genereazǎ.
Dacǎ EUAI > 1 atunci cheltuielile utilizatorilor sunt mai mari dupǎ implementarea
aplicaţiei informatice şi cum tot timpul se acceptǎ şi forma veche de soluţionare a problemelor,
marea majoritate a utilizatorilor preferǎ aceastǎ formǎ, evitând accesarea resurselor aplicaţiei
informatice distribuite.
Dacǎ se considerǎ modulele ce alcǎtuiesc aplicaţia distribuitǎ ca fiind MOD1, MOD2, ...,
MODNM, costurile de realizare a modulelor în conformitate cu cerinţele din specificaţiile
aplicaţiei, folosind tehnologii noi, sunt CMOD1, CMOD2, ..., CMODNM.
Dacǎ dezvoltatorii construiesc modulele cu resursele pe care le au, adicǎ folosind
tehnologii cunoscute şi experimentate în proiectele anterioare, costurile sunt CRM1, CRM2, ...,
CRMNM.
Dacǎ se realizeazǎ modulele utilizând tehnologi cunoscute şi experimentate atunci costul
de dezvoltare a produsului este mai mic dar performanţa este mai scǎzutǎ. Utilizând
tehnologie nouǎ, neştiutǎ şi neexperimentatǎ, pentru dezvoltarea modulelor aplicaţiei, creşte
costul de realizare a aplicaţiei datoritǎ timpului pierdut cu învǎţarea şi însuşirea noilor
tehnologii dar creşte performanţa produsului.
Se calculeazǎ indicatorul de eficacitate la dezvoltator EDAI dupǎ formula:
15
NM
∑ CRM
i =1
i + efectul negativ al neperformantei
Tehnologie Tehnologie
veche nouǎ
MOD1 10 20
MOD2 15 20
Costuri
MOD3 30 50
MOD4 40 60
Cheltuieli cu învǎţarea 0 70
tehnologiei
Performanţǎ 70 90
EDAI =
(20 + 20 + 50 + 60) + 70 − 90 = 130 = 0,78
(10 + 15 + 30 + 40) + 70 165
CV 1
EAAI =
CV 2
16
Dacǎ se considerǎ pentru varianta V1 cheltuielile de dezvoltare a componentei
administrator ca fiind CDC1 = 100 şi cheltuielile de administrare a componentei dezvoltate ca
fiind CAL1 = 20; iar pentru varianta V2 cheltuielile de dezvoltare a componentei CDC2 = 50 şi
cheltuielile de administrare a componentei CAL2 = 70; pentru 36 de luni, rezultǎ eficacitatea
administrator
100 + 20 ⋅ 36 820
EAAI = = = 0,32
50 + 70 ⋅ 36 2570
unde:
EUAI – eficacitatea la utilizator
EDAI – eficacitatea la dezvoltator
EAAI – eficacitatea la administrator
Dacǎ coeficienţii de importanţǎ pentru utilizator, dezvoltator şi administrator sunt
PU=0,60; PD = 0,25 şi PA = 0,15 atunci rezultǎ un nivel slab al indicatorului agregat
EUAD=0,64 pentru aceastǎ soluţie.
17
6 Continuitate
LG (V1 ∩ V2 )
ICO =
LG (V1 ∪ V2 )
18
unde LG ( ) este lungimea ca numǎr de cuvinte
Dacǎ:
V1 = {FILE, EDIT, INSERT, FORMAT, TOOLS, TABLE, WINDOWS, HELP}
V2 = {FILE, EDIT, INSERT, MODIFY, INPUT, PRINT}
V1 ∩ V2 = {FILE, EDIT, INSERT}
V1 ∪ V2 = {FILE, EDIT, INSERT, FORMAT, TOOLS, TABLE, WINDOWS, HELP,
MODIFY, INPUT, PRINT}
LG (V1 ∩V2 ) = 3
LG (V1 ∪V2 ) = 11
3
ICO = = 0,27
11
∑ poz
i =1
1i − poz 2i
ICNC =
N2
unde:
poz1i - reprezintă poziţia câmpului i în interfaţa 1
poz2i - reprezintă poziţia câmpului i în interfaţa 2
N - este numărul de câmpuri din interfeţe
1 câmpul 1 1 câmpul 6
2 câmpul 2 2 câmpul 5
3 câmpul 3 3 câmpul 2
4 câmpul 4 4 câmpul 3
5 câmpul 5 5 câmpul 7
6 câmpul 6 6 câmpul 1
7 câmpul 7 7 câmpul 4
∑ poz
h =1
1h − poz 2 h
ICNC =
max{NC1 , NC 2 }
unde:
poz1k - reprezintă poziţia câmpului k în interfaţa 1
poz2k - reprezintă poziţia câmpului k în interfaţa 2
k - este numărul comun de câmpuri din cele două interfeţe
NC1 - reprezintă numărul de câmpuri din interfaţa 1
NC2 - reprezintă numărul de câmpuri din interfaţa 2
Se considerǎ capturile de ecran din figurile 3 si 4
1 câmpul 1 1 câmpul 4
2 câmpul 2 2 câmpul 8
3 câmpul 3 3 câmpul 3
4 câmpul 4 4 câmpul 11
5 câmpul 5 5 câmpul 9
6 câmpul 6 6 câmpul 1
7 câmpul 7 7 câmpul 10
8 câmpul 2
Câmpurile comune din cele douǎ interfeţe sunt: câmpul 1, câmpul 2, câmpul 3 şi câmpul
4. Aceste câmpuri îşi modificǎ poziţia din interfaţa I1 în I2 astfel:
câmpul 1 = | 1 – 6 | = 5
câmpul 2 = | 2 – 8 | = 6
20
câmpul 3 = | 3 – 3 | = 0
câmpul 4 = | 4 – 1 | = 3
Caracteristicile de calitate CR1, CR2, ...., CRT oferǎ o imagine completǎ în legǎturǎ cu
fiecare caracteristicǎ în parte.
Dacǎ pentru carcateristica CRi se construeşte un indicator de mǎsurare Hi aparţinǎnd
intervalului [0, 1] şi dacǎ se stabileşte cǎ pentru Hi = 0 produsul software nu este înzestrat cu
caracteristica CRi iar pentru Hi = 1 produsul software are nivelul cel mai înalt pentru
caracteristica CRi, atât realizatorul produsului software cât mai ales utilizatorii produsului
sunt interesaţi sǎ aibǎ o imagine globalǎ asupra comportamentului respectivului produs
software din toate punctele de vedere.
De aceea, se cautǎ o modalitate de agregare a tuturor informaţiilor privind cele T
caracteristici de calitate.
Existǎ numeroase modalitǎţi de a construi un model agregat.
Pentru fiecare modalitate se defineşte un sistem de ipoteze.
Singura idee ce trebuie luatǎ în considerare este strict legatǎ de:
- acceptarea sistemului de ipoteze
- acceptarea limitelor pe care sistemul de ipoteze le genereazǎ
- validarea punerii în corespondenţǎ a nivelurilor cantitative obţinute cu indicatorul
agregat cu niveluri calitative obţinute în practicǎ.
De remarcat este faptul cǎ oricare ar fi indicatorul agregat folosit, este demonstrat cǎ nu
este un indicator perfect [PǍUN83], [PELE07].
Nivelul mediu de calitate [IVAN06] corespunde situaţiei în care indicatorii asociaţi
caracteristicilor de calitate sunt normaţi şi de naturǎ adimensionalǎ. Dacǎ pentru
caracteristicile CR1, CR2, ...., CRT existǎ mǎsurate nivelurile cu indicatorii normaţi H1, H2, ...,
HT aparţinând intervalului [0; 1], nivelul mediu al calitǎţii, HM este dat de relaţia:
∑H
j =1
j
HM =
T
21
Dacǎ se considerǎ caracteristicile de calitate şi nivelurile mǎsurate, ordonate
descrescǎtor, ale indicatorilor asociaţi unor date din tabelul 3 pentru un program PROG;
nivelul mediu al calitǎţii este
Nr. CR H
crt. Caracteristica de calitate Nivelul indicatorului
1 Mentenabilitate 0,9
2 Funcţionalitate 0,85
3 Fiabilitate 0,8
4 Portabilitate 0,8
5 Utilizabilitate 0,75
6 Eficienţǎ 0,7
Modelul liniar ponderat pentru aprecierea globalǎ a calitǎţii HG este dat de relaţia
[IVAN06]:
T
HG = ∑p H
j =1
j j
∑p
j =1
j =1
∑a
i =1
ij
pj = T NS
∑∑ a
k =1 i =1
ik
unde:
NS – numǎrul de specialişti
aij – rata datǎ de specialistul Si pentru caracteristica de calitate CRj
22
T
NS
∑∑ aij H j
j =1 i =1
HG = T NS
∑∑ a
j =1 i =1
ij
unde:
e – nivelul estimat
p – nivelul planificat
u – nivelul obţinut la utilizarea curentǎ
Indicatorul global de calitate îşi dovedeşte utilitatea dacǎ:
- se considerǎ aplicaţii aparţinând aceleiaşi clase
- nivelurile caracteristicilor de calitate sunt mǎsurate folosind aceiaşi indicatori
- este necesar sǎ se ierarhizeze un produs în raport cu alte produse pentru care este
calculat nivelul agregat
- rezultatul ierarhizǎrii este coroborat cu alte elemente ce completeazǎ raportul
produsului informatic nou faţǎ de produse informatice existente, în vederea obţinerii
unei imagini cât mai complete asupra întregului context astfel definit.
Dacǎ sistemul de ipoteze şi expresia analiticǎ sunt altele se obţine un alt model de
agregare şi un alt nivel pentru calitatea agregatǎ a produsului software.
Sunt situaţii în care indiferent de modelul de agregare construit poziţia unui produs
software într-o mulţime de produse aparţinând aceleiaşi clase este aceaşi, însǎ de cele mai
multe ori modelele globale conduc la rezultate diferite. Este important ca utilizatorul unui
astfel de model prin perseverenţa de care dǎ dovadǎ sǎ creeze un sistem de referinţǎ unitar şi
sǎ evalueze riscurile pe care le genereazǎ limitele procesului de agregare.
23