Sunteți pe pagina 1din 203

1

INTRODUCERE

Dezvoltarea societatii informationale presupune un nou mod de abordare a productiei si circulatiei de software. Obiectivul acestui studiu este definirea conceptelor de clonare informatica, a proceselor specifice clonarii. Este introdus un sistem riguros de indicatori care masoara elementele de structura si de comportament ale programelor pentru a evidentia situatiile n care un produs program este clona. Necesitatea clonelor este impusa de dezvoltarea produselor program prin reutilizare si prin lucrul n echipa, cu trecerea de la o versiune la alta sau de la o generatie la alta de software. Procesele de clonare influenteaza dinamica dezvoltarii de tehnici si metode de analiza proiectare codificare testare implementare software att timp ct sunt mentinute n limite normale si se deruleaza n companiile producatoare de software. Fiecare produs program este definit prin caracteristici constructive la producator si, respectiv, prin mod de comportament la utilizator. n lucrare sunt definiti indicatori cu ajutorul carora se masoara att caracteristicile constructive ct si cele de comportament, precizndu-se prin

proceduri riguroase modul n care se culeg datele si se efectueaza calcule. Fiecare indicator este nsotit de exemplificari care evidentiaza cazurile normale de definire a programului ct si situatiile n care se obtin valori particulare. Din multimea indicatorilor se extrag cei mai importanti, obtinnduse o sublista recunoscuta n continuare sub denumirea de amprenta a programului. O amprenta a programului este definita n unul din urmatoarele trei moduri: v lista de indicatori formata din reuniunea sublistei indicatorilor de structura si, respectiv, cu sublista indicatorilor de comportament; v indicator agregat fara diferentiere a importantei factorilor de influenta; v indicator agregat dupa o noua procedura cu luarea n considerare a diferentierii factorilor de influenta. Problema clonarii informatice capata o noua valenta n contextul dezvoltarii tehnicilor si metodelor de realizare a aplicatiilor distribuite si de crestere spectaculoasa a costurilor de asigurare a protectiei si securitatii tuturor tranzactiilor. De asemenea, realizarea de noi aplicatii cu caracter deschis orientate spre utilizatorul cetatean care are a cces la un terminal amplasat ntr- un loc public necesita crearea unor noi tehnologii. Acestea presupun preluarea masiva a componentelor software aflate n uz curent si includerea lor ntr- un produs n care interfetele om calculator permit derularea de tranzactii de catre cetateni n conditii de maxim confort si de siguranta. Copierea unei dischete sau a unui CD se realizeaza cu comenzi ale sistemului de operare si costurile obtinerii unor cpii sunt date de costul suportului destinatie. Deci, n urma copierii se obtine clona unui program, unui text, unei baze de date, a unui fisier n general. Simplificnd lucrurile, clona informatica este un fisier de iesire, identic cu fisierul de intrare, obtinuta prin operatia de copiere fisiere. Problema obtinerii clonelor informatice este mult mai complexa si mbraca o serie de aspecte att tehnice, ct si juridice care trebuie cunoscute pentru a putea gestiona corect circuitul complet al produselor informatice.

Stadiul actual al dezvoltarii societatii informationa le [GHIL02] romnesti este caracterizat prin: atingerea unui nivel ridicat al infrastructurii IT; diversificarea tipologiilor de aplicatii informatice; crearea de organizatii virtuale orientate pe productie; realizarea de magazine virtuale, derularea activitatilor de comert si de alte afaceri electronice; realizarea de noi tipologii de servicii si activitati; orientarea economiei spre valorificarea de cunostinte; cresterea numarului de utilizatori permanenti; orientarea spre rezolvarea problemelor curente (plati, taxe, achizitii, comert); dezvoltarea de licitatii electronice; crearea de site-uri pentru prezentare structuri organizationale; crearea de structuri virtuale pentru muzee; realizarea instruirii la distanta n cadrul universitatilor virtuale cu biblioteci virtuale. Dezvoltarea infrastructurii si productia de software presupun eforturi financiare considerabile. Literatura de specialitate mentioneaza costuri ce depasesc de multe ori nivelul produsului intern brut pe cap de locuitor, pentru obtinerea unui nivel acceptabil de posturi de lucru si de acces la Internet. n SUA, n tarile UE si n Romnia a fost creat un cadru adecvat pentru dezvoltarea tehnologiilor IT si pentru crearea de aplicatii informatice pe care cetatenii sa le foloseasca n mod direct, fara a fi nevoiti sa parcurga stagii prealabile de instruire. Acest cadru este n continua perfectionare pentru a prelua noile realizari tehnologice si pentru a reflecta gradul de accesibilitate a cetatenilor la derularea de e-activitati. Astfel, pentru dezvoltarea tranzactiilor electronice a fost realizata o legislatie adecvata, iar pentru protectia producatorilor de software original au fost create organisme care gestioneaza unitar produsele program si licentele de utilizare a acestora. Sunt specificate conditiile de realizare si circulatie a produselor software si a serviciilor. Practica arata ca n paralel cu activitatile de productie si utilizare software si baze de date, au loc si atacuri la acestea, care joaca rol de frna pentru procesele normale de recuperare a investitiilor si de fructificare a efectelor unui act investitional n informatica. Astfel, crearea de virusi are menirea de a dezvolta productia de antivirusi. Fiecarui sistem de protectie si securitate i sunt identificate rapid partile slabe si se declanseaza ofensiva penetrarii lor. Pentru a preveni efectele catastrofale se proiecteaza de fiecare

data noi componente si desi exista costuri uriase, se achizitioneaza noi sisteme de protectie si securitate, care au capacitatea sa reduca vulnerabilitatea aplicatiilor informatice pentru o anumita perioada. Asa se explica preocuparile din sistemul bancar, din sistemul de evidenta a populatiei, din sistemul educational pentru protectia si securitatea bazelor de date si pentru derularea tranzactiilor. n paralel sunt desfasurate activitati care ocolesc cadrul legal fara a fi reutilizari autorizate de componente program. Procesele de clonare se regasesc datorita particularitatilor specifice pentru domeniul informatic. Clonarea informatica este un nou domeniu al cercetarii ntruct este importanta dezvoltarea de instrumente care evidentiaza originalitatea sau caracterul de clona al unui produs software lansat pe piata. Companiile producatoare de software uziteaza clonarea n mod frecvent. Trecerea de la o versiune la alta a unui produs software necesita mai nti realizarea de clone. Fiecare clona este supusa unei analize privind noi functii care se adauga, functii asupra carora trebuie lucrat daca n timpul exploatarii au produs erori si proceduri care trebuie dezvoltate, n sensul cresterii generalitatii. Lucrul pe clone este benefic att timp ct este efectuat de detinatorul legal al produsului software. Testarea unui produs software la utilizatori, nainte ca produsul sa fie introdus pe piata, este efectuata cu utilizarea de clone reprezentnd diferite stadii atinse de un produs. Clonarea software pentru testare are rolul de a creste productivitatea testerilor. Simultan, pe clone, se aplica seturi diferite de date de test, iar rezultatele obtinute sunt reunite si analizate. n cazul n care producatorul de software urmareste obtinerea de avantaje speciale, cloneaza fisierele de texte sursa si le difuzeaza liber. Lucrul pe text sursa de foarte buna calitate este generatorul sigur al unei scoli de dezvoltare software. Lucrul pe clone conduce la obtinerea de versiuni locale ale produsului clonat. n acelasi timp, se creeaza un grad de independenta a clientilor fata de producator. Se diminueaza costurile de ntretinere. Producatorul de software si creeaza disponibilitatea de resurse pentru a dezvolta noi produse prin degrevarea de un trecut, deosebit de favorabil. Crearea de site-uri cu acces liber se bazeaza pe clone software si clone de date. Clona de date pe site- uri permit dezvoltarea de modele care sunt testate pe aceleasi date, originalitatea si comparabilitatea.

Clona software regleaza preturile pe piata de software. Dispunerea pe site a unui produs complet documentat conduce la informarea utilizatorilor. Prin compararea acestor produse de pe site cu cele care se vnd curent l orienteaza pe client spre acel produs care i se potriveste. Comparatiile conduc de la sine la eliminarea de la sine a produselor clonate, ambalate sub alta eticheta. n productia de software clona regleaza calitatea proceselor si produselor. Calitatea vizeaza n primul rnd clona, ntruct sunt multiplicate produsele software performante. Nu sunt clonate programe neperformante sau programe nenecesare de dragul de a fi stocate pur si simplu pentru a nu fi lansate niciodata n executie. Cine cloneaza software urmareste un scop fie realizarea de profit, fie obtinerea de efecte pozitive. Lucrarea de fata este rezultatul activitatii de cercetare stiintifica desfasurata de autori de-a lungul mai multor ani. Sunt abordate probleme de baza ale clonarii software si ale clonarii datelor. Rezultate ale cercetarilor au fost publicate n reviste de specialitate sau au facut obiectul unor comunicari la sesiuni si conferinte stiintifice. La structurare s-a avut n vedere necesitatea unei abordari gradate, astfel nct sa fie clarificate principalele aspecte legate de conceptul de clonare, modalitati de obtinere clone n contextul existentei unui cadru juridic operational. Sunt propusi indicatori de masurare a gradului de ortogonalitate a software si a bazelor de date, se constituie n elemente de baza pentru definirea de amprente care stau la baza compararii programele si/sau bazelor de date n vederea stabilirii originalitatii lor sau a faptului ca sunt clone. Implementarea acestor indicatori presupune elaborarea de software specializat. Unele dintre rezultatele obtinute de autori sunt stocate pe site-ul www.clonare- informatica.ase.ro. Preluarea produselor program n mod neautorizat este nsotita de efectuarea unor transformari, de cele mai multe ori mecanice care au rolul de a obtine produse echivalente, greu de recunoscut, n comparatie cu originalul. Studiile de caz incluse evidentiaza modul cum tehnicile si metodele de clonare sunt utilizate si cum se identifica un produs clonat prin compunere de efecte ale automatizarii transformarilor. Cercetarile n domeniul clonarii informatice sunt la nceput si necesita utilizarea unor noi abordari precum si crearea unor structuri organizationale orientate spre educarea celor care creeaza si utilizeaza direct produse program. Elementele de etica profesionala pentru programatori, pentru dealer- ii de software si pentru utilizatorii produselor program vin sa

contureze un nou curent n obtinerea unui climat care stimuleaza dezvoltarea calitativa a componentelor software. Autorii sunt recunoscatori tuturor celor care prin sugestiile si propunerile pe care le fac vor contribui la mbunatatirea unei editii viitoare.

PROCESE DE CLONARE

2.1 Programe, module, proceduri Programul este o constructie destinata rezolvarii unei probleme, fiind scris ntr- un anumit limbaj de programare. n functie de destinatia sa, un program face parte din una din urmatoarele categorii: programe pentru efectuarea de calcule matematice; programe pentru crearea si utilizarea de fisiere; programe pentru crearea formularelor; programe pentru afisarea unui tabel; programe pentru afisarea grafica a unei figuri. Programul este rezultatul unei activitati logice, de stabilire a succesiunii instructiunilor unui limbaj n vederea implementarii unui algoritm. Programele definesc operanzi, i initializeaza si i folosesc n instructiuni care efectueaza diverse calcule, selectari sau repetari a unor secvente. Programul P este o constructie unitara formata din instructiunile I1 , I2 , , INi. Instructiunile folosite sunt aranjate ntr-o succesiune logica,

formnd liniile sursa ale programului. De exemplu, fie programul PSUM.CPP, care nsumeaza elementele unui sir de numere:
#include <stdio.h> #include <conio.h> void main() { int a[10],s,i,n; printf(\n Numarul de elemente:); scanf(%d,&n); printf(\n Valorile elementelor:); for(i=0;i<n;i++) { printf(\n a[%d]=,i+1); scanf(%d,&a[i]); } s=0; for(i=0;i<n;i++) s+=a[i]; clrscr(); printf(\n Suma elementelor este:%d,s); }

Programul PSUM.CPP are 19 linii sursa si pentru fiecare linie sursa numarul caracterelor care o compun este dat n tabelul urmator: Numar caractere pe linie sursa Tabelul 2.1
Linie sursa #include <stdio.h> #include <conio.h> void main() { int a[10],s,i,n; printf(\n Numarul de elemente:); scanf(%d,&n); printf(\n Valorile elementelor:); for(i=0;i<n;i++) { printf(\n a[%d]=,i+1); scanf(%d,&a[i]); } s=0; for(i=0;i<n;i++) s+=a[i]; clrscr(); printf(\n Suma elementelor este:%d,s); } Numar de caractere 18 18 11 1 16 34 15 35 16 1 24 18 1 4 16 8 9 39 1

Limbajele evoluate permit structurarea programelor n module si a modulelor n proceduri. Fiecarui program i se asociaza o structura arborescenta. n figura nr. 2.1 este evidentiata structura unui program oarecare: A

Figura 2.1 Structura unui program oarecare

Programul are structura sub forma unui arbore cu 3 niveluri. Procedurile E, F, G, H, I, C sunt grupate n modulele B si D, iar apelantul este A. Programul are 2 module sau 6 proceduri. Fiecare procedura Gi are o lungime LGi, iar fiecare modul Mi are o lungime LM i, ambii indicatori fiind exprimati n numar de linii sursa. Structurarea programelor n proceduri si module permite lucrul n echipa.

2.2 Macrodefinitii si proceduri Macrodefinitia este o multime de prelucrari care nlocuiesc n textul sursa numele macrodefinitiei. nlocuirea numelui macrodefinitiei cu instructiunile corespunzatoare este efectuata de preprocesor. Acesta realizeaza o verificare minimala a instructiunilor macrodefinitiei, deoarece se lucreaza la nivel de text, nefiind posibila o verificare a erorilor la nivel de sintaxa a limbajului. n limbajul C++ macrodefinitia este definita cu ajutorul directivei de compilare #define, fiecare ocupnd, de regula, o singura linie sursa. Macrodefinitiile au doua forme: cu parametri; fara parametri.

n general, macrodefinitiile fara parametri sunt folosite pentru a defini constante. Exemple de macrodefinitii de acest gen: #define size 512 #define word long #define bytes sizeof(word) Utiliznd definitiile de mai sus, secventa de cod urmatoare: word n=size * bytes; este expandata la urmatoarea secve nta: long n=512 * sizeof(long); O macrodefinitie cu parametri presupune efectuarea unui apel, similar celui de la proceduri sau functii, n care sunt furnizate argumentele macrodefinitiei. n secventa urmatoare este data o macrodefinitie de determinare a maximului dintre doua numere: #define max(x,y) ((x) > (y) ? (x) : (y)) Se impune specificarea parametrilor x si y ntre paranteze, deoarece x si y pot fi date sub forma unor expresii. Exemplu: n=max(n-2, k+6); este expandata n secventa urmatoare: n=(n-2) > (k+6) ? (n-2) : (k+6);

Procedura ofera un mod convenabil de a mpacheta un ansamblu de prelucrari astfel nct sa fie utilizata de cte ori se doreste. Este o constructie de sine statatoare formata din: antet; delimitatori formali; corp.

Antetul unei proceduri este format, la rndul sau, din o serie de elemente, si anume: numele procedurii; trebuie sa fie un identificator unic n cadrul programului; parametrii procedurii sau semnatura acesteia; sunt utilizati n transmiterea sau receptionarea de valori n/din corpul procedurii; exista posibilitatea unei liste vide de parametri; tipul rezultatului returnat; n cazul limbajului de programare acesta este dat de cuvntul cheie void. Delimitatorii formali sunt constructii care separa corpul procedurii de antet si de restul programului. n C++ delimitatorii formali sunt { si }. Corpul procedurii cuprinde ansamblul instructiunilor incluse ntr-o anumita ordine care realizeaza o multime de prelucrari. Folosirea unei proceduri ntr- un program implica si apelul ei n vederea obtinerii rezultatului prelucrarilor prevazute n corp. Apelul consta n precizarea numelui sau urmata de lista parametrilor separata de operatori. Cnd o procedura este apelata, argumentele sale sunt evaluate, iar rezultatele obtinute sunt transferate operanzilor din corpul functiei. Are loc executia corpului procedurii si obtinerea valorii sau valorilor dorite. Exista un caz particular de procedura, avnd aceleasi proprietati, cu diferenta ca returneaza apelantului, aparent, un singur rezultat. Definirea functiei care efectueaza ridicarea la o putere ntreaga pozitiva a unui numar ntreg este data mai jos: int putere(int baza, int exponent) { int rezultat=1; for(int i=0;i<exponent;++i) rezultat*=baza; return rezultat; }

Modul n care are loc apelul acestei functii este prezentat n listingul urmator: #include <iostream.h> main(void) { cout<<2^8=<<putere(2,8)<<\n; } De regula, definirea unei proceduri are loc nainte de a fi folosita. Definirea dupa apel este permisa numai n masura n care este declarat antetul procedurii naintea apelului si definirea propriu- zisa are loc dupa apel. Transmiterea parametrilor ntr-o procedura sau functie se efectueaza prin doua modalitati: v prin valoare; valoarea transmisa este copiata, prelucrarile afecteaza numai aceasta copie, iar la revenirea n apelant valoarea transmisa procedurii este aceeasi; v prin referinta; se lucreaza n mod direct asupra valorii argumentelor transmise, modificarile efectuate regasindu-se la revenirea n apelant. Diferenta dintre macrodefinitii si proceduri/functii se reflecta n lungimea programelor sursa si n modul de executie a instructiunilor ce formeaza corpurile acestora. Astfel, n cazul macrodefinitiilor, fiecare apel este nlocuit cu codul sursa corespunzator. Procedura, respectiv functia, sunt definite o singura data n program, iar la apel instructiunile ce formeaza corpul lor sunt executate din punctul la care au fost definite. De asemenea, n cazul macrodefinitiilor se lucreaza ntotdeauna pe originalul parametrilor transmisi, n timp ce procedurile prevad si un mecanism de transmitere a argumentelor prin valoare, care nu afecteaza originalul n programul apelant. Sunt dezvoltate tehnici de realizare a bibliotecilor de macrodefinitii si proceduri. Ideea este de a utiliza intens aceste biblioteci, facndu-se diferenta ntre folosirea acestor biblioteci n cadrul programelor si clonarea macrodefinitiilor si procedurilor incluse n acestea.

2.3 Integrarea de componente reutilizabile Componenta este o unitate de cod executabil, care ofera o ncapsulare fizica a serviciilor asociate. Componenta se constituie ntr-o evolutie a conceptului de obiect. Ea constituie o parte dintr- un sistem sau o structura mai ampla, fiind combinata cu alte componente n vederea oferirii de servicii specifice n cadrul unei aplicatii software. Elementele reutilizabile includ parti software si componente aflate pe diverse nivele de abstractizare si de diferite dimensiuni. Aceste elemente se clasifica dupa mai multe criterii prezentate n tabelul urmator, conform [STAN03]: Criterii de clasificare a componentelor Tabelul 2.2
Criteriul de clasificare Aplicabilitate n procesul software Nivelul de abstractizare ncapsulat Tipuri de componente Nivelul de executie Nivelul de accesibilitate Elemente de analiza folosite la reutilizarea modelului de sistem; Elemente de proiectare; Elemente de implementare sunt elemente software executabile, pregatite pentru includerea ntr-un nou sistem. Elemente care ncapsuleaza o abstractie functionala subrutinele si functiile n bibliotecile traditionale; Elemente care acopera o grupare cazuala de elemente pachetele si fisierele; Elemente care ncapsuleaza o abstractie de data clasele de obiecte; Elemente care ncapsuleaza un grup de abstractii (sau cadru de dezvoltare) C++ STL (Standard Template Library), biblioteci SMALLTALK; Elemente care ncapsuleaza o abstractie de sistem componente COM, CORBA. Elemente statice nu sunt nlocuite fara recompilare; Elemente substituibile au variante substituibile dinamic; Elemente dinamice - sunt integrate n momentul executiei. Elemente disponibile doar prin descrierea interfetei; Elemente disponibile prin sursa cazul pentru produsele software gratuite; Elemente disponibile prin descrierea interfetei si surse reutilizarea are loc prin interfata, sursele fiind disponibile pentru inspectie, discutii, corectii.

Integrarea componentelor reutilizabile reprezinta o etapa n miniciclul de viata al consumatorului de reutilizare dezvoltat n faza de planificare a procesului de dezvoltare a noului sistem informatic. Dezvoltarea cu reutilizare se refera la dezvoltarea de sisteme cu reutilizarea componentelor. Tehnicile utilizate n cadrul acestui proces sunt [STAN03]: selectarea pachetului de aplicatie; selectarea componentelor reutilizabile; verificarea redundantei la nivel de produs software; identificarea componentelor reutilizabile candidate. Selectarea pachetului de aplicatie consta n determinarea acelui pachet care ofera solutia optima din punctul de vedere al costului, calitatii si duratei. Pachetul de aplicatie presupune reutilizarea ntregului sistem. Selectarea componentelor reutilizabile consta n determinarea celei mai bune solutii, utiliznd componente candidate. Optimalitatea componentei este determinata pe baza urmatorilor factori: factori economici; calitate; durata; restrictii ale domeniului de aplicatie sau a mediului de dezvoltare; obiective privind reutilizarea viitoare; aspecte juridice; politicile de reutilizare aplicate de catre organizatie. Sursele de obtinere a componentelor reutilizabile sunt: piata de componente; sisteme aflate n exploatare; proiecte care se deruleaza n paralel; bibliotecile de componente; catalogul de reutilizare; surse Internet. Verificarea redundantei la nivelul produsului software consta n stabilirea identitatii privind functionalitatea, scopul si definirea datelor n cadrul componentelor software. De asemenea, se stabileste, n cadrul ciclului de viata, nivelul la care este prezenta redundanta, precum si dimensiunile de manifestare ale acesteia.

Operatia de verificare a redundantei este efectuata pe diferite stadii de dezvoltare ale noului sistem n vederea asigurarii unui grad ridicat de eficienta a produsului program final. Identificarea componentelor reutilizabile candidate consta n propunerea componentelor reutilizabile care sunt incluse n produsul software. Este de preferat sa se includa n noul sistem si componente originale care, printr-o modificare ulterioara, sa fie utilizate n noi proiecte. Strategia de proiectare a unor astfel de componente are un caracter selectiv, n sensul ca sunt alese ca fiind reutilizabile acele componente care sansele cele mai mari de a fi reutilizate. De asemenea, se verifica existenta n biblioteci sau cataloage de reutilizare a componentelor care se creeaza.

2.4 Redundanta din programe Conceptul de redundanta software se refera, n general, la realizarea de copii ale unor sisteme, aplicatii, n vederea prevenirii eventualelor pierderi de date. n acest context, redundanta software este asimilata notiunii de backup. n anumite sisteme hardware, redundanta este inacceptabila, n timp ce redundanta software reprezinta unica modalitate de a mbunatati performantele sistemului si toleranta acestuia la erori. n anumite situatii, tehnicile de realizare a redundantei software bazate pe modificarea codului sursa si duplicarea datelor au ca scop cresterea robustetei sistemului la posibilele erori hardware care apar n timpul functionarii sistemului. Exista doua modalitati de aplicare a tehnicilor de redundanta, privind modificarea codului sursa [WWW2]: duplicarea unei parti sau a tuturor variabilelor dintr-un program sursa n vederea introducerii redundantei si modificarea operatorilor care gestioneaza replicile variabilelor; introducerea unei verificari de consistenta n cadrul fluxurilor de control pentru a verifica periodic consistenta ntre cele doua copii ale unei variabile. De exemplu, secventa: e=a+b+c

Este modificata, obtinndu-se urmatoarea secventa prin aplicarea tehnicilor de redundanta specificate mai sus: f=x+y+z g=t+u+v if ( x != t || y != u || z != v) eroare (); n anumite cazuri, aplicatiile critice din punctul de vedere al securitatii au restrictii stricte n termeni de memorie ocupata si performanta a sistemului. Duplicarea ntregului set de variabile si verificarea consistentei naintea fiecarei operatii de citire reprezinta alegerea optima din punctul de vedere al acoperirii erorilor. Aplicarea tehnicilor de redundanta (duplicare set de variabile, verificare consistenta) garanteaza total eliminarea erorilor care apar n memorie pe toata durata ciclului de viata al fiecarei variabile [WWW2]. Pe de alta parte, prin duplicarea unei mici parti ale setului de variabile definit n cadrul unui program se realizeaza un compromis ntre acoperirea erorilor si suprancarcarea unitatii centrale de prelucrare. Utilizarea redundantei trebuie sa realizeze un echilibru ntre costuri, exprimate n timp mai mare de executie a unitatii centrale de prelucrare, si avantaje date de eliminarea posibilitatii de aparitie a erorilor n timpul exploatarii produsului program.

2.5 Reutilizarea de software Reutilizarea software consta n fructificarea avantajelor oferite de eforturile de dezvoltare anterioare n vederea realizarii produselor program cu un cost minim. Exista mai multe acceptiuni ale conceptului de reutilizare software. Ceea ce este comun acestor definitii se refera la proiectarea si implementarea de componente software care sunt utilizate ntr-un proces de asamblare si combinare care conduce la obtinerea produsului program. Reutilizarea este un concept care se aplica asupra reprezentarilor abstracte ale unui sistem, obiectelor software si a componentelor, prototipurilor si sistemelor partiale, datelor si modelelor de date, arhitecturilor de programe si proiectelor de structuri de date, la implementare si rutine de test [STAN03]. Astfel, reutilizarea software ofera beneficii mari pe termen lung, atunci cnd eforturile de reutilizare vizeaza

primele activitati desfasurate n cadrul ciclului de viata a realizarii unui produs program. Sistemul software este format dintr-un ansamblu de elemente care actioneaza mpreuna n vederea atingerii obiectivelor stabilite la nceputul procesului de dezvoltare. n prezent, se constata o crestere a complexitatii sistemelor informatice datorita introducerii de noi caracteristici si functionalitati n arhitectura acestora. Aceste caracteristici constau n: v folosirea mai multor sisteme de operare; v asigurarea comunicatiei on- line ntre calculatoare; v proiectarea, implementarea si utilizarea sistemelor de baze de date n cadrul solutiilor proiectate; v utilizarea diferitelor tipuri de retele de calculatoare; v utilizarea diferitelor tipuri de interfete utilizator; v posibilitatea utilizarii calculului paralel. Unitatea de reutilizare n procesul de dezvoltare de noi solutii informatice este componenta, care se constituie dintr-un ansamblu de obiecte care actioneaza mpreuna n vederea furnizarii unui serviciu pentru utilizator. Conceptul de reutilizare software este abordat din doua puncte de vedere, conform [STAN03]: dezvoltarea sistematica de componente software; reutilizarea sistematica de componente software si a elementelor constitutive ale acestora. Exista mai multe criterii de clasificare a elementelor reutilizabile: stadiul dezvoltarii n care elementele reutilizabile sunt produse si/sau utilizate; nivelul de abstractizare; natura elementelor. Clasificarile elementelor reutilizabile se face fie pe baza unuia din criteriile mentionate anterior, fie pe o combinatie a acestora. Astfel, n [MILI95] sunt identificate urmatoarele categorii de elemente reutilizabile: date; arhitectura; proiect de detaliu; program. De asemenea, a fost propusa o ierarhie a cunostintelor reutilizabile astfel: cunostinte specifice domeniului n care are loc reutilizarea;

cunostinte externe mediului n care are loc reutilizarea; arhitecturi functionale; structuri logice; fragmente de cod. Exista trei mari clase de sisteme reutilizabile [MILI95]: tipare de program utilizat pentru instantierea fragmentelor de cod sau a proiectelor specifice; procesoare interpretoare pentru specificatii executabile de nivel nalt; sisteme de transformare includerea anumitor activitati de dezvoltare n transformari mai mult sau mai putin formale. n [STAN03] sunt evidentiate mai multe tipuri de reutilizare software prezentate n tabelul urmator: Criterii de clasificare a reutilizarii software Tabelul 2.3
Criteriul de clasificare Scop Tipuri de reutilizare software

Reutilizare generala (reutilizare orizontala) este o reutilizare independenta de domeniu; Reutilizare n cadrul domeniului (reutilizare verticala) este specifica unui domeniu; Reutilizare n cadrul unei familii de aplicatii. Reutilizare interna n interiorul unei organizatii; Reutilizare externa (de piata) n cadrul unei alte organizatii. Reutilizare de componente de granularitate fina componentele (functii I/E, functii de manipulare structuri de date, clase de obiecte) sunt independente de domeniu; Reutilizare de componente de granularitate componentele sunt subsisteme de aplicatii. grosiera

Tipul de reutilizator Granularitatea componentelor

Modul de adaptare al componentelor

Reutilizare tip cutie neagra componenta reutilizata nu este modificata; Reutilizare tip cutie gri componenta reutilizata este modificata ntr-o mica masura; Reutilizare tip cutie alba componenta reutilizata este modificata major. Reutilizare ocazionala reutilizarea nu este planificata, fiind un rezultat secundar al proceselor ciclului de viata software; Reutilizare sistematica - practica reutilizarii se bazeaza pe procese repetabile, bine definite.

Integrarea n ciclul de viata software

Reutilizabilitatea este o caracteristica externa produsului software, reflectnd potentialul de reutilizare al produsului program. Caracteristicile unei componente reutilizabile sunt [STAN03]: v generalitate; v arie larga de aplicare; v modularitate; v completitudine si consistenta; v independenta hardware; v independenta de implementare; v robustete; v ncapsulare; v fiabilitate; v documentare; v adaptabilitate/extensibilitate; v standardizare; v portabilitate; v certificare; v mentanabilitate.

2.6 Caracteristicile clonarii Se considera o entitate EI formata din componente de baza care interactioneaza n vederea realizarii unor functii F1 , F2 ,, Fnf, percepute direct de mediul n care se gaseste. A copia entitatea E nseamna a realiza unele dintre componente cu I sau fara interactiuni, obtinndu-se o noua entitate E1 ce executa sau nu functii din multimea F1 , F2 ,, Fn. Copia E1 difera mai mult sau mai putin semnificativ de entitatea EI. A clona entitatea EI nseamna a dezvolta procese prin care se obtin componente, se genereaza interactiuni si se realizeaza functiile F1 , F2 ,, Fn , obtinndu-se noi entitati E1 , E2 ,, Em, care nu difera cu nimic fata de entitate de baza EI. Dupa un tablou se executa copii, dintre care unele sunt perfecte, adica diferentele fata de original sunt insesizabile la suficient de multe niveluri de analiza. Dupa un prototip de strung se realizeaza clone ntruct toate strungurile au aceleasi repere, sau au loc aceleasi cuplari, iar operatiile realizabile pe un strung, nu difera n raport cu celelalte. Singurele probleme apar n timp si genereaza diferente de fiabilitate.

Din punct de vedere al diferentelor de comportament n timp, datorita utilizarilor neomogene, se obtin diferente ntre entitatile clonate, aspect absolut natural si obiectiv. Att pentru realizarea copiilor, ct si pentru realizarea clonelor, sunt necesare eforturi si consumuri care se regasesc la nivelul costurilor asociate noilor entitati. Spre deosebire de alte domenii de activitate, domeniul informaticii este caracterizat prin costuri care tind spre zero atunci cnd sunt copiate baze de date sau produse software. Prin copierea unui produs software S se obtin, cu costuri aproape zero, clonele S1 , S2 ,, Sm. Entitatea Si, i =1, 2, , m, este n primul rnd o copie a entitatii de baza S pentru ca procesul prin care este obtinuta, desi este deosebit de complex, are asociat numele de copiere (copy). Entitatea Si este o clona pentru ca: are aceleasi componente pe care le detine entitatea de baza S; componentele lui Si au aceleasi interactiuni pe care le au componentele din S; nu exista nici o diferenta ntre functiile pe care le realizeaza cele doua entitati. Produsele software sunt stocate pe suport tehnic (CD, discheta, HDD), iar copierea acestora este un fapt cotidian. Att fisierele ct si bazele de date fac obiectul proceselor de copiere, de cele mai multe ori obtinnduse clone. n cazul n care fisierele si bazele de date includ elemente de regasire criptate, numai n cazul obtinerii algoritmilor de decriptare si a procedurilor de cautare se vor realiza totalitatea interactiunilor, obtinndu-se prin copiere, clone perfecte. n cazul proiectarii unui echipament exista costul CP al proiectului si costul Cr al realizarii unui produs. n cazul producerii a Np entitati, costul total CT este: CT = CP + Np (2.1)

Se observa ca nivelul costului total CT este proportional cu numarul clonelor. Pentru dezvoltarea unei aplicatii informatice, concretizata printr- un produs sofware si printr-o baza de date, sunt necesare costurile CS, respectiv CBD. Daca se realizeaza M copii pentru produsul software si R copii pentru baze de date, costul total al aplicatiei informatice CTAI este: CTAI = CS + C BD + M(C SS + C OS ) + R(C SBD + COBD ) (2.2) unde: CSS costul suportului de stocare a unei copii software; COS costul operatiei de copiere-stocare software;

CSBD costul suportului pentru stocare baze de date; COBD costul copierii bazei de date. n ipoteza n care COS = COBD = 0 si C SS = CSBD, rezulta: CTAI = CS + C BD + K(M + R)C SS (2.3)

unde K reprezinta numarul de unitati folosite pentru stocarea de software si baze de date. Si n cazul clonarii de software si baze de date costul total este proportional cu numarul clonelor. Costul unei copii este nesemnificativ. Ct timp clonarea produselor software este gestionata de compania care le-a dezvoltat, sunt create si ment inute premisele recuperarii cheltuielilor si obtinerii de profit. Clonarea produselor software si a bazelor de date se efectueaza pentru utilizarea directa de catre diferiti beneficiari, n scopul solutionarii problemelor specifice cu costuri nule. De asemenea, clonele sunt integrate n aplicatii informatice noi, reducnd semnificativ costurile. n timp au fost dezvoltate instrumente complexe care au ca intrare un produs software sau o baza de date, asupra carora sunt efectuate transformari, obtinndu-se la iesire constructii noi, dar echivalente, care din punct de vedere al functiilor pe care le realizeaza, sunt clone ale intrarilor. Astfel de transformari sunt nlocuirile unor cuvinte, interschimbul unor secvente, efectuarea de optimizari n zona subexpresiilor comune, eliminari ale secventelor neactive sau redundante. n cazul n care procesele de translatare vizeaza att componente, ct si interactiuni, structura clonei se departeaza de original, functiile cel mult mentinndu-se, fiind putin probabil ca n stadiul actual sa fie generate functii noi, exclusiv pe baza entitatilor folosite ca intrari. Companiile care dezvolta aplicatii informatice, ct si utilizatorii poseda numeroase mijloace pentru a asigura protectia la copiere neautorizata a produselor software si bazelor de date. Dezvoltarile de tehnici si metode destinate accesului neautorizat la produselor software si baze de date genereaza noi protectii. Acestea din urma impun noi tehnici si metode de acces neautorizat, procesul fiind ca un bulgare de zapada n rostogolire. Uneori costurile de mentinere a protectiei devin insuportabile si companiile care dezvolta software prefera sa ofere n sistem de acces liber unele dintre produse. Recuperarile de costuri provin din consultanta si din customizare. n contextul dezvoltarii de tehnici, metode si instrumente pentru asistarea proceselor de analiza, proiectare, codificare si testare software sau baze de date, sunt create premisele obtinerii de clone involuntare. Daca se

considera o problema complet si corect definita Pcc, folosind o metoda riguroasa de definire a specificatiilor, echipele A , Ae2,, Aek realizeaza e1 independent specificatiile a 1 1 , a 1 2 ,, a 1k , ntre care exista diferente masurabile cu un indicator universal f(a 1 i, a1 j). Elaborarea specificatiilor reprezinta primul pas n realizarea unei aplicatii informatice. Se alege:
1 h max = max i, j

{f (

1 i

, 1j

)}

(2.4)

Pentru definirea structurii pe module, pentru stabilirea claselor se folosesc instrumente de aceeasi generatie, obtinndu-se independent documentatia de design: a 2 1 , a 2 2 ,, a2 k . ntre rezultatele celor k echipe exista diferente, dintre care cea mai mare este:
2 hmax = max f i2 , 2 j i,j

{(

)} )}

(2.5)

Pentru faza de codificare se obtine un nivel maxim al diferentelor:


3 hmax = max f i3 , 3 j i, j

{(

(2.6)

unde a3 i si a 3 j sunt textele sursa obtinute de echipele Aei, respectiv Aej. Procesul de testare determina reveniri asupra rezultatelor precedente. Liniarizarea unei structuri repetitive conduce la crearea unui sir al diferentelor maxime: h1 max , h2max, , hxmax. n mod normal, daca tehnicile de analiza, design, programare, testare sunt corect utilizate, procesul trebuie sa fie convergent, iar sirul diferentelor maxime este strict descrescator cu:
x lim hmax = 0 xp

(2.7)

unde pm este numarul de reluari maxim acceptabil, care prin depasire face produsul ineficient. Daca exista doua stadii a ri, asj pentru f( ari, asj ) = 0, echipele Ai si Aj au realizat independent clone, numite clone involuntare.

3
3.1 Fisiere

ORTOGONALITATEA FISIERELOR

Fisierul reprezinta o secventa de octeti organizata ntr-o maniera specifica pe un suport de memorie extern n vederea utilizarii lor ulterioare ntr- un anumit scop. Sistemul de fisiere este o componenta a unui sistem de operare care asigura gestionarea informatiei memorate pe disc sub forma fisierelor. Functiile unui sistem de operare sunt: stocarea informatiei; regasirea informatiei stocate; asigurarea autorizata la informatie. Structura de directoare reprezinta o colectie de noduri care contine informatii cu privire la fisierele stocate pe disc. Fisierul constituie o zona de memorie contigua din punct de vedere logic n care este memorata informatia. Tipuri de fisiere: de date: fisiere numerice, de tip text, binare; de tip program sursa.

Diferenta ntre fisier si o structura de date din memoria interna consta n: fisierele stocheaza informatia ntr-un mod nevolatil (permanent); fisierele sunt obiect al operatiei de copiere de pe un suport de stocare pe altul. Structura unui fisier variaza n functie de scopul n care este utilizata informatia stocata, fiind stabilita fie de sistemul de operare, fie de utilizator prin intermediul programului creat de acesta. Atributele unui fisier: nume retine informatia de identificare a fisierului pe suportul extern de memorie; tip specifica modul de interpretare si utilizare a informatiei stocate; marime reflecta dimensiunea fisierului exprimata n numar de octeti ocupati pe disc; locatie specifica locul pe disc n care se regaseste fisierul; mod de organizare evidentiaza modalitatea n care sunt organizati octetii pe suportul extern de memorie; protectie (permisiuni de acces) contine drepturile utilizatorului privind efectuarea anumitor operatii asupra fisierului; data si timp specifica data si momentul de timp la care sunt efectuate diverse operatii asupra fisierului; informatii despre fisiere retinute n structura de directoare. Operatiile care au loc asupra fisierelor sunt: v creare; v scriere; v citire; v pozitionare n cadrul fisierului; v stergere; v trunchiere; v cautare pe disc.

Fisierele sunt de mai multe tipuri, acestea fiind prezentate, mpreuna cu extensiile uzuale, n tabelul urmator:

Tipuri de fisiere Tipul fisierului executabil Extensia uzuala exe, com, bin sau fara extensie Tabelul 3.1 Descriere executie a instructiunilor specificate n programul sursa fisier compilat, dar ne- linkeditat cod sursa n diferite limbaje de programare comenzi executate de interpretorul de comenzi date de tip text, documente formate diverse ale procesoarelor de text colectii de rutine pentru programatori fisiere ASCII sau binare ntr- un format destinat tiparirii sau vizualizarii grup de fisiere n forma compresata fisiere binare cu informatie de tip audio/video

obiect cod sursa batch

obj, o c, cc, java, pas, asm, a bat, sh

text procesor de text biblioteca tiparire/vizualizare

txt, doc wp, tex, rrf, doc lib, a, so, dll, mpeg, mov, rm arc, zip, tar

arhiva multimedia

arc, zip, tar mpeg, mov, rm

Accesul la datele memorate n fisiere se realizeaza prin urmatoarele metode: v acces secvential; v acces direct; v acces indexat.

3.2 Diversitatea datelor Se considera o colectivitate Ac formata din elementele a1 , a2 , , an, diferite. Se pune problema inserarii elementului an+1 n colectivitatea Ac, cu conditia ca acesta sa fie, de asemenea, diferit de toate elementele a1 , , an ale colectivitatii Ac. n cazul n care acest nou element nu este diferit de toate elementele colectivitatii Ac se pune problema calcularii gradului n care elementul an+1 este asemanator cu elementele deja existente n colectivitate. Obiectivele acestei lucrari sunt: v definirea conceptului de ortogonalitate a datelor; v construirea unor indicatori pentru evaluarea asemanarii; v prezentarea structurii software orientata pe evaluarea ortogonalitatii; v prezentarea de evaluari folosind o baza de texte.

3.3 Conceptul de ortogonalitate a elementelor Doua drepte sunt ortogonale daca unghiul format la intersectia acestora are cosinusul egal cu zero, cu alte cuvinte cele doua drepte sunt perpendiculare. Un ansamblu de drepte este ortogonal daca dreptele ce- l compun sunt perpendiculare doua cte doua . Doua plane sunt ortogonale daca unghiul format la intersectia lor are cosinusul egal cu valoarea zero, adica cele doua plane sunt perpendiculare. Un ansamblu format din mai multe plane este ortogonal daca planele ce- l formeaza sunt ortogonale doua cte doua. Doi vectori sunt ortogonali daca produsul scalar al acestora este nul. n continuare o data este reprezentata uzual ca un numar (125 sau 0 sau 400.72 sau +25.3e-4) sau un sir de caractere (masina sau 125 sau Cluj-Napoca-2000). Extinznd, rezulta ca datele D1 si D2 sunt ortogonale semantic, daca continutul informational al acestora, sensul lor, difera ntr-o maniera

categorica si semiotic, daca acestea au o formalizare matematica total diferita. Se considera vocabularul VT = {v1 ,v2 ,,vn }, unde v ,v2 ,,vn sunt 1 cuvinte din vocabular. Se construiesc frazele: Fr1 formata din cuvintele vk1 ,vk2 ,,vkp ; Fr2 formata din cuvintele vl1 ,vl2 ,, mlm f . Lungimea ca numar de cuvinte a acestor fraze este: Lg(F r1 ) = Lg(v k1 v k2 vkp) = p cuvinte Lg(F r2 ) = Lg(v l1 v l2 v lm ) = m f cuvinte Frazele Fr1 si Fr2 sunt ortogonale daca ele difera ca lungime precum si din punct de vedere al continutului, adica nu exista nici un cuvnt din fraza Fr1 care sa se regaseasca n fraza Fr2 si invers. Pentru colectivitatea A, elementele a1 , a2 , , an , diferite, se descriu printr-un numar de mc caracteristici specifice colectivitatii, C1 , C2 , , Cmc . Pentru doua elemente oarecare ai si aj apartinnd colectivitatii A se nregistreaza nivele ale caracteristicilor dupa cum urmeaza: ai = (ci1 , ci2 , , cimc ) aj = (cj1 , cj2 , , c jmc ) unde cik este nivelul caracteristicii Ck pentru elementul ai . Un element x este ortogonal pe colectivitatea A daca si numai daca <x, ai> = = 0 , oricare ar fi ai , element al colectivitatii. n spatiul Rn , pentru elementele x si y ale sale se defineste produsul scalar dintre cele doua elemente prin <x, y> = x1 *y1 +x2 *y2 ++xn *yn , daca x = ( x1 , x2, , xn ) si y = (y1 , y2 , yn ). Se defineste operatia T asa fel nct cik T c jk are valoarea zero daca pentru caracteristica Ck nu exista valori comune elementelor a si aj si i valoarea 1 n caz contrar. Se defineste pseudoprodusul scalar prin <<ai, aj >>. Elementul ai este ortogonal cu elementul aj daca <<ai, aj>> = 0, adica daca (ci1 T c j1 + ci2 T c j2 + + cimc T c jmc ) = 0.

n conditiile n care elementele grupului sunt descrise prin caracteristici vom considera aceasta relatie adevarata daca fiecare termen este egal cu zero: ci1 T c j1 = 0, ci2 T c j2 = 0, , cimc T c jmc = 0. Relatia cik T c jk = 0 , k apartinnd multimii {1, 2, , mc}, reprezinta faptul ca elementele ai si aj ale grupului sunt total diferite dupa caracteristica Ck . Se defineste indicatorul care evidentiaza ortogonalitatea dintre doua elemente ale unei colectivitati sau, mai flexibil, care evidentiaza diferentele existente ntre elemente. Indicatorul normat Ii, cuprins n intervalul [0, 1] are valorile: Ii = 0, daca elementele sunt ortogonale ( nu au nimic n comun). Ii = 1, elementele sunt identice ( nu difera prin nici o caracteristica). Daca valorile lui Ii tind catre 0 nseamna ca seturile de date tind catre ortogonalitate, iar daca valorile indicatorului normat Ii sunt apropiate de 1 nseamna ca seturile de date au foarte multe elemente identice. Acest indicator se defineste pentru masurarea gradului de ortogonalitate dintre doua seturi de date (texte) si, de asemenea, pentru ortogonalitatea unui numar oarecare de seturi de date (texte). Se urmareste maniera n care doua fraze , doua texte, doua programe, doua baze de date sunt ortogonale, adica masura n care ele difera ca forma de prezentare si continut. De exemplu, se considera mai multi autori care scriu despre un acelasi domeniu. Lucrarile lor vor fi 100% ortogonale daca textele au comune numai cuvintele de specialitate, celelalte cuvinte fiind foarte diferite ca frecvente de aparitie n texte si ca pozitie n propozitii. Este mai important ca lucrarile sa fie ortogonale si nu total diferite. Daca lucrarile sunt total diferite nseamna ca nu apartin aceluiasi domeniu. La compararea textelor T1 si T2 se calculeaza separat frecventele pentru cuvintele de specialitate si frecventele pentru celelalte cuvinte, tabelele 3.2 si 3.3, unde: r - numarul de cuvinte cheie ale domeniului; s - numarul de cuvinte nespecifice ale domeniului. f ij - frecventa de aparitie a cuvntului a i n textul Tj. gij - frecventa de aparitie a cuvntului nespecific i n textul Tj.

Frecvente de aparitie a cuvintelor cheie domeniului Tabelul 3.2 Cuvinte cheie a1 a2 . . . ar Frecvente de aparitie T1 T2 f11 f21 f12 f22 . . . . . . f1r f2r

Frecvente de aparitie a cuvintelor nespecifice domeniului Tabelul 3.3 Cuvinte cheie Frecvente de aparitie T1 T2 1 g11 g21 2 g12 g22 . . . . . . . . . s g1s g2s Indicatorul normat Ii se defineste diferentiat pentru cele doua categorii de cuvinte care alcatuiesc textele. Pentru cuvintele cheie ale domeniului , indicatorul I1 ia valoarea I1 = 0 daca frecventele pentru aceleasi cuvinte cheie din T1 si T2 sunt egale (f1i = f2i, () i = 1, 2, , r); ia valoarea:

I1 = 1

(| f
i =1

1i

f 2i |) (3.1)

r * max(| f 1i f 2i |) 2

Pentru cuvintele nespecifice domeniului , indicatorul I2 : ia valoarea I2 = 0 daca frecventele pentru un acelasi cuvnt cheie din T1 si T2 sunt egale (g1j = g2j, () j = 1, 2, , s); ia valoarea:

I 2 = 1

(| g
i =1

2 1j

g 2 j |)

r * max(| g1 j g 2 j |) 2

(3.2)

Pentru a scoate n evidenta masura n care cele doua texte sunt asemanatoare are loc o agregare a indicatorilor I si I2 , obtinndu-se I. 1 Astfel, Ia = =I1 * I2 , unde Ia ia valori ntre 0 si 1. De exemplu, se considera secventa de program SP1 definita prin: if a > b then c=a+b; if b > a then c=b-a; si secventa de program SP2 definita prin: for ( i = 0 ; i < a; i++) a--; for ( i = 0; i>b;b--) i++; pentru care se nregistreaza frecventele de aparitie a cuvintelor cheie din limbajul de programare C n tabelul 3.4 si frecventele de aparitie a cuvintelor utilizator n tabelul 3.5.

Frecvente de aparitie a cuvintelor cheie ale domeniului Tabelul 3.4 Cuvinte cheie if then for = + < > ; ++ ( ) -T1 2 2 0 2 1 1 0 2 2 0 0 0 0 Frecvente de aparitie T2 0 0 2 2 0 0 1 1 6 2 2 2 2

Frecvente de aparitie a cuvintelor nespecifice domeniului Tabelul 3.5 Cuvinte cheie a b c i Frecvente de aparitie T1 T2 4 2 4 2 2 0 0 4

Se calculeaza indicatorii I1 si I2 si nivelul agregat al indicatorului Ia. I1 = 1 [ |2-0|2 + |2-0|2 + |2-2|2 + |0-2|2 + |1-0|2 + |1-0|2 + |0-1|2 + |2-1|2 + |2-6|2 + |0-2|2 + |0-2|2 + |0-2|2 + |0-2|2 ] / [14 * 16] = 1 - ( 4 + 4 + 0 + 4 + + 1 + 1 + 1 + 1 + + 16 + 4 + 4 + 4 + 4 ) / 224 = 1 48 / 224 = 1 - 0,214 = 0,786. (3.3) I2 = 1- [ |4-2|2 + |4-2|2 + |2-0|2 + |0-4|2 ] / [4 * 16] = 1 - ( 4 + 4 + 4 + 16 ) / 64 = = 1 28 / 64 = 1 - 0,437 = 0,562. (3.4)

Indicatorul agregat Ia, are valoarea: Ia = I1 * I2 = 0,786 * 0,562 = 0,441. (3.5) rezulta ca gradul de ortogonalitate al celor doua texte este redus. Reutilizare de software presupune existenta de biblioteci de subprograme sau de clase si referirea de componente, fara ca acestea sa fie copiate sau modificate. Reutilizarea prin referire este un procedeu uzual n ingineria software, fara a fi clonare. n cazul n care reutilizarea se efectueaza prin macrogenerare apare conceptul de clonare acceptata, ntruct macrodefinitiile sunt constructii dedicate, acceptate din start ca fiind producatoare de secvente clonate. Exemplu: macrodefinitia cub x, y x=y*y*y

prin referirea: cub x, y genereaza secventa: x=y*y*y Customizarea este un procedeu uzual prin care se genereaza variante de sisteme software adaptate cerintelor particulare ale utilizatorilor, pornind de la un produs de baza. Programul initial se dezvolta n forma cea mai generala si este gestionat de un alt program care l personalizeaza prin procesul de customizare, maximiznd numarul functiilor de prelucrare, n raport cu datele furnizate la intrare. Rezultatul customizarii este un sistem de programe generat cu proceduri adaptate la cerintele utilizatorilor. Contine submultimi ale produsului software de baza.

3.4 Indicatori ai diferentelor masurate dintre proceduri Procedurile dintr-un program sunt asemanatoare din urmatoarele puncte de vedere: al problemei pe care o rezolva; al instrumentelor folosite; al functiilor pe care le realizeaza; al tehnicilor de proiectare ; al performantelor. Este preferabil sa se construiasca proceduri si biblioteci de proceduri n scopul reutilizarii acestora pentru a creste productivitatea programatorilor si pentru a reduce volumul de munca vie ncorporata n programele noi care se elaboreaza. n cazul n care pentru o aceeasi tipologie de prelucrari se scriu mai multe proceduri, costurile aplicatiei informatice cresc nejustificat. Pentru a controla continutul textelor sursa din produsele software elaborate si utilizate n vederea reducerii ponderii componentelor identice realizate accidental este necesar sa se evalueze permanent ortogonalitatea procedurilor existente n aplicatiile aflate n uz curent sau n curs de elaborare. Astfel, se impune definirea unui sistem de indicatori cu scopul de a evalua asemanarea existenta ntre proceduri. Se considera doua proceduri Pri si Prj. Gradul de asemanare ntre cele doua componente ale colectivitatii formata din produsele software elaborate, se determina ca o medie geometrica ntre indicatorii ce caracterizeaza asemanarea procedurilor n functie de criteriile considerate (dimensiune ca numar de instructiuni, frecventa de aparitie a caracterelor alfabetice, frecventele de aparitie a cuvintelor unui vocabular dat de catre utilizator, frecventele de aparitie a cuvintelor ce formeaza cele doua proceduri, frecventele de aparitie a diferitelor tipuri de date, complexitate secvente program). Primul indicator J1 caracterizeaza asemanarea procedurilor Pri si Prj din punctul de vedere al lungimii acestora si se calculeaza ca raport ntre lungimea procedurii Pri si lungimea procedurii Prj. J1 = Li , daca Li < L j Lj (3.6)

sau J1 = unde: Li lungimea in octeti a procedurii Pri; Lj lungimea in octeti a procedurii Prj; Aceasta se realizeaza pentru a determina un grad de asemanare relevant a carui valoare sa fie cuprinsa n intervalul [0, 1]. Al doilea indicator J2 are n vedere surprinderea asemanarii dintre cele doua proceduri Pri si Prj n functie de frecventele de aparitie a caracterelor alfabetice.
NTC

Lj Li

, daca L j < Li

(3.7)

J2 = unde: -

nca
i =1

NTC

(3.8)

NTC reprezinta numarul total de caractere alfabetice (mari si mici); ncai ia una din urmatoarele valori: 0, daca pentru caracterul i frecventele de aparitie n cele doua proceduri sunt diferite; 1, daca pentru caracterul i frecventele de aparitie n cele doua proceduri sunt identice.

Al treilea indicator J reflecta gradul de asemanare a celor doua 3 proceduri n functie de un vocabular furnizat de catre utilizator.
NCV

J3 = unde: -

ncv
i =1

NCV

(3.9)

NCV numarul de cuvinte al vocabularului pentru care frecventele de aparitie n cele doua proceduri nu sunt egale si nule pentru un cuvnt dat;

ncvi ia una din valorile: 0, daca frecventele pentru cuvntul i sunt diferite sau egale, dar nule; 1, daca frecventele pentru cuvntul i sunt identice si diferite de zero.

Urmatorul indicator, J4 , are n vedere criteriul de comparare a elementelor privind frecventele de aparitie a totalitatii cuvintelor ce compun cele doua proceduri.
NTCV

J4 = unde: -

ncvf
i =1

NTCV

(3.10)

NTCV numarul total de cuvinte al celor doua elemente, cuvinte care sunt distincte; ntcvi ia una din urmatoarele valori: 0, daca frecventele pentru cuvntul i sunt diferite sau cuvntul i nu se regaseste n cealalta procedura; 1, daca pentru cuvntul i frecventele sunt identice n cele doua proceduri.

Al cincilea indicator, J5 , pune n evidenta asemanarea a doua elemente n functie de structura lor.
J5 = NESC NMES

(3.11)

unde: NESC numarul de elemente structurale comune celor doua proceduri considerate, respectiv Pi si Pj; NMES numarul minim de elemente structurale a celor doua proceduri Pri si Prj.

Urmatorul indicator, J6 , determina gradul de asemanare a elementelor prin utilizarea une i matrice de precedenta. Acest grad de asemanare se foloseste pentru analiza gramaticala a elementelor. J6 = sau J6 = unde: NCIi numarul de cuvinte interschimbabile din procedura Pri; NCIj numarul de cuvinte interschimbabile din procedura Prj. NCI j NCIi , daca NCI j < NCI i (3.13) NCIi , daca NCI i < NCI j NCI j (3.12)

Aceasta se realizeaza pentru a determina un grad de asemanare relevant a carui valoare sa fie cuprinsa n intervalul [0, 1]. Ultimul indicator, J7 , are n vedere determinarea gradului de asemanare a celor doua elemente din punctul de vedere al complexitatii acestora. J7 = sau J7 = unde: cmplxi, cmplxj - complexitatile celor doua proceduri Pri si Prj. Gradul de asemanare a celor doua proceduri, J, reprezinta, de fapt, o sinteza a gradelor de asemanare calculate dupa cele sapte criterii amintite, realiznd o omogenizare a acestor indicatori. cmplx j cmplx i , daca cmplx j < cmplx i (3.16) cmplx i , daca cmplx i < cmplx j cmplx j (3.15)

J =7

J
i =1

(3.17)

n final, pentru un produs software se determina indicatorul agregat Jn care masoara gradul de asemanare a procedurilor ca medie geometrica ntre gradele de asemanare dintre toate componentele ce formeaza un produs software, componentele fiind luate doua cte doua.

Jn =
unde:

2 Cn

J
i =1

ki

ni i

(3.18)

Cn 2 numarul de combinatii posibile de proceduri luate doua cte doua; - Ji valori indicatori calculate pentru fiecare doua proceduri considerate; - ni frecventa de aparitie a valorii respectivului indicator; - ki numarul de valori dis tincte ale indicatorului Ji. De exemplu, se considera procedurile: Pr1 - destinata calculului sumei patratelor elementelor unui masiv unidimensional al carui text sursa este: int sume(int x[], int n) { int S; S=0; for(int j=0;j<n;j++) S=S+x[j]*x[j]; return S; } Pr2 - destinata calculului produsului scalar a elementelor a doua masive unidimensionale al carui text sursa este: int prod_sc(int x[],int y[],int n) { int S; S=0; for(int j=0;j<n;j++) S=S+x[j]*y[j]; return S; }

Pr3 alegerea minimului dintre trei elemente ntregi al carui text sursa este: int min(int a,int b,int c) { int min; min=a; if(min>b) min=b; if(min>c) min=c; return min; } Pr4 alegerea maximului dintre trei elemente ntregi al carui text sursa este: int max(int a,int b,int c) { int max; max=a; if(max<b) max=b; if(max<c) max=c; return max; } Textele sursa ale celor patru proceduri conduc la obtinerea frecventelor fij si gij din tabelele 3.6 si 3.7.

Frecventele de aparitie a cuvintelor cheie n procedurile Pr1, Pr2, Pr3 si Pr4 Tabelul 3.6 Cuvinte cheie int } } ( ) = + [ ] ; ++ return -for < > if , * Pr1 5 1 1 2 2 3 1 0 3 3 6 1 1 0 1 0 0 0 1 1 Frecvente de aparitie Pr2 Pr3 6 5 1 1 1 1 2 3 2 3 3 3 1 0 0 0 4 0 4 0 6 5 1 0 1 1 0 0 1 0 0 0 0 2 0 2 2 2 1 0 Pr4 5 1 1 3 3 3 0 0 0 0 5 0 1 0 0 2 0 2 2 0

Frecventele de aparitie a cuvintelor nespecifice din procedurile Pr1, Pr2, Pr3 si Pr4. Tabelul 3.7 Cuvinte nespecifice Frecvente de aparitie Pr1 Pr2 Pr3 Pr4 sume 1 0 0 0 x 3 2 0 0 n 2 2 0 0 S 5 5 0 0 0 2 2 0 0 prod_sc 0 1 0 0 y 0 2 0 0 min 0 0 8 0 a 0 0 2 2 b 0 0 3 3 c 0 0 3 3 max 0 0 0 8 Se studiaza ortogonalitatea - ntre Pr1 si Pr2 si se obtine: Ia = I1 * I2 = 0.8 * 0.7916 = 0.6(3) ntre Pr3 si Pr4 si se obtine: Ia = 0.8(3) * 0.9 = 0.75 (3.20) (3.19)

Din aceste doua comparatii rezulta ca gradele de ortogonalitate dintre Pr1 si Pr2, respectiv dintre Pr3 si Pr4 sunt foarte scazute. Se stud iaza ortogonalitatea - ntre Pr1 si Pr3 si se obtine: Ia = I1 * I2 = 0.68(3) * 0.6916 = 0.4769 ntre Pr2 si Pr4 si se obtine: I = 0.75 * 0.6875 = 0.515 (3.22) (3.21)

Din aceste doua comparatii rezulta ca gradele de ortogonalitate dintre Pr1 si Pr3, respectiv dintre Pr2 si Pr4 sunt ridicate. 3.5 Structura software pentru analiza calitativa a noilor elemente incluse n baze de date Aplicatiile informatice complexe includ module program intercorelate si fisiere independente sau interdependente. n cazul folosirii unor SGBD-uri aplicatiile informatice includ texte sursa de baza, structuri generate si date care fac obiectul prelucrarilor precum si date necesare accelerarii proceselor de selectie si de regasire. Este important sa se gestioneze redundanta n bazele de date mai ales atunci cnd se impune ca textele stocate sa fie diferite ntre ele. De exemplu, se considera multimea ofertelor pentru obtinerea de fonduri de finantare si se impune ca ntre oferte sa existe diferente semnificative, n sensul nedepunerii aceleiasi oferte pentru doua licitatii sau n sensul depunerii de oferte asemanatoare n cadrul aceluiasi program. De asemenea, tezele de doctorat, lucrarile de licenta, articolele si cartile prezentate de autori pentru concursuri trebuie sa fie diferite unele de celelalte. n acest sens, este necesara construirea unui produs software care masoara gradul de ortogonalitate n cadrul unui fisier sau a unei baze de date precum si dintre fisiere, respectiv, baze de date. Se considera structura data n figura 3.1.
ncarcarea bazei de date Lungime elemente Frecvente caractere Frecvente vocabular Concluzii Analiza calitativa a elementelor noi Frecvente cuvinte Structura elemente Matrice precedenta Complexitate

Figura 3.1 Structura software pentru indicatori de ortogonalitate

Produsul software destinat implementarii indicatorilor este scris n limbajul C++ si se caracterizeaza prin: v vocabular definit de utilizator; v mecanism de cautare combinatii de fisiere; v evaluare frecvente; v calcul indicatori simpli si indicatori agregati; v afisare rezultate; v stocari rezultate n vederea constituirii seriilor de date pentru analize statistice. Modul n care este proiectat permite includerea de noi indicatori si implementarea de noi mecanisme de analiza comparata a datelor. Produsul software a fost testat pentru evaluarea ortogonalitatii unui numar de 4 perechi de fisiere. n etapele urmatoare vor fi implementati indicatori destinati evaluarii gradului de ortogonalitate pentru n - tuple de fisiere.

CLONAREA SOFTWARE

4.1 Evidentierea clonarii informatice Se considera o multime de programe, formate din componentele P1 , P2 , ..., Pn . Fiecare program Pi, i = 1, 2, ..., n, este analizat si se efectueaza diferite masuratori, folosind modelele Mc1, Mc2, ..., Mck de calcul a unor indicatori. Problemele care apar sunt legate de: v numarul n al programelor, n sensul colectarii unui numar foarte mare de programe, dintre cele elaborate; acest numar este dat fie de programele nscrise n registrul programelor lansate pe piata de software, fie de capacitatea de colectare a unui organism sau biblioteci specializate; v extragerea dintr-o multime foarte mare de modele de indicatori asociati caracteristicilor de calitate, a unui numar ck de modele, considerate reprezentative, dar si suficiente pentru a obtine un indicator agregat care sa marcheze caracterul biunivoc al legaturii dintre multimea programelor si multimea valorilor calculate cu acest indicator agregat;

v efortul necesar evidentierii situatiei n care pentru programele diferite Pi si Pj se obtin valori identice ale indicatorului agregat, se conchide cu o probabilitate de 0,99 ca unul din programele Pi, Pj este clona celuilalt. n realitate, nu sunt evaluate dect programele pe care proprietarii doresc sa le protejeze sau pentru care se fac masuratori n vederea compararii cu alte produse similare existente pe piata, pentru a le marca superioritatea. Desi, initial se defineste o multime de programe P1 , P2 , ..., Pn , n realitate aceasta este numai un esantion, probabil, reprezentativ al multimii programelor aflate n uz curent. La multimea programelor se adauga noi componente Pn+1 , Pn+2 , ..., Pn+s. Din aceasta multime sunt retrase programe uzate moral. Structura multimii are o dinamica proprie, iar numarul ei de componente este o functie care depinde de timp, n = g(t). Mai mult, chiar componentele Pi ale multimii sufera n timp transformari, obtinndu-se versiuni, precum Pi(1), Pi(2) , ..., Pi(r). Pentru simplificarea ipotezelor de lucru, se considera un moment de timp t0 , pentru care componentele multimii programelor sunt P1 (0) , P2(0) , ..., Pn0(0), iar n0 = g(t0 ). Se vor utiliza notatiile initiale n0 -> n, Pi(0) -> Pi, t0 -> t1 pentru a simplifica dezvoltarile ulterioare. Trecerea de la momentul t la 0 momentul t1 , devine numai o problema de utilizare a multor indici la nivelul variabilelor din modele. De asemenea, pe masura aparitiei unei noi versiuni, Pi(k), n multimea programelor noua versiune o nlocuieste pe cea veche, Pi(k-1). Multimea initiala a programelor este formata din componente diferite, realizate independent de echipele de dezvoltatori de software. Problema certificarii originalitatii programelor este definita numai pentru noile programe care se includ n multime. n mod practic, problema se pune n acelasi fel atunci cnd exista deja constituita o baza de programe si se adauga o noua componenta, Px . Este necesar mai nti sa se verifice daca n baza de programe nu exista deja respectiva componenta. n cazul n care n baza de programe se dovedeste ca programul Px deja exista, se deruleaza procesul de certificare a clonei. n cazul n care programul de adaugat, P, nu este regasit n baza de programe, se deruleaza procesul de certificare a originalitatii n raport cu ceea ce exista n baza de programe. Dupa aceea se procedeaza la adaugarea componentei n baza de programe. Certificarea clonarii se realizeaza prin compararea programului Px cu programele P1 , P2 , ..., Pn din baza de programe, bucata cu bucata.

De fiecare data sunt efectuate evaluari care au rolul de a identifica clone si de a ntrerupe procesul de analiza, respectiv, de a determina neincluderea programului Px n baza de programe. n continuare sunt prezentate tehnici de clonare a programelor nsotite de exemplificari. Problema clonarii software se s olutioneaza fie manual, fie folosind instrumente de automatizare. Se considera ca programele sunt stocate sub forma de fisiere sursa. Tehnicile de clonare a programelor au n vedere copierea propriuzisa a acestora de pe un suport de stocare pe altul, conversia datelor memorate dintr-un format n altul, translatarea programelor din punctul de vedere al limbajelor utilizate n realizarea acestora, transformari pe textul sursa al programelor, restructurarea codului sursa n vederea optimizarii acestuia, schimbarea structurilor de date utilizate precum si aducerea la o forma comuna a subprogramelor de tip functie si procedura. 4.2. Copierea de fisiere Se considera fisierul Fs cu o extensie data, stocat pe un suport. Copierea fisierului pe acelasi suport X se realizeaza sub un alt nume, Gf, avnd aceeasi extensie, figura 4.1. Fs Copiere X Gf

Figura 4.1 Copierea fisierului pe acelasi suport n cazul n care fisierul Fs aflat pe suportul X este copiat pe suportul Y, fie i se mentine numele, fie i se atribuie un nou nume, Gf, figura 4.2. Y

Fs Fs X Copiere Gf

Figura 4.2 Copierea fisierului pe un alt suport

Extensiile fisierelor ramn neschimbate. Sistemul de operare MS-DOS permite copierea fisierelor prin instructiunea copy definita astfel: copy [/a | /b] sursa [/a | /b] [[/a | /b] + sursa [/a | /b] [+ ...]] [/v] [/n] [/y | /-y] [/z] [/a | /b] [destinatie [/a | /b]] unde parametrii au semnificatia urmatoare: v sursa specifica locatia si numele unuia sau mai multor fisiere de unde se copiaza; locatia este un disc, un director, un fisier sau o combinatie de acestea; v destinatie specifica locatia si numele unuia sau mai multor fisiere unde se copiaza; locatia este un disc, un director, un fisier sau o combinatie de acestea; v /a indica un fisier text ASCII; v /b indica un fisier binar; v /v - verifica daca noile fisiere sunt scrise corect; v /n se foloseste un nume scurt de fisier cnd copierea are loc pentru un fisier cu un nume mai mare de opt caractere sau extensia e mai mare de trei caractere; v /-y se cere confirmarea suprascrierii unui fisier; v /z se copiaza fisiere din retea n mod restartabil, daca n timpul copierii se pierde conexiunea. Sistemul de operare Windows efectueaza copierea de fisiere prin urmatoarele metode: a) tragere si plasare (drag-and-drop) sunt efectuate urmatoarele operatii: se selecteaza fisierul care se copiaza; se tine apasat butonul stnga al mouse-ului; se plaseaza fisierul deasupra directorului destinatie; se elibereaza butonul stnga al mouse- ului. b) copiere si lipire sunt parcurse urmatoarele operatii: se selecteaza fisierul care se copiaza; se copiaza fisierul n Clipboard prin selectare optiune Copy din meniul de context, meniul Edit sau bara de instrumente; se selecteaza destinatia unde se copiaza fisierul; se copiaza propriu- zis fisierul prin selectare optiune Paste din meniul de context, meniul Edit sau bara de instrumente.

c) "trimitere la disc flexibil" - daca se copiaza fisiere pe dischete, atunci din meniul de context se alege optiunea Send To 3 Floppy (A); trimiterea este generalizabila. Fisierele se copiaza fie unul cte unul, caz n care sunt repetate operatiile de mai sus pentru fiecare, fie toate o data, acestea selectndu-se cu ajutorul mouse-ului sau a tastelor de directare, pe de o parte, si a tastelor CTRL sau SHIFT, pe de alta parte. De exemplu, daca fisierul As este copiat, dupa efectuarea operatiilor descrise anterior, se obtine fisierul Bs. Copierea se realizeaza: pe acelasi suport; pe alt suport; n acelasi director; n alt director. Copierea fisierelor reprezinta unul din cazurile de clonare perfecta. tiparire fisiere presupune realizarea imprimarii continutului fisierelor text cu sau fara format; stergere fisiere - operatie prin care se realizeaza eliminarea de pe suportul magnetic extern a continutului si a datelor de descriere. Problema gestionarii documentelor sub aspectul denumirii, versiunii, lungimii, datei crearii si/sau modificarii de fisiere constituie un domeniu distinct deosebit de important, abordat de cercetarile n birotica moderna. Exista instrumente care permit clonarea dischetelor, a discurilor optice si a hard-disk- urilor. Pe lnga faptul ca se copiaza fisierele si directoarele de pe o unitate de stocare pe alta, avnd acelasi continut, clona obtinuta are aceeasi structura ca si originalul.

4.3 Conversia de fisiere Fisierul F s are o extensie x, ceea ce nseamna ca n procesul de creare au fost respectate o serie de reguli. Extensiile uzuale sunt: CPP fisierul contine un text sursa construit dupa cerintele limbajului C++; PAS fisierul contine un text sursa scris n conformitate cu cerintele limbajului Pascal; TPU sunt stocate unit-uri pentru programele scrise n limbajul Pascal, fiind construite conform sintaxei limbajului Pascal;

ASM contine secvente de instructiuni ale limbajului de asamblare care sunt reunite sub forma de fisier sursa; OBJ fisierul contine module obiect rezultate n procesul de compilare sau asamblare; EXE contine cod executabil obtinut n urma stabilirii de legaturi ntre modulele obiect continute n fisierele cu extensia OBJ; DAT sunt stocate date care sunt memorate direct n format binar, fara efectuare de conversii n diverse formate si coduri (ASCII, UNICODE); DOC fisiere de tip document rezultate din lucrul cu un procesor de texte; TXT contine date memorate n format ASCII, scrierea datelor pe disc efectundu-se cu conversie; XLS fisiere de tip foaie da calcul tabelar rezultate din lucrul cu o aplicatie de calcul tabelar; ZIP contine fisiere de tipul celor enumerate mai sus asupra carora s-a aplicat un algoritm de compresie de date; HTML fisiere construite conform sintaxei limbajului HTML a caror continut este vizualizat cu ajutorul unui browser web; BMP contine date ce sunt vizualizate sub forma unei imagini; JPEG fisiere care contin date de tip imagine asupra carora se aplica un algoritm de compresie; AVI fisiere care contin date de tip multimedia: imagini, video, sunet; Conversia este procesul prin care un fisier Fs de intrare, avnd o extensie data , este transformat, obtinndu-se la iesire un fisier Fs avnd o alta extensie , figura 4.3.

Fs.

Conversie

Fs.

Figura 4.3 Conversia fisierului de la tipul la tipul Trebuie sa existe si operatia de conversie inversa care executa transformarea de la extensia la extensia , figura 4.4.

Fs.

Conversie directa

Fs.

Conversie inversa

Fs.

Figura 4.4 Conversia directa si conversia inversa a fisierelor Compilarea programelor scrise n limbajele evaluate C++, COBOL, PASCAL, FORTRAN sunt compilate si sunt construite modulele obiect, figura 4.5.

Fisiere sursa

Compilare

Modul obiect

Figura 4.5 Compilarea fisierelor cu extensia CPP, PAS Asamblarea programelor cu extensia ASM determina obtinerea, de asemenea, a modulelor obiect, figura 4.6.

Program scris n limbaj de asamblare

Asamblor

Modul obiect

Figura 4.6 Obtinerea modulelor obiect prin asamblare Operatia inversa compilarii este decompilarea. Transformarea inversa a asamblarii este dezasamblarea modulelor obiect. Uzual se construiesc programe utilitare pentru conversie, preponderent pentru conversia fisierelor grafice.

4.4 Translatarea fisierelor sursa Translatarea este un proces prin care un program scris ntr-un limbaj Lli este transformat ntr-un program care realizeaza aceleasi functii pe care le are programul initial, scris n limbajul Llj. Translatoarele sunt programe care asigura prin generalitatea lor obtinerea de structuri de programe. Un translator opereaza transformari la nivel de procedura sau functie, dar si la nivel de modul si chiar la nivel de sistem de programe. De exemplu, constructiei var ++; din limbajul C++ i va corespunde n programe Pascal urmatoarea constructie: var:= var + 1; Scrierea n corespondenta a cuvintelor cheie permite realizarea de definiri de operanzi echivalenti n programele C++, pornind de la programele Pascal. Exemplu: int float struct switch * char Descrierii: struct nume { tip1 nume1 ; tip2 nume2 ; ... tipn numen ; }; integer real record case string

din programe C++, i va corespunde constructia n limbajul Pascal: nume = record nume1 : tip1 ; nume2 : tip2 ; ... numen : tipn ; end; Implementarea structurilor alternative multiple: switch (expresie) { case val1: { ... break; } case val2: { ... break;} ... default : { ... break;} } din programele C++ i corespunde descrierea urmatoare n limbajul Pascal: case expresie of begin val1: begin ... end; val2: begin ... end; ... valn: begin ... end; end; Programele translatoare au capacitatea de a dezvo lta transformari la nivel de linie sursa sau instructiune, ct si la nivel de secventa pentru a oferi solutii complete, proprii limbajului destinatie. Blocurile delimitate n programele Pascal de begin si end se delimiteaza n programele C++ prin { si }.

4.5 Transformari pe text sursa Se construiesc programe care opereaza pe text sursa, producnd modificari ce determina crearea de diferente ntre textul sursa initial si cel obtinut ulterior. nlocuirea denumirilor de variabile si etichete presupune: traversarea textului sursa si crearea vocabularului de cuvinte generate de programator; se genereaza siruri de caractere cu rol de identificator variabile sau etichete; se pun n corespondenta sirurile generate cu cuvintele vocabularului creat de programator; se nlocuiesc sirurile generate cu sirurile corespondente din textul sursa. Pentru exemplificare, se considera secventa: vcub = l * l * l; vpiramida = (B * b * h) / 3; vsfera =( 3.14159 * 4 * R * R * R) / 3; vcilindru = 3.14159 * R * R * G; vcon = (3.14159 * R * G * G) / 3 se genereaza vocabularul format din cuvinte utilizator: vcub, l, vpir, B, b, h, vsfera, R, vcil, G, vcon.

Vocabularul este pus n corespondenta cu sirul generat: sir1 , sir2 , sir3 , sir4 , sir5 , sir6 , sir7 , sir8 , sir9 , sir10 , sir11 . Se pun n corespondenta: vcub sir1 l sir2 vpiramida sir3 B sir4 b sir5 h sir6 vsfera sir7 R sir8 vcilindru sir9 G sir10 vcon sir11 Prin nlocuire se obtine secventa: sir1 = sir2 * sir2 * sir2 ; sir3 = (sir4 * sir5 * sir6 ) / 3; sir7 =( 3.14159 * 4 * sir8 * sir8 * sir8 ) / 3; sir9 = 3.14159 * sir8 * sir8 * sir10 ; sir11 = (3.14159 * sir8 * sir10 * sir10 ) / 3

Optimizarea automata a programelor presupune efectuarea de operatii pe texte sursa, precum: eliminarea subexpresiilor comune; eliminarea invariantilor; eliminarea codului mort; simplificarea prin calcul simbolic; concatenarea de structuri repetitive. Un program care optimizeaza programe, opernd pe text sursa transforma secventa: ... s1 = 0; for ( i = 0; i < n; i ++) s1 + = x [i]; s2 = 0; for ( i = 0; i < n; i ++) s2 + = x [i] * x [i]; s3 = 0; for ( i = 0; i < n; i ++) s4 = 0; for ( i = 0; i < n; i++) { c = 0; s4 + = x [i] * x [ i] * x [i]; } l = (a * a + b * b + c * c) * ( a * a + b * b + c * c - 1) * (a * a + b * b); g = (a * a + b * b + c * c) / (a * a + b * b + c * c) 1;

devenind, dupa optimizare: s1 = s2 = s3 = s4 = 0; for (i = 0; i < n; i ++) { s1 + = x [i]; s2 + = x [i] * x [i]; s3 + = x [i] * x [i] * x[i]; s4 + = x [i] * x [i] * x [i] * x [i]; } c = 0; alfa = c * c; aux = aa + bb + alfa; l = aux * (aux - 1) * (aux alfa) g = 0;

Programele care genereaza secvente echivalente au menirea de a nlocui constructii de forma: var = var + 1; cu var ++; sau if (expresie1 ) var = expresie2 ; else var = expresie3 ; cu (expresie1 ) ? expresie2 : expresie3 ;

sau i = 0; s1 = 0; s2 = 0; s3 = 0; 10: if ( i >= n) goto 20; s1 = s1 + x [i]; s2 = s2 + x [i] * x [i]; s3 = s3 + x [i] * x [i] * x [i]; i = i + 1; goto 10; 20: s4 = s1 + s2 + s3; n secventa: s1 = s2 = s3 = 0; for ( i = 0; i < n; i ++) { s1 + = x [i]; s2 + = x [i] * x [i]; s3 + = x [i] * x [i] * x [i]; } s4 = s1 + s2 + s3;

Secventele echivalente se construiesc si prin interschimbul de linii sursa, daca instructiunile sunt independente unele de celelalte. Secventa: s = a + b + c; if ( x > y) z = x * y; else z = x y; devine: if ( x < = y) z = x - y; else z = x * y; s = a + b + c;

Schimbarile se produc n cadrul unei unitati, fie ca e vorba de program principal, fie ca este o functie sau o procedura. Inserarea de instructiuni sau de secvente cu caracter neutru au menirea de a transforma un program initial. Secventa: e = a + b; g = a b; h = a * b; prin introducerea unor instructiuni distincte cu efect ce va fi anulat ulterior, se obtine o noua secventa: e = ( a - 1) * ( b -1); g = ( a + 1) * ( b +1); h = ( a+b) * ( a b); e = a + b; g = a b; h = a * b; Daca instructiunile se insereaza, secventa initiala devine: e = ( a - 1) * ( b 1); e = a + b; g = ( a + 1) * ( b + 1); g = a b; h = ( a + b) * ( a b); h = a * b; Negarea expresiei conditionale interschimba instructiuni din structurile alternative. Secventa: if ( a) { e1 = a + b; e2 = a b; e3 = a * b; } else { e1 = b / ( a +1); e2 = b; e3 = a; } secventele de

devine: if (!( a)) { e1 = b / ( a+1); e2 = b; e3 = a; } else { e1 = a + b; e2 = a - b; e3 = a * b; }

Controlul efectului de ondularitate. Toate modificarile induse de procesele de clonare genereaza efecte de ondulanta. n toate situatiile clonarea trebuie sa gestioneze ondulanta si sa asigure stabilitatea prelucrarilor, cel putin la nivelul programului initial. n cazul n care unui program P i se asociaza proceduri ale altui program RP rezulta un produs combinat, notat n continuare Sc. Produsul Sc este rezultatul procesului de concatenare directa, cnd programele R si P P sunt ortogonale din punct de vedere a definirilor si referirilor, figura 4.7. a, b, c x, y, z a, b, c

Figura 4.7 Concatenare programe ortogonale Cnd ortogonalitatea nu este totala si apar interferente se impune construirea de secvente n care apar variabile intermediare care asigura conditia de ortogonalitate. Cnd se cloneaza software apar cazuri frecvente n care la programul initial sunt adaugate secvente sau functii care efectueaza prelucrari de

siguranta, editari de rezultate, salvari de fisiere, noi regrupari de date, noi sortari sau se obtin noi rapoarte. n sistemul de programe din figura 4.8:

CD

P1

Fi1

P2

S1 S2

Figura 4.8 Sistem de programe n cascada Datele de intrare sunt preluate de pe un CD si prelucrate de programele P1 si P2 . Se obtin situatiile finale Sf1 si Sf2 cu folosirea fisierului intermediar Fi1 . Prin clonarea sistemului de programe n cascada la care se adauga programelor P1 si P2 noi proceduri F1 ( ), F2 ( ), desemnnd P1 si, respectiv, P2 se va utiliza un nou fisier Fi2 si se obtin noi rapoarte prin adaugarea programului P3 care realizeaza o functie de prelucrare comuna, figura 4.9.

P1 P1

Fi1

P2 P2

S1 S2

CD

F1 ( ) Fi2

F2 ( ) S3

Figura 4.9 Sistem de programe clonat cu adaugare de proceduri Includerea unui program copiat ntr-un sistem de programe este un mod uzual de ascundere a clonelor.

Se considera programul P clonat prin copiere mecanica, mpreuna cu fisierele Fs1 si Fs2 atasate, figura 4.10:

Fs1

Fs2

Figura 4.10 Program cu date de intrare/iesire pe disc Sistemul de programe SP ncorporeaza clona P prin manipularea fisierelor Fs1 si Fs2 , figura 4.11: Sistemul S

Fs1

Fs2

Figura 4.11 Sistem de programe cu clona ncorporata

4.6 Restructurarea programelor Daca programul este dat sub forma de program principal, se identifica parti apelabile, produsul transformat fiind un program apelat si mai multe proceduri n cazul n care transformarea vizeaza contopirea modulelor ntr- un program fara apeluri, se produce integrarea de secvente ntr- un tot unitar, cu gestionarea parametrilor reali.

Programul: citeste a, b, c x = minim (a, b, c) y = maxim (a, b, c) z = minim (a, b, a) w = maxim (b, c, c) e = x + y +z + w devine: int minim(int a, int b, int c) { min = a; if (min > b) min = b; if (min > c) min = c; return min; } int maxim(int a, int b, int c) { max = a; if (max < b) max = b; if (max < c) max = c; return max; } min = a; if (min > b) min = b; if (min > c) min = c; x = min; max = a; if (max < b) max = b; if (max > c) max = c; y = max; min = a; if (min > b) min = b; if (min > a) min = c; z = min;

max = b; if (max > a) max = b; if (max > c) max = c; w = max; e = x + y + z + w;

Separarea secventelor n proceduri distincte fie este rezultatul analizei repetabilitatii se secvente, fie se efectueaza mecanic. Reunirea definirilor de operanzi consta n a concatena liste de variabile avnd acelasi tip. Secventa: tip1 v 1 , v2 , ..., v n ; tip2 u1 , u2 , ..., um ; tip1 w1 , w2 , ..., wk; tip2 y1 , y2 , ..., yr; devine dupa concatenari: tip1 v 1 , v2 , ..., v n , w 1 , w 2 , ..., w k; tip2 u1 , u2 , ..., um , y1 , y2 , ..., yr; Interschimbul de operanzi are la baza comutativitatea operatorilor. Expresia: e = a * (b + c + d) devine: e = (d + c + b) * a sau e = (c + b + d) * a

Interschimbul elementelor din lista omogena de definire sau din liste de parametri formal, respectiv, liste de parametri reali determina aparitia de modificari n texte sursa, fara influente asupra semnificatiei secventelor. tip v1 , v 2 , v3 , ..., v n ; se nlocuieste prin: tip vn , v n-1 , ..., v 2 , v 1 ; Sau, n cazul definirii unei functii: tip nume (tip1 v 1 , tip2 v2 , ..., tipn vn ) este nlocuita prin: tip nume (tipn v n , tipn-1 vn-1 , ..., tip2 v 2 , tip1 v1 ) si, n mod corespunzator, apelul: nume (x1 , x2 , ..., x n ) este nlocuit cu apelul: nume (xn , xn-1 , ..., x 2 , x 1 ) Reunirea de proceduri presupune ca ntr- un program n care se apeleaza procedurile Pr1, Pr2, ..., P rn, avnd listele de parametri Lp1 , Lp2 , ..., Lpn se modifica n sensul apelarii unei singure proceduri Pr avnd o lista de parametri Lp = Lp1 Lp2 Lp3 ... Lpn L0 , unde L0 este o lista aditionala a variabilelor de stare si a celor de solutie. Se considera programul Ap care apeleaza procedurile: int suma(int x[ ], int n) { int s = 0, i; for (i = 0; i < n; i ++) s += x [i]; return s; }

int prod (int x [ ], int y [ ], int n) { int p = 0; for (i = 0; i < n; i ++) p += x [i] * y [i]; return p; }

int minim (int x [ ], int n) { int min, i; min = x [0]; for ( i = 1; i < n; i++)) if (min > x [i]) min = x [i]; return min; }

int max ( int x [ ], int n) { int max, i; max = x [0]; for ( i = 1; i < n; i ++) if ( max < x [i]) max = x [i]; return max; } Prin clonare cu reunire de proceduri se ajunge la constructia: int calcul ( int x [ ], int y [ ], int n, int k) { int s, p, max, min, i; if ( k == 0) { s = 0; for ( i = 0; i < n; i ++) {

s += x [i]; return s; } } else if (k == 1) { p = 0; for ( i = 0; i < n; i ++) { p += x [i] * y [i]; return p; } } else if (k == 2) { min = x [0]; for ( i = 1; i < n; i ++) { if (min > x [i]) min = x [i]; return min; } } else { max = x [0]; for ( i = 1; i < n; i++) { if ( max < n) max = x [i]; return max; } } }

n cazul n care cele patru proceduri se afla n programul principal numai n secvente de forma: a = suma ( x, n); b = prod ( x, y, n); c = minim (x , n ); d = maxim ( x, n); r = suma ( x, n); q = prod ( x, y, n); t = minim (x , n ); u = maxim ( x, n); alfa = suma ( x, n); beta = prod ( x, y, n); gama = minim (x , n ); delta = maxim ( x, n);

cele patru se concateneaza si dupa optimizare rezulta: int * calcul ( int x [ ], int y [ ], int n) { int s [4], i; s [0] = s [1] = 0; s [2] = s [3] = x [0]; for ( i = 0; i < n; i ++) { s [0] += x [i]; s [1] += x [i] * y [i]; if ( s [2] > x [i]) s [2] = x [i]; if ( s [3] < x [i]) s [3] = x [i]; } return s; }

Pentru aceste modalitati se construiesc instrumente care efectueaza mai nti o analiza pe matrice de precedenta dupa care, n mod automat, genereaza secvente n trepte obtinndu-se cresterea gradului de ortogonalitate a fisierelor de texte sursa. Daca se opereaza nlocuiri ale numelor de functii si ale numelor de variabile, deja efectele induc un grad de diferentiere majorat ale textului sursa rezultat fata de textul sursa initial. De exemplu, functia: float calcul( int a, float b) { float d; d = a + b; return d; } Dupa interschimburi n liste si n expresii, se obtine constructia: float calcul( float b, int a) { float d; d = b + a; return d; } Daca se opereaza cu nlocuiri de nume: calcul -> suma b -> x a -> y d -> z atunci noua constructie va fi: float suma( float x, int y) { float z; z = x + y; return z; }

4.7 Schimbarea structurilor de date utilizate Prin schimbarea structurilor de date utilizate se urmareste aducerea la o forma comuna a programelor, precum si cresterea gradului de modularitate a acestora. Schimbarea structurilor de date utilizate ntr- un program are n vederea urmatoarele aspecte: - utilizare articole n loc de variabile elementare; Secventa: ... int nr_mat; char nume[20], prenume[30]; float medie; ... este transformata n: ... struct student { int nr_mat; char nume[20]; char prenume[30]; float medie; } - utilizare masive bidimensionale; De exemplu, denumirile de discipline sunt memorate n astfel de structuri de date: ... char disciplina1[20], disciplina2[20], disciplina3[20]; ... obtinndu-se urmatoarea secventa: ... char discipline[20][20]; ...

n masivul bidimensional anterior fiecare disciplina este memorata pe o linie a matricei. - folosire de variabile de tip pointer; De exemplu, secventa: ... student stud1; ... este nlocuita de: ... student * stud1; ... - definire de clase de obiecte. Prezinta avantajul de a reuni n cadrul aceleiasi structuri att starea unui obiect, ct si comportamentul acestuia. Astfel, pentru entitatea student avem secventa: ... int nr_mat, note[10]; char nume[20], prenume[30]; float medie; float calcul_medie ( int note[ ]) { int i, s; s = 0; for ( i = 0; i < 10; i ++) s = s + note [i]; return s / 10; } ... medie = calcul_medie (note);

care, transformata n clasa de obiecte, devine: ... class student { int nr_mat, note[10]; char nume[20], prenume[30]; float medie; void calcul_medie (int note[ ]); ... }; void student:: calcul_medie ( int note[ ]) { int i, s; s = 0; for ( i = 0; i < 10; i ++) s = s + note [i]; medie = s /10; } ...

4.8 Omogenizarea tipurilor de functii Are n vedere aducerea la o forma comuna a subprogramelor de tip functie prin efectuarea urmatoarelor operatii: - nlocuire void cu int prin introducerea unei variabile de control; De exemplu, functia: void minim (int a, int b, int *c) { if ( a > b) *c = b; }

este adusa la forma urmatoare: int minim (int a, int b, int *c) { int vb = 0; if ( a > b) { *c = b; vb = 1; } return vb; } - mod identic de transmitere a parametrilor pentru toate functiile; De exemplu, transmiterea parametrilor prin adresa pentru toate functiile: int minim (int a, int b, int *c) { int vb = 0; if ( a > b) { *c = b; vb = 1; } return vb; } Forma functiei minim dupa aceasta operatie este: int minim (int *a, int *b, int *c) { int vb = 0; if ( (*a) > (*b)) { *c = *b; vb = 1; } return vb; } utilizarea unei singure instructiuni return.

Pentru functia: int minim (int a, int b) { if ( a > b) return b; else return a; } efectuarea acestei operatii conduce la urmatoarea secventa: int minim (int a, int b) { int min = a; if ( a > b) min = b; return min; } utilizare exclusiva a structurii de tip DO-WHILE, nlocuind structurile de tip DO-FOR si DO-UNTIL. Fie functia: float calcul_medie ( int note[ ]) { int i, s; s = 0; for ( i = 0; i < 10; i ++) s = s + note [i]; return s / 10; }

Omogenizarea conform acestei operatii conduce la obtinerea secventei de cod: float calcul_medie ( int note[ ]) { int i, s; s = 0; i = 0; while ( i < 10) { s = s + note [i]; i + +; } return s / 10; }

4.9 Efectele clonarii asupra complexitatii programelor Metodele de clonare produc diverse efecte asupra f sierelor sursa. i Exista metode care nu modifica nivelul complexitatii programelor. Astfel, daca se schimba denumirile de variabile si de etichete cu alti identificatori, numarul operanzilor si numarul operatorilor nu se schimba, deci complexitatea ramne neschimbata. Secventa: s = 0; for (i = 0; i < n; i ++) S += x [i]; are complexitatea Halstead: Cps = n1 * log2 n1 + n2 * log2 n2 unde: n1 numarul de operanzi; n2 numarul de operatori. (4.1)

Pentru secventa data, complexitatea este Cps = 10 log2 10 + 7 log2 2. Secventa: suma = 0; for (alfa = 0; alfa < numar; alfa ++) suma += elem [alfa]; are aceeasi complexitate. Exista metode care reduc nivelul complexitatii, mai ales atunci cnd este vorba de optimizare texte sursa. Secventa: s = ( a + b + c + d) * ( a + b + c + d - e) (a + b + c + d + e) * (a + b + c + d - - 1); y = ( a + b + c + d) / ( a + b + c + d 2); z = a + b + c + d y * s; are complexitatea Cps = 38 * log2 38 + 35 * log2 35. Prin clonare se genereaza secventa de optimizare: g = a + b + c + d; s = g * ( g - e) ( g + e) * ( g -1); y = g / ( g -2); z = g y * s; are complexitatea Cps = 21 * log2 21 + 17 * log2 17, fiind mult mai mica dect a textului sursa initial, naintea clonarii. Pentru procedurile Pr1, Pr2, Pr3: int P1(int x [ ], int n) { int s1 = 0, i; for ( i = 0; i < n; i ++) s1 + = x [i]; return s1; } int P2(int x [ ], int n) { int s2 = 0, i;

for ( i = 0; i < n; i ++) s2 + = x [i] * x [i]; return s2; } int P3(int x [ ], int n) { int s3 = 0, i; for ( i = 0; i < n; i ++) s3 + = x [i] * x [i] * x[i]; return s3; }

complexitatile sunt: P1 : Cps = 7 * log2 7 + 9 * log2 9; P2 : Cps = 9 * log2 9 + 10 * log2 10; P3 : Cps = 11 * log2 11 + 11 * log2 11. Secventa optimizata este: int * sume ( int x [ ], int n) { int s [3], i; s [0] = s [1] = s [2] = 0; for ( i =0; i < n; i ++) { s [0] += x [i]; s [1] += x [i] * x [i]; s [2] += x [i] * x[i] * x [i]; } return s; }

complexitatea fiind: Cps = 26 * log2 26 + 18 * log2 18.

Unele dintre transformari fac obiectul proceselor automate prin crearea de instrumente care preiau unele dintre modalitatile de construire a secventelor echivalente. n cazul n care se dezvolta instrumente care optimizeaza programele folosind ca intrari texte sursa si oferind la iesire, de asemenea, texte sursa, se obtin clone cu un nivel de performanta mai bun. Aceste instrumente evalueaza complexitatea textelor sursa att la intrare, ct si la iesire si evidentiaza saltul obtinut prin procesul dezvoltat.

CLONAREA DATELOR

5.1 Aplicatii ale bazelor de date Pastrarea si protejarea datelor n vederea unor prelucrari ulterioare este o activitate vitala n dezvoltarea si utilizarea aplicatiilor software asemeni procesului de dezvoltare a programelor. Clonarea unei baze de date, este procesul de obtinere unui exemplar identic de baza de date, care prezinta aceleasi caracteristici cu originalul n ceea ce priveste tabelele, datele si legaturile. Se face distinctie ntre notiunea de replicare a bazei de date si notiunea de clonare a bazei de date. Replicarea este un concept atasat bazelor de date distribuite. El consta n mentinerea acelorasi date pe mai multe site-uri, acest lucru implicnd propagarea la distanta a oricarei modificari suferite de baza de date, asigurndu-se integritatea datelor. Procesul de clonare prezinta mai multe tipuri si anume: clonarea integrala, clonarea structurii bazei de date, clonarea partiala a structurii bazei de date cu mentinerea legaturilor ntre tabelele clonate, clonare bazei de date cu adaugare de noi tabele etc.

Fiecare tip de clonare se realizeaza dupa un numar finit de pasi dupa cum urmeaza: a. se deschide baza de date de clonat; acest pas conditioneaza continuarea procesului. Daca deschiderea nu se realizeaza corect, fie baza de date nu exista, fie nu a fost introdusa corect calea bazei de date, procesul de clonare se opreste; b. se creeaza baza de date clona; se creeaza o noua baza de date care nu contine tabele sau alte informatii; este practic o baza de date vida; daca baza de date nu se creeaza corespunzator procesul se ncheie fara obtinerea rezultatului dorit; c. urmeaza o serie de pasi specifici fiecarui tip de clonare; dupa efectuarea acestor pasi se obtine baza de date clona; d. ultimul pas corespunde nchiderii bazei de date. Acest lucru ofera posibilitatea utilizatorului de a clona n cadrul aplicatiei de clonare a bazelor de date aceeasi baza de date. Lucrul pe clone rezolva problema reprezentarii uniforme a datelor, bazele de date avnd acelasi format. Rennoirea datelor centrale se realizeaza mai rapid, iar comunicarea ntre departamente este eficace. Rapiditatea si eficienta procesului de comunicare n ambele sensuri este sporita, activitatea intermediara de a trece baza de date dintr-un format n altul fiind complet eliminata. Transformarea unei baze de date prezinta riscul pierderii de informatie.
Adaugare de noi date Prelucrare date Stergere date initiale Adaugare de noi date Prelucrare date Stergere date initiale

Clona 1
Departament periferic

Transferul clonei bazei de date catre departament

Clona 2
D e p artament periferic

Reintroducere date n baza de date centrala

Baza de date centrala

Clona n
Departament periferic

Adaugare de noi date Prelucrare date Stergere date initiale

Figura 5.1 Transferul de date ntre departamente prin intermediul clonelor

Clonarea bazelor de date nu implica o rata mare de transfer ntre centru si sistemele periferice, lucru care fluidizeaza activitatea. De exemplu, protectia si securitatea bazei de date centrale sunt doua elemente esentiale pentru asigurarea desfasurarii normale a activitatii unei firme. Folosirea clonelor duce la fluidizarea traficului. La dorinta utilizatorului, clonele sunt create cu proprietatea de accesibilitate rapida care asigura minimul de resurse informationale, nencarcnd monitorul cu date nefolositoare. Aceeasi situatie este analizata prin prisma procesului de concatenarea a bazelor de date, proces surprins att la nivel fizic cat si la nivel logic. La nivel fizic, daca bazele de date de la nivelul departamentului sunt realizate pentru o aplicatie cu aceleasi reguli , transferata de la centru, se creeaza o singura baza de date si toate tranzactiile sunt efectuate prin centru. La nivel logic, daca exista nBD baze de date cu aceeasi structura si o aplicatie aferenta, se opereaza n toate cele nBD baze de date. Astfel la nivel logic exista o singura baza de date, desi fizic exista nBD baze de date. Ambele concepte utilizeaza clonarea bazelor de date, respecta principiile amintite mai sus, cu privire la securitate si protectie, si datorita procesului de clonare implica, cantitati reduse de resurse umane, financiare si de timp. Eficienta procesului de clonare este obtinut a prin calcularea urmatorului indicator:
Le = nrleg +
nrtab i =1

nrcamp nrinreg

(5.1)

unde: nrleg - numarul de legaturi al bazei de date; nrtab - numarul de tabele; nrcamp - numarul de cmpuri al tabelei i; nrinreg - numarul de nregistrari al tabelei i (ia valori ncepnd cu 1). Calculnd un indicator pentru baza de date initiala L BD si un indicator LCLONA pentru baza de date clonata, dupa care se calculeaza indicatorul agregat:
LCLONA (5.2) L BD pentru masurarea eficientei procesului de clonare. I CLONARE =

5.2 Gestiunea contractelor Se construieste aplicatia Contracte pentru exemplificarea clonarii bazelor de date. O societate comerciala care are obiect de activitate nchirierea de spatii comerciale doreste sa informatizeze aceasta activitate. Pentru rezolvarea problemei se cunosc urmatoarele date: clientii firmei sunt caracterizati prin cod, denumire, cod fiscal, numar Registrul Comertului (reprezentat n tabele de variabila NrRegCom). facturile sunt caracterizate de un numar de factura si data la care s-a facut. chiria este definita prin cod chirie, numarul contractului la care se refera, data scadenta si valoarea chiriei. contractele ce se ncheie ntre firma si clientii sai, se caracterizeaza prin numarul contractului, data contractului si valoare.
Clienti Cod client Den client Cod fiscal NrRegCom Contracte Nr contract Data contract Valoare Cod client
1,n 1,n 1,n

1,n

Chirii Cod chirie Nr contract Data scadenta Valoare chirie

1,n

Facturi Nr factura Data factura Cod client C o d chirie Nr contract

Figura 5.2 Modelul relational al datelor pentru aplicatia Contracte Baza de date se creeaza sub Microsoft Access si este conectata la un server SQL sau alte sisteme de management a bazelor de date, modificarea aplicatiei nefiind necesara. Aplicatia care cloneaza baza de date Contracte n functie de necesitatile utilizatorului, este realizata n Visual C++ folosindu-se tehnologia MFC. Codul sursa al programului alaturi de explicatiile aferente sunt publicate pe Internet la adresa www.clonare-bazededate.ase.ro.

5.3 Clonare integrala Trendul exponential de dezvoltare al societatii informationale prezinta riscuri majore. Unul dintre acestea este cel referitor la securitatea informatiei. Securitatea informatiei n cadrul unei retele se confundata de foarte multe ori cu lupta mpotriva accesului neautorizat al piratilor la informatii confidentiale. Modificarile cauzate de acesti indivizi sunt iremediabile si de aceea este indicat ca administratorul de retea sau utilizatorul datelor respective, n cazul nostru al bazelor de date, sa creeze o copie de siguranta, lucru realizat prin operatia numita Back-up. Back- up-ul este procesul de copiere a unei date la o locatie cunoscuta de cel care realizeaza acest proces. n cazul bazelor de date, baza de date pe care se lucreaza, este copiata integral. Pe lnga problemele cauzate de accesul nedorit la date confidentiale exista si riscul aparitiei unor necesitati de ordin fizic. O fluctuatie a tensiunii curentului electric poate produce urmarii iremediabile datelor si fisierului care le stocheaza. Neatentia utilizatorului n modul de gestionare a lucrului cu respectivele date are repercusiuni majore asupra integritatii lor. Realizarea unei copii de siguranta este utila n asemenea situatii. Scopul realizarii lor este acela ca n situatiile n care, din motivele obiective si subiective amintite, integritatea bazei de date este pusa sub semnul ntrebarii, sau accesarea bazei de date nu mai este posibila, sa se utilizeze respectiva copie de siguranta.

BD 1

Copiere legaturi vechi si date vechi

BD 2

Figura 5.3 Procesul de clonare integrala a unei BD Baza de date BD1 este practic transferata n baza de date BD2. Aceasta se realizeaza prin copierea att a datelor bazei BD1, ct si a legaturilor acestei baze. Se obtine baza de date BD2 care este o clona a bazei BD1, si anume o baza de date identica cu BD1. Se foloseste termenul clonare, si nu cel de copiere, dintr-un motiv bine determinat. Procesul de copiere n domeniul informatic presupune existenta unui singur pas, n carul caruia este efectuata copierea obiectului dorit. Procesul de clonare este un proces care presupune existenta unui

numar de pasi. Procesul de clonare nu are drept unic scop obtinerea unei baze de date identice cu cea clonata. Acesta este scopul clonarii integrale. Copierea bazei de date ntr-o alta baza de date este valabil doar n cazul clonarii integrale si de aceea nu trebuie generalizat la nivelul ntregului proces de clonare, care presupune diferentierea clonarii n functie de necesitatile imediate. n concluzie, operatiile aferente pasului C sunt: daca baza de date clona a fost creata cu succes urmeaza etapa n care sunt obtinute particularitatile bazei de date clonate, cum ar fi numele si numarul tabelelor, numarul, numele, tipul cmpurilor, cmpurile indexate, numarul legaturilor etc. Dupa obtinerea acestor particularitati urmeaza crearea lor propriu- zisa n baza de date clona. Astfel este obtinuta baza de date clona. Operatia nu este o simpla copiere, fiind necesare si informatii suplimentare pentru crearea entitatilor din cadrul clonei, informatii obtinute prin apelul unor functii specializate oferite de pachetul Microsoft Visual Studio 6.
Clonare structura tabele

Tabela 1

Tabela 2

..

Tabela n

Tabela 1

Tabela 2

..

Tabela n

Cele n tabele ale bazei de date initiale

Cele n tabele ale clonei

Datele aflate ntr o tabela Clonare structura cmpuri

Cmp 1 Cmp 2 Data 11 Data 12 Dat a 21 Data 22 Data m1 Data m2

. . . .

Cmp k Data 1k Data 2k . Data mk

Cmp 1 Cmp 2 Data 11 Data 12 Data 21 Data 22 Data m1 Data m2

. . . .

Cmp k Data 1k Data 2k Data mk

Clonare date

Legaturi BD

Clonare legaturi

Legaturi clona

Figura 5.4 Secventa clonarii integrale a unei baze de date

Procesul de clonare integrala a unei baze de date este procesul prin care se copiaza att datele, tabelele ct si legaturile tabelelor bazei de date initiale n conformitate cu particularitatile fiecarei entitati, ntr-o noua baza de date numita clona bazei initiale. n urma acestui proces se obtine o baza de date identica cu cea care s-a dorit a fi clonata. Pentru baza de date Contracte, considernd ca tabele au n medie cte 3 nregistrari, indicatorii L BD si LCLONA au valorile LBD = 56 si LCLONA = 56 , iar indicatorul I CLONARE are valoarea 1, fiind copiata integral in clona.

5.4 Clonare structura baza de date Limitarea la simpla copiere a bazei de date ntr-o alta baza de date prin obtinerea clonei sale integrale, este o greseala. Aplicabilitatea clonarii bazelor de date consta tocmai n posibilitatea clonarii bazei de date initiale n conformitate cu interesele utilizatorului. Crearea unei noi baze de date care sa contina tabelele si legaturile bazei de date clonata, dar fara date, se obtine prin clonarea structurii bazei de date. Procesul de clonare a structurii bazei de date este procesul prin care se creeaza tabele si legaturile identice cu cele ale bazei de date initiale ntro noua baza de date. n figura 5.5. este prezentata imaginea generala a acestui proces .

BD 1

Copiere tabele vechi si date vechi

BD 2

Figura 5.5 Procesul de clonare structura Se doreste crearea unei baze de date BD2 care contine aceleasi tabele ca si baza de date BD1. O solutie este crearea manuala a bazei de date BD2. Aceasta solutie are un mare inconvenient si anume cel al costului implicat. Crearea bazei de date BD1 a fost suportata cu un cost X. Cum cele doua baze au aceleasi tabele, se considera ca ele sunt similare. Se obtine baza de date Contracte Filiala care are tabelele de date clienti, chirii, contracte, facturi, iar legaturile dintre tabele sunt aceleasi ca cele din baza de date Contracte.

Dupa obtinerea bazei de date prin clonare, urmeaza completarea cu date a bazei Contracte Filiala. Procesul este prezentat pe larg n figura 5.6.

Clonare structura tabe le

Tabela 1

Tabela 2

..

Tabela n

Tabela 1

Tabela 2

..

Tabela n

Cele n tabele ale bazei de date initiale Datele aflate ntr o tabela Clonare structura cmpuri

Cele n tabele ale clonei

Cmp 1 Cmp 2

Cmp k Data 1k Data 2k . Data mk

Cmp 1 Cmp 2

Cmp k

Data 11 Data 12 . Data 21 Data 22 . Data m1 Data m2 .

Legaturi BD

Clonare legaturi

Legaturi clona

Figura 5.6 Secventa clonarii integrale a unei baze de date Clonarea structurii este realizata n cadrul celor 4 pasi si conduce la valorile LBD = 22 si LCLONA = 56 , iar I CLONARE = 0.39 , nsemnnd ca baza de date a fost clonata n proportie de 39%.

5.5 Clonare pa rtiala a structurii bazei de date Procesul de clonare partiala a structurii bazei de date presupune copierea anumitor tabele, precum si a legaturilor aferente acestor tabele din cadrul bazei de date initiale, ntr-o noua baza numita clona partiala, pentru ca mai apoi n aceasta clona sa se introduca datele necesare lucrului. Procesul este reprezentat grafic n figura 5.7.

BD 1

Copiere tabele alese si legaturi vechi ntre tabelele alese

BD 2

Figura 5.7 Procesul de clonare partiala a structurii bazei de date Din figura 5.7 reiese ca se doreste crearea unei noi baze de date, si anume BD2, care are o structura similara cu baza de date BD1. Datorita similitudinilor cu baza de date BD1 nu mai este necesara crearea ei prin metode conventionale. Aceasta ar presupune alocarea de noi resurse, resurse care sunt utilizate n alte activitati. Clonarea partiala a structurii se realizeaza n cadrul pasului Cc, si cuprinde secventa de operatii descrisa n figura 5.8.

Clonare structura tabele alese pentru a fi ate clon Tabela i Tabela n Tabela j

Tabela 1

Cele n tabele ale bazei de date initiale Datele aflate ntr- o tabela Clonare structura cmpuri Cmp 1 Cmp 2 Data 11 Data 12 Data 21 Data 22 Data m1 Data m 2 . . . . Cmp k Data 1k Data 2k . Data mk

Cele m tabele ale clonei

Cmp 1 Cmp 2

Cmp k

Legaturi BD

Clonare legaturi

Legaturi clona

Figura 5.8 Secventa clonarii partiale a bazei de date

Clonarea partiala a bazei de date este realizata n cadrul celor 2 pasi si conduce la valorile LBD = 17 si LCLONA = 56 , iar I CLONARE = 0.30 , nsemnnd ca baza de date a fost clonata n proportie de 30%.

5.6 Clonare baza de date cu adaugare de tabele Procesul de clonare a unei baze de date cu adaugare de tabele presupune copierea bazei de date initiale ntr-o noua baza numita clona, pentru ca mai apoi n aceasta clona sa se adauge tabele noi. Clonarea unei baze de date cu adaugare de tabele noi se utilizeaza cnd se doreste crearea unei noi baze de date care contine pe lnga datele si legaturile din baza de date initiala si alte tabele, deci clona are o structura similara cu baza de date clonata si crearea unei baze de date prin metode conventionale ar fi costisitoare. Procesul este reprezentat grafic n figura 5.9.

BD 1

Copiere legaturi vechi si date vechi si tabele vechi

BD 2

Adaugare tabele noi

Figura 5.9 Procesul de clonare baza de date cu adaugare de tabele noi Dupa se observa, baza de date BD1 este practic transferata n baza de date BD2. Aceasta se realizeaza prin copierea att a datelor si tabelelor bazei BD1, ct si a legaturilor acestei baze. Se obtine astfel baza de date BD2 care este o clona a bazei BD1.

La baza de date BD2 se adauga tabelele noi dorite de utilizator. Se obtine astfel cu un cost minim o noua baza de date. Pentru o mai buna ntelegere se exemplifica pe aplicatia Contracte. Modelul conceptual al noii baze de date arata astfel:
Clienti Cod client Den client Cod fiscal NrRegCom Contracte Nr contract Data contract Valoare Cod client
1,n 1,n 1,n

1,n

Chirii Cod chirie Nr contract Data scadenta V a l o a r e c hirie ncasari Nr document Data docum Suma ncasata Nr factura

1,n

Facturi Nr factura Data factura Cod client Cod chirie Nr contract

1,n

Figura 5.10 Modelul relational al probleme i dupa ce s-au adaugat noi tabele Dupa cum se observa n figura 5.10 complexitatea bazei de date a crescut, n timp ce efortul de realizare a acestei noi baze de date a fost minim.
Clon are totala a tabelelor

Tabela 1

Tabela 2

..

Tabela n

Cele n tabele ale bazei de date initiale

Tabela 1

Tabela 2

Tabela n

Tabela n+1

Tabela n+m

Cele n+m tabele ale clonei Adaugare tabele noi

Se creaza legaturi noi

Tabela 1

..

Tabela m

Cele m tabele noi care se adauga la clona

Legaturi BD

Clonare legaturi

Legaturi clona

Figura 5.11 Secventa clonarii bazei de date cu adaugare de noi tabele

Operatiile aferente pasului C, n care se realizeaza procesul propriuzis de clonare cu adaugare de tabele noi a bazei de date sunt descrise n figura 5.11. Clonarea cu adaugare de tabele bazei de date este realizata n cadrul celor 4 pasi si conduce la valorile LBD = 61 si LCLONA = 56 , iar I CLONARE = 1,08 , nsemnnd ca baza de date a fost clonata n proportie de 30%. Cei 8% in plus reprezinta o noua legatura adaugata si o noua tabela pentru ncasari care are patru cmpuri.

CLONAREA INTERFETELOR OM CALCULATOR

6.1 Conceptul de interfata om - calculator Interfata om calculator a devenit o parte integrata a produsului software si la fel de importanta ca si acesta. Aceasta situatie se datoreaza n principal dezvoltarii fara precedent a societatii informationale care se bazeaza pe interactiunea din ce n ce mai complexa dintre om si calculator. Daca acum 20 - 30 de ani comunicam cu calculatorul prin intermediul cartelelor att pentru introducere de date ct si pentru citirea rezultatelor, astazi barierele sunt de ordin imaginativ. Datorita resurselor marilor companii producatoare de software precum si a competitiei acerbe dintre acestea, produsele informatice ncep a fi orientate catre om, iar termeni ca eficacitate, eficienta sau satisfactie a utilizatorului sunt din ce n ce mai utilizati n descrierea interfetelor. Acest lucru dovedeste n plus ca interfata nu mai este un simplu element decorativ al aplicatiei, ci este o caracteristica definitorie a acestuia, influentnd major calitatea ntregului produs. Trebuie facuta diferenta dintre interactiune om calculator si interfata om calculator. Astfel primul termen se refera la ntelegerea

dialogului dintre om si calculator precum si a implicatiilor asupra fiecaruia, iar cel de-al doilea termen este o imagine particulara a acestei ntelegeri. De aceea proiectarea interactiunii are ca unelte metode de cercetare, descriere si modelare a dialogului, iar proiectarea interfetei om calculator se bazeaza pe crearea unei structuri, a relatiilor dintre elementele interfetei precum si pe delimitarea ei de restul produsului software.

6.2 Tehnologii pentru dezvoltarea interfetei om calculator A dezvolta o interfata om calculator este echivalent cu a crea ntrun mediu specific de programare ca Visual Basic, Visual C++, un suport al dialogului dintre utilizator si calculator. Greutatea nu consta n cunoasterea limbajului de programare ci mai degraba n varietatea cunostintelor necesare din domenii ca psihologie, lingvistica, sociologie, design industrial, management, antropologie sau tipografie, care sa fie folosite pentru a maximiza avantajele potentiale ale produsului final. n mare exista doua tehnologii, fiecare cu instrumentele ei, care sunt aplicate n constructia interfetelor om calculator. Cele doua sunt: tehnologia bazata pe software, pe instrumentele puse la dispozitie de diferite programe si tehnologia orientata pe utilizator care este o parte din stiinta interactiunii om calculator si care opereaza mai mult cu concepte. Ele sunt complementare, software punnd la dispozitie mijloacele de a pune n practica ideile rezultate din interactiunea omului si a masinii de lucru. Din prima tehnologie, fac parte interfetele de tip grafic numite ferestre sau, windows, care sunt utilizate n mod frecvent n ziua de azi. Acestea pot fi descrise pe scurt prin WIMP, adica windows (ferestre), icons (iconite), menu (meniu) si pointer (cursor). Aceste patru elemente fundamentale sunt nelipsite dintr-o interfata grafica, fiind caracterizate pe scurt astfel: fereastra reprezinta zona rectangulara a spatiului de lucru curent. Accepta input din partea utilizatorului (chiar miscarea mouse n interiorul sau este o actiune de input de date) si afiseaza sub diferite forme datele de output. Contine o bara de titlu pe care se gasesc o serie de butoane de actionare (minimizare, maximizare si nchidere), un meniu, o bara de defilare si o margine prin care fereastra este redimensionata; iconita este o imagine de mici dimensiuni ce simbolizeaza un lucru simplu si familiar din mediul utilizatorului, fiind asociata

unui element al mediului de lucru. Este utila deoarece apeleaza la memoria vizuala a utilizatorului care astfel recunoaste actiunea sau elementul; cursorul este un element de pozitionare n interiorul ferestrei si care este utilizat cu preponderenta mpreuna cu mouse. Pe lnga indicarea pozitiei, el are si functii de output transmitnd utilizatorului diferite stari ale programului prin intermediul formei sale. De exemplu forma de clepsidra care este asociata starii curente a unui software n care acesta prelucreaza datele. meniul consta n aranjarea tuturor obiectelor sau functiilor dintro interfata sub forma unor liste vizibile de nume sau descrieri. Elementele listelor sunt grupate dupa caracteristici asemanatoare, pentru a fi regasite cu usurinta, ele reprezentnd acele componente pe care utilizatorul le foloseste n mod curent.

Alte obiecte utilizate n mod curent de aceasta tehnologie sunt: caseta de dialog, butonul (butonul de comanda, butonul radio, butonul de optiune), caseta text (text box), caseta lista (list box), caseta combo (combo box) si casuta de verificare (check box). Alegerea elementelor vizuale, prezentate mai sus, necesare construirii unei interfete care sa faciliteze dialogul normal dintre om si calculator nu reprezinta dect o parte din timpul total alocat proiectului. Restul, care la nivelul anilor 90 reprezenta 50% din total, consta n aranjarea vizuala a informatiei, n amplasarea si dimensionarea obiectelor alese n prima etapa, adica pe scurt n crearea structurii prezentarii. Conceptele luate n considerare sunt: structura prezentarii; proiectarea ecranelor; complexitatea spatiala; consistenta prezentarii. O alta tehnica utilizata de aceasta tehnologie este folosirea metaforelor, adica a unor simboluri luate din lumea reala care sunt n mod obisnuit, familiar asociate unor actiuni specifice. Exemple de metafore sunt: cosul de reciclare (recycle bin), suprafata de lucru a biroului (desktop), imprimanta. Acestea sunt folosite pentru a reproduce aspectul obiectului folosit sau pentru a emula modul cum trebuie folosit obiectul interfetei. Cea de-a doua tehnologie folosita are ca idee centrala reconsiderarea factorului uman si anume l integreaza n procesul de construire a unei interfete om calculator. Aceasta tehnologie daca este utilizata, o precede

pe ce prezentata anterior pentru ca, dupa cum s-a mai zis, prin intermediul ei gndim interfata, o proiectam, o analizam si apoi o cream fizic. Astfel, proiectarea interfetei se face n primul rnd considernd elementul uman ca element central al interfetei. Acest lucru necesita initial o abordare etnografica care sa scoata n evidenta elemente lingvistice si culturale particulare ale utilizatorului. A doua etapa este caracterizata de cercetarea factorului social ncercndu-se sa se scoata n evidenta elementele mediului social afectate, efectele asupra cadrului de lucru organizational si chiar impactul social avut, care uneori are repercusiuni asupra utilizatorului. Proiectarea n sine este de doua tipuri: iterativa si prototipizare. Primul tip consta n parcurgerea iterativa a unui numar finit de etape care sa aiba ca finalitate produsul software. nsa, acest lucru este aproape imposibil de aplicat n cazul proiectelor mari. Datorita numeroaselor elemente care influenteaza sistemul este necesara ntoarcerea la etape anterioare n vederea rezolvarii problemelor aparute n proiectare. Totusi, folosirea curenta a proiectarii iterative are avantajele sale atunci cnd luam n calcul verificarea calitatii produselor software, verificare care reprezinta n sine o strategie iterativa de proiectare. Daca n cazul primei metode de proiectare este dificila cooptarea n procesul decizional a utilizatorului final sau a partilor care interactioneaza ntr- un m sau altul cu produsul final, datorita barierelor n comunicatie od (pregatirea tehnica diferita a partilor), cea de-a doua tehnica utilizeaza instrumente care sa schimbe aceasta stare a lucrurilor. Fiecare instrument are avantajele si dezavantajele sale. O parte din ele sunt: ajuta la ntelegerea produsului, facilitnd astfel adaugarea de cunostinte noi; constituie baza pentru proiectarile viitoare prin care acesta este mbunatatit; este mare consumatoare de resurse, n special de timp, necesar construirii prototipului, documentarii acestuia. Principalele tipuri de prototipuri utilizate sunt: schitele pe hrtie; schitele electronice; prototipurile orizontale; prototipurile verticale. Din acest punct de vedere se iau n considerare definitiile utilizabilitatii date de standardele ISO 9126 (1991) si ISO 9241-11 (1994). n esenta prin utilizabilitatea unui produs software se ntelege calitatea acestuia de a fi utilizabil si n acest sens fiecare din cele doua standarde numesc o serie de caracteristici care confera n final produsului calitatea descrisa mai sus.

n standardul ISO 9126 (1991) sunt definite caracteristicile pe care trebuie sa le aiba o interfata om - calculator: functionalitate. Se refera la existenta unui set de instrumente care sa permita satisfacerea directa sau indirecta a cerintelor utilizatorului. fiabilitate. Produsul trebuie sa confere factorului uman un grad de siguranta n utilizare, acest lucru fiind dovedit cel mai bine printr-o utilizare ndelungata. utilizabilitate. Prin aceasta caracteristica, standardul se refera implicit la efortul utilizatorului de a recunoaste, ntelege concepte noi precum si de a le nvata si apoi de le controla ntrun mod optim. eficienta. Aceasta caracteristica scoate n evidenta raportul dintre efortul depus de utilizator si acuratetea rezultatelor. mentenabilitate. Un produs software pentru a fi considerat reusit trebuie, pe lnga celelalte caracteristici, sa permita producatorului sa-l corecteze, sa- l testeze sau sa-l actualizeze cu versiuni mai noi, si toate acestea cu costuri ct mai mici. portabilitate. Astazi, este din ce n ce mai necesar ca un produs software sa se integreze ct mai bine n diversitatea de medii de lucru, software si hardware, care caracterizeaza lumea informatica de azi. Acest lucru este echivalent cu capacitatea acestuia de a se transfera usor ntre aceste medii si totodata de a se adapta la ele.

6.3 Diversitatea interfetei om calculator O caracteristica a tehnologiei din ziua de azi o constituie multitudinea facilitatilor puse la dispozitia programatorului pentru a construi o interfata om calculator. Astfel avem la dispozitie componente care au functionalitati input ct si output, cum ar fi casutele de dialog. Daca mai luam n considerare si faptul ca exista mai multe posibilitati pentru a realiza aceeasi operatie, de exemplu putem selecta un obiect cu ajutorul mouse-ului sau prin combinatii de caractere, si ca o interfata include n ea mai multe tehnologii de realizare, tragem concluzia ca este destul de anevoios sa descriem dive rsitatea interfetelor om calculator fara a avea un instrument pe care sa-l folosim. n acest sens introducem notiunea de stil de interfata ntelegnd prin aceasta caracteristicile dominante ale unei interfete, caracteristici ce sunt

determinate att de m odul grafic ct si de tehnica de interactiune. Asadar diversitatea interfetelor este data de modul n care sunt proiectate componentele grafice, att n ceea ce priveste aspectul grafic, ct si n ceea ce priveste modul cum se interactioneaza cu acestea. Principalele categorii de stiluri care includ att componente vizuale ct si notiuni din interactiunea om calculator diferite, au fost numite: categoria manipularii directe; categoria WYSIWYG; categoria interfetelor iconice. n prima categorie sunt incluse acele interfete ale caror elemente grafice, atribute sau relatii sunt vizibile operndu-se direct cu acestea. Caracteristica definitorie a acestei categorii este data de faptul ca se lucreaza direct cu obiectele interfetei, vizual, folosind de cele mai multe ori mouse. Desi acest lucru usureaza dialogul dintre utilizator si masina, n cazul lucrului mai rapid, se utilizeaza si alte moduri de interactiune cum ar fi tastatura sau meniurile. O astfel de interfata caracterizeaza mediul de lucru al unui software de tip chestionar n care utilizatorul bifeaza diferite optiuni. A doua categorie WYSIWYG, al carei nume este prescurtarea de la What You See Is What You Get, este caracterizata de ultima fereastra sau imagine (n cazul software care nu este bazat pe ferestre), adica utilizatorul are pe ecran ultima imagine pe care programul a creat-o. Cel mai elocvent exemplu al acestei categorii este interfata unui program de instalare cnd se parcurg mai multi pasi, fiecaruia corespunzndu- i o fereastra. Cea de-a treia categorie, poate si cea mai cunoscuta, are ca elemente definitorii iconitele (icons) care n esenta sunt mici grafice reprezentnd obiecte si actiuni din lumea reala. Usurinta lucrului cu acestea consta n asocierile pe care ut ilizatorul, chiar si cel neexperimentat, le face n mod natural permitndu- i astfel sa utilizeze obiecte, actiuni sau concepte fara a fi nevoie sa- i fie explicate sau descrise. O astfel de interfata este bine cunoscutul desktop al sistemului de operare Mic rosoft Windows. Dupa cum se observa n lumea aplicatiilor software, nu exista interfete care sa apartina exclusiv numai unei singure categorii, ele incluznd n masuri diferite elemente din aproape toate. nsa mpartirea interfetelor pe categorii nu este inutila, deoarece ne ajuta sa le descriem mai usor. n descrierea mai exacta a diversitatii de interfete om calculator sunt utilizate si urmatoarele criterii de clasificare: limbajul al dialogului utilizator - calculator utilizat; structura interfetei;

domeniul de utilizare; portretul utilizatorului; specificatiile echipamentului utilizat; nivelul de flexibilitate. Cu toate ca mai pot fi gasite mult mai multe criterii de clasificare, ceea ce conteaza este faptul ca ori cte am gasi o interfata satisface simultan ntr-o masura mai mare sau mai mica pe fiecare n parte.

6.4 Orientarea clonarii informatice spre utilizator Clonarea informatica a interfetelor este un nou concept de reutilizare a produselor software, n cazul de fata interfata. Astfel sunt obtinute entitati noi care incorporeaza n totalitate sau partial interfata clonata. Din pacate se face confuzie ntre produs software si modul de reprezentare vizuala a interactiunii cu utilizatorul, interfata reprezentnd o unitate de sine statatoare a carei realizare urmareste o serie de pasi distincti de cei ai produsului software. De aceea, procesul de clonare a interfetelor este independent de produsul software n care acestea sunt integrate. Dezvoltarea tehnologiei client server si n special a Internetului a sporit viteza de circulatie a informatiei. Domeniul muzical a valorificat la maxim oportunitatile oferite datorita aparitiei formatului mp3. Astfel a aparut posibilitatea publicarii produselor media si a instrumentelor adiacente lor. Unul dintre aceste instrumente l reprezinta playerul mp3. La nceput, diferitele produse software din acest domeniu prezentau aceleasi caracteristici tehnice. Diferenta majora dintre acestea, care n final s-a dovedit a fi cheia succesului, a reprezentat-o implementarea conceptului interactiunii utilizator calculator. Implementarea acestui concept a avut la baza strategia orientata utilizator, astfel interfata fiind proiectata dupa principiul simplitate n complexitate. Numarul ridicat de functiuni a fost implement at ntr-un mod care permite utilizarea produsului independent de nivelul cunostintelor utilizatorului. O data cstigat segmentul major al pietei, producatorul este nevoit sa ia n calcul trendul ascendent al evolutiei domeniului respectiv. Pentru mentinerea si mbunatatirea pozitiei actuale, producatorul investeste resurse semnificative n cercetarea si dezvoltarea produsului. Cum n acest domeniu imaginea produsului este asociata cu reprezentarea sa grafica (interfata), aceasta nu sufera modificari radicale. Urmatoarele versiuni au un comun un nucleu de caracteristici definitorii pentru produs, care nu sunt alterate ci sunt clonate. Astfel prin intermediul procesului de clonare efortul depus este

minimizat, fiind reorientat catre dezvoltarea caracteristicilor tehnice ale produsului.

6.5 Tehnici si metode utilizate n clonarea interfetelor Interfata ca entitate de sine statatoare este mpartita n structura si continut. Structura este definita de modul cum sunt aranjate si grupate diferitele componente ale interfetei (ferestre, butoane, toolbar, meniurile etc.), iar continutul se refera la particularitatile ce le sunt conferite si care le individualizeaza n ochii utilizatorului. De obicei aceste particularitati constau n informatiile care sunt percepute atunci cnd privim la unul din obiecte. De exemplu, ceea ce deosebeste cele doua butoane aflate pe interfata din Figura 1 este pozitia lor n structura acesteia si etichetele de pe ele. Astfel, un buton este caracterizat din punct de vedere structural (se afla n stnga) si din punct de vedere al continutului sau (pe el scrie Informatii impozite). Un alt caz concret este dat de programele Microsoft Word si Microsoft Excel din pachetul Microsoft Office, care desi au structura interfetei aproape identica, continutul acesteia este total diferit.

Figura 6.1 Tip de interfata Acest mod de a privi si descrie o interfata se datoreaza celor doua concepte fundamentale ale procesului de realizare a dialogului om - masina, cel dependent de tehnologie si cel al interactiunii om calculator. Procesul de clonare trebuie deci, sa tina seama de cele doua parti distincte ale unei interfete si sa le trateze ca atare. Mai mult chiar, procesul de clonare este caracterizat n functie de partea clo nata. Clonare de structura. Clonarea de structura aplicata unei interfete are ca rezultat o alta interfata cu structura produsului initial. Sa luam de exemplu interfata simpla din figura 6.1 a unui produs software de informare

publica care consta n doua butoane numite : Informatii impozite si Informatii scutiri impozite.

Figura 6.2 Structura interfetei din Figura 6.1

Crearea unui nou produs software care de data aceasta sa prezinte copiilor din clasele pregatitoare doua operatii matematice elementare necesita o interfata asemanatoare primului produs, care sa nu implice costuri nejustificate. Solutia optima consta n clonarea structurii interfetei din figura 6.1 si adaugarea continutului necesar rezultatul dorit, figura 6.3.

Figura 6.3 Interfata noului program

Structura componentei 1 a interfetei

Structura componentei 1 a clonei

Setul 1 de date input si output Setul 3 de date input si output

Clonare de structura

Setul 2 de date input si output

Setul 1 de date input si output

Setul 2 de date input si output Structura componentei n a interfetei

Structura componentei n a clonei

Setul 3 de date input si output

Clona obtinuta

Interfata initiala

Figura 6.4 Clonare de structura a interfetei Asigurarea continuitatii procesului de clonare se realizeaza prin: utilizarea acelorasi cerinte cheie pentru comenzi; mentinerea pozitiei ; realizarea unui produs nou ca extensie a unui produs existent care l include pe acesta;
Produs nou

Produs vechi

Figura 6.5 Caracteristica de continuitate a procesului de clonare

6.6 Efectele clonarii unor interfetei Dinamica societatii actuale impune producatorilor de software implementarea strategiei orientate utilizator. Dupa cum se cunoaste piata IT este dominata de producatorii de echipamente care concura pentru obtinerea suprematiei pe piata respectiva. Aceste echipame nte, care n acceptiunea utilizatorilor sunt instrumente de lucru, intra n contact direct cu utilizatorul prin intermediul interfetei. Indiferent de tipul echipamentului, cum ar fi computerul personal, telefonul mobil, PDA, pocket PC, table PC, laptop, simplitatea utilizarii respectivului echipament este cheia viitorului succes. n paragraful "Orientarea catre utilizator" s-a prezentat exemplul referitor la player mp3. Acest exemplu subliniaza importanta alocarii resurselor catre departamente specializate n analiza interactiunii omului cu calculatorul. Firma respectiva si-a orientat toate resursele spre utilizator, realiznd acest lucru prin metoda cea mai putin costisitoare, si anume, realizarea unei interfete atractive. Totusi realizarea unei interfete necesita un anumit cost. Sa presupunem ca piata a fost cstigata de respectiva firma. n cazul de fata intervine urmatoarea etapa si anume pastrarea si dezvoltarea segmentului actual din piata respectiva. Astfel producatorul este nevoit sa aduca mbunatatiri produsului prin lansarea de noi versiuni sau noi produse pe piata. Asadar, producatorul are doua variante pentru reprezentarea vizuala a produsului: pastrarea unor caracteristici semnificative din cadrul interfetei vechiului produs; realizarea unei noi reprezentari vizuale. Asa cum s-a afirmat mai sus, realizarea unei interfete necesita anumite costuri. Aici intervine procesul informatic de clonare a interfetelor. Un produs, indiferent de calitatea lui intrinseca, este asociat de utilizatori prin intermediul interfetei. De aceea, noile versiuni ale unui produs cu caracteristice tehnice remarcabile va pastra vechea interfata la care se adauga noile optiuni. Efectul cel mai semnificativ al clonarii interfetelor l reprezinta minimizarea costurilor. Astfel cu ajutorul procesului de clonare resursele alocate cercetarii domeniului de interactiune, realizarea unui prototip, testarea si evaluarea sunt redistribuite catre alte locatii. Deci, cu ajutorul procesului de clonare se obtin noi interfete care prezinta caracteristicile vechiului produs.

Structura componentei 1 a interfetei

Structura componentei 1 a interfetei

Clonare totala
Setul 1 de date input si output Setul 3 de date input si output Setul 1 de date input si output Setul 3 de date input si output

Setul 2 de date input si output

Setul 1 de date input si output Setul 2 de date input si output

Setul 2 de date input si output

Setul 1 de date input si output Setul 2 de date input si output

Setul 3 de da t e i n p u t s i output

Setul 3 de date input si output

Structura componentei n a interfetei

Structura componentei n a interfetei

Interfata initiala

Clona obtinuta

Figura 6.6 Clonarea totala a interfetei Pna la un punct clonarea interfetelor conduce la cresterea productivitatii n procesul de dezvoltare a aplicatiilor informatice complexe. Daca se produc salturi calitative, trecerea la o generatie la alta de interfete vizeaza adaptarea la cerintele utilizatorilor. Clonarea interfetelor n cadrul aceluiasi producator de software asigura nzestrarea produselor program finale cu caracteristica de continuitate. Utiliznd aceleasi simboluri, aceleasi cuvinte cheie si aceleasi amplasamente ale butoanelor, trecerea de la un produs program la altul este nsotita de un efort redus din partea utilizatorului si de acceptarea de catre utilizator a produsului program nou, fara introducerea de noi restrictii ca n cazul n care utilizatorul trebuie sa se alinieze la o noua tipologie de interfata.

ASPECTE JURIDICE ALE CLONARII INFORMATICE

7.1 Protectia juridica a programelor de calculator si a bazelor de date Produsele software si bazele de date ntrunesc cerintele unei creatii intelectuale ce constituie obiect al dreptului de autor pentru ca: sunt rezultatul consumului de munca vie, n special sub forma efortului intelectual depus de analisti, programatori, designeri, testeri etc. folosind resurse de baza (limbaje, instrumente, echipamente, metodologii) realizeaza structuri software si de baze de date care sunt susceptibile de a fi exprimate ntr-o forma concreta perceptibila simturilor umane si de a fi fixate pe un suport material, electronic. noile structuri obtinute se diferentiaza de alte structuri existente, n sensul ca poarta amprenta personalitatii autorului, caracterizata de un minim de creativitate si un aport de noutate [ROSV01], ceea ce le confera caracter de originalitate.

produsele software si bazele de date sunt susceptibile de a fi aduse la cunostinta publicului. procesele generatoare de software si baze de date presupun fluxuri informationale specifice comunicarii ntre membrii echipelor complexe de informaticieni, care realizeaza o opera unitara, a carei valoare nu este data de suportul material pe care programul este stocat si nici de munca depusa pentru realizarea acestor suporturi.

Relatiile sociale create n legatura cu produsele software si bazele de date, ca rezultate ale muncii creative individuale sau colective depuse de persoane fizice sau n cadrul unor procese dezvoltate de persoane juridice, sunt reglementate de normele juridice din domeniul proprietatii intelectuale, mai exact din domeniul dreptului de autor. n paralel cu notiunea de drept de autor se mai foloseste si notiunea de copyright, caracteristica sistemului de drept anglo-saxon. Desi aparent nu exista nici o diferenta ntre continutul celor doua notiuni, trebuie subliniat ca termenul copyright se refera mai ales la dreptul patrimonial, principala prerogativa constnd n producerea de copii ale unei opere numai cu consimtamntul titularului dreptului de autor. Notiunea drept de autor vizeaza att drepturile nepatrimoniale, referindu-se la persoana care este creatorul operei, ct si aspectele patrimoniale. Sistemul dreptului de autor a fost creat pe baza conceptiei filosofice conform careia opera, ca obiect al protectiei, este o reflectare a personalitatii autorului. Ideea este pe deplin aplicabila n cazul operelor literare si artistice, unde personalitatea autorului se exprima prin stilul operei. n cazul programelor pentru calculator si al bazelor de date, care sunt opere tehnice, complexe, n care se folosesc limbaje si notiuni de specialitate, si care sunt realizate, de regula, de colective de programatori, creativitatea este mai limitata, iar personalitatea autorului se reflecta mai putin. Totusi, n prezent, n majoritatea tarilor, programele pentru calculator sunt protejate prin sistemul dreptului de autor. Studiile si cercetarile interdisciplinare ale informaticienilor si juristilor au contribuit la definirea unui cadru legislativ i ovator, care n n acelasi timp stimuleaza dezvoltarea informaticii si protejeaza pe producatorii si dezvoltatorii de software si baze de date mpotriva clonarii neautorizate. Protectia juridica a programelor pentru calculator n SUA este rezultatul productiei si utilizarii deosebit de intense ncepnd cu deceniul sapte. Astfel, n 1976 a fost adoptata Legea nr.95-553 (intrata n vigoare la 1

ianuarie 1978) pentru modificarea legii copyright- ului din 1909. Legea din 1976 consacra legislativ programele de calc ulator ca opere de creatie intelectuala, protejabile n cadrul drepturilor de autor. Prin modificarea din 12 decembrie 1980, se defineste notiunea de program pentru calculator ca un ansamblu de instructiuni destinate a fi utilizate direct sau indirect ntrun calculator pentru a obtine anumite rezultate. n SUA, legea copyrightului apartine mai mult dreptului afacerilor dect dreptului de creatie intelectuala [ROSV01], punndu-se astfel accent pe aspectele patrimoniale. n 1988 a fost adoptata n SUA o lege de punere n aplicare a Conventiei de la Berna pentru protectia operelor literare si artistice, din 9 septembrie 1886. Romnia a aderat la aceasta Conventie n forma revizuita prin Actul de la Paris la 24 iulie 1971 si modificata la 28 septembrie 1979, prin Legea nr. 77 din 8 aprilie 1998. Protectia juridica a programelor pentru calculator la nivel comunitar este reglementata de Directiva Consiliului Comunitatilor Europene nr. 91/250/C.E.E. din 14 mai 1991 care recomanda masuri pentru uniformizarea legislatiei n domeniu si protejarea programelor de calculator ca opere literare n ntelesul Conventiei de la Berna. Romnia a aderat la Conventia de la Berna, n forma revizuita prin Actul de la Paris la 24 iulie 1971 si modificata la 28 septembrie 1979, prin Legea nr. 77 din 8 aprilie 1998. Scopul acestui tratat international a fost, asa cum reiese din preambul, de a proteja ntr-un mod ct mai eficient si mai uniform cu putinta drepturile autorilor asupra operelor lor literare si artistice. n art.2 alin.3 din Conventie, este enuntat principiul conform caruia operele derivate se bucura de aceeasi protectie ca si operele originale. Aceasta directiva comunitara a stat la baza legii privind dreptul de autor n Romnia, n privinta programelor pentru calculator, fiind cuprinsa aproape n totalitate n legea romna. De asemenea prin Directiva nr.969/11.03.1996, se recomanda asigurarea protectiei bazelor de date ca obiect al dreptului de autor. Protectia juridica a programelor pentru calculator n Romnia are la baza o serie de acte normative adoptate n ultimul deceniu. Principalul act normativ n acest domeniu este Legea nr. 8 din 14 martie 1996 privind dreptul de autor si drepturile conexe [LDAD96], publicata n Monitorul Oficial nr. 60 din 26 martie 1996, care face referire explicita la domeniul informaticii, considernd opere protejate programele de calculator si bazele de date. n Partea a II-a, Dispozitii speciale, Cap. IX (art. 72 - 81) sunt cuprinse norme speciale aplicabile programelor de calculator.

Obiectul dreptului de autor: potrivit art. 7 lit. a), programele de calculator constituie obiect al dreptului de autor, fiind considerate opere originale de creatie intelectuala, oricare ar fi modalitatea de creatie, modul sau forma concreta de exprimare si independent de valoarea si destinatia lor. Art. 72 din lege stabileste continutul notiunii de program pentru calculator protejat, care include: orice expresie a unui program, programele de aplicatie si sistemele de operare, exprimate n orice fel de limbaj, fie n codsursa sau cod-obiect, materialul de conceptie pregatitor, precum si manualele. Alin. 2 din acelasi articol stabileste si limitele protectiei prin dreptul de autor: ideile, procedeele, metodele de functionare, conceptele matematice si principiile care stau la baza oricarui element dintr-un program pentru calculator, inclusiv acelea care stau la baza interfetelor sale, nu sunt protejate. Dreptul de autor protejeaza numai forma de exprimare a ideilor, nu si ideile [OMPI01]. n acest sens, clonarea unei opere consta n folosirea formei n care opera originala a fost exprimata. Bazele de date reprezinta o multime centralizata de informatii organizate n scopul prelucrarii si utilizarii de catre beneficiari [ROSV01]. Potrivit art. 8 lit. b), bazele de date sunt considerate opere derivate, create plecnd de la una sau mai multe opere preexistente, fiind protejate, cu conditia de a nu prejudicia drepturile autorilor operei originale. n acelasi sens, art. 16 prevede ca autorul unei opere are dreptul patrimonial exclusiv de a autoriza traducerea, adaptarea, precum si orice alta transformare a operei sale prin care se obtine o opera derivata. Subiectul dreptului de autor: conform regulii prevazute de art. 3, autorul operei este persoana care a creat opera. Art. 4 instituie o prezumtie relativa, pna la proba contrara, n privinta calitatii de autor, relativ la persoana sub numele careia opera a fost adusa pentru prima data la cunostinta publica. Desi nu este o conditie pentru a fi protejata, aducerea operei la cunostinta publica este importanta pentru recunoasterea autorului. n art. 74 este prevazuta norma speciala, supletiva, aplicabila n lipsa unei conventii contrare, conform careia drepturile patrimoniale de autor asupra programelor pentru calcula tor, create de unul sau de mai multi angajati n exercitarea atributiilor de serviciu sau dupa instructiunile celui care angajeaza, apartin acestuia din urma. Continutul dreptului de autor: autorul unei opere beneficiaza de doua categorii de drepturi: morale si patrimoniale. Autorul unui program pentru calculator are urmatoarele drepturi morale: v dreptul de a decide daca, n ce mod si cnd va fi adusa opera la cunostinta publica; v dreptul de a pretinde recunoasterea calitatii de autor al operei;

v dreptul de a decide sub ce nume va fi adusa opera la cunostinta publica; v dreptul de a pretinde respectarea integritatii operei si de a se opune oricarei modificari, precum si oricarei atingeri aduse operei, daca prejudiciaza onoarea sau reputatia sa. Aceste drepturi nu pot face obiectul vreunei renuntari sau nstrainari. Conform art. 12, autorul unei opere are dreptul patrimonial exclusiv de a decide daca, n ce mod si cnd va fi utilizata sau exploatata opera sa, inclusiv de a consimti la utilizarea operei de catre altii. Utilizarea sau exploatarea unui program pentru calculator da nastere, conform art. 73, la dreptul patrimonial exclusiv al autorului de a realiza si de a autoriza: reproducerea permanenta sau temporara a unui program, integral sau partial, prin orice mijloc si sub orice forma, inclusiv n cazul n care reproducerea este determinata de ncarcarea, afisarea, transmiterea sau stocarea programului pe calculator; traducerea, adaptarea, aranjarea si orice alte transformari aduse unui program pentru calculator, precum si reproducerea rezultatului acestor operatiuni, fara a prejudicia drepturile persoanei care transforma programul pentru calculator; difuzarea originalului sau a copiilor unui program pentru calculator sub orice forma, inclusiv prin nchiriere. De asemenea, potrivit art. 13 lit. m), autorul are dreptul patrimonial exclusiv de a autoriza accesul public la bazele de date pe calculator, n cazul n care aceste baze de date contin sau constituie opere protejate. n art. 14 sunt definite notiunile de reproducere si difuzare, care sunt folosite de legiuitor pentru a exprima si clonarea informatica. Astfel, prin reproducere se ntelege realizarea uneia ori a mai multor copii ale unei opere, n orice forma materiala, inclusiv realizarea oricarei nregistrari sonore sau vizuale a unei opere, precum si stocarea permanenta ori temporara a acesteia cu mijloace electronice. Prin difuzare se ntelege distribuirea catre public a originalului ori a copiilor unei opere, prin vnzare, nchiriere, mprumut sau prin orice alt mod de transmitere cu titlu oneros sau cu titlu gratuit. Durata protectiei dreptului de autor: momentul nasterii dreptului de autor asupra unui program de calculator este cel al crearii acestuia. Din interpretarea sistematica a art. 24 (1) si art. 1 (2) rezulta ca, din momentul crearii programului, acesta este protejat indiferent de modul sau forma de exprimare si de aducerea la cunostinta publica.

Conform art. 30, drepturile patrimoniale asupra programelor pentru calculator dureaza tot timpul vietii autorului, iar dupa moartea acestuia se transmit prin mostenire, potrivit legislatiei civile, pe o perioada de 50 de ani. Dupa expirarea acestui termen, opera intra n domeniul public, putnd fi utilizata de oricine, fara a mai fi necesara autorizarea titularului dreptului. Experienta arata ca n domeniul software ritmul uzurii morale este destul de accentuat si situatia utilizarii libere dupa 50 de ani este extrem de rar ntlnita n practica. Cesiunea drepturilor de autor: transmisiunea drepturilor patrimoniale de autor prin contract este denumita cesiune. Conform art. 39, aceasta este exclusiva, cnd nsusi titularul dreptului de autor nu mai poate utiliza opera n modalitatile, pe termenul si pentru teritoriul convenite cu cesionarul si nici nu ma i poate transmite dreptul respectiv unei alte persoane. Caracterul exclusiv al cesiunii trebuie sa fie expres prevazut n contract. Cesiunea este neexclusiva cnd titularul dreptului de autor poate utiliza el nsusi opera si poate transmite dreptul neexclusiv si altor persoane. Cesionarul neexclusiv nu poate ceda dreptul sau unei alte persoane dect cu consimtamntul expres al cedentului. Cesiunea unuia dintre drepturile patrimoniale ale titularului dreptului de autor nu are nici un efect asupra celorlalte drepturi ale sale, daca nu s-a convenit altfel. Contractul de cesiune a drepturilor patrimoniale trebuie ncheiat numai n forma scrisa. Aceasta cerinta este impusa de lege ad probationem, pentru a se dovedi existenta si continutul contractului. Conditiile speciale, intrinseci si de validitate, care trebuie sa faca parte din structura contractului de cesiune a drepturilor patrimoniale de autor sunt prevazute de art.41 si sunt urmatoarele: drepturile patrimoniale transmise, modalitatile de exploatare, durata si ntinderea cesiunii, precum si remuneratia titularului dreptului de autor. Lipsa oricareia dintre aceste clauze este sanctionata cu nulitatea relativa, orice parte interesata avnd posibilitatea sa ceara si sa obtina anularea contractului de cesiune. n cazul programelor de calculator, cesiunea este neexclusiva, art.75. Norma din acest text legal este supletiva, partile, prin conventia dintre ele, avnd posibilitatea sa stabileasca n mod expres alte clauze. n art. 63 este reglementat contractul de nchiriere a unei opere, aplicabil inclusiv programelor pentru calculator, prin care autorul se angajeaza sa permita folosinta, pe timp determinat, cel putin a unui exemplar al operei sale, n original sau n copie. Cesionarul dreptului de nchiriere se angajeaza sa plateasca o remuneratie autorului pe perioada ct foloseste acel exemplar al operei. Contractul de nchiriere a unei opere este supus dispozitiilor de drept comun privind contractul de locatiune.

Autorul pastreaza dreptul de autor asupra operei nchiriate, cu exceptia dreptului de difuzare, daca nu s-a convenit altfel. Daca autorul nu mai pastreaza dreptul de difuzare a programului de calculator, rezulta ca nici nu l mai poate transmite altei persoane. Deci, n privinta dreptului de difuzare, cont ractul de nchiriere a unei opere este o cesiune exclusiva limitata. Pentru celelalte drepturi patrimoniale, contractul de nchiriere este o cesiune neexclusiva. Pentru transmiterea prin contract a drepturilor patrimoniale de autor, legea cadru [LDAD96] foloseste notiunea de licenta izolat, n art. 130, preciznd ca organismele de gestiune colectiva au obligatia de a acorda utilizatorilor, prin contract, n schimbul unei remuneratii, autorizatii neexclusive de utilizare a operelor sau prestatiilor titularilor drepturilor, sub forma de licenta neexclusiva, fara a arata expres ntelesul aceste notiuni. O.G. nr. 124/2000, aprobata si modificata prin Legea nr. 213/2002, defineste n art. 2 lit. a), licenta programului pentru calculator ca fiind acordul scris al titularului dreptului de autor privind cesiunea unor drepturi catre utilizatorul programului si care nsoteste programul. n consecinta, exista doua acceptiuni ale notiunii de licenta: n primul rnd de contract prin care se transmit drepturi patrimoniale de autor, iar n al doilea rnd, de autorizare a autorului pentru ca o persoana sa utilizeze sau sa exploateze opera sa. Pentru o buna ntelegere a semnificatiei notiunii, aceasta trebuie analizata n comparatie cu ntelesul avut n domeniul proprietatii industriale (brevete, marci). Astfel, transmiterea prin contract a drepturilor de proprietate industriala se face sub forma de cesiune sau licenta. Cesiunea este actul juridic prin care se transmite dreptul de proprietate industriala, si implicit dreptul de exploatare exclusiva asupra brevetului sau marcii de la titular catre o alta persoana. Spre deosebire, licenta este actul juridic prin care se transmite, n ntregime sau n anumite limite, dreptul de folosinta asupra obiectului protectiei, de la titular catre o alta persoana. n domeniul dreptului de autor, transmiterea drepturilor patrimoniale este denumita generic cesiune. Dupa cum am aratat mai sus, cesiunea este exclusiva echivalentul unei cesiuni n domeniul proprietatii industriale, sau neexclusiva echivalentul unei licente. Normele care reglementeaza cesiunea, art. 39 si urmatoarele [LDAD96], sunt dispozitii comune, generale. n mod special, este reglementat contractul de nchiriere a unei opere, care reprezinta o cesiune exclusiva limitata n privinta dreptului de difuzare, si o cesiune neexclusiva, pentru celelalte drepturi patrimoniale. Contractul de licenta n domeniul dreptului de autor este o varianta de specie a cesiunii neexclusive. Un astfel de contract de licenta este contractul numit de lege n art. 75 de utilizare a unui program pentru calculator.

Prin contractul de licenta se stabilesc si conditiile de utilizare/exploatare a operei protejate, iar persoana care primeste licenta este obligata sa utilizeze opera numai n conditiile si limitele prevazute n contract. Dispozitii speciale aplicabile protectiei programelor pentru calculator: titlul I, Cap. VI din lege [LDAD96] privind limitele exercitarii dreptului de autor reglementeaza n art. 33-34, utilizarile permise ale unei opere, fara a mai fi necesar consimtamntul autorului, exceptii ce sunt cunoscute n literatura de specialitate sub denumirea fair use. Conform art. 81 [LDAD96], dispozitiile Cap. VI din Titlul I al legii, privind limitele exercitarii dreptului de autor, nu se aplica programelor pentru calculator. Rezulta deci ca nici art. 34 privind dreptul la copia privata, adica posibilitatea reproducerii unei opere fara consimtamntul autorului, pentru uzul personal si pentru cercul normal al unei familii, nu se aplica n cazul programelor pentru calculator. Este nsa permis, potrivit art. 77, ca fara autorizarea autorului, utilizatorul autorizat al unui program sa faca o copie de arhiva sau de siguranta, n masura n care este necesara pentru utilizarea programului. Raspunderea juridica pentru ncalcarea drepturilor de autor n domeniul programelor pentru calculator: ncalcarea drepturilor recunoscute si garantate prin prezenta lege atrage raspunderea civila, contraventionala sau penala. Raspunderea civila este consecinta exercitarii de catre titularii drepturilor ncalcate a unei actiuni civile la instantele judecatoresti, prin care se solicita recunoasterea drepturilor lor, constatarea ncalcarii acestora si repararea prejudiciului cauzat prin fapta ilicita. Raspunderea civila este delictuala, ntemeiata pe dispozitiile art. 998-999 Cod civil, sau contractuala, ntemeiata pe contractul de cesiune ncheiat ntre titularul dreptului de autor si utilizatorii de software. De asemenea, conform art. 139 [LDAD96], titularii drepturilor ncalcate pot cere instantei de judecata sa dispuna aplicarea oricareia dintre urmatoarele masuri: remiterea, pentru acoperirea prejudiciilor suferite, a ncasarilor realizate prin actul ilicit sau, daca prejudiciile nu pot fi reparate n acest mod, remiterea bunurilor rezultate din fapta ilicita, n vederea valorificarii acestora, pna la acoperirea integrala a prejudiciilor cauzate; distrugerea echipamentelor si a mijloacelor aflate n proprietatea faptuitorului, a caror destinatie unica sau principala a fost aceea de producere a actului ilicit; scoaterea din circuitul comercial prin confiscarea si distrugerea cpiilor efectuate ilegal;

publicarea n mijloacele de comunicare n masa a hotarrii instantei de judecata, pe cheltuiala celui care a savrsit fapta. Raspunderea penala intervine ca urmare a ncalcarii normei juridice penale, a savrsirii unei infractiuni. Astfel, potrivit art. 140, constituie infractiune si se pedepseste cu nchisoare de la o luna la 2 ani sau cu amenda de la 200.000 lei la 3 milioane lei, daca nu constituie o infractiune mai grava, fapta persoanei care, fara a avea autorizarea sau, dupa caz, consimtamntul titularului drepturilor recunoscute prin lege: aduce o opera la cunostinta publica (lit. a); permite accesul public la bazele de date pe calculator, care contin sau constituie opere protejate (lit. c); traduce, publica n culegeri, adapteaza sau transforma o opera, pentru a obtine o opera derivata (lit. d). Potrivit art. 141, constituie infractiune si se pedepseste cu nchisoare de la 3 luni la 5 ani sau cu amenda de la 500.000 lei la 10 milioane lei fapta persoanei care si nsuseste, fara drept, calitatea de autor al unei opere sau fapta persoanei care aduce la cunostinta publica o opera sub un alt nume dect acela decis de autor, daca fapta nu constituie o infractiune mai grava. Potrivit art. 142, constituie infractiune si se pedepseste cu nchisoare de la 3 luni la 3 ani sau cu amenda de la 700.000 lei la 7 milioane lei, daca nu constituie o infractiune mai grava, fapta persoanei care, fara a avea consimtamntul titularului drepturilor recunoscute prin lege: reproduce integral sau partial o opera (lit. a); difuzeaza o opera (lit. b); importa, n vederea comercializarii pe teritoriul Romniei, cpii de pe o opera (lit.c). Potrivit art. 143, constituie infractiune si se pedepseste cu nchisoare de la 3 luni la 2 ani sau cu amenda de la 500.000 lei la 5 milioane lei, daca nu constituie o infractiune mai grava, fapta persoanei care pune la dispozitia publicului prin vnzare sau prin orice alt mod de transmitere cu titlu oneros ori cu titlu gratuit mijloace tehnice destinate stergerii neautorizate sau neutralizarii dispozitivelor tehnice care protejeaza programul pentru calculator (lit. a). n cazul infractiunilor prevazute la art. 140, 141 si 142 lit. a), c), actiunea penala se pune n miscare la plngerea prealabila a persoanei vatamate n sensul prezentei legi. Cel care savrseste o infractiune dintre

cele enumerate anterior nu poate fi tras la raspundere penala dect daca persoana vatamata si manifesta vointa n acest sens. Potrivit legii, transformarea unui program pentru calculator reprezinta o opera derivata. Avnd n vedere specificul obiectului protectiei n domeniul informaticii, o transformare superficiala a unui program, fisier nu este totdeauna o opera derivata n ntelesul legii, adica o opera de perfectionare, corectare a erorilor, de dezvoltare a programului originar. Astfel, transformari de genul: clonarea sub forma conversiei extensiei fisierului, inclusiv prin compresia de date, clonarea prin translatarea fisierelor sursa dintr-un limbaj n altul sau clonarea structurii interfetelor, sunt efectuate de cel care cloneaza, uneori, pentru a ascunde, sub aparenta unei transformari, o simpla copiere. Interesul practic al discutiei este ca n functie de calificarea activitatii de transformare a programului pentru calculator, ca opera derivata sau ca reproducere, se face ncadrarea juridica a unei ncalcari a dreptului de autor, n infractiunea prevazuta de art. 140 lit. d), sau n cea prevazuta de art. 142 lit. a) din lege. Pentru a solutiona aceasta problema trebuie avuta n vedere intentia celui ce cloneaza, de a ascunde o simpla copiere sau de a realiza o opera derivata. Daca se dovedeste intentia faptuitorului de a ascunde o simpla copiere, prin clonare nu s-a obtinut o opera derivata, ntruct nu este caracterizata prin originalitate si creativitate. n acest caz, clonarea a mbracat forma reproducerii si este sanctionata ca atare potrivit art. 142 lit. a). Se observa astfel, ca reproducerea se realizeaza, ca exceptie, si prin alte forme de clonare dect copierea propriu- zisa. Raspunderea contraventionala potrivit O.G. 124/2000 aprobata si modificata prin Legea 213/2002 [ORGV00], pentru completarea cadrului juridic privind dreptul de autor si drepturile conexe, prin adoptarea de masuri pentru combaterea pirateriei n domeniile audio si video, precum si a programelor pentru calculator, este reglementata n art. 8. n art. 1 este aratat scopul actului normativ: stabilirea unor masuri n vederea combaterii producerii, distribuirii sau comercializarii neautorizate a programelor pentru calculator. Art. 2 lit. c) si f) defineste termenii de comercializare sau nchiriere neautorizata, respectiv producere si reproducere neautorizata, referindu-se la ncalcarea obligatiilor prevazute de prezenta ordonanta. Spre deosebire de legea cadru privind dreptul de autor nr. 8/1996, conform cu care prin comercializare, nchiriere sau reproducere neautorizata se ntelege efectuarea acestor activitati fara consimtamntul autorului operei, n ordonanta [ORGV00] notiunea neautorizat are un nteles diferit, iar acest fapt trebuie avut n vedere pentru interpretarea si aplicarea corecta a dispozitiilor privind raspunderea contraventionala.

Potrivit art. 8, constituie contraventii urmatoarele fapte, daca nu sunt savrsite n astfel de conditii nct sa fie considerate, potrivit legii penale, infractiuni, si se sanctioneaza dupa cum urmeaza: v detinerea de programe de calculator, coperte de programe de calculator, contrafacute sau pirat, n spatiile comerciale, n anexele acestora si n mijloacele de transport utilizate la transportul sau depozitarea produselor susmentionate, cu amenda de la 20.000.000 lei la 100.000.000 lei si confiscarea programe lor pentru calculator si a copertelor, lit. a; v distribuirea, comercializarea sau nchiriarea neautorizata a programelor pentru calculator cu amenda de la 25.000.000 la 250.000.000 lei, lit. b; v detinerea de programe de calculator sau coperte, fara acte justificative, ori de aparatura ce ar permite realizarea programelor de calculator sau a copertelor, n scopul producerii sau reproducerii neautorizate a acestora, cu amenda de la 30.000.000 la 150.000.000 lei si confiscarea suporturilor, materialelor si a aparatelor, lit. c; v nendeplinirea obligatiilor prevazute la art.3 alin.1, cu amenda de la 20.000.000 la 40.000.000 lei, lit. f. Aceste obligatii se refera la comunicarea catre Oficiul Romn pentru Drepturile de Autor a urmatoarelor: - acordul titularului dreptului de autor pentru activitatile de distribuire, comercializare sau nchiriere, si informatii referitoare la modul de acordare a licentei si modelul licentei acordate utilizatorilor de programe pentru calculator. Suporturile, materialele sau copertele confiscate potrivit art. 8 alin. 1-3 vor fi distruse, dupa data expirarii termenului legal de atacare a procesului- verbal de constatare a contraventiei ori dupa data ramnerii definitive a hotarrii judecatoresti prin care s-a respins plngerea mpotriva procesului- verbal de constatare a contraventiei, dupa caz.

7.2 Cai de crestere a eficientei n combaterea clonarii informatice neautorizate Amploarea realizarii neutorizate a clonelor informatice are ca efect direct stagnarea sau diminuarea productie i de software original. Progresul tehnicii a condus la crearea unor mijloace cu ajutorul carora se pot produce cu usurinta cpii ilegale ale unei opere originale. Cel ce cloneaza nu suporta costurile unei investitii n producerea operei originale, astfel nct clonele neautorizate sunt vndute la preturi mici, subminnd posibilitatea autorului si a investitorului original de a obtine recompensa morala si economica justa pentru munca si investitia lor [OMPI01]. Att n literatura de specialitate ct si n le gislatie, se foloseste notiunea de piraterie, ca fiind copierea neautorizata a operei protejate prin drept de autor, n scopuri comerciale, ca si comercializarea neautorizata de cpii de pe o opera [OMPI01]. Acest termen este folosit de legiuitor n O.G. nr. 124/2000, aprobata si modificata prin Legea nr. 213/2002, prin care se stabilesc masuri pentru combaterea pirateriei n domeniul audio si video, precum si a programelor pentru calculator. Se observa ca notiunea de piraterie este folosita ntr- un nteles larg, acoperind si alte domenii de protectie prin dreptul de autor dect cel al programelor pentru calculator. De asemenea, Legea nr. 202/2000, privind unele masuri pentru asigurarea respectarii drepturilor de proprietate intelectuala n cadrul operatiunilor de vamuire, n art. 1, pct. 14, defineste notiunea de marfuri pirat : toate copiile fabricate fara consimtamntul titularului dreptului sau al persoanei legal autorizate de acesta n tara de producere si care sunt executate, direct sau indirect, dupa un produs purtator al dreptului de autor, daca realizarea de astfel de copii constituie o ncalcare a dreptului de proprietate intelectuala respectiv, n baza legislatiei tarii de import. Avnd n vedere ca fenomenul clonarii neautorizate prejudiciaza interesele economice ale titularilor drepturilor de autor, dar este si n detrimentul societatii, pentru ca descurajeaza interesul creatorilor de a produce opere de succes si pentru ca deterioreaza renumele international al statului ce permite dezvoltarea acestui fenomen, se impune luarea unor masuri care sa-l limiteze: se impune cunoasterea mediului romnesc pentru a identifica motivatia orientarii spre utilizarea neautorizata a programelor pentru calculator si bazelor de date clonate, si pentru a identifica categoriile de persoane care cloneaza si care comercializeaza neautorizat clone. una dintre cauzele clonarii neautorizate este caracterul prohibitiv al achizitionarii de licente coroborat cu puterea de cumparare

scazuta a populatiei. Prin recunoasterea unor categorii distincte de utilizatori, si respectiv prin adoptarea unor preturi diferentiate ale licentelor se creaza premisele utilizarii legale de programe pentru calculator si baze de date. prin includerea n pretul calculatoarelor la vnzare si a pretului unor licente de componente software se asigura utilizarea legala pe calculatoare de software minimal. Astfel sunt licentele OEM, programul fiind livrat mpreuna cu un calculator nou sau componente hardware. introducerea sistemului de plata n rate, crearea de facilitati pentru cei care rennoiesc licente si diferentierea pretului n functie de numarul de licente achizitionate, n sensul invers proportional cu numarul de licente. livrarea gratuita pentru o perioada limitata de timp (o luna) a produsului n vederea testarii, dupa care, n cazul ca se doreste utilizarea n continuare, trebuie achizitionata licenta. acordarea de licente educationale institutiilor de nvatamnt care vor avea software licentiat la nivel maximal. De asemenea, distribuirea la pretur i modice sau n sistem de licenta gratuita a software de utilitate publica precum: software pentru evidenta situatiilor scolare, pentru gestionarea bibliotecilor, pentru bilantul contabil, pentru posta electronica, genereaza efecte secundare care conduc la recuperarea costurilor. impunerea obligatiei n sarcina agentilor economici de a evidentia n contabilitate, ntr-un registru special, asemanator inventarului mijloacelor fixe, software utilizat de ntreprindere. crearea Registrului utilizatorilor de software permite o evidenta a celor care utilizeaza legal pe categorii de produse si directionarea controalelor spre agenti economici care nu poseda licente. crearea Registrului programelor pentru calculator ofera un instrument sigur autorilor de programe recunoscute oficial ca originale si protejate prin dreptul de autor de a-si asigura opozabilitatea fata de utilizatorii acestor programe, care sunt obligati sa achizitioneze licente pentru programele nregistrate. Prin O.G. nr. 124/2000 a fost nfiintat Registrul programelor pentru calculator, administrat de Oficiul Romn pentru Drepturile de Autor. n art. 3 din actul normativ susmentionat, sunt prevazute anumite documente care vor fi nscrise n Registrul programelor pentru calculator: - acordul titularului dreptului de autor pentru activitatile de distribuire, comercializare sau nchiriere, si - informatii referitoare la modul de acordare a

licentei si modelul licentei acordate utilizatorilor de programe pentru calculator. Scopul nfiintarii acestui Registru a fost acela de a crea o baza de date cu privire la titularii care doresc sa se nscrie, utila O.R.D.A., altor autoritati sau persoane interesate. Prin Decizia O.R.D.A. nr.5 din 30 octombrie 2000, s-au adoptat Normele metodologice privind administrarea Registrului programelor pentru calculator. pe baza experientei acumulate, folosind si aquis- ul comunitar n domeniu, se procedeaza la perfectionarea legislatiei prin includerea de masuri ct mai eficiente: sanctiuni penale, care trebuie sa aiba att o functie represiva ct si una compensatorie, sa asigure posibilitati reale si eficiente titularilor drepturilor de autor de a obtine compensatii pentru prejudiciul material ct si moral cauzat prin ncalcarea drepturilor. Uneori este dificila stabilirea cu exactitate a cuantumului despagubirilor, astfel ca sunt necesare prevederi legale speciale care sa stabileasca criterii si modele de evaluare a unei compensatii echitabile. Alte masuri, de natura civila sau administrativa, privesc: confiscarea si eventual, distrugerea cpiilor software neautorizate si a instrumentelor folosite la realizarea lor, sigilarea locurilor unde se desfasoara activitatea de clonare neautorizata, ordonarea ncetarii activitatii de clonare prin care se ncalca drepturi de autor [OMPI01]. este evidenta necesitatea implementarii prevederilor legale n domeniu, prin crearea de unitati specializate n cadrul politiei, n ministerele de resort si n cadrul organelor vamale, unitati care sa efectueze mai eficient controale la persoane fizice si juridice pentru a identifica eventuale clone neautorizate software si de baze de date. Astfel, prin Legea nr. 202/2000 au fost initiate unele masuri pentru asigurarea respectarii drepturilor de proprietate intelectuala n cadrul operatiunilor de vamuire, una dintre masurile ce se ia de organele vamale, la cerere sau din oficiu, fiind suspendarea operatiunilor de vamuire si retinerea marfurilor suspectate a aduce atingere unui drept de proprietate intelectuala. De aseme nea, prin art. 9, alin. 2 din O.G. 142/2000 s-a prevazut posibilitatea implicarii reprezentantilor autorizati ai titularilor drepturilor de autor, de a nsoti organele abilitate ale statului la constatarea si sanctionarea contraventiilor prevazute de acest act normativ.

se impune definirea unui cod de etica pentru dezvoltatorii de software si baze de date si un cod de etica pentru utilizatorii de produse informatice. trebuie publicate facilitatile oferite pentru ca utilizatorii, avnd cunostinta, sa beneficieze de acestea si sa nu procedeze la achizitionarea la achizitionarea de clone n conditii de risc, mai ales atunci cnd costurile licentelor sunt mai reduse. organismele care gestioneaza drepturile de autor, O.R.D.A., prin masuri concrete n institutii de nvatamnt, sa culturalizeze cu privire la faptul ca programele de calculator si bazele de date sunt opere protejate prin dreptul de autor, consecintele ncalcarii acestor drepturi fiind inclusiv de natura penala. crearea de experti n domeniul juridic si al informaticii care sa analizeze software si baze de date pentru identificarea profesionala a clonelor. Acesti experti vor facilita rezolvarea unor cauze deduse organelor executive sau de justitie. chiar producatorii de software si baze de date, titularii drepturilor de autor, folosesc diferite tipuri de protectie mpotriva copierii neautorizate, cum sunt: programe de protectie, coduri, aplicarea de holograme pe suportul pe care este stocat programul pentru calculator, certificatul de autenticitate, dispozitive hardware. pentru eficienta combaterii clonarii neautorizate, trebuie mai nti ca toate institutiile publice sa aiba toate posturile de lucru numai cu software licentiat, oferind astfel un exemplu utilizatorilor privati. Retelele de calculatoare vor fi livrate numai cu software licentiat la nivel maximal, pentru a nlatura orice posibilitate de utilizare fara licenta.

7.3 Codul etic al programatorului n identifica: cadrul desfasurarii activitatilor din domeniul software se elaboratorii de produs e software; utilizatorii de produse program; comerciantii de software si de servicii informatice.

Diversitatea persoanelor care si desfasoara activitatea, direct sau indirect, n domenii care utilizeaza calculatoare impune stabilirea unor

reguli de comportament unanim acceptate care sa fundamenteze existenta unui climat propice rezolvarii de probleme cu ajutorul tehnicii de calcul. Existenta retelelor de calculatoare aduce noi aspecte ce trebuie luate n considerare privind limitele pe care sistemele de protectie le genereaza. Oricarui sistem de protectie i se construiesc la intervale scurte de timp modalitati de acces neautorizat cu efecte negative asupra ntregului proces de informatizare. Elaborarea codurilor de etica pentru diferitele tipologii de personal care si desfasoara activitatea n sfera informaticii ia in considerare particularitatile specifice ale acesteia. Principiile etice care trebuie sa stea la baza activitatii desfasurate de dezvoltatorii de software au n vedere urmatoarele aspecte: 1. proiectarea si/sau implementarea sistemelor informatice trebuie sa asigure utilizarea responsabila a produselor informatice, care raspund nevoilor sociale, nu afecteaza mediul natural si nu au efecte daunatoare asupra sanatatii si bunastarii; 2. evitarea producerii de efecte negative utilizatorilor, publicului n general, angajatorilor si angajatilor; efectele negative au n vedere pierderi nedorite de informatii, pierderi sau distrugeri ale proprietatii, resurselor umane si financiare, programatorul fiind obligat de a raporta orice suspiciune a sistemului care ar conduce la pagube serioase; 3. dezvaluirea limitelor si problemelor sistemului, fara a face declaratii false sau nselatoare privind proiectarea si realizarea sa, precum si calificarea personalului care sa conduca la conflicte de interese; 4. discriminarea de orice natura nu este acceptata, promovndu-se valorile egalitatii, tolerantei, respectului fata de altii date de utilizarea tehnologiilor informatice; 5. respectarea drepturilor de proprietate asupra produselor software; 6. obligativitatea protejarii proprietatii intelectuale; 7. respectarea intimitatii celorlalti; tehnologia informatica si a comunicatiilor permit colectarea si schimbul de informatii personale, crescnd astfel posibilitatea violarii intimitatii indivizilor si grupurilor de persoane; 8. respectarea confidentialitatii informatiilor atunci cnd se face n mod explicit promisiunea respectarii acesteia sau cnd diverse informatii legate de ndeplinirea datoriei devin accesibile; 9. realizarea unei calitati nalte de calitate, eficienta si prestanta n activitatile desfasurate si produsele obtinute;

10. acumularea si mentinerea competentei profesionale la un nivel ct mai ridicat prin: studiu individual; participare la seminarii, conferinte si cursuri; implicare n organizatii profesionale. 11. cunoasterea si respectarea legilor locale, nationale si internationale privind activitatea profesionala; violarea unei legi este etica atunci cnd aceasta este nepotrivita cu principiile etice fundamentale sau contravine unei legi considerata ca fiind mai importanta, iar persoana respectiva este responsabila de nerespectarea legii; 12. criticarea n mod profesional a calitatii activitatii desfasurate; fiecare persoana trebuie sa caute si sa foloseasca criticile pertinente si sa furnizeze critici asupra muncii altora; 13. furnizarea unor evaluari complete si detaliate a sistemelor si a impactului lor, lund n considerare posibilele riscuri; 14. onorarea contractelor, ntelegerilor si responsabilitatilor care decurg din acestea; 15. atitudine pozitiva si constructiva fata de beneficiarii informaticii si a consecintelor ei; programatorii au responsabilitatea mpartasirii cunostintelor tehnice cu publicul, ncurajnd astfel ntelegerea informaticii si a impactului acesteia asupra societatii; 16. accesarea resurselor de calcul si a comunicatiei doar prin autorizare; indivizii si organizatiile au dreptul de a restrictiona accesul la sistemele att timp ct nu este ncalcat principiul discriminarii;

7.4 Codul etic al utilizatorului Utilizatorii sunt persoane fizice si juridice care folosesc hardware, software si beneficiaza de servicii informatice. Utilizatorii de informatica desfasoara activitati n conformitate cu principiile etice daca: 1. folosesc software, hardware si alte resurse obtinute prin mijloace legale; 2. respecta integral conditiile definite n contractele ncheiate cu proprietarii aplicatiilor sau resurselor informatice; 3. folosesc produsul software potrivit destinatiei pentru care a fost realizat;

4. nu folosesc unele facilitati puse la dispozitie de respectivul produs pentru a evita masurile de securitate sau pentru a sparge codurile altui produs informatic; 5. si procura prin metode legale alte resurse informatice care sunt necesare utilizarii produsului, conform specificatiilor distribuitorului; 6. gestioneaza n limitele prevazute de lege numarul de cpii pe care le fac pentru arhivare si rencarcare n cazul distrugerii variantei initiale; 7. nu ies n afara limitelor permise de lege prin vnzarea, nchirierea sau mprumutul produselor software contractate; 8. nu desfasoara activitati menite spargerii codului sau evitarii masurilor de securitate ale produselor informatice; 9. precizeaza de fiecare data produsul informatic cu ajutorul caruia au obtinut rezultatele finale pe care le prezinta n carti, simpozioane, analize sau sinteze; 10. nu modifica n afara limitelor stabilite de comun acord cu cel care i ofera produsul respectiv, codul sursa al acestuia; Conditiile legale trebuie respectate de toti utilizatorii de software, indiferent daca ceea ce folosesc este soft ware de baza, software de aplicatii sau este software destinat utilizarii pe un singur calculator sau este destinat utilizarii n retele sau pe Internet. n afara acestor reguli care trebuie respectate si care decurg din legislatia aflata n vigoare, toti utilizatorii de software respecta si un set de reguli etice n ceea ce priveste utilizarea software: folosirea produsului numai n scopurile pentru care acesta a fost creat, prezentate n documentatia aferenta; raportarea distribuitorului sau elaboratorului produsului respectiv neajunsurile produsului informatic; Acestea reprezinta doar un set de reguli minimale care trebuie respectate de toti utilizatorii de produse sau servicii informatice. Diferitelor categorii de utilizatori li se mai adauga la acestea reguli specifice categoriei n care se ncadreaza. Tehnologia care sta la baza Internetului a fost dezvoltata de catre Departamentul de Aparare a Statelor Unite ale Americii pentru a facilita comunicatiile ntre calculatoare si retelele de calculatoare din domeniul militar si laboratoarele din cadrul universitatilor.

Exista o serie de aspecte cheie privind structura organizationala a retelei Internet [WILL97]: reteaua a fost proiectata pentru a fi descentralizata, capabila de a transmite rapid informatii, fara implicarea si controlul direct a factorului uman, avnd abilitatea automata de a redirija informatia daca una sau mai multe legaturi devin indisponibile. Acest sistem redundant de calculatoare interconectate a fost proiectat pentru a permite continuarea comunicatiilor, chiar daca parti ale retelei au fost afectate. nici o entitate organizationala nu administreaza reteaua Internet. Internetul exista si functioneaza ca urmare a faptului ca sute si mii de operatori n informatica si retele de calculatoare independente au decis sa utilizeze protocoale comune de transfer a datelor pentru interschimbul de informatie cu alte calculatoare. Nu exista un loc de stocare centralizat, punct de control sau canal de comunicatii si nu este fezabil din punct de vedere tehnic pentru ca o singura entitate sa controleze toate informatiile transmise n Internet. Asadar, Internetul este un nou mediu, unic, al comunicatiei umane universale. Desi cadrul legislativ national, precum si tratatele internationale continua sa aiba un rol n activitatile desfasurate pe Internet, metodele traditionale de guvernare nu vor avea un succes deplin. n cadrul Internetului se creeaza o anarhie electronica. Exista doua definitii diferite privind anarhia: 1. o societate utopica, guvernata de indivizi sau grupuri de indivizi; 2. dezordine politica si sociala, confuzie si haos. Internetul este o noua frontiera care ofera un anumit gen de libertate care nu este gasita n lumea reala. Este un mediu n care exista nu numai o mai mare libertate, dar si unul n care legile, regulile si standardele sociale nu sunt foarte clar delimitate sau att de bine impuse. Exista doua curente de opinii cu privire la modul de utilizare a Internetului: v mentinerea unei libertati totale si dreptul de utilizare a retelei asa cum decide fiecare; v identificarea metodelor, cailor de restrictionare a acestei libertati pe care Internetul o ofera, prin elaborarea si aplicarea unor reguli si legi.

Nici una din aceste abordari nu ofera att de mult pe ct promit. Succesul operatiunilor desfasurate pe Internet depinde de cei care au o filosofie diferita, care consta n recunoasterea faptului ca libertatea individuala trebuie sa fie nsotita de responsabilitate individuala, respect pentru altii si interes pentru binele comun. Atunci cnd doua persoane comunica prin intermediul calculatorului tot ceea ce ele vad sunt cuvintele tiparite pe ecran. Expresiile faciale, gesturile, tonul vocii sunt elemente care nu sunt percepute ntr- un astfel tip de comunicare. Regula de aur n mediul virtual este la fel de importanta ca si n lumea reala: o persoana trebuie sa- i trateze pe ceilalti n acelasi mod n care doreste sa fie tratata. Persoanele care folosesc Internetul nu sunt judecate n functie de nfatisarea fizica, rasa, culoarea parului sau vrsta, ci sunt reprezentate de ceea ce scriu. Oamenii primesc oferte de joburi, oportunitati privind efectuarea de diverse studii, contracte etc., n functie de imaginea lor pe Internet. Caracteristicile pe care trebuie sa le ndeplineasca un mesaj de email sau trimiterea unui mesaj la un grup de discutii [WILL97]: cunoasterea domeniului abordat si asigurarea corectitudinii mesajului; asigurarea claritatii si logicii mesajului; prezentarea celor mai importante informatii n primele fraze; paragrafe scurte si la obiect; utilizarea de simboluri si culori pentru a sublinia un aspect discutat sau de a transmite un sentiment; utilizarea unui limbaj direct si simplu; acordarea unei griji mai mari folosirii sarcasmului si a umorului, deoarece nu are loc o comunicare directa a persoanelor si exista riscul unei interpretari gresite; utilizarea unui stil si ton apropiat mediului; asigurarea politetii, neutilizndu-se un limbaj agresiv si cu conotatii sexuale; precizarea tuturor referintelor si surselor de informare utilizate; demonstrarea sensibilitatii culturale n mesaj; asigurarea corectitudinii gramaticale; precizarea permanenta a identitatii; asigurarea ca mesajul este trimis persoanei sau grupului de persoane la care trebuie sa ajunga.

Unul din drepturile cele mai importante al oamenilor priveste intimitatea acestora. Din pacate, usurinta cu care informatiile personale sunt culese, stocate si facute public, folosind tehnologia, afecteaza dreptul la intimitate. Sunt cteva metode de cultivare a aprecierii si respectului pentru intimitate n activitatile pe Internet: v nefurnizarea de informatii privind detaliile personale despre viata si situatia altor persoane ntr- un mesaj public sau privat; v tratarea cu respect a ceea ce spun diferite persoane n mesajele lor private; v sa nu se citeasca mesajele altor persoane sau sa se invadeze spatiul de stocare personal a acestora; v atentie deosebita acordata informatiilor private ale companiei, numite si secrete comerciale. O latura aparte n comunicarea pe Internet o constituie discutiile n contradictoriu, n care apar puncte de vedere divergente privind o anumita problema. Participarea la astfel de discutii trebuie sa aiba n vedere urmatoarele aspecte: trimiterea mesajului provocator n locul n care trebuie; neangajarea n atacuri la persoana, care atrage pierderea respectului prietenilor si a colegilor; neimplicare frecventa n astfel de discutii; mesajul incitator trebuie sa fie scurt si la obiect; raspunsul cu mnie la un atac la persoana este o mare pierdere de timp; este mai potrivit un raspuns motivat, cu o anumita tenta de umor. Greselile sunt componente normale n procesul de nvatare si este de asteptat ca ele sa se produca. Cteva modalitati n care un ncepator este ajutat atunci cnd face o greseala: trecerea cu vederea a greselii si adresarea ntr-o maniera corespunzatoare catre ncepator; trimiterea unui mesaj politicos persoanei respective, punctnd asupra greselii si sugernd actiunea potrivita. Declaratiile imorale au o mare tendinta sa gaseasca o cale catre locul n care se doreste cel mai putin sa ajunga: cadre didactice, angajatori, administratori de sistem, parinti etc. Un mesaj n format electronic este cu usurinta dirijat catre alte destinatii. Nu exista nici un control cu privire la locul n care un mesaj poate ajunge. Redirectarea unui mesaj de catre o anumita persoana, fara acordul

emitentului, constituie o ncalcare a dreptului la intimitate. Stergerea unui mesaj din casuta postala nu are nici un efect daca el este prezent pe un mediu de stocare sau n casuta postala a altei persoane. Criptarea mesajului transmis previne citirea lui de catre persoane neautorizate, dar siguranta absoluta cu privire la pastrarea confidentialitatii apare doar daca emitentul cunoaste continutul mesajului si nu-l transmite nimanui. Fisierele cu date personale sunt accesibile oricarei persoane care are privilegii de sistem sau sunt invadate de un hacker daca sistemul pe care sunt stocate nu este unul sigur. Concluzia este ca nu trebuie inclusa ntr-un e- mail informatia care nu se doreste a fi facuta publica. Regulile care guverneaza utilizarea unui cont Internet sunt denumite n mod generic politici de utilizare. Furnizorii comerciali tind sa aiba cele mai putine restrictii privind utilizarea sistemului lor. Politicile variaza de la furnizor la altul. Furnizorii stabilesc orice politicile pe care le doresc si aleg serviciile de care beneficiaza un posesor de cont Internet. Crearea si utilizarea unui cont Internet ntr-un sistem educational presupune politici mai restrictive. Institutia educationala limiteaza folosirea unui cont la activitatile care au un scop educational. Companiile, agentiile guvernamentale nu au nici o obligatie de a folosi propriile resurse pentru a oferi un serviciu de acces public angajatilor sai. Cheia transmisiunii informatiilor pe Internet este de a mentine un bun raport semnal-zgomot. Semnalul se refera la datele viabile care sunt transmise, iar zgomotul este ceea ce opreste ca datele sa fie transmise, denaturndu- le. Transmiterea unui mesaj electronic ia din timpul de emisie a altui calculator. Emitentul are responsabilitatea ca ceea ce se transmite sa nu ocupe inutil cuante de timp alocata. Internetul functioneaza pe baza unor mesaje suprancarcate, adica exista mai multe surse care doresc sa emita date n acelasi timp. Astfel, se impune luarea unor masuri care sa nu afecteze n mod inutil transmisiunea datelor n retea [WILL97]: trimiterea de mesaje scurte si al obiect; raspunsul la un mesaj anterior trebuie sa contine suficient text din primul mesaj pentru a sti cui i se raspunde; neincluderea n mesajul raspuns a ntregului text original, iar corpul mesajului sa fie nesemnificativ;

adresarea unei ntrebari catre un grup trebuie sa precizeze modul n care se doreste ca raspunsul sa fie obtinut: personal sau n cadrul grupului; dupa primirea raspunsului, se trimite un rezumat la grupul de discutii; netrimiterea unor articole lungi la un grup; limitarea semnaturii la patru sau cinci linii, la sfrsitul mesajului; netrimiterea unor ntrebari stupide si efectuarea de cercetari cu privire la domeniul abordat, atunci cnd un expert este cel care ofera raspunsurile.

Exista limite ale resurselor din reteaua Internet. Internetul este o retea de retele care permit traficul de date de-a lungul lor. Un trafic mai mare determina retele congestionate pna cnd sistemul cade din punctul de vedere al functionalitatii. Un cont Internet are att limite locale, ct si limite privind mediul de transmisie. Limitele locale au n vedere marimea traficului pe care furnizorul l manipuleaza, precum si spatiul de stocare a sistemului. Limitele retelei vizeaza caracteristicile de trafic existente la nivelul ntregului Internet. Reguli ce decurg din caracterul limitat al resurselor: nencarcarea retelei cu activitati nefolositoare; descarcarea de fisiere mari numai atunci cnd este absolut necesar; alegerea unui moment de timp potrivit pentru descarcarea de fisiere de mari dimensiuni, atunci cnd resursele sistemului si ale retelei sunt mai putin solicitate; responsabilitate n folosirea e- mail- ului: verificare e- mail n mod regulat, nedepasirea limitei maxime alocate pentru stocarea mesajelor electronice, subscrierea la un numar rezonabil de liste de e-mail, anularea subscrierii la liste de e- mail atunci cnd nu este posibilia verificarea frecventa a cutiei postale; neocuparea liniei de dial-up atunci cnd nu este folosita si punerea liniei la dispozitia altor persoane; netrimiterea repetata a unui mesaj n scopul suprancarcarii casutei postale.

Toti utilizatorii au responsabilitatea de a face tot ceea ce tin de ei pentru asigurarea securitatii sistemului local si a retelei. Prima responsabilitate este aceea de a asigura securitatea contului Internet. n acest sens, trebuie luate toate masurile care sa previna accesarea neautorizata a contului. Aceste masuri au n vedere: alegerea unei parole corespunzatoare, care sa includa att litere ct si cifre; nefurnizarea datelor privitoare la cont catre alte persoane; alegerea de parole diferite pentru site-urile care cer autentificare. Conectarea unui calculator la o retea implica responsabilitati n plus pentru a preveni introducerea un virus n retea. Aceasta se realizeaza prin: neimportarea de programe din surse necunoscute sau compromitatoare; verificarea programelor descarcate cu ajutorul unui program antivirus. Este posibil ca utilizatorul loveasca de probleme de securitate. Comportamentul acestuia trebuie sa aiba n vedere: notificarea administratorului de sistem atunci cnd apar suspiciuni cu privire la o problema de securitate; problema de securitate este discutata numai cu administratorul de sistem; nu trebuie sa se caute probleme de securitate prin ncercari de a sparge sistemul sau de atribuire de noi drepturi de acces. ntotdeauna trebuie luate n considerare consecintele, pozitive sau negative, a ceea ce fiecare contribuie la Internet. Exista mai multe elemente care afecteaza imaginea Internetului: materiale care descriu abuzuri sexuale sau exploatarea sexuala a copiilor; materiale care promoveaza ura fata de alte persoane datorita rasei, religiei, originii, orientarii sexuale; limbaj agresiv, profan, nepoliticos, violent, dezagreabil; atacuri la persoana si provocarea de discutii aprinse pe un anumit subiect; farse electronice, lansarea de zvonuri, informatii periculoase.

De asemenea, este importanta cunoasterea unui act ilegal n lumea reala, acesta fiind ilegal si pe Internet. Hartuirea este definita ca fiind un actiune permanenta desfasurata de o persoana si derulata ntr-o maniera care deranjeaza sau supara o alta persoana. Aspecte care vizeaza hartuirea pe Internet: daca o persoana considera un mesaj ofensator primit ca fiind hartuire atunci acest mesaj este hartuire; trimiterea unui mesaj ofensator n mod repetat unei persoane, atunci acesta se nscrie n categoria de atacuri la persoana. Nimeni nu are dreptul de a spune orice doreste despre o alta persoana. Cine face o declaratie publica falsa despre o persoana sau companie, care aduce prejudicii acelei persoane sau companii, va avea de suferit din cauza defaimarii propriei persoane. Principii de baza ale defaimarii [WILL97]: v declaratia trebuie sa fie falsa; v declaratia trebuie sa fie una publica; v declaratia facuta trebuie sa prejudicieze reputatia unei persoane sau companii si sa cauzeze defaimare; v declaratia cu privire la o persoana publica despre care se stie ca este falsa va face raspunzator pe cel care o lanseaza. Exista o serie de reguli foarte importante pentru asigurarea securitatii personale: v nefurnizarea pe Internet a informatiilor personale, cum sunt: adresa, numarul de telefon, adresa de la locul de munca, precum si datele persoanelor apropiate; v o persoana minora nu trebuie sa se ntlneasca cu o alta persoana, cunoscuta pe Internet, fara acordul parintilor; n cazul obtinerii acordului parintilor, ntlnirea trebuie sa aiba loc ntr- un loc public si cu participarea parintilor; v relatarea catre o persoana apropiata sau de ncredere despre mesajele primite care au un caracter nepotrivit; v furnizarea catre autoritati a informatiilor despre persoanele care desfasoara activitati suspecte pe Internet. Aparitia tranzactiilor electronice pe Internet a determinat si existenta celor care doresc sa obtina bani de la potentialii clienti prin mijloace frauduloase. Astfel de capcane sunt: solicitarea numarului cartilor de credit;

comercializarea unor produse de lux la preturi foarte mici; jocurile de tip piramidal; participarea la activitati pentru care se garanteaza aprioric multiplicarea sumei investite. Plagiatul a fost ntotdeauna considerat ca fiind inacceptabil. Deoarece Internetul permite operatii de preluare de text din lucrarile altor persoane, este foarte important de a distinge activitatea de cercetare de cea privind plagiatul. Exista o serie de probleme practice n evitarea plagiatului si desfasurarea unei activitati de cercetare cu ajutorul Internetului. Astfel, n navigarea pe Internet este foarte simplu de a gasi si concentra idei, concepte si de a omite notarea, memorarea surselor acestor idei. Revenirea la aceste surse identificate este o operatie foarte dificila. Este important sa se anticipeze aceasta dificultate naintea declansarii unui proiect si sa se abordeze o maniera eficienta de retine sursele de informare. n ceea ce priveste activitatea creatoare a oamenilor, acestia au dreptul de cere si primi compensatii pentru activitatea desfasurata. Compensarea oamenilor ncurajeaza desfasurarea n continuare a acestei activitati precum si evolutia societatii pe baza contributiei acestora. Rezultatul unei munci creatoare este automat protejata prin intermediul drepturilor de autor din momentul n care aceasta este creata. Nici un preaviz privind drepturile de autor sau nregistrare a rezultatului desfasurarii activitatii creatoare nu este ceruta. Domeniul public este starea unei activitati care nu este protejata de drepturile de autor, fie pentru ca autorul nu este specificat clar sau se renunta la toate drepturile de autor, fie pentru ca drepturile de autor au expirat. Proprietarul unui drept de autor are drepturile exclusive de a copia, modifica, distribui, afisa, transmite si executa rezultatul muncii sale. n general, este rezonabila sa se utilizeze [WILL97]: copierea unui fragment foarte scurt dintr-o lucrare aflata sub incidenta drepturilor de autor; pasajele n care sunt utilizate copii din alte lucrari trebuie sa fie foarte scurte; utilizarea unei lucrari protejata de drepturi de autor pentru un scop educational sau social; utilizarea unei lucrari protejate nu afecteaza venitul potential al detinatorului drepturilor de autor.

De regula, este bine cererea permisiunii autorului nainte de a folosi o lucrare. Anumite persoane considera ca Internetul le ofera libertatea de a face orice doresc, ignornd drepturile celorlalti. Oricine are dreptul de a folosi Internetul fara a fi subiectul tratamentului oferit de astfel de persoane. n Internet, fiecare persoana are dreptul: de a nu primi mesaje e- mail ofensive si hartuitoare; de pastrare a intimitatii; de protejare a activitatii creatoare desfasurate; de a nu avea lucruri neadevarate spuse pe Internet la adresa sa; de a nu fi supus imaginilor cu caracter pornografic, n special pentru membrii unor grupuri de lucru care activeaza n cadrul educational; de a nu primi lucruri nedorite prin e- mail si de a proteja copiii de exploatarea comerciala. n utilizarea mediului Internet este foarte important sa se stabileasca anumite limite, care au n vedere urmatoarele aspecte: stabilirea unui scop pentru utilizarea retelei Internet; participarea la un numar relativ scazut de grupuri de discutii, pentru a face fata volumului mare de informatii primite; stabilirea unui interval orar zilnic strict pentru navigarea pe Internet; evitarea utilizarii Internetului pentru evadarea din problemele lumii reale; neacordarea unei prioritati mai mari Internetului fata de familie, activitatea educationala si munca de zi cu zi. Internetul este asociat unui loc n care milioane de oameni si aduc contributia si si mpart propriile experiente. Aceasta tehnologie ofera oamenilor oportunitatea de a da n aceeasi masura cu a primi ceva. Exista mai multe modalitati n care se aduce contributia n Internet: raspunsuri si ajutor oferit persoanelor care pun ntrebari; ajutor si ndrumari oferite ncepatorilor; redactare de rezumate a raspunsurilor date ntr-o anumita problema si publicarea acestora n cadrul grupului de discutii; mediere n discutiile duse n contradictoriu, fiecare exprimndusi un punct de vedere diferit de al celorlalti; mpartire cunostinte dintr-un anumit domeniu cu alte persoane; realizare site- uri organizatii nonprofit;

participare la diverse discutii fara ca vrsta sa fie un obstacol n acest sens.

n prezent are loc o evolutie rapida catre o era n care granitele fizice vor fi irelevante. O era n care nici o regula sau lege, autoritate sau bariere de ordin tehnolo gic nu vor avea un succes deplin n controlarea comportamentului.

MATRICI ALE CLONARII

8.1 Conceptul de metrica utilizat n aplicatii informatice Aprecierea sistemelor de programe este de ordin calitativ (bun, satisfacator, foarte bun, nesatisfacator) si de ordin cantitativ, exprimat numeric. Problematica definirii unui sistem de masurare a calitatii genereaza diferite abordari, pe text sursa si asupra comportamentului la utilizator al programelor. Metricile software nglobeaza modele, indicatori si proprietatile acestora, precum si modalitati de evaluare si validare. Capitolul si propune sa prezinte concepte de baza, modele si modalitati de utilizare a metricilor software. Conceptul de metrica nu este nou. Se considera o multime de puncte Ma pe care se defineste o aplicatie: d : Ma x Ma R (8.1)

astfel nct: 1. d ( x1 , y1 ) 0 si d ( x1 , y1 ) = 0, daca x1 = y1 ; 2. d ( x1 , y1 ) = d ( y1 , x1 ) (axioma simetriei); 3. d ( x1 , y1 ) d ( x1 , y1 ) + d ( y1 , z1 ) (inegalitatea triunghiului); Exista conceptul de norma si se poate stabili o legatura ntre norma si metrica astfel: norma distantei a doua elemente se defineste ca o functie de forma: d ( x 1 , y1 ) = || x 1 y1 || (8.2)

Se poate spune c si n domeniul ingineriei programarii utilizarea conceptului de metrici este acceptabila. Definirea de metrici software revine la a construi modele, indicatori care pornesc de la marimi ce se masoara cu obiectivitate (numar linii surs, numar erori, numar variabile, numar instructiuni de Intrare/Iesire, numar functii, numar parametrii transmisi, numar nivele ale arborelui asociat). Practica arata ca exista o strnsa legatura ntre comportamentul efectiv al unui program si structura lui exprimata prin marimi ce se determina exact, obiectiv. Indicatorii (metricile software) se construiesc n asa fel nct valorile obtinute caracterizeaza produsul. Astfel, functia: f(x) : R [0,1] (8.3)

este pusa n corespondenta cu aprecieri asupra comportamentului unui program astfel: v dac f(x) = 0 se va spune ca programul este lipsit de calitate si exista riscuri pentru utilizator n cazul folosirii; v dac f(x) = 1 se va spune ca programul are un nivel de calitate deosebit, deci utilizatorul trebuie sa aiba ncredere n rezultatele obtinute la executia programului; v dac f(x) < 1, unde este o valoare numita prag de acceptare, obtinuta experimental, programul poate fi utilizat, riscurile de obtinere a rezultatelor eronate fiind minore; v dac 0 < f(x) < , frecventa cu care se obtin rezultate incorecte este att de mare nct eforturile de a utiliza un astfel de program se dovedesc ineficiente.

Se observa ca o metrica astfel conceputa are rolul de a pozitiona un program ntr-una din doua categorii: program acceptabil a fi n uz curent si program imposibil de utilizat. Daca se considera multimea programelor P={P1 ,P2 ,...,P n } si se construieste un indicator de performanta sau de caracterizare f(x) : P N, exista posibilitatea de a compara programele. O astfel de functie este, de exemplu, lungimea fisierului executabil. Comparatiile sunt directe. Daca f(Pi) > f(Pj ) se va spune c programul Pi este mai mare sau mai lung sau ca ocupa spatiu de stocare (memorie externa) mai mare dect programul Pj. Sunt interesante si comparatiile directe de forma: f: P x P N ca de exemplu: f (P i, Pj) = ( Pi / Pj ) 100 (8.5) (8.4)

Daca f(Pi, Pj) > 100 rezulta ca programul Pi este mai lung dect programul Pj. Dac f(Pi, Pj ) < 100 rezulta ca programul Pi este mai scurt dect programul Pj. Spre deosebire de multimea Ma definita la nceput, n care punctele sunt omogene, este extrem de dificil de construit multimi omogene de programe, conditie esentiala pentru realizarea de comparatii care sa aiba sens. De aceea, metricile software sunt concepute ca programul s fie raportat prin el nsusi la modele ideale (f(x) = 1 sau f(x) = 0). Rolul metricilor este de a reduce subiectivitatea aprecierii unui program. Asemeni unitatilor de masura din sistemul metric international, cei care si propun s construiasca metrici software trebuie sa parcurga urmatoarele etape: definirea marimilor obiective care pot fi masurate fie n textul sursa al programului, fie pe durata utilizarii programului la beneficiar; stabilirea metodologiei de nregistrare a marimilor obiective si de constituire a bazei de date asociate programului; elaborarea modelului sau modelelor n care marimile obiective stabilite figureaza ca variabile independente x1 , x2 , x3 , ....xn si n

care yr, variabila rezultativa, va releva comportamentul programului sau calitatile acestuia; evaluarea unui nivel y0 pentru valori date x0 1 , x0 2 , .....x0 n din baza de date a programului; ncadrarea programului n una din cele doua clase (program bun, acceptabil sau program neacceptabil); nregistrarea comportamentului n timp al programului si compararea rezultatelor obtinute cu ceea ce a oferit (prezis) metrica la momentul initial; n cazul n care se evidentiaza ca metrica a prezis un comportament care este confirmat de realitate, are loc validarea metricii. Metricile software se definesc pentru caracteristici de calitate. n timp, s-a acordat o atentie deosebita complexitatii software si fiabilitatii software, modelele asociate acestora constituindu-se si n veritabile metrici. Desi initial un program este cotat bun sau nu, n realitate aprecierile sunt mai nuantate. Pentru o metrica software definita f : P [a,b], a, bR+ si a b, se vor identifica mai multe valori critice (praguri) 1 , 2 care permit aceasta nuantare a delimitarii, cu a < 1 < 2 < b. Intervalul [a, 1 ] corespunde zonei de respingere a programului, dac f (Pi) [a, 1 ]. Intervalul ( 1 , 2 ] corespunde zonei de acceptare cu rezerve a programului Pi, dac f (Pi) ( 1 , 2 ]. Intervalul ( 2 ,b] corespunde zonei de acceptare cu ncredere a programului Pi, dac f (Pi) ( 2 ,b]. Metodologiile de clasificare a sistemelor de programe stocate n biblioteci publice de software atribuie apartenenta, respectiv la clasele de programe Cf, Bf si Af dupa ncadrarea n unul din cele trei subintervale. Ceea ce este caracteristic unei metrici este generalitatea, adica posibilitatea de a aplica formula (modelul) oricarui program n mod neambiguu. Adica marimile obiective trebuie att de riguros definite nct oricine are la dispozitie un program Pi si metrica, sa obtina aceleasi rezultate. De exemplu, daca se considera: n1 - numar de operanzi distinct; n2 - numar de operatori distinct; n3 - numar de definitii tipuri de date; si o masura a complexitatii: Ct = n1 log1 n1 + n2 log2 n2 + n3 log3 n3 (8.6)

si se precizeaza ca operanzii sunt: constante definite n program care participa n evaluari de expresii; variabile elementare; variabile de tip derivat, se obtine un grad de obiectivitate acceptabil. Nu se includ definirile de tip derivat, ci numai variabilele care sunt nzestrate cu proprietatile acestor tipuri. Prin operator se va ntelege: instructiunile if, for, switch, goto, while, do; expresii de atribuire; apeluri de functii; evaluari de expresii. Pentru o definire neambigua se iau n considerare toate elementele unui limbaj de programare si se stabilesc regulile de contorizare la n1 , la n2 sau la n3 a fiecarui element. Aceasta nseamna ca o metrica este legata de un limbaj de programare anumit. Este rezonabil ca definirile pentru diferite limbaje de programare sa urmeze aceleasi reguli. n situatia n care, pentru rezolvarea aceleiasi probleme, se scriu programe n limbaje diferite de catre programatori cu acelasi nivel de performanta, trebuie ca diferentele obtinute pentru aplicarea metricii s fie nesemnificative. Daca ipotezele de construire si utilizare a unei metrici sunt judicios concepute exista reale posibilitati de a utiliza metrica si, mai ales, de a aprecia programele prin prisma nivelelor date de calculul respectivei metrici. Este important ca marimile obiective din care deriva metrica sa fie usor de obtinut. O metrica costisitor de evaluat este abandonata usor.

8.2 Metrici ale ortogonalitatii fisierelor sursa C++ n continuare sunt prezentate mai multe metrici legate de un anumit limbaj de programare, n particular C++, si care se adauga metricilor definite n capitolul Ortogonalitatea fisierelor. Frecvente de aparitie paragrafe consta n mpartirea textelor sursa n paragrafe si analiza comparata a acestora dupa criteriile: frecvente de aparitie a caracterelor n paragrafe; frecvente de aparitie a cuvintelor n paragrafe, prin realizarea vocabularelor acestora.

mpartirea unui text n paragrafe se realizeaza cu ajutorul unui separator de paragraf. Indicatorii care reflecta asemanarea fisierelor prin mpartirea acestora n paragrafe sunt:
NTC

g1 =
unde: -

ncap
i=1

NTC

(8.7)

g1 gradul de asemanare a ntre doua paragrafe dupa frecventele de aparitie a caracterelor alfabetice; NTC numarul total de caractere alfabetice (mari si mici); ncapi elementul i din vectorul de stocare a frecventelor de aparitie a caracterelor si ia una din urmatoarele valori: 0, daca pentru caracterul i frecventele de aparitie n cele doua paragrafe sunt diferite; 1, daca pentru caracterul i frecventele de aparitie n cele doua paragrafe sunt identice.
NTCV

g2 =

ncvfp
i =1

NTCV

(8.8)

unde: g2 gradul de asemanare a paragrafelor dupa vocabularul fiecaruia dintre acestea; NTCV numarul total de cuvinte al celor doua paragrafe, cuvinte care sunt distincte; ntcvp i un element al vectorului n care sunt stocate valori privind identitatea frecventelor de aparitie a diverselor cuvinte si ia una din urmatoarele valori: 0, daca frecventele de aparitie pentru cuvntul i sunt diferite sau cuvntul i nu se regaseste n celalalt text; 1, daca pentru cuvntul i frecventele de aparitie sunt identice.

Paragrafele identificate sunt supuse analizei cantitative doua cte doua, urmnd ca, n final, sa se calculeze un indicator care sa reflecte asemanarea ntre doua texte prin mpartirea acestora n paragrafe.

Gradul de asemanare a doua paragrafe se determina dupa expresia urmatoare, care este media geometrica:

gi' = g1 g 2

(8.9)

unde g este gradul de asemanare ntre doua paragrafe conform celor doua i criterii definite, frecvente de aparitie a literelor n paragrafe si frecvente de aparitie a cuvintelor n paragrafe. Gradul de asemanare ntre texte, conform acestui criteriu, este:

g =
,

mp

g
i =1

mp

' i

(8.10)

unde: g gradul de asemanare ntre texte n urma mpartirii n paragrafe a acestora; - gi gradele de asemanare ntre paragrafe; sunt luate n considerare cele doua criterii de analiza: frecvente de aparitie a caracterelor alfabetice, frecvente de aparitie a cuvintelor din paragrafe; - mp numarul de comparatii care sunt efectuate ntre paragrafe; m se determina ca produs ntre numarul de paragrafe ale celor doua texte. Textele sursa contin caractere cu rol neutru n raport cu etapele prelucrarilor. De aceea este necesara derularea unui proces de normalizare, n care tot ce este nesemnificativ n raport cu obiectivul urmarit este eliminat. Dupa procesul de normalizare se obtin texte sursa apte pentru a fi supuse unei analize comparate. Lungimea Ls a fisierului sursa se exprima ca numar de baiti. Fisierul sursa Fp1 : int a; int b; int c; a = 1; b = 2; c = a + b; are lungimea Ls = 52 baiti. -

Fisierul sursa Fp2 : int a; a = 1; int b; b = 2; int c; c = a + b; are lungimea Ls = 49 baiti. Dupa normalizare, prin eliminarea unor spatii si a unor caractere de control, fisierul Fp1 devine: int a; int b; int c; a=1; b=2; c=a+b; iar lungimea sa este Ls = 37 baiti. Aplicnd acelasi procedeu fisierului Fp2 , se obtine continutul normalizat: int a; int b; int c; a=1; b=2; c=a+b; iar lungimea noului fisier este Ls = 37 baiti. Doua fisiere Fp1 si Fp2 cu lungimi diferite, dupa procesul de normalizare devin fisiere cu aceeasi lungime. Daca fisierul normalizat Fpi are o lungime Li baiti, iar fisierul normalizat Fpj are lungimea Lj baiti, indicatorul:

IL =

min{Li , L j } max {Li , L j }

(8.11)

evidentiaza gradul de asemanare a lungimilor a doua fisiere normalizate. Daca IL = 1 nseamna ca cele doua fisiere au lungimi identice. Cu ct indicatorul I este mai apropiat de zero, cu att gradul de asemanare a L lungimilor celor doua fisiere este mai redus. Lungimea vocabularului, LV, este data de numarul de cuvinte distincte identificate ntr- un text sursa.

Secventa de program SP1 : int a; int b; int c; a=17; b=17; c=a+17*b; C=c+a+111; are un vocabular format din cuvintele: int, a, b, c, 17, 111, =, +, *, ; adica LV=10 cuvinte. Secventa SP2 : int a; float b; double c; for(a=0;a<100;a++) c=c+a; b=c-1; are un vocabular format din cuvintele: int, float, double, a, b, c, for, ( , = , ; , < , 100, +, ++, - , ) iar LV = 16 cuvinte. Indicatorul:

IV =

min{ LVi , LV j } max{ LVi , LV j }

(8.12)

vizeaza masura n care lungimile vocabularelor celor doua secve nte sunt diferite. Daca IV = 1 nseamna ca vocabularele celor doua texte are acelasi numar de cuvinte, fara sa se specifice daca aceste cuvinte sunt sau nu identice.

Diversitatea vocabularului unui program este data de relatia:

D v = 1

f
i =1 m i =1

log 2 f i
m

( fi ) log2 ( f i )
i =1

(8.13)

unde fi reprezinta frecventa cu care este utilizat un cuvnt al unui vocabular n program. Secventa de program SP3 : int a=1; int b=1; int c=0; int d=0; contine vocabularul cu frecventele de utilizare a cuvintelor din tabelul nr. 1. Frecvente utilizare vocabular Cuvnt int = ; 1 0 a b c d Diversitatea este:
Dv = 1 4log 2 4 + 4log2 4 + 4log2 4+ 2log2 2 + 2log2 2 + 1log2 1+ 1log2 1+ 1log2 1+ 1log2 1 20log2 20

Tabelul 8.1 Frecventa 4 4 4 2 2 1 1 1 1

Dv =1

4 2 + 4 2+ 4 2 2 1 2 1 1 0+ 1 0+ 1 0+ 1 0 + + + = 0,32 20 4,34

n cazul n care toate cuvintele au n text cte o singura utilizare, diversitatea este maxima, egala cu 1. Lungimea vocabularului comun, LVco, pentru programele Pi, Pj este data de numarul de cuvinte comune utilizate n ele. Fie secventa SP4 : int a; int b; int c; a=7; b=a+2; c=a+b; si secventa SP5 : int a; int b; int y; a=7; b=a-2; y=a-b; Cele doua secvente au comune cuvintele: int, a, b, = , 7, 2 Lungimea vocabularului comun LVco = 6 cuvinte, pentru secventele SP4 si SP5 . Lungimea vocabularului reuniune, LVre, este data de numarul de cuvinte distincte utilizate de programe. n secventa SP6 : int a; char x; a=2; x=1;

si secventa SP7 : float y; double z; y=4.; z=y++; reuniunea vocabularelor este: int, char, a, x, = , , , 1, float, double, y, z, 4, ++ Vocabularul reuniune are lungimea LVre = 13 cuvinte. Indicatorul:

I cr =

min { LVco , LVre } max {LVco , LVre }

(8.14)

evidentiaza masura n care doua programe utilizeaza acelasi fond de cuvinte al unui vocabular. Secventele SP8 : int a; float b; a=b=0; si SP9 : int x; float y; x=0; y=0; au vocabular comun format din cuvintele: int, float, = , 0 are lungimea LVco = 4 cuvinte, si un vocabular reuniune: a, b, = , 0, x, y cu LVre = 8 cuvinte, iar Icr = 0,5.

Ponderea elementelor identice n doua programe este data de raportul:

If =

Kr e LVre

(8.15)

unde Kre este numarul cuvintelor din vocabularul reuniune care au aceeasi frecventa. Un program Pi are vocabularul: Vocabular program Pi Simbol int float a ++ b iar programul Pj are vocabularul urmator: Vocabular program Pj Simbol int float a ++ b Se calculeaza If : Tabelul 8.3 Frecventa 7 8 15 8 5 Tabelul 8.2 Frecventa 7 7 15 8 5

4 I f = = 0,8 5

(8.16)

Daca If = 1 rezulta ca programul Pi este clona a programului Pj. Daca If = 0 rezulta ca programele Pi si Pj nu au frecvente identice de utilizare a acelorasi cuvinte.

Lungimea alfabetului, LA, utilizat este data de numarul caracterelor diferite utilizate. n programul: int a; int b; a=0; b=1; alfabetul folosit este: Frecvente de aparitie simboluri Tabelul 8.4 Simbol Frecventa i 2 n 2 t 2 a 2 b 2 = 2 0 1 1 1 deci, LA = 8 caractere. Si n cazul alfabetului, pentru programele Pi si Pj se definesc: lungimea alfabetului comun; lungimea alfabetului reuniune; frecventele de utilizare a simbolurilor alfabetului n program. Se defineste IA, indicatorul caracterelor cu frecvente identice, dat de relatia:

IA =
unde: -

Gc LAre

(8.17)

Gc numarul de caractere comune programelor Pi si Pj, cu frecvente identice; LAre lungimea alfabetului reuniune.

Programul Pi : int a=1; int b=1; int c=1; int d=1, z=4; a++; b++; c++; d++; d=d+a+b+c; are urmatorul alfabet: Frecvente de aparitie simboluri n programul Pi Tabelul 8.5 Simbol Frecventa i 4 n 4 t 4 a 3 b 3 c 3 d 4 ++ 4 + 3 = 6 1 4 z 1 4 1 Programul Pj : int a=1; int b=1; int c=1; int d=1, x=2; a++; b++; c++; d++; x--; d=d+a+b+c+x;

are urmatorul alfabet: Frecvente de aparitie simboluri n programul Pi Tabelul 8.6 Simbol Frecventa i 4 n 4 t 4 a 3 b 3 c 3 d 4 ++ 4 + 4 = 6 1 4 x 3 -1 2 1 Se construieste tabelul: Frecvente de aparitie simboluri n programele Pi si Pj Tabelul 8.7
Simbol Frecventa Simboluri comune i n t a b c d ++ = 1 Frecvente simboluri comune 4 4 4 3 3 3 4 4 6 4 x -2 z 4 1 1 2 1 1 Simbol Frecventa

Pentru exemplul considerat, Gc = 10 simboluri, iar LAre = 15 simboluri.

IA =

10 = 0, 66 15
39 = 0,86 45

IA f =

Fie programul P format din instructiunile I1 , I2 , , INi. Instructiunea Ij are un numar de fj caractere. Perechile (Ij, fj), j = 1, 2, , n se sorteaza descrescator, obtinndu-se programul P. Se obtine sirul de instructiuni I a1 ,
I a2 , , I an astfel nct instructiunea I cu pozitia j n programul P are j pozitia aj n programul P. Se calculeaza indicatorul:

kc =

| a
j =1

j|

n max{| ai j |,1}

(8.18)

n continuare se da o secventa de program mpreuna cu lungimile instructiunilor utilizate, n numar de caractere utilizate: Lungimea instructiunilor exprimata n numar de caractere Tabelul 8.8
Pozitie instructiune (j) 1 2 3 4 5 6 7 8 9 10 11 12 Instructiune s2=0.; s=0; P=1.; for(i=0;i<n;i++) { s=s+x[i]; P*=x[i]; s2+=x[i]*x[i]; } if(s2>s) a=1; else a=2; Lungime 6 4 5 16 1 9 8 14 1 13 4 4

Dupa operatia de sortare se obtine secventa S, care are urmatorul continut: Sortare instructiuni n functie de lungime Tabelul 8.9 Pozitie Pozitie Instructiune Lungime instructiune instructiune secventa SP secventa S (j) (aj) 4 1 for(i=0;i<n;i++) 16 8 2 s2+=x[i]*x[i]; 14 10 3 if(s2>s) a=1; 13 6 4 s=s+x[i]; 9 7 5 P*=x[i]; 8 1 6 s2=0.; 6 3 7 P=1.; 5 2 8 s=0; 4 11 9 else 4 12 10 a=2; 4 5 11 { 1 9 12 } 1 Cnd programele au numar mare de instructiuni se procedeaza la stabilirea frecventelor: se alege frecventa minima fminim = 1 caractere; se alege frecventa maxima fmaxim = 16 caractere; se calculeaza def = fmaxim fminim = 15 caractere; def se calculeaza lungimea intervalului: r3 = = 5 caractere. 3 Se construieste tabelul: Gruparea instructiunilor pe intervale de lungime Tabelul 8.10 Interval Numar de instructiuni [1; 6) 6 [6; 11) 3 [11; 16] 3 Total 12

kc =

| 4 1| +|8 2 | + |10 3 | + | 6 4 | + |7 5 | + |1 6 | +| 3 7 | + | 2 8 | + 12 max{| ai , j |,1}

+ |11 9 | + |12 10 | + | 5 11 | + | 9 12 | = 12 max{| ai , j |,1}


= 3 + 5 + 7 + 2 + 2 + 5 + 4 + 6 + 2 + 2 + 6 + 3 47 = = 0,55 12 7 84

Pentru datele prezentate n tabelul anterior se calculeaza media si dispersia acestor valori. Astfel:

x3 =
3

x
i =1

6 + 3+3 =4 3
2

2 3 =

(x x )
i i =1

4 +1+ 1 =2 3

Pornind de la valorile indicatorilor de medie si dispersie se determina coeficientul de variatie:

CV3 =

x3 4 = = 2 ,83 3 1,41

Daca se calculeaza r4 = 15 = 3,75 , atunci obtinem valorile sintetizate


4

n urmatorul tabel: Grupare instructiuni pe intervale de lungime Tabelul 8.11 Interval Numar de instructiuni [1; 4,75) 4 [4,75; 8,50) 3 [8,50; 12,25) 3 [12,25; 16] 2 Total 12

Pentru calcularea coeficientului de variatie este necesar sa se determine valorile mediei si a dispersiei:

x4 =

x
i =1

4
4

4+ 3+ 3+ 2 =3 4
2

2 4 =

( x x )
i i =1

1 +1 = 0,66 3

Valoarea coeficientului de variatie CV4 este:

CV4 =

x4 4 = = 4 ,93 4 0,81

Indicatorul agregat privind variatia este:

CV = CV3 CV4 = 2,83 4,93 = 3, 73


Doua programe cu aceeasi valoare a indicatorului CV sunt identice. Daca programul RR este: Pozitii noi ale instructiunilor n ierarhia dupa lungime Tabelul 8.12 Instructiune Lungime Pozitie Pozitie veche noua alfa=200; 9 1 1 beta=20; 8 2 2 gama=2; 7 3 3 eta=1; 6 4 4

Fie programul PP: Pozitia instructiunilor n functie de lungime Tabelul 8.13 Instructiune Lungime Pozitie i=0; 4 1 lm=1; 5 2 lmp=2; 6 3 lmr=20; 7 4 lmt=200; 8 5 Dupa sortarea descrescatoare a instructiunilor dupa lungime, programul PP devine PP: Abaterea pozitiilor instructiunilor ierarhizate dupa lungimea lor Tabelul 8.14 Instructiune Pozitie Pozitie | pozitie veche veche noua pozitie noua | lmt=200; 1 5 4 lmr=20; 2 4 2 lmp=2; 3 3 0 lm=1; 4 2 2 i=0; 5 1 4 n cazul programului RR diferentele calculate dintre pozitiile vechi si cele noi sunt nule. Ca urmare, valoarea indicatorului kc este nula. Un program are indicatorul kc nul daca lungimile liniilor sursa sunt deja descrescatoare. n cazul programului PP, valoarea indicatorului kc se calculeaza conform relatiei:
kc = 4 + 2 + 0 + 2+ 4 = 0,25 12 4

Fie programul P cu instructiunile I1 , I2 , , INi, acestea avnd pozitiile 1, 2, , Ni. Se calculeaza L1 , L2 , , LNi lungimile instructiunilor ca frecvente de caractere f1 , f2 , , fNi.

Este parcursa urmatoarea succesiune de pasi: 1. se scrie programul: Instructiunilor unui program si lungimile acestora Tabelul 8.15 Instructiune Pozitie veche Frecventa I1 1 f1 I2 2 f2 In N fn 2. se sorteaza instructiunile descrescator, dupa lungimile fi, i = 1, 2, , Ni. Ierarhia instructiunilor dupa sortarea descrescatoare a lungimilor Tabelul 8.16 Instructiune Pozitie Pozitie Frecventa veche noua a1 1 g1 I a1 a2 2 g2 Ia
2

I an

an

gn

Se calculeaza indicatorul kc, conform relatiei:

kc =

| a
j =1

j|

n max{| ai j |,1}

(8.19)

3. se sorteaza instructiunile crescator, dupa lungimile fi, i = 1, 2, , Ni.

Ierarhia instructiunilor dupa sortarea crescatoare a lungimilor Tabelul 8.17 Instructiune Pozitie Pozitie Frecventa veche noua b1 1 h1 Ib
1

I b2 I bn

b2 bn

2 n

h2 hn

Se calculeaza indicatorul La, pe baza relatiei analitice a indicatorului kc, astfel:


La =

|b
j =1

j|

n max{bi j , 1}

(8.20)

Pe baza indicatorilor kc si La se determina indicatorul T, conform relatiei urmatoare:

T=

min{k , L} max {k , L}

(8.21)

Exemplu: fie programul ST, avnd codul sursa: a=1; c=b++; if(a>b) c+=x[i]; t=s=0; for(i=0;i<n;i++) { s+=y[i]; t+=y[i]+x[i]; } a+=s/t;

Pentru programul ST se determina frecventele caracterelor ce alcatuiesc instructiunile: Frecventele de aparitie ale caracterelor instructiunilor Tabelul 8.18 Instructiune Frecventa (fi ) a=1; 4 c=b++; 6 if(a>b) c+=x[i]; 15 t=s=0; 6 for(i=0;i<n;i++) 16 { 1 s+=y[i]; 8 t+=y[i]+x[i]; 13 } 1 a+=s/t; 7 Dupa identificarea frecventelor caracterelor din instructiuni se procedeaza la sortarea descrescatoare a acestora. Abaterile pozitiilor instructiunilor dupa ierarhizare Tabelul 8.19 Instructiune Frecventa Pozitie Pozitie | pozitie veche (fi ) veche noua pozitie noua | for(i=0;i<n;i++) 16 5 1 4 if(a>b) c+=x[i]; 15 3 2 1 t+=y[i]+x[i]; 13 8 3 5 s+=y[i]; 8 7 4 3 a+=s/t; 7 10 5 5 c=b++; 6 2 6 4 t=s=0; 6 4 7 3 a=1; 4 1 8 7 { 1 6 9 3 } 1 9 10 1

Valoarea indicatorului kc este:


kc = 36 36 = = 0,51 10 max{7,1} 70

Valoarea indicatorului La se calculeaza dupa ordonarea crescatoare a instructiunilor programului n functie de frecventele de aparitie a caracterelor: Abaterile pozitiilor instructiunilor n functie de frecventele de aparitie ale caracterelor Tabelul 8.20 Instructiune Frecventa Pozitie Pozitie | pozitie veche (fi ) veche noua pozitie noua | { 1 6 1 5 } 1 9 2 7 a=1; 4 1 3 2 t=s=0; 6 2 4 2 c=b++; 6 4 5 1 a+=s/t; 7 10 6 4 s+=y[i]; 8 7 7 0 t+=y[i]+x[i]; 13 8 8 0 if(a>b) c+=x[i]; 15 3 9 6 for(i=0;i<n;i++) 16 5 10 5 Valoarea indicatorului La este:
La = 32 32 = = 0,45 10 max{7,1} 70

Avnd valorile indicatorilor kc si La, se calculeaza valoarea indicatorului T:


T= min {0,51; 0 ,45} 0,45 = = 0,88 max {0,51; 0,45} 0 ,51

Programele au: secvente de definire operanzi; instructiuni if; instructiuni for; apeluri de functii; evaluari expresii; frecvente de utilizare operanzi; frecvente de utilizare operatori. Asemenea ADN-ului, programele se individualizeaza prin: numar de proceduri; numar niveluri; complexitate; frecvente comune vocabular; numar de structuri alternative; numar de structuri repetitive; numar de niveluri; numar de functii cu lista de parametri comuna; numar expresii de evaluare; numar functii de biblioteca referite. Selectia vizeaza ce caracteristici de baza sunt analizate, lundu-se combinatii de acestea. Selectia de proceduri. Se iau k proceduri la ntmplare din produsul Pi si k proceduri din P care au lungimi similare si se cauta sa se vada care sunt identice. Se iau x secvente aleatoare din Pi si se cauta sa se gaseasca n Pj. Daca sunt gasite aceste secvente identice atunci nseamna ca a avut loc un proces de clonare.

Se considera doua programe PA si PB : Caracteristici structurale ale programelor PA si PB Tabelul 8.21 PA PB Comune Numar module 25 30 20 C1 Numar 300 450 300 instructiuni for C2 Numar 250 300 240 instructiuni if C3 Apeluri functii 170 210 165 C4 Evaluari expresii 500 880 490 C5 Numar 200 260 200 instructiuni while C6 Operatii de I/E 160 150 150 C7

Ik =
unde: I1 =

c Gk B min {GkA , Gk }

(8.21)

kp pozitia caracteristicii BPC; Gk c nivelul caracteristicii k pentru elementele identice n cele doua programe; Gk A nivelul caracteristicii k n programul PA; Gk B nivelul caracteristicii k n programul PB.
20 20 = = 0,8 min {25, 30} 25 300 300 = =1 min {300, 450} 300

I2 =

I3 =

240 240 = = 0,96 min {250, 300} 250 165 165 = = 0,97 min {170, 210} 170 490 490 = = 0,98 min {500, 880} 500 200 200 = =1 min {200, 260} 200 150 150 = =1 min {160,150} 150

I4 =

I5 =

I6 =

I7 =

BPC = 7 0,8 1 0,96 0,97 0,98 1 1 = 0,95


Rezultatul compararii caracteristicilor de baza BPC = 0,95, ceea ce arata ca ntre programele PA si PB este dezvoltat un proces de clonare. n cazul n care se nregistreaza la una din cele 7 caracteristici un indicator Ik = 0, atunci:

BPC = 7

k =1, I k 0

Ik

(8.22)

unde k este numarul de indicatori Ik nenuli, indicndu-se numarul caracteristicilor pentru care Ik este diferit de zero. Daca se ia indicatorul:

BPC = 7 e I k
k =1

(8.22)

BPC [1, e], unde valoarea 1 indica originalitatea, deci programele nu au nimic n comun si e daca programele sunt identice. Agregarea indicatorilor. Pentru programele Pi si Pj se face o analiza a clonarii. Se considera o serie de indicatori I1 , I2 , ..., Im astfel nct Ik [0, 1],

k = 1, 2, ..., m, cu semnificatia Ik = 1 nseamna ca n raport cu o caracteristica Ck cele doua programe Pi si Pj sunt clone. Se calculeaza un indicator agregat:

Ia = k
al clonarii. 1. 2. 3. 4.

I
r =1

(8.23)

daca Ia = 1, programele sunt clone perfecte; daca Ia = 0 programele nu sunt clone; daca Ia [0,92; 1] programele sunt clone certe; daca Ia [0,78; 0,92] programele contin elemente de clonare.

8.3 Amprenta programului Amprenta programului este data de o succesiune de caracteristici obiectiv masurabile care l individualizeaza si care determina ca n cazul n care nivelurile sunt diferite toate pentru programe diferite sau sunt identice pentru programe identice. Fie programul care calculeaza norma unei matrice, folosind diferite forme analitice. Codul sursa al programului este publicat la adresa www.clonareinformatica.ase.ro, denumirea fisierului fiind norma.cpp. n vederea stabilirii amprentei acestui program, se calculeaza indicatorii: - lungimea tuturor instructiunilor, exprimata n numar de caractere; - lungimile fisierelor sursa, obiect si executabil; - complexitatea programului, care se calculeaza conform relatiei Halstead:

Ccp = n1 log 2 n1 + n2 log 2 n2


unde: -

(8.24)

n1 numarul de operanzi; n2 numarul de operatori. lungimea vocabularului programului, diferentiat pe cuvinte cheie si cuvinte utilizator; lungimea alfabetului, diferentiat pe litere si caractere speciale; frecventele de aparitie a instructiunilor; frecventele de aparitie a literelor si simbolurilor speciale.

Din acestea se retine un numar de indicatori care formeaza amprenta. Oricine aplica o regula obtine aceleasi valori. Pentru toate se poate scrie software si se pot obtine valorile corespunzatoare. Ca urmare, amprenta programului se stabileste conform succesiunii:

Program

Evaluare

Amprenta

Figura 8.1 Etapele stabilirii amprentei unui program Orice program are o astfel de amprenta, indiferent de limbaj. n vederea stabilirii amprentei unui program se elaboreaza un produs software prin intermediul caruia sunt implementati indicatorii prezentati n paragraful anterior. Aceasta presupune derularea unui proces de normalizare, n care tot ce este nesemnificativ n raport cu obiectivul urmarit este eliminat. Un program este format din instructiuni dispuse ntr-o succesiune Js1 , Js2 , Js3 , ..., Jsn . Fiecare limbaj de programare contine: instructiuni alternative; instructiuni repetitive ; expresii de atribuire; apeluri de functii; operatii de I/E; instructiuni de revenire; evaluari expresii. Clasificarea instructiunilor are niveluri diferite de detaliere. Este important ca o data definite tipurile de instructiuni sa se elaboreze software care genereaza automat programe sursa normalizate. Normalizarea programelor se realizeaza prin efectuarea urmatoarelor operatii: eliminarea spatiilor si a altor caractere de control ale editoarelor de text; generarea de nume pentru variabile si pentru constante; reordonarea alfabetica dupa nume sau dupa lungimea instructiunii ca numar de caractere si, n caz de egalitate, se procedeaza la ordonare alfabetica.

Produsul software determina nivelurile indicatorilor de stabilire a amprentei unui program sursa. De exemplu, pentru programul sursa care determina valorile formelor analitice ale normei unei matrice, avem: - lungimile fisierelor sursa, obiect si executabil: Lungime fisiere n functie de tip Tip fisier Fisier sursa Fisier obiect Fisier executabil Tabel 8.22 Lungime fisier (baiti) 1138 4063 167982

complexitatea programului este Ccp = 1898,25; lungimea vocabularului programului: Numarul de cuvinte n functie de tip Tip cuvinte Tabel 8.23 Numar cuvinte 9 9

Cuvinte cheie Cuvinte utilizator lungimea alfabetului:

Numar de caractere n functie de tip Tip caracter Litere Caractere speciale frecvente de aparitie a instructiunilor: Tabel 8.24 Numar caractere 17 24

Frecvente de aparitie a instructiunilor Tabel 8.25 Tip instructiune Numar module Numar instructiuni for Numar instructiuni if Apeluri functii Evaluari expresii Numar instructiuni while Operatii de intrare Operatii de iesire Frecventa de aparitie 0 9 4 0 56 0 2 3

frecvente de aparitie litere si simboluri speciale:

Frecventele de aparitie a caracterelor utilizate n program Tabel 8.26 Simbol Frecventa de aparitie i 70 n 39 c 6 l 2 u 4 d 11 e 10 s 16 t 11 o 15 m 12 a 24 j 25 f 18 r 16 p 3 h 2 # 2 < 17 > 2 ( 23

) { } [ ] ; , . = ++ \ : % & += * +

23 6 6 48 48 22 8 2 18 10 5 5 3 1 6 2 8 4 2 3

Cu ajutorul indicatorilor prezentati anterior se definesc caracteristici de baza ale programului cu care se construieste amprenta acestuia. Indicatorii construiti definesc procesele de clonare pentru a fundamenta certificarea originalitatii produselor software. Fie indicatorii A1 , A2 , Ak n . Acest numar kn trebuie ales astfel nct oricare ar fi doua programe Pi, Pj diferite, sa existe cel putin un indicator Ar, pentru ca Air A r , astfel nct gradul de asemanare este: j

GAij =
unde a arata cti indicatori Ai =Aj.

1 kn

(8.25)

Fie programele Pi : int a=2; int b=3; int c=3; c=a*b; a++; b--; c+=a/(b*b); si Pj : int a,b,c; a=2; b=c=3; c+=a*b; c+=a--+b++; if(c>1) c++; Pentru aceste doua programe se calculeaza urmatorii indicatori: 1. lungimea programelor ca numar de caractere, dupa normalizare, A1 ; Lungimea programelor Pi si Pj Tabelul 8.27 Pi Pj Numar de caractere 49 50 (A1 ) 2. lungimea vocabularului ca numar de cuvinte, A2 ;

Lungimea vocabularelor programelor Pi si Pj Tabelul 8.28 Pi Pj Numar de cuvinte 3 4 (A2 ) 3. numarul mediu de caractere pe linie, A3 ; Numarul de caractere pe fiecare linie este dar n tabelul urmator: Numarul caracterelor pe fiecare linie n programele Pi si Pj Tabelul 8.29 Numar linie Pi Pj 1 8 10 2 8 4 3 8 6 4 6 7 5 4 11 6 4 12 7 11 Total 49 50 Numarul mediu de caractere pe linie, pentru cele doua programe, Pi si Pj este evidentiat n tabelul urmator: Numarul mediu de caractere pe linie n programele Pi si Pj Tabelul 8.30 Pi Pj Numar mediu de 7 8,33 caractere pe linie (A3 ) 4. dispersia, A4 ;

A4 =

(x
i =1

x)2
(8.26)

Pentru cele doua programe, valoarea dispersei este n tabelul: Dispersia pentru programele Pi si Pj Tabelul 8.31 Pi Pj Dispersia 5,42 8,21 (A4 ) 5. complexitatea programelor n sens Halstead, A5 ; A5 = n1 log1 n1 + n2 log2 n2 unde: n1 numarul de operanzi; n2 numarul de operatori. Numarul operanzilor si operatorilor din cele doua programe este: Numarul operanzilor si operatorilor n programele Pi si Pj Tabelul 8.32 Pi Pj n1 15 12 n2 18 20 Astfel, pentru programele Pi si Pj, avem valorile: Complexitatea Halstead pentru programele Pi si Pj Tabelul 8.32 Pi Pj Complexitatea 133,89 129,68 Halstead (A5 ) 6. complexitatea McCabe a celor doua programe, A6 ; (8.27)

A6 = m1 m2 + 2

(8.27)

unde: - m1 numarul de arce din graful programului; - m2 numarul de noduri din graful programului. Astfel, cele doua programe au complexitatea McCabe exprimata n tabelul urmator: Complexitatea McCabe pentru programele Pi si Pj Tabelul 8.33 Pi Pj Complexitatea 1 2 Halstead (A6 ) 7. calculul indicatorului A7 , identic cu indicatorul kc.

A7 =

|a
j =1

j|
(8.28)

n max {| ai j |, 1}

Sortare instructiuni program Pi n functie de lungimea data n numar de caractere: Ierarhizarea instructiunilor n functie de numarul de caractere pentru programul Pi Tabelul 8.34 Instructiune Pozitie veche Pozitie noua Lungime c+=a/(b*b); 7 1 11 int a=2; 1 2 8 int b=3; 2 3 8 int c=3; 3 4 8 c=a*b; 4 5 6 a++; 5 6 4 b--; 6 7 4

Sortare instructiuni program Pj n functie de lungimea data n numar de caractere: Ierarhizarea instructiunilor n functie de numarul de caractere pentru programul Pi Tabelul 8.35 Instructiune Pozitie veche Pozitie noua Lungime if(c>1) c++; 6 1 12 c+=a--+b++; 5 2 11 int a,b,c; 1 3 10 c+=a*b; 4 4 7 b=c=3; 3 5 6 a=2; 2 6 4 Valorile indicatorului A7 pentru Pi si Pj sunt: Valorile indicatorului A7 pentru programele Pi si Pj Tabelul 8.36 Pi Pj A7 0,28 0,53

Valorile acestor indicatori sunt prezentate n tabelul sintetizator urmator: Valorile indicatorilor pentru programele Pi si Pj Tabelul 8.37 Indicator Pi Pj a A1 49 50 0 A2 3 4 0 A3 7 8,33 0 A4 5,42 8,21 0 A5 133,89 129,68 0 A6 1 2 0 A7 0,28 0,53 0 Total 0

Pe baza datelor din tabelul de mai sus, se calculeaza indicatorul sintetic:

Gij =

0 = =0 k 7

Amprenta programului P este: - un sir de valori; - un indicator agregat.

8.4 Metrici ale ortogonalitatii masivelor bidimensionale Se defineste un sistem de indicatori pentru evaluarea asemanarii existente ntre masive bidimensionale. Se considera un ansamblu format din mai multe masive bidimensionale pentru care se cerceteaza masura n care sunt identice sau asemanatoare. n acest sens se considera criterii precum: identitatea valorilor elementelor aflate pe aceeasi pozitie n cadrul matricelor; identitatea ponderilor elementelor n cadrul matricelor; ponderile se calculeaza att n functie de totalul pe linii ct si n functie de totalul pe coloane. Compararea se efectueaza pentru perechi de matrice, n final gradele de asemanare obtinute sunt agregate obtinndu-se gradul de asemanare a ntregului lot de masive considerat. Stabilirea asemanarii n functie de valorile elementelor aflate pe aceeasi pozitie n cadrul masivelor bidimensionale presupune construirea matricei care ia valorile: 0, daca pe aceeasi pozitie din cele doua matrice sunt valori distincte; 1, daca pe o aceeasi pozitie din cele doua masive bidimensionale se afla elemente cu valori identice. Pentru a obtine gradul de asemanare a doua matrice n functie de acest criteriu se nsumeaza valorile elementelor matricei rezultate dupa comparare, iar suma mparte la numarul total de elemente ale masivului.

Expresia analitica a acestui indicator, ?1 , are urmatoarea forma:

1 =
unde: -

i =1

m +1 n c +1

bij
(8.29)

j =1

( m + 1) ( nc + 1)

b matricea de stocare a valorilor privind identitatea elementelor din cadrul matricelor; - m+1 numarul de linii al matricelor (inclusiv linia de total); - nc+1 numarul de coloane al matricelor (inclusiv coloana de total). Compararea matricelor n functie de ponderi presupune: - calcularea de ponderi ; - construirea a doua matrice care contin valorile rezultate dupa comparare: 0, daca pe o aceeasi pozitie n cadrul celor doua masive bidimensionale se afla ponderi cu valori diferite; 1, daca pe o aceeasi pozitie se afla ponderi cu aceeasi valoare. Indicatorii ?2 si ?3 au expresiile analitice:

unde:


i =1

m +1

nc

j =1

c ij
(8.30)

( m + 1) n c

c matricea de stocare a elementelor privind identitatea valorilor ponderilor (calculate n functie de totalul pe linii) aflate pe o aceeasi pozitie n cadrul matricelor; - m+1 numarul de linii pentru care se calculeaza aceste ponderi; - nc numarul de coloane pentru care se calculeaza aceste ponderi. cnd reperul considerat este totalul pe linii;


unde:


i =1

nc +1 j=1

d ij
(8.31)

m ( n c + 1)

d matricea de stocare a valorilor elementelor privind identitatea ponderilor (calculate n functie de totalul pe coloane) aflate pe o aceeasi pozitie n cadrul matricelor care sunt comparate; - m numarul de linii pentru care se calculeaza aceste ponderi; - nc+1 numarul de coloane pentru care se calculeaza aceste ponderi. cnd reperul considerat este totalul pe coloane. Completarea celor doua matrice se efectueaza n functie de reperul luat n considerare la calculul ponderilor, total pe linii, respectiv, total pe coloane. n final, pentru a sintetiza gradele de asemanare ce corespund celor trei criterii se calculeaza un indicator, ?p , care reflecta gradul de asemanare mediu al celor doua masive bidimensionale ca medie geometrica ntre gradele de asemanare partiale. Acest indicator este utilizat ulterior pentru a calcula gradul de asemanare a ntregului lot de matrice considerat.

p = 3 1 2 3

(8.32)

Gradul de asemanare f a lotului de devize reprezentat ca lot de matrice se calculeaza ca medie geometrica ntre gradele de asemanare finale obtinute n urma compararii masivelor bidimensionale doua cte doua.
2 Cn

f = Cn
unde: -

i =1

pi

(8.33)

C 2n - numarul de comparatii efectuate ; pi - gradul de asemanare mediu al devizului i;

8.5 Matricea de precedente Un program este format din instructiuni dispuse ntr-o succesiune Js1 , Js2 , Js3 , ..., Jsn . Fiecare limbaj de programare contine: v instructiuni alternative; v instructiuni repetitive; v expresii de atribuire; v apeluri de functii; v operatii de I/E; v instructiuni de revenire; v evaluari expresii. Clasificarea instructiunilor are niveluri diferite de detaliere. Este important ca o data definite tipurile de instructiuni sa se elaboreze software care genereaza automat matricele de precedente. n continuare se noteaza: - a1 instructiuni de salt conditionat; - a2 instructiuni repetitive; - a3 evaluari de expresii; - a4 apeluri de functii; - a5 operatii de I/E. Matricea Aa contine elemente aij care indica frecventa instructiunilor de tip ai care urmeaza instructiunilor de tip aj. Programului: a=1; b=7; c=5; for(...) c++; for(...) a++; for(...) b++; c++; if(...) printf(...); if(...) printf(...); max(...); i se asociaza matricea de precedente:

Matricea de precedente a programului a1 1 a2 2 1 1 a3 1 1 2 a4 Tabelul 8.38 a5

a1 a2 a3 a4 a5

Doua programe clone au matrice de precedente egale. Un program P este format din instructiunile I1 , I2 , , INi. Metrica McCabe ia n considerare graful G(Vn , Aa), unde V este r n multimea nodurilor si Aa este multimea arcelor. Se considera programul urmator: void main () { int a, b, c, d, e, x; a= 3; b = 5; c =8; b = 7; scanf(%d, &x); if (x>0) e = a + b; else e = c + d; printf(%d,e); }

I1 I2 I3 I4 I5 I6 I7 I8 I9 I10

I11 Programului i se asociaza graful Gr din figura 8.2.

Start a=3 b=5 c=8 d=7 scanf( ) if e=c+d e=a+b printf( ) Stop

Figura 8.2 Graful asociat programului. Precedenta este rezultatul dispunerii instructiunilor n program n asa fel nct acestea sa conduca la obtinerea de rezultate corecte. O problema se obtine prin scrierea a N programe diferite, care nsa implementeaza acelasi algoritm. Diferentele care apar sunt determinate de: limbajul utilizat, structurile de date definite si referite, structurile de control folosite, gradul de generalitate, dimensiunea problemelor care se rezolva, precizia rezultatelor, optiunile privind datele de intrare si structura rezultatelor obtinute, nivelul de reutilizabilitate a procedurilor, a tipurilor de date, a claselor. Matricele de precedenta difera de la program la program, chiar daca este vorba de rezolvarea aceleiasi probleme. Pentru ca instructiunile, succesiunea lor determina grafuri diferite. n [IVAN99] este definita metrica bazata pe matricea de precedenta, cu luarea n considerare a lungimilor arcelor, determinate de diferenta n modul a pozitiei instructiunilor executate consecutiv. Astfel metrica LIL1 se defineste prin:
LIL1 = i j , i j si (i , j ) A (8.34)
ii j

iar metrica LIL2 se defineste prin:

LIL 2 = (i j ) , i j si (i , j ) A
2 ii j

(8.35)

Experimentele evidentiaza diferentele care apar ntre programele n care lungimea ar-celor este mare, ceea ce metrica McCabe nu reflecta. Software elaborat pentru implementarea metricilor LIL1, LIL2 precum si a formelor normate: LIL1N = LIL1 / max (LIL1), LIL2N = LIL2 / max (LIL2), conduce la evaluarea coeficientilor de corelatie ale caror niveluri sunt cuprinse ntre 0.70 si 0.90, ceea ce exprima posibilitatea utilizarii oricarei dintre metrici, rezultatele fiind asemanatoare.

8.6 Matricea dependentelor Se considera programul P, format din instructiunile I , I2, , INi. 1 Instructiunea I depinde de instructiunile I -1, Ik-2, ., Ik-r daca variabilele k k initializate sau modificate de acestea intervin activ n expresii sau determina controlul executiei Ik . Matricea B, avnd nm linii si nm coloane, a dependentelor are elementele:
bij = 0, daca instr. i nu depinde de instr. j 1, daca instr. i depinde de instr. j

Se considera bii = 1, instructiunea depinznd de ea nsasi. Se considera programul P1 : void main( ) { int a, b, c, d; a = 1; b = 2; c = 7; d = 114; }

// I1 // I2 // I3 // I4

Programului P1 i se asociaza matricea dependentelor: I1 1 0 0 0 I2 0 1 0 0 I3 0 0 1 0 I4 0 0 0 1

I1 I2 I3 I4

Se observa ca instructiunile programului P1 sunt independente una de celelalte si li se asociaza matricea unitate a dependentelor. Programului P2 : void main( ) { int a, b, c, d;,e a = 4; // I1 b = a+5; // I2 c = b+120; // I3 d = b+a+c; // I4 e = c+d; // I5 printf ( \n %d %d %d %d %d, a, b, c, d, e); } i se asociaza matricea dependentelor: I1 1 1 0 1 0 1 I2 0 1 1 1 0 1 I3 0 0 1 1 1 1 I4 0 0 0 1 1 1 I5 0 0 0 0 1 1 I6 0 0 0 0 0 1

// I6

I1 I2 I3 I4 I5 I6 Programului P3 : void { main ( )

int a,b,c,d,e,i; scanf( %d,&a); if (a>5) {

// I1 // I2

scanf(%d,&b); d = a+b; } else { scanf(%d,&c); d=a+c; } e = d ++; for(i =0 ;i<7;i++) e += a; printf(%d,e); } i se asociaza matricea dependentelor: I1 1 1 0 0 0 1 0 0 1 0 I2 0 1 1 1 1 1 0 0 0 0 I3 0 0 1 1 0 0 0 0 0 0 I4 0 0 0 1 0 0 1 0 0 0

// I3 // I4 // I5 // I6 // I7 // I8 // I9 // I10

I1 I2 I3 I4 I5 I6 I7 I8 I9 I10

I5 0 0 0 0 1 1 0 0 0 0

I6 0 0 0 0 0 1 1 0 0 0

I7 0 0 0 0 0 0 1 0 1 0

I8 0 0 0 0 0 0 0 1 1 0

I9 0 0 0 0 0 0 0 0 1 1

I10 0 0 0 0 0 0 0 0 0 1

Indicatorul de dependente. Se considera matricea dependentelor B avnd elementele bij {0,1}. Se calculeaza complexitatea: Cd = (( bij )log 2 ( bij ))
i =1 j =1 j =1 nm nm nm

(8.36)
n

bazata pe dependente. Cd apartine intervalului [0, ] unde = i log 2 i


i =1

pentru ca se lucreaza cu matricea inferior triunghiulara.

Normarea indicatorului bazat pe dependente se va realiza astfel:

Cd =

( b
i =1 j =1

nm

nm

ij log 2 ( bij )) j =1

nm

i log
i =1

nm

(8.37)

Matricea dependentelor maxime pentru un program cu 5 instructiuni este: I1 1 1 1 1 1 I2 0 1 1 1 1 I3 0 0 1 1 1 I4 0 0 0 1 1 I5 0 0 0 0 1

I1 I2 I3 I4 I5

Daca programul are toate instructiunile de atribuire independente ntre ele sau contin exclusiv afisarea unor texte, atunci matricea dependentelor este o matrice unitate si Cd,Cd sunt 0. Instructiunile se grupeaza n doua categorii n functie de dependenta: instructiuni slab dependente si instructiuni puternic dependente. Se noteaza bi = bij . Se alege elementul maxim din sirul b1 , b2,
j =1 nm

bn :

bmax = max {bi }


i =1, n

(8.38)

Se calculeaza valoarea = (bmax 1 )/2 . Fie:

Mp =

i =1 1bi +1

nm

nm

bi
(8.38, 8.39)

N=

i =1 + <bi bmax 1

bi

Complexitatea gradata a programului este data de relatia :


Cg = M p log 2 M p + N log 2 N

(8.40)

Cg =

M p log2 M p + N log 2 N ( M p + N )log2 ( M p + N )

(8.41)

Se considera un program P4 avnd matricea dependentelor:


1 1 1 0 1 1 0

1 0 1 0 0 1

1 1 0 1 0

1 1 1 1 1 1 0 1 1 1

Sirul bi este format din elementele: {1, 2, 2, 3, 3, 5, 4}, bmax = 5, = 2, Mp =1+2+2+3+3 = 11, N = 5 + 4 = 9.
C g = 11log 2 11 + 9 log 2 9 = 66.58

Cg =

11 log 2 11 + 9 log 2 9 = 0.77025 20 log 2 20

Complexitatea calitativa Ca opereaza cu numarul de componente apartinnd intervalelor [1, +1] si (+1, bmax]. Fie M1 numarul de elemente din sirul b1 , b2 , ..., bn pentru care bi [1, +1] si N1 numarul de elemente din sirul bi (+1, bmax]. Astfel:

Ca = M 1log 2 M 1 + N1log 2 N1
Ca = M 1 log 2 M 1 + N1 log 2 N1 n log 2 n

(8.42) (8.43)

Pentru programul P4 , M1 = 5, numarul de elemente din sirul b1 , b2, , bn pentru care bi [1, +1], iar N1 = 2, numarul de elemente din sirul bi(+1, bmax].

Ca = 5 log 2 5 + 2 log 2 2 = 13,6


Ca = 5 log 2 5 + 2 log 2 2 =0,69 7(lg 2 7 1)

n cazul n care sunt luati n considerare coeficienti de importanta si sunt utilizate modele neliniare se dezvolta noi metrici ale clonarii software. Este deosebit de important sa se ia n considerare ca orice model care se construieste sa includa printre factorii de influenta carora le corespund variabilele exogene elemente ce rezulta din masuratori pe texte sursa efectuate automat. n cazul n care se construiesc metrici ce presupun alte modalitati de colectare a datelor, apar dificultati de ncarcare baze de date, de validare a metricilor si de implementare n vederea folosirii curente.

ALTE ASPECTE ALE CLONARII INFORMATICE

9.1 Gestionarea clonelor informatice Lansarea unui produs informatic pe piata este nregistrata ntr- un Registru al produselor software. Problema care se pune este de stabili daca noul produs este sau nu o clona a produselor nscrise deja n acest registru. Este evident faptul ca indicatorul care reflecta gradul de asemanare ntre aplicatiile informatice trebuie sa tinda spre 1 pentru a concluziona ca este o clona a unui produs program deja existent. Produsele software care se adreseaza aceluiasi segment de piata au caracteristici si functionalitati apropiate, dar nu sunt absolut identice. Gestionarea clonelor informatice consta, n principal, n stabilirea caracterului original al unui software si actiunile care se impun a fi luate n cazul identificarii de clone informatice. Clonele informatice sunt forme concrete de manifestare a fenomenului de piraterie software. Managementul informational reprezinta un control sistematic la informatiei nregistrate, asigurnd suport n luarea deciziilor, reducerea costurilor si atingerea obiectivelor propuse n cadrul organizatiei.

Orice tip informatie, fie n format electronic, fie n alt format de reprezentare si stocare, trebuie sa fie administrata ntr-o maniera eficienta si consistenta. Aspectul esential al managementului informational consta n asigurarea accesului la nregistrarile dorite n orice moment din ciclul lor de viata. Informatia reprezentata si stocata n format electronic prezinta caracteristici specifice datorita varietatii de formate, suporturi si sisteme aflate n uz curent. Resursele informationale create n mediul electronic trebuie sa fie gestionate ntr-o maniera care asigura identificarea lor efectiva, organizarea, regasirea si mentenanta acestora. Produsele program sunt colectii de coduri sursa, date si alte informatii furnizate n format digital. Introducerea acestora n Registrul produselor software se efectueaza sub forma de nregistrari ntr-o baza de date. Aceste nregistrari electronice sunt obiecte de management n concordanta cu regulile legale specifice fiecarei tari. O aplicatie de management automat al nregistrarilor cu privire la produsele software lansate pe piata nu numai ca le administreaza electronic, dar face posibila si gestionarea acestora pe alte medii de stocare (hrtie, film, casete audio/video, fotografii, microfilme, discuri optice si casete magnetice). Aplicatia de management automat trebuie sa: ofere o baza de date centrala cu diverse tipuri de aplicatii informatice; control fizic al nregistrarilor ele ctronice si stabilirea locatiei si dispunerii documentelor non-electronice; identificare automata a fiecarei nregistrari electronice sau nonelectronice. Se impune ca aplicatia de gestiune automata a nregistrarilor din Registrul produselor software sa ofere protectia informatiilor continute n acesta mpotriva: accesul neautorizat; modificarilor necorespunzatoare; pierderi fizice de informatie. Procedurile de securitate pentru documentele stocate n format electronic trebuie sa includa controlul accesului la calculatoare si dispozitivele de stocare electronica a datelor.

De asemenea, sunt necesare copii ale nregistrarilor esentiale. Software sau documentatia ceruta pentru regasirea si accesul la acestea trebuie sa fie plasate ntr-o locatie separata unde sunt gestionate aceste copii. Aplicatia de gestiune automata a nregistrarilor trebuie sa ofere facilitati de vizualizare, copiere, tiparire pe durata existentei acestora. Acestea presupun ca aplicatia sa dispuna de operatii: mentinerea n bune conditii de functionare a dispozitivelor hardware si modulelor software ale sistemului; realizarea de copii de siguranta a nregistrarilor importante din baza de date; asigurarea, prin intermediul dispozitivelor hardware si software, a vizualizarii nregistrarilor n formatul nativ; asigurarea compatibilitatii ntre diferitele versiuni hardware si software; trecerea la noi formate de reprezentare si stocare a informatiei atunci cnd vechile formate nu mai sunt utilizate pe scara larga. nregistrarea n baza de date a unei noi aplicatii software trebuie sa se realizeze conform unor reguli: v stabilirea denumirii produsului; v clasificarea produsului se asigura descrierea prin intermediul unui profil al produsului; v stabilirea regulilor de regasire si acces la nregistrarea creata; v asigurarea controlului versiunii produsului; v detalii privind mentinerea sau eliminarea nregistrarii.

9.2 Efecte economice ale clonarii informatice Diversele modalitati de masurare a pierderilor datorate utilizarii neautorizate a clonelor informatice sunt discutabile datorita metodologiilor de aplicare a lor. n acest context, se ridica o serie de probleme: Descresterea volumului de vnzari a copiilor legale. Numarul de copii autorizate suplimentare care ar putea fi vndute nu este identic cu numarul de duplicate realizate n mod ilegal. Copiile neautorizate sunt vndute la un pret substantial inferior celui al produselor autorizate. Efectele pirateriei software asupra preturilor de desfacere. Preturile de desfacere al produselor software sunt afectate de extinderea comertului cu copii software neautorizate. Copiile ilegale, avnd un nivel ridicat de calitate, determina reducerea cererii pentru copiile legale,

autorizate si cresterea numarului de utilizatori care cumpara copii ilegale n locul celor autorizate. Efectul asupra pretului de desfacere al produselor program legale este fie pozitiv, fie negativ. Efectul pozitiv apare deoarece pretul creste daca cei mai multi consumatori sensibili la pret se ndreapta spre produsele neautorizate, n timp ce cea mai mare parte a consumatorilor nesenzitivi la pret ramn fideli pietei legale. Ca urmare, are loc o cerere mai putin senzitiva la pret, ceea ce permite producatorilor o crestere a pretului. Efectul negativ se manifesta atunci cnd consumatorii nu difera foarte mult n senzitivitatea la pret, acesta nregistrnd o scadere. n acest caz, toti consumatorii prefera sa achizitioneze produse program piratate. Astfel, efectul pirateriei software consta ntr-o cerere mai elastica n functie de pret a copiilor autorizate. Estimarea nivelului pirateriei software. Presupunnd ca dezvoltarea practicilor de realizare a copiilor n mod neautorizat poate fi estimata n limite rezonabile, nu se poate presupune ca toate copiile neautorizate sunt ilegale si reprezinta piraterie. Definitia exacta cu privire la copiile legale face obiectul unor controverse. Opiniile diferite exprimate cu privire la legalitatea copiilor au condus la realizarea unor statistici diverse asupra consecintelor economice ale dezvoltarii pirateriei. Anticiparea pirateriei. Anticiparea procesului de copiere ilegala de software determina ca anumite produse sa nu fie niciodata lansate pe piata deoarece producatorul nu considera ca vnzarile de pe piata autorizata sunt suficiente pentru a acoperi costurile de productie si distributie. n acest caz, pierderile producatorului sunt reprezentate de profitul si alte drepturi banesti care decurg din vnzarea produsului. De asemenea, consumatorii sufera si ei un cost egal cu diferenta ntre valoarea pe care ar fi obtinut-o cu ajutorul produsului si pretul de achizitie al acestuia. Pierderi non-profit. Exista pierderi cauzate de pirateria software care nu sunt direct legate de profit. Reputatia unui producator de software are de suferit daca pe piata circula copii neautorizate, de o foarte slaba calitate, n scopul degradarii reputatiei n fata potentialilor clienti. Pentru a face fata provocarilor lansate de pirateria software, eforturile s-au ndreptat n directia protejarii produse program. Exista mai multe modalitati de a combate pirateria. Una dintre principalele metode consta n oferirea unei protectii chiar de software nsusi prin intermediul unui numar de identificare serial number. Aceasta tehnica de protectie consta doar n introducerea unui serial number valid si nimic altceva. n general, serial number este independent de numele de utilizator, dar exista produse la care acesta este derivat din numele utilizatorului. n

aceasta situatie, utilizatorul este mai putin tentat de a da altcuiva cheia de activare a produsului sau de a face-o publica pe Internet. Scheme mai avansate prevad generarea numarului pe baza componentelor hardware din sistem. Se genereaza un unic computer id specific fiecarui computer. O alta forma de protectie consta n atasarea unui dispozitiv la unul din porturile calculatorului. La lansarea aplicatiei se verifica existenta acestui dispozitiv, programul nefunctionnd daca lipseste. O protectie suplimentara este oferita de ncriptarea cu ajutorul unui algoritm care nu poate fi spart a comunicatiei ntre aplicatia software si dispozitiv. Aceste dispozitive sunt utilizate n principal pentru aplicatii specializate si au un pret ridicat. Exista o tehnica de protectie a copierii si pe mediile de stocare de tip CD. Solutia este una bazata pe software si consta n includerea unei semnaturi digitale pe suportul CD. Pirateria software distruge fluxul de venituri al companiilor mici care au gasit nise pe piata. Fara acest flux de venituri companiile mici ramn fara sursa de dezvoltare de noi inovatii software, reducndu-se astfel posibilitatea de a face profit. n plus, includerea unei modalitati de protectie la copiere a produsului software realizat este foarte scumpa pentru anumite companii. De exemplu, dispozitivul hardware mentionat mai sus aduce un pret suplimentar de 5$ pna la 20$ pentru fiecare copie a programului. Totodata, acesta nu faciliteaza distribuirea produsului prin Internet si, deci, o piata potentiala mai restrnsa pentru producator. Pirateria software afecteaza si consumatorul. Adesea, ca urmare a folosirii unei copii neautorizate acesta beneficiaza de un produs incomplet sau deteriorat. De asemenea, nu se obtine acces la suportul producatorului, materiale de instruire sau noi versiuni la un pret scazut. n plus, expertii spun ca de multe ori produsul software piratat contine virusi care distrug datele utilizatorilor stocate pe disc, iar tehnicile de protectie nu sunt agreate de utilizatori datorita complexitatii acestora de instalare si utilizare. n concluzie, pirateria software este un fenomen negativ att pentru industrie, ct si pentru utilizatori. Protectia copierii de software pare a fi mai rea dect fenomenul de piraterie n sine. n multe cazuri, tot ceea ce face protectia la copiere a produselor program este de a ngradi accesul utilizatorilor legali la software.

9.3 Instrumente pentru identificarea clonelor Instrumentele pentru identificarea clonelor informatice actioneaza asupra urmatoarelor elemente supuse analizei: v texte; v cod sursa scris n limbajul de programare C++; v devize de cheltuieli, care nsotesc diverse documente. Analiza gradului de asemanare ntre texte se realizeaza prin intermediul programului Texte.exe [POPA02]. Acest program determina o serie de indicatori prezentati n capitolele anterioare, si anume: gradul de asemanare al textelor n functie de lungimea acestora; gradul de asemanare al textelor n functie de frecventele de aparitie a caracterelor alfabetice; gradul de asemanare al textelor pe baza vocabularului utilizator; gradul de asemanare al textelor pe baza vocabularelor textelor; gradul de asemanare al textelor n functie de frecventele minime si maxime ale vocabularului comun; gradul de asemanare al textelor prin mpartirea textului n paragrafe. Sistemul de fisiere utilizat de aceasta aplicatie cuprinde urmatoarele elemente: fisierul care contine numele fisierelor care formeaza lotul supus analizei comparative; acest fisier este memorat pe discul magnetic sub numele de fisiere.dat; textele care se compara la un moment dat; sunt memorate n doua variabile globale ale aplicatiei date prin variabilele de tip vector de caractere cu numele: numef1, numef2; fisierul care memoreaza cuvintele vocabularului definit de utilizator; este folosit prin intermediul unei variabile globale a sistemului, avnd denumirea de numef3; acesta este un fisier text, care memoreaza pe prima linie numarul de cuvinte ale vocabularului, iar pe rndurile urmatoare fiecare cuvnt n parte; fisierul care stocheaza gradele de asemanare ntre texte; este format din articole ce contin fiecare cte o variabila ce reflecta gradul de asemanare ntre doua texte; este memorat pe disc sub numele de grade_txt.dat ; fisierele care memoreaza vocabularele textelor care se compara la un moment dat, date prin numef1 si numef2; continutul acestora se modifica, fiind suprascrise atunci cnd se compara

alte texte, date de asemenea prin numef1 si numef2; primul articol al vocabularelor fisierelor care se compara contine numarul de cuvinte ce formeaza vocabularul; celelalte articole au structura: nume variabila; este un sir de caractere care memoreaza denumirile variabilelor utilizate n program; frecvente de aparitie n text a cuvntului corespunzator identificat; Fisierele sunt memorate pe disc sub numele de voc_f1.dat si voc_f2.dat; v fisierele care contin denumirile fisierelor paragraf; fisierele paragraf sunt formate fiecare din cte un paragraf al unui text, acestea fiind memorate pe discul magnetic sub numele de fis*.dat, respectiv gis*.dat, unde * ia valorile 0,1,2,... n functie de numarul de paragrafe identificate n textele care sunt comparate; fisierele care memoreaza aceste nume de fisier-paragraf sunt denumite si stocate pe suport extern sub numele de para_f1.dat, pentru numef1, si, respectiv, para_f2.dat, pentru numef2. v fisiere care sunt formate din vocabularele fisierelor-paragraf; structura acestor fisiere este identica cu cea a fisierelor care memoreaza vocabularul textelor; sunt stocate pe disc sub numele de voc_pf1.dat si voc_pf2.dat, continutul acestora schimbndu-se atunci cnd sunt comparate alte texte; v fisierul care memoreaza gradele de asemanare ntre paragrafe pentru doua texte comparate la un moment dat; acesta este stocat si utilizat sub numele de grade_para.dat; structura sa cuprinde articole de tip double, dimensiunea n articole fiind egala cu produsul ntre numarul de paragrafe al textelor care se compara. Aplicatia furnizeaza valoarea sintetica a gradului de asemanare a unor texte pe baza urmatoarelor operatii de introducere a datelor: - deschidere fisiere de lucru. Sunt introduse date cu privire la lotul de fisiere care sunt supuse analizei. Datele introduse vizeaza urmatoarele elemente: numarul de fisiere supuse analizei; denumirile de fisier care formeaza lotul textelor supuse analizei. - construire vocabular definit prin utilizare . Consta n crearea unui vocabular de catre utilizator pentru contorizarea

frecventelor de aparitie a cuvintelor din acesta. Datele pe care utilizatorul trebuie sa le introduca sunt: numarul de cuvinte al vocabularului utilizator; numele fisierului n care este memorat vocabularul utilizator; cuvintele vocabularului utilizator. Analiza gradului de asemanare ntre programele sursa scrise n limbajul de programare C++ se realizeaza cu ajutorul aplicatiei Orto.exe [POPA02]. Valorile calculate de aplicatie pe fisiere sursa C++ vizeaza urmatorii indicatori: gradul de asemanare n functie de lungime exprimata n numarul de octeti ocupati pe suportul de stocare; gradul de asemanare n functie de frecventele de aparitie a caracterelor alfabetice; gradul de asemanare n functie de frecventele de aparitie a cuvintelor din vocabularul utilizator; gradul de asemanare n functie de frecventele de aparitie a cuvintelor din vocabularul acestora; gradul de asemanare n functie de frecventele de aparitie a caracterelor alfabetice si frecventele de aparitie a cuvintelor din vocabularul paragrafelor; gradul de asemanare n functie de frecventele de aparitie a variabilelor definite n cadrul programelor sursa; gradul de asemanare n functie de pozitia variabilelor n programele sursa; gradul de asemanare n functie de frecventele de aparitie, minime si maxime, a cuvintelor din vocabularele fisierelor; grade de asemanare n functie de matricele de precedenta ale instructiunilor din fisierele comparate. Sistemul de fisiere utilizat de aplicatie cuprinde urmatoarele elemente: - fisierul care memoreaza gradele generale de asemanare ntre programele sursa C++, care sunt determinate pe baza criteriilor definite; numele sub care este memorat pe disc acest fisier este grade_text.dat; - fisierul care memoreaza gradele partiale de asemanare pentru fiecare pereche de fisiere care se compara; denumirea acestui fisier este grade_ptxt.dat ; articolele acestui fisier sunt vectori,

numarul de articole fiind dat de numarul de comparatii, iar dimensiunea articolului este egala cu numarul de criterii definite; fisierul care retine vocabularul definit de utilizator; este un fisier text care memoreaza pe fiecare linie cte un cuvnt din vocabular; prima linie este ocupata de dimensiunea vocabularului exprimata n cuvinte; articolele acestui fisier sunt siruri de caractere, fiecare sir memorndu-se pe cte un rnd; este utilizat prin intermediul unei variabile globala a aplicatiei sub denumirea numef3; fisiere care sunt utilizate pentru retinerea numelor fisierelor care se compara la un moment dat; acestea sunt folosite n aplicatie sub forma variabilelor globale care sunt de tip sir de caractere si au denumirile numef1 si numef2; fisierul care memoreaza denumirile tuturor fisierelor care formeaza lotul supus analizei comparative; este un fisier de date binar, iar denumirea sa este fisiere.dat; fisiere utilizate pentru stocarea tipurilor de date utilizate n programele sursa C++; articolele au urmatoarea structura: cheie tip - este un cmp al articolului prin care se identifica n mod unic un tip de date n cadrul fisierului; denumire tip - este un cmp care memoreaza denumirea tipului de date care corespunde codului specificat n celalalt cmp. Denumirea acestora fisiere are forma tipuri_*.dat, unde * reprezinta denumirea unui fisier care se compara la un moment dat; fisierele care memoreaza variabilele identificate n cadrul codurilor sursa; articolele au urmatoarea structura: codul tipului de date al variabilei; tipul variabilei: simpla, pointer, masiv; dimensiunea tipului variabilei; denumirea variabilei; frecventa de aparitie a acesteia n cadrul programului. Denumirea fisierelor are forma variab_*.dat, unde * reprezinta numele unui fisier care se compara al un moment dat; fisierele care retin frecventele de aparitie a variabilelor dupa instructiuni; structura articolelor acestor fisiere este: denumire instructiune; frecventele de aparitie a variabilelor dupa instructiune.

Denumirea acestor fisiere are forma instr_var_*.dat, unde * reprezinta numele fisierului care se compara la un anumit moment. fisierele care memoreaza instructiunile de atribuire; utilizate n vederea construirii matricelor de precedenta a fisierelor care se compara; denumirea acestor fisiere are forma instr_atrib_*.dat, unde * reprezinta numele fisierului care se compara la un moment dat; articolele acestor fisiere sunt siruri de caractere; fisierele care stocheaza matricele de precedenta; articolele sunt variabile de tip int; forma denumirii acestor fisiere este mat_prec_*.dat, unde * este numele unui fisier care se compara la un moment dat; fisierele care memoreaza lungimile n octeti a fisierelor; denumirile acestora au forma lung_*.dat, unde * este numele unui fisier care se compara la un moment dat, iar articolele sunt variabile de tip long; fisierele care memoreaza frecventele de aparitie a caracterelor alfabetice din fiecare fisier din lotul considerat; articolele acestor fisiere sunt vectori, iar denumirea lor este de tipul frecv_*.dat, unde * reprezinta numele unui fisier care se compara la un moment dat; fisierele care memoreaza frecventele de aparitie a cuvintelor care formeaza vocabularul fisierelor care sunt supuse analizei; primul articol a acestor fisiere reprezinta numarul de cuvinte al vocabularului care este memorat prin intermediul unei variabile de tip long; celelalte articole au urmatoarea structura: denumire cuvnt; frecventa de aparitie a cuvntului Denumirile acestor fisiere au forma vocf_*.dat, unde * reprezinta numele unui fisier care se compara la un moment dat; fisierele care stocheaza frecventele de aparitie a cuvintelor din vocabularul definit de utilizator; articolele acestor fisiere sunt vectori; denumirile acestor fisiere au forma voc_*.dat, unde * este numele unui fisier sursa C++ care se analizeaza la un moment dat; fisierele care memoreaza sumele minime si maxime ale frecventelor de aparitie a cuvintelor care formeaza vocabularele fisierelor care se compara; articolele acestor fisiere sunt de tip long; denumirile lor sunt sumamin_*.dat, pentru suma frecventelor minime, respectiv, sumamax_*.dat, pentru suma

frecventelor maxime; * reprezinta un sir de caractere format prin concatenarea numelor celor doua fisiere care se compara la un moment dat; - fisierele care retin gradele de asemanare ntre paragrafele identificate n cadrul fisierelor sursa care se compara la un moment dat; articolele acestor fisiere sunt de tip double, iar denumirea lor are forma grade_para_*.dat, unde * este un sir de caractere obtinut prin concatenarea numelor fisie relor sursa care se compara la un moment dat; - fisierele care memoreaza frecventele de aparitie a caracterelor alfabetice dintr-un paragraf al unui fisier sursa C++ care este supus analizei comparative la un anumit moment; articolele acestor fisiere sunt vectori de elemente de tip int, iar denumirea lor este frecv_para_*.dat; * reprezinta un sir de caractere format prin concatenarea numelor fisierelor care se compara si succesiunea data de numarul paragrafelor n cadrul fisierelor. Obtinerea valorii indicatorului sintetic de asemanare a fisierelor sursa dintr-un set de asemenea elemente are loc pe baza urmatoarelor operatii de introducere a datelor: - deschidere fisiere de lucru. Sunt introduse informatii privind lotul de fisiere care sunt supuse analizei. Datele furnizate sunt: numarul de fisiere supuse analizei; denumirile de fisier care formeaza lotul de texte sursa supus analizei. - construire vocabula definit prin utilizare . Consta n furnizarea unui vocabular de catre utilizator pentru contorizarea frecvent elor de aparitie a cuvintelor din vocabularul dat. Aceasta operatie presupune introducerea urmatoarelor date: numarul de cuvinte ale vocabularului utilizator; numarul maxim de cuvinte pe care utilizatorul le poate introduce este de 60000 de cuvinte; introducerea numelui fisierului n care se vor memora numarul de cuvinte si cuvintele propriu-zise; introducerea cuvintelor vocabularului. De asemenea, exista posibilitatea vizualizarii indicatorilor de ortogonalitate ce corespund diferitelor criterii luate n considerare, precum si elementele pe baza carora acestia au fost determinati.

Ortogonalitatea n cadrul unei multimi de devize de cheltuieli este surprinsa cu ajutorul programului Devize.exe [POPA02]. Programul ofera utilizatorului mai multe modalitati de lucru: ncarcarea unor devize preluate din fisiere existente pe disc, care sunt supuse ulterior analizei cantitative; introducerea devize a caror structura este specificata de utilizator; completarea unui set de devize cu structura predefinita care sunt analizate pentru a stabili gradul de ortogonalitate. Indicatorii de ortogonalitate care se calculeaza sunt: gradul de asemanare ntre valorile aflate pe aceleasi pozitii n matricea asociata devizului; gradul de asemanare a ponderilor valorilor n totalul pe linii al matricei; gradul de asemanare a ponderilor valorilor n totalul pe coloane al matricei. Fisierele utilizate n acest modul sunt: - devize preluate din fisiere existente pe discul magnetic: fisierul care contine valorile devizelor; ncarcat si folosit printr-o variabila globala a aplicatiei, si anume nume_dprel; fisierul care contine structura devizelor; numele este preluat, de asemenea, de la tastatura si este ncarcat si folosit printr-o variabila globala a aplicatiei numef_dsprel; fisierul care stocheaza, n urma efectuarii analizei, gradele de asemanare ntre devizele preluate din fisiere preluate de la tastatura; se identifica pe disc sub numele grade_prel.dat; este format din articole de tip double. - devize create de utilizator: fisierul care stocheaza structura devizelor; este memorat pe discul magnetic sub numele struct_dev.dat; fisierul care memoreaza valorile devizelor; este stocat pe discul magnetic sub numele de devize.dat; fisierul care memoreaza gradele de asemanare ntre devize; stocat si utilizat sub numele de devize.dat. - devize cu structura predefinita: fisierul care contine structura predefinita a devizului; este utilizat prin variabila globala a aplicatiei numef; fisierul care memoreaza valorile devizelor cu structura predefinita; se identifica pe disc prin numele devize_pdef.dat;

fisierul care stocheaza gradele de asemanare ntre devizele cu structura predefinita; articolele acestui fisier sunt de tip double, iar numele sub care este regasit pe disc este grade_pdef.dat.

Operatiile de introducere a datelor necesare determinarii gradului de asemanare a devizelor de cheltuieli sunt grupate astfel: Definirea devizelor utilizator presupune efectuarea urmatoarelor operatii: - stabilirea structurii si continutului devizelor presupune introducerea urmatoarelor elemente: numarul de devize; numarul de categorii de cheltuieli ale devizului; numarul de perioade de timp pentru care se construieste devizul. - introducerea datelor n devize consta n completarea devizului cu informatiile propriu- zise urmatoare: denumirea categoriilor de cheltuieli ale devizului; specificarea intervalelor de timp pentru care se realizeaza devizul; introducerea valorilor privind cheltuielile efectuate; specificarea seriei devizului; introducerea denumirii devizului. Preluarea devizelor din fisiere consta n introducerea urmatoarelor date: denumirea fisierului ncarcat cu valorile de cheltuieli; denumirea fisierului ncarcat cu structura devizului. Analiza cantitativa a unui set de devize cu structura predefinita presupune efectuarea urmatoarelor operatii: - initializarea structurilor de date n care se memoreaza informatii despre devize (structura, valori, grade de asemanare). Sunt introduse urmatoarele date: denumire fisier n care se memoreaza structura predefinita a devizului; specificarea modalitatii de deschidere a fisierului (pentru creare sau pentru actualizare).

introducerea valorilor elementelor devizelor presupune introducerea de date cu privire la: numarul de devize care se introduc n setul de analiza; valorile propriu-zise ale devizelor; seria devizului.

O operatie aparte efectuata asupra devizelor consta n selectarea devizului dupa serie. Datele care trebuie introduse n vederea identificarii unui deviz sunt: seria devizului; tipul devizului (utilizator, preluat de pe suportul extern de memorie).

10

CONCLUZII

De regula, clonarea informatica produce rezultate negative datorita celor care o efectueaza. Cnd o companie livreaza un produs realizabil cu de zece ori numarul sau de programatori, evident nu are capacitatea de a gestiona calitatea produsului software care va fi clonat. Mai mult, prin preturile promotionale se creeaza dependenta clientilor de un produs software incomplet cunoscut vnzatorului si de cele mai multe ori imposibil de depanat. Introducerea studiului sistematic asupra clonelor are menirea obtinerii unei delimitari exacte unde ncepe productia reala de software si unde conduce lipsa de control asupra clonelor software. n cazul dezvoltarii unui laborator pentru identificarea clonelor informatice se creeaza cadrul propice stimularii echipelor care proiecteaza produse program si baze de date pentru a solutiona probleme, cu eforturi proportionale cu complexitatea problemelor de rezolvat. Procesele de clonare creeaza disproportii ntre efortul de obtinere a produsului software n raport cu complexitatea, binenteles n defavoarea producatorilor reali. Clonarea este un subiect cu mult mai larg dect clonarea din biologie sau din informatica. Clonarea se regaseste n literatura si arta, precum si n toate celelalte ramuri ale stiintei.

n competitiile de obtinere a fondurilor participa clone, cte una la nivelul unui program sau an dupa an n cadrul aceluiasi program. Lucrari stiintifice publicate, cu autor specificat, se regasesc n altele aflate n librarii sau biblioteci cu multi ani nainte. Din cnd n cnd, sunt anulate titluri stiintifice daca lucrarile pe baza carora au fost acordate se dovedesc a fi clone. n cazul n care exista creat un sistem de analiza a ortogonalitatii fisierelor, deja s-a definit un instrument de lupta eficienta mpotriva clonarii informatice, cu extensie si spre alte domenii. Trebuie sa existe instrumente care analizeaza automat continutul fisierelor si trebuie definite fluxuri de urmat pentru verificarea ortogonalitatii. Chiar daca exista instrumente si structuri organizatorice bine definite, este necesara definirea procedurilor. Fiecare procedura are inputuri si outputuri, precum si pasi ce trebuie parcursi de toti actorii unui sistem, subsistem sau microsistem, generator de produse sau servicii purtatoare de profit. Pentru o studiere sistematica a proceselor informatice, este necesara o abordare interdisciplinara. Clonele informatice reprezinta o componenta importanta n reglarea accelerarii dezvoltarii societatii informationale. Crearea de clone se efectueaza prin copiere dar si prin acces neautorizat n sisteme informatice (spargere de cod). Cunoasterea legislatiei n vigoare permite alocarea corespunzatoare a resurselor pentru protectia proceselor de dezvoltare software si de baze de date originale. Totodata, interactiunile si comunicarea dintre specialisti creeaza premise pentru perfectionarea cadrului juridic. Minimizarea clonarii neautorizate are ca efect cresterea gradului de atragere a marilor companii producatoare de software pentru a deveni investitori n acel stat. Extensiile analizelor de clone presupun crearea unor sisteme de nregistrare, de verificare a noilor componente n raport cu cele existente si stabilirea unor modalitati de evidentiere a clonelor, respectiv, de sanctionare atunci cnd procesele de clonare contravin legislatiei n vigoare sau normelor de etica profesionala. Demersul ntreprins de autori reprezinta un nceput, iar cercetarile trebuie continuate pentru a obtine expresii cantitative ale limitelor ntre care un produs informatic sau un text trebuie acceptat ca nefiind clona. n acest scop se impune utilizarea retelelor neuronale si a algoritmilor genetici pentru a fundamenta o noua filosofie asupra proceselor de clonare, n dinamica lor.

Anex

LISTA DE VARIABILE I ACRONIME


A Aa Ac Aei Af ai Ai Ai aj Ap As b B BDi Bf bi bij bmax BPC Bs C C1 C2 C3 C4 C5 program apelant mulimea arcelor grafului asociat unui program colectivitate echipa i de realizare a specificaiilor clas de programe n funcie de valoarea lui f(Pi) elementul i al colectivitii A indicatorul de pe poziia i dintr-o mulime de indicatori indicatorul de pe poziia i din mulimea indicatorilor calculai noua poziie a instruciunii j dup efectuarea operaiei de sortare program care apeleaz proceduri fiier pe suportul de memorie elementul de pe linia i, respectiv coloana j privind identitatea valorilor din cadrul matricelor comparate modul n cadrul unui program baza de date cu poziia i n mulimea coleciilor de date organizate sub aceast form clas de programe n funcie de valoarea lui f(Pi) suma elementelor pe coloana j elementul de pe linia i, coloana j a unei matrice de preceden suma maxim a elementelor calculate pe coloane indicator sintetic al tuturor indicatorilor Ik stabilii pentru fiecare caracteristic fiier pe suportul de memorie procedur n cadrul unui program , numrul de module din cadrul unui program surs numrul de instruciuni for ntr-un text surs numrul de instruciuni if numrul de apeluri de funcii numrul evalurilor de expresii

208

Clonarea informatic

C6 C7 Cc Ccp Cd Cd CD Cf Cg Cg Ci cij Cik ck cmplxi COBD COS CP Cps Cr CSBD CSS Ct CT CTAI CV CVi d D def

numrul de instruciuni while numrul operaiilor de I/E pas de clonare parial a structurii bazei de date complexitatea programului complexitate bazat pe dependenele instruciunilor complexitate normat bazat pe dependenele instruciunilor Compact Disc clas de programe n funcie de valoarea lui f(Pi) complexitate gradat a programului complexitate gradat normat a programului caracteristica specific i a unei colectiviti elementul de pe linia i, respectiv coloana j privind identitatea ponderilor elementelor n valorile totale pe linii nivelul caracteristicii Ck pentru elementul ai din colectivitatea A numrul de modele ale indicatorilor de calitate asociai unei mulimi de programe complexitatea procedurii Pi costul copierii bazei de date costul operaiei de copiere-stocare software costul proiectului unui echipament complexitatea unui program sau a unei secvene de program costul realizrii unui produs costul suportului pentru stocare baze de date costul suportului de stocare a unei copii software complexitate a programului, lund n considerare i tipurile de date costul total la realizrii unui echipament costul total al aplicaiei informatice indicator agregat de variaie coeficientul de variaie al colectivitii ce valori i aplicaie definit pe o mulime de puncte M modul n cadrul unui program diferena ntre lungimea minim i lungimea maxim a instruciunilor dintr-un program surs

Anex

209

Di dij Dv E EI Ei f F f maxim Fi fi Fi( ) Fii fij fik fk fminim Fpi Fri Fs Fsi G g gi GAij Gc Gf Gi gi

data i utilizat n procesul de analiz a ortogonalitii elementul de pe linia i, repsectiv coloana j privind identitatea ponderilor elementelor n valorile toatele pe coloane indicatorul de diversitate a progarmului procedur n cadrul unui program entitate informatic entitatea i care este clona entitii EI indicator de performan sau de caracterizare a mulimii programelor P procedur n cadrul unui program lungime maxim a instruciunilor dintr-un program surs funcia i realizat de entitatea EI frecvena cu care este utilizat un cuvnt al unui vocabular n program procedura i care se adaug programului P fiierul intermediar cu poziia i din mulimea tuturor fiierelor intermediare frecvena de apariie a cuvntului i n textul Tj numrul de caractere de pe linia surs Lk din programul Pi numrul de caractere de pe linia surs k lungime minim a instruciunilor dintr-un program surs fiierul surs cu poziia i n mulimea tuturor fiierelor surs supuse analizei fraza i dintr-un text fiier stocat pe un anumit suport fiierul cu poziia i n mulimea fiierelor utilizate procedur n cadrul unui program indicator agregat de asemnare ntre dou texte prin structurare n paragrafe indicator agregat al metricilor gi gradul de asemnare n funcie de identitatea valorilor indicatorilor ntre programele surs Pi i Pj numrul de caractere comune a dou programe care au frecvene de apariie identice nume nou pentru fiierul F procedura i ntr-un program indicatorul i de asemnare a dou paragrafe din dou texte prin structurarea acestuia n paragrafe

210

Clonarea informatic

gij

Gk GkB Gkc Gr H HDD himax I Ia IA

ICLONARE Icr If Ii Iij Ij Ik IL IT IV J Ji Jn Jsi K k

frecvena de apariie a cuvntului nespecific i n textul Tj nivelul caracteristicii k n programul PA nivelul caracteristicii k n programul PB nivelul caracteristicii k pentru elementele identice n cele dou programe graful asociat unui program procedur n cadrul unui program Hard-Disk discul hard diferena maxim msurabil ntre specificaiile realizate de echipa i procedur n cadrul unui program indicator agregat gradul de asemnare a dou programe surs n funcie de caracterele comune cu frecvene de apariie identice indicator pentru msurarea eficienei procesului de clonare gradul de asemnare a dou programe surs n funcie de fondul comun de cuvinte ale vocabularelor gradul de asemnare al programelor surs n funcie de numrul cuvintelor din vocabularul reuniune cu aceeai frecven de apariie indicatorul i cu valoarea cuprins n intervalul [0, 1] instruciunea de pe poziia j din programul Pi instruciunea cu poziia j dintr-un program surs indicator de comparare a unei caracteristici comune din dou programe cu valoarea minim a sa gradul de asemnare, n funcie de lungime, a dou fiiere surs normalizate Information Technology tehnologia informaiei gradul de asemnare a dou fiiere surs indicator agregat al asemnrii a dou texte surs scrise ntr-un limbaj de programare indicatorul de asemnare i indicator agregat al asemnrii a unui lot de programe surs scrise ntr-un limbaj de programare instruciunea dintr-un program surs care se afl pe poziia i numrul de uniti folosite pentru stocarea de software i baze de date numrul echipelor de realizare

Anex

211

kc ki kn kp Kre L L0 La LA LBD LCLONA Le LGi Li Lik LIL1 LIL1N LIL2 LIL2N Lk Lli LMi Lpi LVco LVi LVre M m

indicator de cuantificare a abaterii poziiei instruciunilor fa de cea iniial prin efectuarea operaiei de sortare descresctoare a lungimii acestora numrul de valori distincte ale indicatorului Ji. numrul de indicatori Ik nenuli poziia caracteristicii BPC numrul cuvintelor din vocabularul reuniune care au aceeai frecven lista parametrilor procedurii unice P list adiional a variabilelor de stare i a celor de soluie indicator de cuantificare a abaterii poziiei instruciunii fa de poziia iniial prin efectuarea operaiei de sortare cresctoare a lungimilor acestora lungimea alfabetului exprimat n numr de caractere diferite utilizate indicator de cuantificare a caracteristicilor bazei de date iniiale indicator de cuantificare a caracteristicilor bazei de date clonate indicator de cuantificare a eficienei procesului de clonare lungime procedur Gi exprimat n numr de linii surs lungimea fiierului surs i exprimat n numr de octei linia surs cu poziia k din programul Pi metric bazat pe matricea de preceden forma normat a metricii LIL1 metric bazat pe matricea de preceden forma normat a metricii LIL2 linia surs cu poziia k din programul limbajul de programare i din mulimea tuturor limbajelor de programare lungime modul M exprimat ca numr de linii surs lista parametrilor procedurii cu poziia i n mulimea procedurilor construite lungimea vocabularului comun a dou programe surs lungimea vocabularului text surs i, exprimat n numrul de cuvinte distincte identificate lungimea vocabularului reuniune a dou programe surs numrul de copii pentru un produs software numrul de linii considerate pentru compararea masivelor bidimensionale

212

Clonarea informatic

M1 m1 m2 Ma mc Mci mf Mi Mp mp n n N n0 N1 n1 n2 n3 napi nBD nc ncai NCIi NCV ncvi NESC nf Ni ni nm

numrul de elemente din irul bi, bi [1, +1] numrul de arce din graful programului numrul de noduri din graful programului mulimea de puncte pe care se definete aplicaia d numrul de caracteristici specifice ale unei colectiviti modelul cu poziia i ntr-un sistem de cuantificare a unor indicatori numrul de cuvinte dintr-o fraz modul n cadrul unui program valoarea total a sumelor calculate pe coloane care se afl sub pragul numrul de comparaii efectuate ntre paragrafe n numrul de programe care fac obiectul analizei procesului de clonare dimensiunea matricei de preceden a instruciunilor valoarea total a sumelor calculate pe coloane care se afl peste pragul numrul programelor pentru care se construiesc versiuni numrul de elemente din irul bi, bi (+1, bmax] numrul operanzilor dintr-un program surs numrul operatorilor dintr-un program surs numrul de definiii de tipuri de date identitate paragrafe n funcie de frecvenele de apariie a caracterelor identificate numrul de baze de date numrul de coloane considerate n calculul ponderilor identitate frecvene de apariie ale caracterului i n dou texte numrul de cuvinte interschimbabile ntr-o procedur scris ntr-un limbaj de programare numrul de cuvinte dintr-un text cu frecvene de apariie diferite i nenule identitate frecvene de apariie a cuvintelor dintr-un text numrul de elemente structurale comune a dou texte comparate numrul de funcii realizate de entitatea EI numrul de instruciuni dintr-un program frecvena de apariie a valorii respectivului indicator; dimensiunea matricei de preceden

Anex

213

NMES Np nrcamp nrinreg nrleg nrtab NTC NTCV ntcvi ntcvp OEM OG ORDA P p P Pi PA PB Pc PC Pcc PDA Pi Pi(j) pm PP PP Pri Prk Pu R

numrul minim de elemente structurale a dou texte numrul de entiti produse numrul de cmpuri ale unei tabele numrul de nregistrri ale unei tabele numrul de legturi al bazei de date relaionale numrul de tabele numrul total de caractere alfabetice mici i mari dintr-un text numrul total de cuvinte distincte din dou texte care se compar semnaleaz identitatea frecvenelor de apariie a cuvntului i n ambele proceduri identitatea a dou paragrafe n funcie de frecvenele de apariie a cuvintelor identificate Original Equipment Manufacturer - software livrat mpreun cu un calculator nou sau componente hardware Ordonan Guvernamental Oficiul Romn pentru Drepturile de Autor program supus analizei numrul de cuvinte dintr-o fraz programul surs dup sortare procedura i care este adugat programului P program surs program surs clon a programului P Personal Computer - calculator personal problem complet i corect definit Personal Digital Assistent asistent digital personal programul cu poziia i dintr-o mulime de programe versiunea j a programului Pi numrul de reluri maxim acceptabil program surs nainte de sortarea descresctoare a instruciunilor program surs dup efectuarea sortrii descresctoare a instruciunilor procedura cu poziia i n mulimea procedurilor definite procedura k dintr-un program procedur unic de realizare a prelucrrilor numrul de copii al unei baze de date

214

Clonarea informatic

r ri RP RR S s S Sc Sfi SGBD Si SP Sp Spi ST SUA T Tj UE V Vi vi vij Vn VT WIMP WYSIWYG x X x0i x1 xi

xi

numrul de cuvinte cheie dintr-un anumit domeniu indicator de determinare a lungimii unui subinterval pentru colectivitatea i alt program dect P program surs nainte de sortarea descresctoare a instruciunilor produs software numrul de cuvinte nespecifice ale unui domeniu secven de program produs combinat ntre programele P i R situaia final cu poziia i din mulimea tuturor situaiilor finale Sistem de Gestiune a Bazelor de Date clone ale produsului software S sistem de programe secven de program secven de program i program surs Statele Unite ale Americii gradul de abatere a indicatorilor kc i La, unul fa de cellalt textul j supus procesului de analiz a ortogonalitii Uniunea European vocabularul programului P vocabularul programului Pi cuvntul i din vocabularul V cuvntul i din fraza j al unui text mulimea nodurilor grafului asociat unui program Vocabularul unui text Windows, Icons, Menu, Pointer What You See Is What You Get element pentru care se desfoar procesul de analiz a ortogonalitii suport de memorare a fiierelor valoarea i dat din baza de date a programului punct pentru care se calculeaz valoarea funciei distan variabila independent cu poziia i n mulimea mrimilor obiective media aritmetic a colectivitii de valori i

Anex

215

y Y y0 y1 yr z1 ij 1 f i p

i2

element pentru care se desfoar procesul de analiz a ortogonalitii suport de memorare a fiierelor Nivel determinat pe baza valorilor x0i punct pentru care se calculeaz valoarea funciei distan variabil rezultativ a comportamentului programului sau a calitilor acestuia punct pentru care se calculeaz valoarea funciei distan extensie a unui fiier numrul de indicatori cu valori identice specificaia j pentru echipa i de realizare extensie a unui fiier indicator agregat de asemnare a unui lot de masive bidimensionale indicatorul de pe poziia i din mulimea metricilor aplicate pe masive bidimensionale indicator agregat de asemnare a dou masive bidimensionale, calculat pe baza valorilor indicatorilor i valoarea median a sumei maxime bmax dispersia unei colectiviti de valori i limita superioar a intervalului de valori al indicatorului Cd

S-ar putea să vă placă și