Sunteți pe pagina 1din 192

INTRODUCERE

Dezvoltarea societatii informaionale presupune un nou mod de


abordare a produciei si circulaiei 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:
lista de indicatori formata din reuniunea sublistei indicatorilor de
structura si, respectiv, cu sublista indicatorilor de comportament;
indicator agregat fara diferentiere a importantei factorilor de
influenta;
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 acces 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 copii 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 informationale [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 Program e, module, proceduri
Programul este o constructie destinata rezolvrii 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 Ii,
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++)
{
prinf( \n a[%d]=",i+1);
scanf(%d",&a[i]);
}
s=0;
for(i=0;i<n;i++)
s+=a[i];
clrscr();
prinf( \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:
N um ar caractere pe linie sursa
Tabelul 2.1
L inie su rsa
#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);
}

N u m ar 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:

F igura 2.1 S tru ctu ra 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 M acrodefinitii 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:
#defne size 512
#defne w ord long
#define bytes sizeof(word)
Utiliznd definitiile de mai sus, secventa de cod urmatoare:
wordn=size * bytes;
este expandata la urmatoarea secventa:
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 { s i}.
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 prelucrailor 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:
intputere(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<<2A8 = <<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:
prin valoare; valoarea transmisa este copiata, prelucrarile
afecteaza numai aceasta copie, iar la revenirea n apelant
valoarea transmisa procedurii este aceeasi;
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 In teg rarea de com ponente 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]:
C rite rii de clasificare a com ponentelor
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 com ponentelor 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.
V erificarea redundantei la nivelul produsului softw are 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 R edundanta din program e


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
i f ( 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 R eutilizarea 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:
folosirea mai multor sisteme de operare;
asigurarea comunicatiei on-line ntre calculatoare;
proiectarea, implementarea si utilizarea sistemelor de baze de
date n cadrul solutiilor proiectate;
utilizarea diferitelor tipuri de retele de calculatoare;
utilizarea diferitelor tipuri de interfete utilizator;
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:
C riterii de clasificare a reutilizarii software
Tabelul 2.3
C riteriu l
de clasificare
Scop

Tipul
de reutilizator
Granularitatea
componentelor

M odul
de adaptare al
componentelor

Integrarea n
ciclul de viata
software

T ip u ri de reutilizare softw are

Reutilizare generala (reutilizare orizontala) - este o reutilizare


independenta de domeniu;

Reutilizare n cadrul domeniului (reutilizare verticala) specifica unui domeniu;

Reutilizare n cadrul unei fam ilii de aplicatii.

Reutilizare interna - n interiorul unei organizatii;

Reutilizare externa (de piata) - n cadrul unei alte organizatii.

Reutilizare de componente de granularitate fin a - 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.

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.

grosiera

este

Reutilizabilitatea este o caracteristica externa produsului software,


reflectnd potentialul de reutilizare al produsului program. Caracteristicile
unei componente reutilizabile sunt [STAN03]:
generalitate;
arie larga de aplicare;
modularitate;
completitudine si consistenta;
independenta hardware;
independenta de implementare;
fobustete;
fncapsulare;
fiabilitate;
documentare;
adaptabilitate/extensibilitate;
standardizare;
portabilitate;
certificare;
mentanabilitate.

2.6 C aracteristicile 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 EI nseamna a realiza unele dintre componente cu
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 F 1, 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 O- al realizarii unui produs. n cazul producerii a Np entitati, costul
total CT este:
C t = 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:
C t a i = Cs + C b d + M (C s s + C o s ) + R(C s b d + Co b d ) (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:
C t a i = Cs + C b d + K (M + R)C s s

(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 mentinute 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 Asi, A;2, - - , A k realizeaza
independent specificatiile a 11, a 1^ ..., a 1k, ntre care exista diferente
masurabile cu un indicator universal f(aii, aij). Elaborarea specificatiilor
reprezinta primul pas n realizarea unei aplicatii informatice.
Se alege:
hL

= m^ { f (a ,1, a 1 )}
*,3

(24)

Pentru definirea structurii pe module, pentru stabilirea claselor se


folosesc instrumente de aceeasi generatie, obtinndu-se independent
documentatia de design: a21, a22,..., a2k.
ntre rezultatele celor k echipe exista diferente, dintre care cea mai
mare este:
hmax = max { f ( ^2, a 3)}
1,3

(2.5)

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


hinax = max { f (a f , a 33 )}
i3

(1 6)

unde a3i si a3j 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: h 1 m a x , h 2m a x , ..., hxm a x . 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:
lirnhmx = 0
x p

(2.7)

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

ORTOGONALITATEA
FIIERELOR
3.1Fisiere
Fiierul reprezint 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:
creare;
scriere;
citire;
pozitionare n cadrul fisierului;
stergere;
trunchiere;
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

cod sursa

obiect

Extensia uzuala
exe, com, bin sau fara
extensie

batch

c, cc, java, pas, asm,


a
bat, sh

text

txt, doc

procesor de text

wp, tex, rrf, doc

biblioteca
tiparire/vizualizare

lib, a, so, dll, mpeg,


mov, rm
arc, zip, tar

arhiva

arc, zip, tar

multimedia

mpeg, mov, rm

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

Accesul la datele memorate n fiiere se realizeaza prin urmatoarele


metode:
acces secvential;
acces direct;
acces indexat.

3.2 D iversitatea datelor


Se considera o colectivitate A c formata din elementele ai, a2,

an,

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

3.3 C onceptul de ortogonalitate a elem entelor


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 = {vi,v2 ,...,vn}, unde M,v2,...,vn sunt
cuvinte din vocabular.
Se construiesc frazele:
Fr1 formata din cuvintele vi1,vk2, . , v kp;
Fr2 formata din cuvintele v[1,vl2, . , m m .
Lungimea ca numar de cuvinte a acestor fraze este:
Lg(Fri) = Lg(vki Vk2 ... vkp) = p cuvinte
Lg(Fr2 ) = Lg(vu V1 2 ... vm) = 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 m c caracteristici specifice colectivitatii, C 1, C2, ..., Cm .
Pentru doua elemente oarecare a; si a aparinnd colectivitatii A se
nregistreaza nivele ale caracteristicilor dupa cum urmeaza:
ai = (ci1 , ci2 , , cimc)
aj = (cj 1 cj 2 , , cjmc)
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 R1, pentru elementele x si y ale sale se defineste produsul
scalar dintre cele doua elemente prin <x, y> = x1*y1+x2*y2+ . + x n*yn , daca
x = ( x1 , x2 , . , xn) si y = (y1 , y2 . , yn ).
Se defineste operatia T asa fel nct ck T cjk are valoarea zero daca
pentru caracteristica Ck nu exista valori comune elementelor a si a si
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 cj1 + ci2 T ^j2 + . + c^ T cm ) = 0.

n conditiile n care elementele grupului sunt descrise prin


caracteristici vom considera aceasta relatie adevarata daca fiecare termen
este egal cu zero: cu T cj1 = 0, ci2 T cj2 = 0, . , cmc T c]m = 0.
Relatia cik T cjk = 0 , k apartinnd multimii {1, 2, ..., m^}, 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.
fii - frecventa de aparitie a cuvntului ai n textul Tj.
g] - frecventa de aparitie a cuvntului nespecific Bi n textul Tj.

Frecvente de aparitie a cuvintelor cheie


domeniului
Tabelul 3.2
Cuvinte cheie

Frecvente de aparitie
T1
T2
f21
fu
f22
f12

a1
a2

ar

f2r

f1r

Frecvente de aparitie a cuvintelor nespecifice dom eniului


Tabelul 3.3
Cuvinte cheie
Frecvente de aparitie
T1
T2
B1
g21
g11
B2
g12
g22

Bs

g1s

g2 .s

Indicatorul normat I; se definete diferentiat pentru cele doua


categorii de cuvinte care alcatuiesc textele.
Pentru cuvintele cheie ale domeniului , indicatorul I1
ia valoarea I1 = 0 daca frecventele pentru aceleai cuvinte cheie
din T 1 si T2 sunt egale (fu = f2i, ( " ) i = 1, 2, ..., r);
ia valoarea:

X (i /
,

- / i)

i=1____________________________

r * max(| f 1i - f

2i

|)

(3.1)

Pentru cuvintele nespecifice domeniului , indicatorul I2:


ia valoarea I2 = 0 daca frecventele pentru un acelasicuvntcheie
din T1 si T2 sunt egale (gij = g j ( " ) j = 1, 2, . , s);
ia valoarea:
r

12 =

S ( l g 1j 1 -------^
r * m a x ( \ g 1j

g 2j \)
- g 2j

r (3.2)
\)

Pentru a scoate n evidenta masura n care cele doua texte sunt


asemanatoare are loc o agregare a indicatorilor I siI2, obtinndu-se I.
Astfel, Ia = =I1 * I2 , unde Ia ia valori ntre 0 si 1.
De exemplu, se considera secventa de program SP1 definita prin:
i f a > b then c=a+b;
i f b > a then c=b-a;
si secventa de program SP2 definita prin:
fo r ( i = 0 ; i < a; i+ +)
a-- ;
fo r ( 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
=
+
<
>
5

++
(
)
--

Frecvente de aparitie
T1
2
2
0
2
1
1
0
2
2
0
0
0
0

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
4
4
2
0

T2
2
2
0
4

Se calculeaza indicatorii I1 si I2 si nivelul agregat al indicatorului Ia.


11 = 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)
12 = 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:


I a = I i * I 2 = 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 lpersonalizeaza 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 m asurate 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.
J 1 = , daca L i < L }.
Li

(3.6)

sau

unde:
L; - 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

nca.
J2

(3.8)
NTC

unde:
-

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


proceduri n functie de un vocabular furnizat de catre utilizator.
NCV

ncv i
J 3 = ------NCV

(3.9)

unde:
-

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

ncv/
J 4 = -------N TC V

(3.10)

unde:
-

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.

j 5 = NESCC
NMES

3, )
1 1

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 unei matrice de precedenta. Acest grad de
asemanare se foloseste pentru analiza gramaticala a elementelor.

NCI,
J 6 = 1 , daca N C I , < NCI,
6
NCI,
j

>

NCI
J 6 = L , daca NCI, < N C I ,
6
N C I,

(3.12)
'
'

sau

(3.13)
'

'

unde:
-

NCIi - numarul de cuvinte interschimbabile din procedura Pri;


NCIj - numarul de cuvinte interschimbabile din procedura Prj.

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.
cmplxi
J 7 = -----------, daca cmplx, < cm plx,
cmplx j
1

(3.15)

cmplx j
= ----------- , daca cm plx , < cmplx,
cmplxi

(3.16)

sau
J

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.

n j,
V i=1

j = 7

(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.

J=
Ctl
J
i =1

(3.18)

unde:
-

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 distincte ale indicatorului J;.
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;
fo r (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(in t 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 f si gj 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
}
}
(
)
=
+
[
]
5

++
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
C uvinte nespecifice
Frecvente de aparitie
Pr1
Pr2
Pr3
Pr4
1
0
0
0
sume
x
3
2
0
0
n
2
2
0
0
5
5
0
0
S
0
2
2
0
0
0
1
0
0
prod sc
0
2
0
0
y
min
0
0
8
0
0
0
2
2
a
0
0
3
3
b
0
0
3
3
c
max
0
0
0
8
Se studiaza ortogonalitatea
- ntre Pr1 si Pr2 si se obtine:
I a = I i * I2 =
-

0 . 8

* 0.7916 = 0.6(3)

(3.19)

ntre Pr3 si Pr4 si se obtine:


I a = 0.8(3) * 0.9 = 0.75

(3.20)

Din aceste doua comparatii rezulta ca gradele de ortogonalitate


dintre Pr1 si Pr2, respectiv dintre Pr3 si Pr4 sunt foarte scazute.
Se studiaza ortogonalitatea
- ntre Pr1 si Pr3 si se obtine:
I a = I i * 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 S tru ctu ra softw are pen tru 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.

Figura 3.1 S tru ctu ra softw are p en tru indicatori


de ortogonalitate

Produsul software destinat implementarii indicatorilor este scris n


limbajul C++ si se caracterizeaza prin:
vocabular definit de utilizator;
mecanism de cautare combinatii de fisiere;
evaluare frecvente;
calcul indicatori simpli si indicatori agregati;
afisare rezultate;
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 E videnierea clonarii inform atice
Se considera o multime de programe, formate din componentele Pi,
P2, ..., Pn. Fiecare program Pi, i = 1, 2, ..., n, este analizat si se efectueaza
diferite masuratori, folosind modelele M u M;2, ..., Mck de calcul a unor
indicatori. Problemele care apar sunt legate de:
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;
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;

efortul necesar evidenierii 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 P, 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 P 1, 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 P(1),
Pi(2), ..., Pi(r).
Pentru simplificarea ipotezelor de lucru, se considera un moment de
timp to, 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 0 la
momentul t 1 , 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 P 1, 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 solutioneaza 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. C opierea 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
Copi e re
X

Gf

F igura 4.1 C opierea 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, G, figura 4.2.
Y

F igura 4.2 C opierea 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 1/b] [ + ...]] [//] [/n] [/y 1
/-y] [/z] [/a | /b] [destinatie [/a | /b]]
unde parametrii au semnificatia urmatoare:
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;
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;
/a - indica un fisier text ASCII;
d - indica un fisier binar;
/ / - verifica daca noile fisiere sunt scrise corect;
/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;
/-y - se cere confirmarea suprascrierii unui fisier;
/z - se copiaza fisiere din retea n m od 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 V2
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++;
P A S - 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;

A SM - 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;
D A T - 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;
X L S - 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;
A V I - fisiere care contin date de tip multimedia: imagini, video,
sunet;
Conversia este procesul prin care un fisier Fs de intrare, avnd o
extensie data a , este transformat, obtinndu-se la iesire un fisier Fs avnd o
alta extensie b , figura 4.3.

F igura 4.3 Conversia fiierului de la tipul

a la tipul b

Trebuie sa existe si operatia de conversie inversa care executa


transformarea de la extensia b la extensia a , figura 4.4.

Conversie
directa

Fs.a

Fs.a

Fs.b

F igura 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

F igura 4.5 C om pilarea 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

F igura 4.6 O btinerea m odulelor obiect prin asam blare


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 T ran slatarea 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

integer
real
record
case
string

Descrierii:
struct nume {
tip1 nume1 ;
tip 2 nume 2 ;
tipn numen ;
};

din programe C++, i va corespunde constructia n limbajul Pascal:


nume = record
nume 1 : tip 1 ;
nume 2 : tip 2 ;
nume n : tipn ;
end;
Implementarea structurilor alternative multiple:
switch (expresie)
{
case vall: {... break;}
case val2 : {... break;}
d efa u lt: {... break;}
}
din programele C++ i corespunde descrierea urmatoare n limbajul Pascal:
case expresie o f
begin
vall: begin ... end;
val2 : begin ... end;
valn: begin ... end;
end;
Programele translatoare au capacitatea de a dezvolta 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 { s i}.

4.5 T ran sfo rm ari 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: sir 1 , sir 2 ,


sir3 , sir4 , sir5 , sir 6 , sir 7 , sir8 , sir9 , sir 1 0 , sir 1 1 . Se pun n corespondenta:
vcub - sir1
l - sir2
vpiramida - sir3
B - sir 4
b - sir5
h - sir6
vsfera - sir 7
R - sir 8
vcilindru - sir 9
G - sir 10
vcon - sir1 1
Prin nlocuire se obtine secventa:
sir 1 = sir2 * sir 2 * sir2 ;
sir3 = (sir4 * sir5 * sir 6) / 3;
sir 7 =( 3.14159 * 4 * sir 8 * sir 8 * sir8) / 3;
sir9 = 3.14159 * sir 8 * sir8 * sir 1 0 ;
sir 11 = (3.14159 * sir 8 * sir 1 0 * sir 10 ) / 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 ;
fo r ( i = 0 ; i < n; i ++)
s 1 + = x [i];
s2 = 0 ;
fo r ( i = 0 ; i < n; i ++)
s 2 + = x [i] * x [i];
s3 = 0;
fo r ( i = 0 ; i < n; i ++)
s4 = 0;
fo r ( 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;
fo r (i = 0 ; i < n; i ++)
{
s1
s2
s3
s4

+ = x [i];
+ = x [i] * x [i];
+ = x [i] * x [i] * x[i];
+ = 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
i f (expresie 1)
var = expresie 2 ;
else
var = expresie 3 ;
cu
(expresie1) ? expresie 2 : expresie3;

sau
i = 0; s1 = 0; s2 = 0; s3 = 0;
1 0 : i f ( i >= n) goto 2 0 ;
s 1 = s 1 + x [i];
s 2 = s 2 + x [i] * x [i];
s3 = s3 + x [i] * x [i] * x [i];
i =i +1;
goto 1 0 ;
20: s4 = s1 + s2 + s3;
n secventa:
s1 = s2 = s3 = 0;
fo r ( i = 0 ; i < n; i ++)
{
s 1 + = x [i];
s 2 + = 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;
i f ( x > y)
z = x * y;
else
z = x - y;
devine:
i f ( 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:
i f ( a)
{
e 1 = a + b;
e2 = a - b;
e3 = a * b;
}
else
{
e 1 = b / ( a +1 );
e2 = b;
e3 = a;
}

secventele

de

devine:
i f (!(a))
{
e 1 = b / ( a+ 1 );
e 2 = b;
e3 = a;
}
else
{
e 1 = a + b;
e 2 = 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
sunt ortogonale din punct de vedere a definirilor si referirilor, figura 4.7.

a, b,

x, y,

a, b,
c

Figura 4.7 C oncatenare program e 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

sigurana, editari de rezultate, salvari de fisiere, noi regrupri de date, noi


sortri sau se obtin noi rapoarte. n sistemul de programe din figura 4.8:

F igura 4.8 Sistem de program e n cascada


Datele de intrare sunt preluate de pe un CD si prelucrate de
programele P1 si P2. Se obtin situatiile finale Sf1 si S f 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 P 1 si, respectiv,
P 2 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.

F igura 4.9 Sistem de program e 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 F s1 si Fs2 atasate, figura 4.10:

F igura 4.10 P rogram cu date de in trare/iesire pe disc


Sistemul de programe SP ncorporeaza clona P prin manipularea
fisierelor Fs1 si Fs2, figura 4.11:
Sistemul
S

F igura 4.11 Sistem de program e cu clona n co rp o rata

4.6 R estru c tu ra re a program elor


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;
i f (min > b) min = b;
i f (min > c) min = c;
return min;
}
int maxim(int a, int b, int c)
{
max = a;
i f (max < b) max = b;
i f (max < c) max = c;
return max;
}
min = a;
i f (min > b) min = b;
i f (min > c) min = c;
x = min;
max = a;
i f (max < b) max = b;
i f (max > c) max = c;
y = max;
min = a;
i f (min > b) min = b;
i f (min > a) min = c;
z = min;

max = b;
i f (max > a) max = b;
i f (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:
tip 1 V1 , V2 , ..., v n ;
tip 2 u i , u2 , ..., um ,
tip 1 W1 , W2 , ..., Wk ;
tip 2 y 1 , y 2 , ..., y r ;
devine dupa concatenari:
tip 1 V1 , V2 , ..., Vn , W1 , W2 , ..., Wk ;
tip 2 u 1 , u2 , ..., um , y u y 2 , ..., y r ;
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
modificri n texte sursa, fara influente asupra semnificatiei secventelor.
tip vi, v 2 , V3 , ..., v;
se nlocuieste prin:
tip Vn, Vn-1 , ..., V2 , Vi;
Sau, n cazul definirii unei functii:
tip nume (tip 1 V1, tip 2 v2, ..., tipn Vn)
este nlocuita prin:
tip nume (tipn Vn, tip n 1 Vn-1, ..., tip2 v 2, tip 1 V1)
si, n mod corespunzator, apelul:
nume (x1, x2, ..., x n)
este nlocuit cu apelul:
nume (xn, x.i, ..., x 2, x 1)
Reunirea de proceduri presupune ca ntr-un program n care se
apeleaza procedurile Pri, Pr2, ..., Prn, avnd listele de parametri Lpi, Lp2, ...,
Lpn se modifica n sensul apelarii unei singure proceduri Pr avnd o lista de
parametri Lp = Lp1 u Lp2 u Lp3 u ... u Lpn u Lo, unde L 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;
fo r (i = 0 ; i < n; i ++)
s += x [i];
return s;
}

intp ro d (int x [ ], int y [ ], int n)


{
int p = 0;
fo r (i = 0; i < n; i + +)
p + = x [i] * y [i];
return p;
}

int minim (int x [], int n)


{
int min, i;
min = x [0];
fo r ( i = 1; i < n; i++))
i f (min > x [i])
min = x [i];
return min;
}

int max ( int x [], int n)


{
int max, i;
max = x [0];
fo r ( i = 1; i < n; i ++)
i f ( max < x [i])
m ax = 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;
i f ( k == 0)
{
s = 0;
fo r ( i = 0; i < n; i ++)
{

s + = x [i];
return s;
}
}
else
i f (k == 1)
{
p = 0;
fo r ( i = 0; i < n; i ++)
{
p += x [i] * y [i];
return p;
}
}
else
i f (k == 2)
{
min = x [0];
fo r ( i = 1; i < n; i ++)
{
i f (min > x [i])
min = x [i];
return min;
}
}
else
{
max = x [0];
fo r ( i = 1; i < n; i++)
{
i f ( 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 = p ro d ( x, y, n);
c = minim (x , n );
d = maxim ( x, n);
r = suma ( x, n);
q = p ro d ( x, y, n);
t = minim ( x , n );
u = maxim ( x, n);
alfa = suma ( x, n);
beta = p ro d ( 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];
fo r ( i = 0; i < n; i ++)
{
s [0] += x [i];
s [1] += x [i] * y [i];
i f ( s [2] > x [i])
s [2] = x [i];
i f ( 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:
flo a t calcul( int a, flo a t b)
{
flo a t d;
d = a + b;
return d;
}
Dupa interschimburi n liste si n expresii, se obtine constructia:
flo a t calcul( flo a t b, int a)
{
flo a t 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:
flo a t sum a( flo a t x, int y)
{
flo a t z;
z = x + y;
return z;
}

4.7 Schim barea stru ctu rilo r 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 n r m a t;
char nume[20], prenume[30];
flo a t medie;

este transformata n:

struct student
{
int nr mat;
char nume[20];
char prenume[30];
flo a t 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 * studi;

- 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];
flo a t medie;
flo a t calculm edie ( int note[])
{
int i, s;
s = 0;
fo r ( i = 0; i < 10; i ++)
s = s + note [i];
return s /1 0 ;
}
medie = calcul medie (note);

care, transformata n clasa de obiecte, devine:

class student
{
int nr mat, note[10];
char nume[20], prenume[30];
flo a t medie;
void calculm edie (int note[ ]);
};
void student:: calcul medie ( int note[])
{
int i, s;
s = 0;
fo r ( i = 0; i < 10; i ++)
s = s + note [i];
medie = s /10;
}

4.8 O m ogenizarea tip u rilo r 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)
{
i f ( a > b)
*c = b;
}

este adusa la forma urmatoare:


int minim (int a, int b, int *c)
{
int vb = 0;
i f ( 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;
i f ( 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;
i f ( (*a) > (*b))
{
*c = *b;
Vb = 1;
}
return vb;

utilizarea unei singure instructiuni return.

Pentru functia:
int minim (int a, int b)
{
i f ( a > b)
return b;
else
return a;
}
efectuarea acestei operatii conduce la urmatoarea secventa:
int minim (int a, int b)
{
int min = a;
i f ( 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:
flo a t calcul medie ( int note[])
{
int i, s;
s = 0;
fo r ( i = 0; i < 10; i + +)
s = s + note [i];
return s /1 0 ;
}

Omogenizarea conform
secventei de cod:

acestei

operatii conduce la obtinerea

flo a t calcul medie ( int note[])


{
int i, s;
s = 0;
i = 0;
while ( i < 10)
{
s = s + note [i];
i + +;
}
return s /1 0 ;
}

4.9 Efectele clonarii a su p ra com plexitatii program elor


Metodele de clonare produc diverse efecte asupra fsierelor sursa.
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;
fo r (i = 0; i < n; i ++)
S += x [i];
are complexitatea Halstead:
CpS = n1 * log 2 n + n2 * log 2 n2
unde:
-

ni - numarul de operanzi;
n2 - numarul de operatori.

(4.1)

Pentru secventa data, complexitatea este Cps = 10 lo g 10 + 7 lo g 2.


Secventa:
suma = 0;
fo r (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
c
y
z

= ( a + b + c + d) * ( a + b + c + d - e) - (a + b + c + d + e) * (a + b +
+ d - - 1);
= ( a + b + c + d) / ( a +b + c + d - 2);
= 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;
fo r ( i = 0; i < n; i ++)
s1 + = x [i];
return s1;
}
int P2(int x [ ], int n)
{
int s2 = 0, i;

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

complexitatile sunt:
P i : Cps = 7 * logz 7 + 9 * logz 9;
P2 : Cps = 9 * logz 9 + 10 * logz 10;
P3 : Cps = 11 * logz 11 + 11 * logz 11.
Secventa optimizata este:
int * sume ( int x [], int n)
{
int s [3], i;
s [0] = s [1] = s [2] = 0;
fo r ( 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 * logz 26 + 18 * logz 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 Aplicaii ale bazelor de date
Pastrarea si protejarea datelor n vederea unor prelucrri 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.
A d a u g a r e de n o i
date
P r e lu c r a r e date

A d a u g a r e de n o i
date
P r e l u c r a r e date

Clona 2
D e p a r ta m e n t p e rife ric

A d a u g a r e de n o i
date
P r e lu c r a r e date
te rg er e date ini ti al e

F igura 5.1 T ransferul de date n tre departam ente p rin interm ediul
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 n B D baze de date cu aceeasi structura si o
aplicatie aferenta, se opereaza n toate cele nB D baze de date. Astfel la nivel
logic exista o singura baza de date, desi fizic exista n B D 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 obtinuta prin calcularea
urmatorului indicator:
nrtab

Le = nrleg + ^ nrcamp nrinreg

(5.1)

i =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 L CLOna pentru baza de date
indicatorul agregat:
I

1 c lo n a r e

clonata, dupa care se calculeaza

L c lo n a

bd

pentru masurarea eficientei procesului de clonare.

(5 2 )

5.2 G estiunea 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.

F igura 5.2 M odelul relaional al datelor pen tru aplicatia C o n tra c te


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 C lonare 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

C o p ie re le g a tu r i
v e c h i si d ate v e c h i

BD 2

F igura 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.

Legaturi BD

Clonare legaturi

Legaturi clona

F igura 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 L CLOn a
au valorile Lbd = 56 si
L CLOn a = 56 , iar indicatorul I CLO n a r e are valoarea 1, fiind copiata integral in
clona.

5.4 Clonare stru c tu ra 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

BD

F igura 5.5 Procesul de clonare stru ctu ra


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.

| T a b e la 1 1

| T a b e la 2 |

T ab ela

|T ab ela 1 |

| T a b e la 2 |

Cele n tabele ale bazei de date initiale

T ab ela

Cele n tabele ale clonei

D a te le aflate
n tr o tabela
I Clonare structura cm puri |

| C m p 1 | C m p 21 | ....... ... 1 | C m p k|
D ata 11 D a ta 12

D ata 1k

D ata 21 D a ta 22

D ata 2k

D a ta m1 D a t a m2

D a ta m k

Legaturi BD

| C m p 1 | C m p 21 | ............. 1 | C m p k]

Clonare legaturi

Legaturi clona

F igura 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 C L O N A R E = 0.39, nsemnnd ca baza de
date a fost clonata n proportie de 39%.

5.5 Clonare p a ria la 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.

B D

B D

F igura 5.7 Procesul de clonare partiala a stru ctu rii 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 Q, si
cuprinde secventa de operatii descrisa n figura 5.8.

lla b e la 1|

| ....... |

| Tabela i

| | .......

| Tabela n |

C ele n tab ele ale b azei de date


initiale

| Tabela/ |

C ele m tabele ale


clo n e i

D atele aflate
ntr- o tabela
Clonare structura

_C
I Cmp 1 | Cmp 2 | | ...............| | Cmp k |
D ata 11 Data 12

Data 1k

D ata 21 Data 22

Data 2k

D ata m1 Data m 2

D ata mk

Legaturi BD

Cmp 1 | Cmp 2] | ............ ~| | Cmp k

C lo n a r e le g a t u r i

Legaturi clona

F igura 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 C lonare 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

C o p i e r e l e g a t u r i v e c h i si
d a t e v e c h i si t a b e l e v e c h i

BD 2

Adaugare
tabele noi

F igura 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:
Contracte
Nr contract
Data contract
Valoare
Cod client

Chirii
Cod chirie
-Nr contract
Data scadenta
Valoare chirie

1, n

ncasari
Nr document
Data docum
Suma ncasata
Nr factura

Nr factura
Data factura
Cod client
Cod chirie
Nr contract

Figura 5.10 M odelul relaional al problem ei 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.

| Tabela 1

| Tabela 2 |

|T ab ela n|

| Tabela n+1 |

|Tabela n+m

Cele n+m tabele ale clonei


A daugare tabele noi

Se creaza legaturi noi


&

Legaturi BD

Clonare legaturi

Tabela

Tabela

C ele m tabele no i care se adauga la clona I

Legaturi clona

F igura 5.11 Secventa clonarii bazei de d ate cu ad au g are 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 L c l o n a = 56, iar
= 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.
I

clo nare

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 pen tru 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 mod sau altul cu produsul final, datorita barierelor n comunicatie
(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 D iversitatea interfetei om - calcu lato r


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 diversitatea 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 modul 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 utilizatorul, 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 M icrosoft 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 O rien tarea clonarii inform atice 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
implementat 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 m etode 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 Informaii
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.

F igura 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 clonata.
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.

F igura 6.2 S tru ctu ra interfetei din F igura 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.

F igura 6.3 In te rfata noului program

Structura c omponent ei 1 a
interfetei

Structura componentei 1 a
clonei

C l o n a r e de
structura

Structura
componentei n a
clonei

Structura
componentei n a
interfetei

Clona
obtinuta

--------- y -------In terf at a i ni ti al a

F igura 6.4 C lonare de stru c tu ra 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;
P ro d u s
nou

F igura 6.5 C aracteristica 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 echipamente, 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 com ponentei


a interfetei

Structura
com ponentei n a
interfetei

'Y '
Interfata
initiala

Structura com ponentei


a interfetei

Structura
com ponentei n a
interfetei

------ Y ~
C lona
obtinuta

F igura 6.6 C lonarea to tala 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 ju rid ica a program elor de calculator
si a bazelor de date
Produsele software si bazele de date ntrunesc cerinele 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 novator, care 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 calculator 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 f i 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 B erna.
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 fe l de limbaj, fie n codsursa sau cod-obiect, materialul de conceptie pregatitor, precum si
m anualele. 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 calculator, 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:
dreptul de a decide daca, n ce mod si cnd va fi adusa opera la
cunostinta publica;
dreptul de a pretinde recunoasterea calitatii de autor al operei;

dreptul de a decide sub ce nume va fi adusa opera la cunostinta


publica;
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, afi sarea,
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 form a 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 m od 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 mai 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, contractul 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 fa ir 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
copiilor 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, copii
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 [0RGV00], 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 [0RGV00] 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:
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
programelor pentru calculator si a copertelor, lit. a;
distribuirea, comercializarea sau nchiriarea neautorizata a
programelor pentru calculator cu amenda de la 25.000.000 la
250.000.000 lei, lit. b;
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;
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.2C ai de crestere a eficientei n com baterea


clonarii inform atice neautorizate
Amploarea realizarii neutorizate a clonelor informatice are ca efect
direct stagnarea sau diminuarea productiei de software original. Progresul
tehnicii a condus la crearea unor mijloace cu ajutorul carora se pot produce
cu usurinta copii ilegale ale unei opere originale. Cel ce cloneaza nu suporta
costurile unei investitii n producerea operei originale, astfel ict 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 [0MPI01].
Att n literatura de specialitate ct si n legislatie, se foloseste
notiunea de piraterie, ca fiind copierea neautorizata a operei protejate prin
drept de autor, n scopuri comerciale, ca si comercializarea neautorizata de
copii de pe o opera [0MPI01]. 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 p ir a t: 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 preturi 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 copiilor 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
[0MPI01].
> 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 asemenea, 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 program atorului


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 copii 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 software 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:
mentinerea unei libertati totale si dreptul de utilizare a retelei asa
cum decide fiecare;
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 e
mail 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:
nefurnizarea de informatii privind detaliile personale despre viata
si situatia altor persoane ntr-un mesaj public sau privat;
tratarea cu respect a ceea ce spun diferite persoane n mesajele
lor private;
sa nu se citeasca mesajele altor persoane sau sa se invadeze
spatiul de stocare personal a acestora;
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]:
declaratia trebuie sa fie falsa;
declaratia trebuie sa fie una publica;
declaratia facuta trebuie sa prejudicieze reputatia unei persoane
sau companii si sa cauzeze defaimare;
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:
nefurnizarea pe Internet a informatiilor personale, cum sunt:
adresa, numarul de telefon, adresa de la locul de munca, precum
si datele persoanelor apropiate;
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;
relatarea catre o persoana apropiata sau de ncredere despre
mesajele primite care au un caracter nepotrivit;
rurnizarea 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 mei 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 tehnologic nu vor avea un succes deplin n controlarea
comportamentului.

' MATRICI
^ ALE CLONARII
8.1 Conceptul de m etrica utilizat n aplicaii inform atice
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 n R

(8 . 1 )

astfel nct:
1. d ( xi, yi ) > 0 si d ( xi, yi ) = 0, daca xi = yi;
2. d ( xi, yi ) = d ( yi, xi ) (axioma simetriei);
3. d ( xi, yi ) < d ( xi, yi ) + d ( yi, zi ) (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 ( xi, y i ) = || xi - yi ||

(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 n [0,1]

(8.3)

este pusa n corespondenta cu aprecieri asupra comportamentului unui


program astfel:
dac f(x) = 0 se va spune ca programul este lipsit de calitate si
exista riscuri pentru utilizator n cazul folosirii;
dac f(x) = i se va spune ca programul are un nivel de calitate
deosebit, deci utilizatorul trebuie sa aiba ncredere n rezultatele
obtinute la executia programului;
dac a < f(x) < i, unde a este o valoare numita prag de
acceptare, obtinuta experimental, programul poate fi utilizat,
riscurile de obtinere a rezultatelor eronate fiind minore;
dac 0 < f(x) < a , 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= {P 1 ,P 2 ,...,Pn} 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 N

(8.4)

ca de exemplu:
f (Ph Pj) = ( Pi / Pj) 100

(8.5)

Daca f(Pi, Pj) > 100 rezulta ca programul P 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 xu xz, x3, ....xn si n

care yr, variabila rezultativa, va releva comportamentul


programului sau calitatile acestuia;
> evaluarea unui nivel y0 pentru valori date x01 , x02,
x0n 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.
In 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 n [a,b], a, beR+ si a < b, se
vor identifica mai multe valori critice (praguri) a 1, a 2 care permit aceasta
nuantare a delimitarii, cu a < a 1 < a 2 < b.
Intervalul [a, a 1] corespunde zonei de respingere a programului,
dac f (Pi) e [a, a 1]. Intervalul (a 1, a 2] corespunde zonei de acceptare cu
rezerve a programului Pi, dac f (Pi) e (a 1, a 2]. Intervalul (a 2,b] corespunde
zonei de acceptare cu ncredere a programului Pi, dac f (Pi) e (a 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:
C t = n i log i ni + n2 log 2 n + n log 3 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 ni, la n
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 M etrici 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 fisierelo r.
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

X ncap.

gi =

N TC

(8.7)

unde:
gi - 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;
i, daca pentru caracterul i frecventele de aparitie n cele doua
paragrafe sunt identice.
1\ 1 L. v

X n c f
i=i
g2 =
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;
ntcvpi - 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;
i, 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:

g iV g 1 g 2

(8 .9)

unde g este gradul de asemanare ntre doua paragrafe conform celor doua
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:

(8 . 1 0 )
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:
m i n { L i, L t }
h =
7 Ti,TL jT}
m a x{L

(8 . 1 1 )

evidentiaza gradul de asemanare a lungimilor a doua fisiere normalizate.


Daca IL = 1 nseamna ca cele doua fisiere au lungimi identice. Cu ct
indicatorul IL este mai apropiat de zero, cu att gradul de asemanare a
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 SPi:


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, i7 , i i i , =, +, *, ;
adica LV =i0 cuvinte.
Secventa SP2:
int a;
flo a t b;
double c;
for(a = 0 ;a< 1
c=c+a;
b=c- 1 ;

0 0

;a++)

are un vocabular format din cuvintele:


int, float, double, a, b, c, for, (, = , ;, < ,

1 0 0

, +, ++, - , )

iar LV = i6 cuvinte.
Indicatorul:
min{ LVt, L V j }
IV

J
= -------- ----------- --------
i
j

max{ LV , LV }

(8 . 1 2 )

vizeaza masura n care lungimile vocabularelor celor doua secve nte sunt
diferite.
Daca IV = i 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:


m

i X logf
(X
f ) l
og_(X
f)
=
=

fi 2
D v = - ----m 1=1-----------------m

'

(8.13)
/

i i

i i

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. i.
Frecvente utilizare vocabular
Tabelul 8.1
Frecventa
4
4
4

Cuvnt
int
=
y
1

a
b
c
d

1
1
1
1

Diversitatea este:
D _ i 4log2 4+ 4log2 4 + 4log2 4+ 2log2 2 + 2log2 2+ ilog2 i+ ilog2 i+ ilog2 i+ ilog2 i
v=
20log2 20

4 2 + 4- 2+ 4 2- 2 i+ 2 i+ i- 0+ i- 0+ i- 0+ i- 0 _ 0 3 2
v_

20 4,34

_ ,

In cazul n care toate cuvintele au n text cte o singura utilizare,


diversitatea este maxima, egala cu 1.
Lungimea vocabularului comun, LV c o , 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 Sp 5.
Lungimea vocabularului reuniune, LV re , este data de numarul de
cuvinte distincte utilizate de programe.
In secventa SP6:
int a;
char x;
a= 2 ;
x = 1 ;

si secventa SP7:
flo a t 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:

r
min{ LVco, LVre}
! rr =------------------7 ------^ (8.14)
max {LVco, LVre}
evidentiaza masura n care doua programe utilizeaza acelasi fond de cuvinte
al unui vocabular.
Secventele SP8:
int a;
flo a t b;
a=b= 0 ;
si SP9:
int x;
flo a t y;
x= 0 ;
y= 0 ;
au vocabular comun format din cuvintele:
int, float, = ,

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:

i f =L v
re

(8 15>

unde Kre este numarul cuvintelor din vocabularul reuniune care au aceeasi
frecventa.
Un program Pi are vocabularul:
V ocabular program Pi
Tabelul 8.2
Frecventa
7
7
15

Sim bol
int
float
a
++
b

iar programul Pj are vocabularul urmator:

V ocabular program Pj
Sim bol
int
float
a
++
b

Tabelul 8.3
Frecventa
7
8

15
8

Se calculeaza If:
4
i f _ - _ 0 ,8

(8.16)

Daca If = i 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 sim boluri
Tabelul 8.4
Sim bol
Frecventa
i
2
n
2
t
2
a
2
b
2
=
2
0

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:
G
I A = t Atre

(817)

unde:
-

Gc - numarul de caractere comune programelor Pi si Pj, cu


frecvente identice;
LAre - lungimea alfabetului reuniune.

Programul P;:
int a= 1 ;
int b= 1 ;
int c= 1 ;
int d=1, z=4;
a+ + ;
b+ + ;
c++;
d+ + ;
d=d+a+b+c;
are urmtorul alfabet:
Frecvente de aparitie sim boluri n program ul Pi
Tabelul 8.5
Sim bol
Frecventa
i
4
n
4
t
4
a
3
b
3
c
3
d
4
++
4
+
3
6

z
4

1
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 sim boluri n program ul Pi
Tabelul 8.6
Sim bol
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 sim boluri n program ele Pi si Pj
Tabelul 8.7
Simbol

z
4

Frecventa

1
1

Simboluri
comune

Frecvente
simboluri
comune

c
d

3
4

++

Simbol

Frecventa

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


simboluri.

I A = 1 0 = 0,66
15
39
IAf = = 0,86
f 45
Fie programul P format din instructiunile I1, I2, ..., INi. Instructiunea
Ij are un numar de f caractere. Perechile (Ij, f), j = 1, 2, ..., n se sorteaza
descrescator, obtinndu-se programul P . Se obtine sirul de instructiuni I ai,
I

, .,

I % astfel nct instructiunea I cu pozitia j n programul P are

pozitia aj n programul P .
Se calculeaza indicatorul:

l * , - ii
k =----- j=------------c n max{| at - j |,1}

(8.18)

n continuare se da o secventa de program mpreuna cu lungimile


instructiunilor utilizate, n numar de caractere utilizate:

Lungim ea instructiunilor exprim ata n n u m ar de caractere


Tabelul 8.8
Pozitie
Instructiune
Lungime
instructiune
j)
1
s2=0.;
6
2
s=0;
4
3
5
P=1.;
4
for(i=0;i<n;i++)
16
5
1
{
6
9
s=s+x[i];
7
8
8
14
s2+=x[i]*x[i];
9
1
}
10
if(s2>s) a=1;
13
11
else
4
12
a=2;
4
i];
=
x[i

Dupa operatia de sortare se obtine secventa S, care are urmatorul


continut:

P
*
x[i

S ortare instructiuni n functie de lungime


Tabelul 8.9
Pozitie
Pozitie
Instructiune
Lungime
instructiune instructiune
secventa SP secventa S
(aj)
(j)
4
1
16
for(i=0;i<n;i++)
8
2
14
s2+=x[i]*x[i];
10
3
13
if(s2>s) a=1;
6
4
s=s+x[i];
9
8
7
5
1
6
s2=0.;
6
3
7
5
P=1.;
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 fninim = 1 caractere;
se alege frecventa maxima fnaxim = 16 caractere;
se calculeaza def = fnaxim - fminim = 15 caractere;
se calculeaza lungimea intervalului: r3 = d f -=5 caractere.
Se construieste tabelul:
G ru p area instructiunilor pe intervale de lungime
Tabelul 8.10
N um ar de instructiuni
Interval
6
[1; 6)
3
[6; 11)
3
[11; 16]
12
Total

u _ |4 - 1| +|8 - 2 |+ 110- 3 | + 16 - 4 1+17- 5| + 11 - 6 | +|3 - 7 | + 12- 8| +


kc
12 max{| a , j |,1}
+ 111 - 9 |+ 11 2 -1 0 |+ 15 - 1 1 1+ 19- 1 2 | _
12 max{| at , 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:
3

_ x i' 6 + 3+3 ^
x3 _ _ ----------_ 4
3
3
3

(x - x ) 2
i
3

a 32 _
3

4 +1 +1
_2
3

Pornind de la valorile indicatorilor de medie si dispersie se


determina coeficientul de variatie:

CV 3 _
3

_
a3

_2, 83
1,41

Daca se calculeaza r4 _ 1 5 _ 3,75, atunci obtinem valorile sintetizate


4 4
n urmatorul tabel:
G ru p a re instructiuni pe intervale de lungime
Tabelul 8.11
N um ar de instructiuni
Interval
4
[1; 4,75)
[4,75; 8,50)
3
[8,50; 12,25)
3
[12,25; 16]
2
12
Total

Pentru calcularea coeficientului de variatie este necesar sa se


determine valorile mediei si a dispersiei:

_
,=, 4+ 3+ 3 + 2 ,
x 4 = = --------------- =3
4
4
4

I^

(x, - x ) 2
1+1
s 42 = ------------ = ----- = 0 , 6 6
4
3
3
Valoarea coeficientului de variatie CV4 este:
CV4 =
4

4
= =4,93
s 4 0,81

Indicatorul agregat privind variatia este:

C V =^1CV3 CV4 = J2,83- 4,93 = 3,73


Doua programe cu aceeasi valoare a indicatorului CV sunt identice.
Daca programul RR este:
Pozitii noi ale instructiunilor n ierarh ia 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
5
2
lm=1;
lmp=2;
6
3
lmr=20;
7
4
lmt=200;
8
5
Dupa sortarea descrescatoare a instructiunilor dupa lungime,
programul PP devine PP:
A baterea pozitiilor instructiunilor ierarhizate dupa lungim ea 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:
4 + 2 + 0 + 2+ 4
k c _ -------------------- _ 0,25
c
12 4
Fie programul P cu instructiunile I1, I2, ..., INi, acestea avnd
pozitiile 1, 2, ..., Ni. Se calculeaza L L2, ..., LNi lungimile instructiunilor
ca frecvente de caractere f1, f>, . , fNi.

Este parcursa urmatoarea succesiune de pasi:


1 . se scrie programul:
Instructiunilor unui program si lungimile acestora
Tabelul 8.15
Instructiune
Pozitie veche
Frecventa
I

f2

In

fn

f1

2 . se sorteaza instructiunile descrescator, dupa lungimile fi, i = 1 , 2 ,

..., Ni.
Ie ra rh ia instructiunilor d u p a so rta re a descrescatoare a lungim ilor
Tabelul 8.16
Instructiune
Pozitie
Pozitie
Frecventa
veche
noua

I 02
n

a i

g1

a2

g2

a n

gn

Se calculeaza indicatorul kc, conform relatiei:

1 1 a, - j |
K =
-------
n m ax{|at - j |,1}

(8 19)

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


Ni.

Ie ra rh ia instructiunilor dupa so rtarea crescatoare a lungim ilor


Tabelul 8.17
Instructiune
Pozitie
Pozitie
Frecventa
veche
noua
l
hi
bi
4i
2
h2
b2
h2
I bn

bn

hn

Se calculeaza indicatorul La, pe baza relaiei analitice a indicatorului


kc, astfel:
n
1 bJ - j 1
La = ---------------------------------------^ - (8.20)
n m ax (b - j , 1}

Pe baza indicatorilor k si La se determina indicatorul T, conform


relatiei urmatoare:
m in{k, L}
T = ------T TL}
Tx
m ax{k,

(8'2>)

Exemplu: fie programul ST, avnd codul sursa:


a= l;
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 caracterelo r instructiunilor
"abelul 8.18
Instructiune
Frecventa
(fi)
4
6
15
6
16
1
8
13
1
7

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;

Dupa identificarea frecventelor caracterelor din instructiuni se


procedeaza la sortarea descrescatoare a acestora.
A baterile pozitiilor instructiunilor dupa ierarhizare
Tabelul 8.19
Pozitie
Instructiune
Frecventa Pozitie
| pozitie veche
veche
noua
pozitie noua
(fi)
1
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
8
7
4
3
s+=y[i];
a+=s/t;
7
10
5
5
c=b++;
6
2
6
4
t=s=0;
a=1;
{
}

6
4
1
1

4
1
6
9

7
8
9
10

3
7
3
1

Valoarea indicatorului kc este:


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

Avnd valorile indicatorilor kc si La, se calculeaza valoarea


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

Programele au:
secvente de definire operanzi;
instructiuni if,
instructiuni fo r ;
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 segaseasca n P.
Daca sunt gasite aceste secvente identice atunci nseamna ca a avut loc un
proces de clonare.

Se considera doua programe PA si Pb :


C aracteristici stru ctu rale ale program elor PA si Pb
Tabelul 8.21
Comune
Pa
Pb
N um ar m odule
25
30
20
Ci
N um ar
300
450
300
instructiuni fo r
C2
N um ar
250
300
240
instructiuni i f
C3
Apeluri fu n c tii
170
210
165
C4
Evaluari expresii
500
880
490
C5
N um ar
200
260
200
instructiuni while
C6
Operatii de I/E
160
150
150
C7

Ik=

*A ~ B X
m in{G k , G k }

(8-21)

unde:
-

kp - pozitia caracteristicii BPC;


G k - nivelul caracteristicii k pentru elementele identice n cele
doua programe;
Q A - nivelul caracteristicii k n programul
PA;
O B - nivelul caracteristicii k n programul
PB.

i ,=
20
= 2 0 = 0 ,8
1 min {25,30} 25

12
2

300
min {300,450}

=300
300

i 3 = ___ 240 = 2 4 0 = 0 , 9 6
3 min {250,300} 250

i 4= ____ 165_____ = 1 6 5 = 0 , 9 7
4 min {170,210} 170

5=
490
= 490=0,98
5 min {500,880} 500
=

200

=200

6_ min {200,260}_ 20 0 _
=

150

=150

1 7

7 min {160,150}

150

BPC = ^0,8-1 0,96 0,97 0,98 ! 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:
7

BPC= 7 n

h-

(822)

k=1,I> ^0

unde k este numarul de indicatori Ik nenuli, indicndu-se numarul


caracteristicilor pentru care Ik este diferit de zero.
Daca se ia indicatorul:

B P C = 7 n eh
k=1

(8-22)

BPC e [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 e [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:
(8.23)
al clonarii.
1.
2.
3.
4.

daca Ia =
daca Ia =
daca Ia e
daca Ia e

1, programele sunt clone perfecte;


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

8.3 A m prenta program ului


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 = nX- log2 n1+ n2 log2 n2

(8.24)

unde:
n 1 - 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:

F igura 8.1 Etapele stabilirii am prentei 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:
Lungim e fisiere n functie de tip
Tabel 8.22
Lungim e fisier
(baiti)
1138

Tip fisier
Fisier sursa
Fisier obiect

4063
167982

Fisier executabil
-

complexitatea programului este Ccp = 1898,25;


lungimea vocabularului programului:
N um arul de cuvinte n functie de tip
Tip cuvinte

Tabel 8.23
N um ar cuvinte

Cuvinte cheie

Cuvinte utilizator

lungimea alfabetului:
N um ar de caractere n functie de tip
Tip c arac te r

Tabel 8.24
N um ar caractere

Litere

17

Caractere speciale

24

frecvente de aparitie a instructiunilor:

Frecvente de aparitie a instructiunilor


Tabel 8.25
Tip instructiune
Numar module
Numar instructiuni fo r
Numar instructiuni i f
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
Sim bol
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
25
j
18
f
r
16
3
P
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, ... Akn. Acest numar kn trebuie ales astfel nct
oricare ar fi doua programe Pi, Pj diferite, sa existe cel putin un indicator Ar,
pentru ca Ai # A J, astfel nct gradul de asemanare este:

g a ij,

unde a arata cti indicatori A =Aj.

=a
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,
Ai;
Lungim ea program elor Pi si Pj
Tabelul 8.27
Numar de caractere
(A 1 )

Pi
49

Pj
50

2 . lungimea vocabularului ca numar de cuvinte, A2;

Lungimea vocabularelor programelor Pi si Pj


Tabelul 8.28
Pi
3

Numar de cuvinte
(A2)

Pj
4

3. numarul mediu de caractere pe linie, A3;


Numarul de caractere pe fiecare linie este dar n tabelul urmator:
N um arul caracterelor pe fiecare linie n program ele Pi si Pj
Tabelul 8.29
N um ar linie
Pi
Pj
1

10

3
4
5

11

12

11

Total

49

50

Numarul mediu de caractere pe linie, pentru cele doua programe, Pi si


Pj este evidentiat n tabelul urmator:
N um arul m ediu de caractere pe linie n program ele Pi si Pj
Tabelul 8.30
Numar mediu de
caractere pe linie

Pi
7

Pj
8,33

(A3)
4. dispersia, A 4 ;

X
A4 =

- x )2
------------n

(8.26)

Pentru cele doua programe, valoarea dispersei este n tabelul:


D ispersia p en tru program ele Pi si Pj
Tabelul 8.31
Dispersia
(A4)

Pi
5,42

Pj
8 ,2 1

5. complexitatea programelor n sens Halstead, A5;


A 5 = m log 1 ni + n 2 log2 n 2

(8.27)

unde:
n 1 - numarul de operanzi;
n2 - numarul de operatori.
Numarul operanzilor si operatorilor din cele doua programe este:
N um arul operanzilor si operatorilor n program ele Pi si Pj
Tabelul 8.32
ni

Pi
15

12

n2

18

20

Pj

Astfel, pentru programele Pi si Pj, avem valorile:


C om plexitatea H alstead pen tru program ele Pi si Pj
Tabelul 8.32
Complexitatea
Halstead

Pi
133,89

Pj
129,68

(A5)
6 . complexitatea McCabe a celor doua programe, A 5 ;

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:
C om plexitatea M cC abe p en tru program ele Pi si Pj
Tabelul 8.33
Complexitatea
Halstead

Pi

Pj

(A6)
7. calculul indicatorului A7, identic cu indicatorul kc.

X ia j - j i
A7 = -------------------------------------- }- -- (8.28)
n max{| a, - j |, 1 }
Sortare instructiuni program Pi n functie de lungimea data n numar
de caractere:
Ie ra rh iz area instructiunilor n functie de nu m aru l de caractere
p en tru program ul Pi
Tabelul 8.34
Instructiune
c+=a/(b*b);
int a=2;
int b=3;
int c=3;
c=a*b;
a+ + ;
b--;

Pozitie veche
7
1
2

Pozitie noua
1
2
3

Lungime
11
8
8

3
4
5
6

4
5
6
7

8
6
4
4

Sortare instructiuni program Pj n functie de lungimea data n numar


de caractere:
Ie ra rh iz a re a

in s tru c tiu n ilo r n


p e n tru

fu n c tie

d e n u m a ru l d e c a ra c te re

p ro g ra m u l P

i
T a b e l u l 8 .3 5

In s tru c tiu n e

P o z itie n o u a

L u n g im e

12

c+ = a + b+ + ;

11

in t a ,b ,c ;

10

c+ = a*b;

if(c >

2;

c+ + ;

;3

b
a =

1)

P o z itie v e c h e

Valorile indicatorului A7 pentru Pi si Pj sunt:


V a lo rile

in d ic a to ru lu i A

p e n tru

p ro g ra m e le P

si P

T a b e l u l 8 .3 6

Pi
0,28

A7

Pj
0,53

Valorile acestor indicatori sunt prezentate n tabelul sintetizator


urmator:
V a lo rile

in d ic a to rilo r p e n tru

p ro g ra m e le P

si P

T a b e l u l 8 .3 7
In d ic a to r

Pi

Pj

49

50

8 ,3 3

5 ,4 2

8,21

1 3 3 ,8 9

1 2 9 ,6 8

0 ,2 8

0 ,5 3

T o ta l

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


sintetic:

=a =0 =0
k
7

Amprenta programului P este:


- un sir de valori;
- un indicator agregat.

8.4 M etrici 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:


m+1 nc+1

unde:
-

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:

g2 =

i= 1 j = 1

(m + 1 ) nc

(8.30)

unde:
-

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:
- 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.
In 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.

(8.32)
Gradul de asemanare gf 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.
C2
n

(8.33)
unde:
C 2n - numarul de comparatii efectuate ;
gpi - 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:
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 matricele de precedente. n continuare se noteaza:
- a 1 - instructiuni de salt conditionat;
- a2 - instructiuni repetitive;
- a3 - evaluari de expresii;
- a4 - apeluri de functii;
- a 5 - operatii de I/E.
M atricea Aa contine elemente aj care indica frecventa instructiunilor
de tip ai care urmeaza instructiunilor de tip aj. Programului:
a=1;
b=7;
c=5;
fo r (...) c ++;
for(...) a++;
fo r(...) b ++;
c++;
if(...) p rintf(...) ;
if(...) p rintf(...) ;
max(...);
i se asociaza matricea de precedente:

Matricea de precedente a programului


ai

a2

a3

ai
a2
a3
a4
a5

a4

Tabelul 8.38
a5

1
2
1

1
2
1

Doua programe clone au matrice de precedente egale. Un program P


este format din instruciunile Ii, I2,
INi.
Metrica McCabe ia n considerare graful Q(Vn, Aa), unde V este
multimea nodurilor si Aa este multimea arcelor. Se considera programul
urmator:
v o i d m a i n ()
Ii
in t a , b, c, d, e, x ;
a=

2
3
I4
I5

3;

b = 5;

c = 8;
b =

7;

s c a n f ( % d , & x ) ;

I6

i f (x > 0 )

= a

+ b;

I8

= c + d;

I9

e ls e

p r i n t f ( % d , e ) ;

Ii0

}
Iii

Programului i se asociaza graful Qr din figura 8.2.

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

e=a+b
printf( )
Stop

F igura 8.2 G raful asociat program ului.


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 =XZ\i - j , i *j si (i,j )eA (834)


ii

iar metrica LIL2 se defineste prin:

LIL2 =XX(i - j )^i *j si (i,j )eA


ii

(835)

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 LIL 1, 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 M atricea dependentelor


Se considera programul P, format din instructiunile I, I2, ..., INi.
Instructiunea I depinde de instructiunile ]c-1, I -2, ...., Ik-r daca variabilele
initializate sau modificate de acestea intervin activ n expresii sau determina
controlul executiei Ik.
Matricea B, avnd rim linii si rim coloane, a dependentelor are
elementele:
b

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 P 1:
void m ain( )
{
int a, b, c, d;
a = 1;
b = 2;
c = 7;
d = 114;
}

//Ii
/ / I2
//I3
//I4

Programului P1 i se asociaza matricea dependentelor:

I1
I2
I3
I4

I1
1
0
0
0

I2
0
1
0
0

I3
0
0
1
0

I4
0
0
0
1

Se observa ca instructiunile programului P1 sunt independente una


de celelalte si li se asociaza matricea unitate a dependentelor. Programului
P2 :
void m ain( )
{
int a, b, c, d;,e
a = 4;
/ / Ii
b = a+5;
/ / I2
c = b+120;
//I3
d = b+a+c;
// I 4
e = c+d;
// I 5
p rin tf ( \n %d %d %d %d % d, a, b, c, d, e);
}
i se asociaza matricea dependentelor:

I1
I2
I3
I4
I5
I6

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

Programului P 3 :
void

main ( )

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

// Ii
/ / 12

I6
0
0
0
0
0
1

scanf(% d,&b);
d = a+b;
}
else {
scanf(% d,&c);
d =a +c ;

13
14

I5
' I6

}
e = d ++;
for(i =0 ;i<7;i++)
e += a;
p rin tf(% d,e);

17
18
9
'I

10

}
i se asociaza matricea dependentelor:

I1
I2
I3
I4
I5
I6
I7
I8
I9
I10

I 1 I2 I3 I4 I5 I6 I7 I8 I9 I 10
1 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0
0 1 1 0 0 0 0 0 0 0
0 1 1 1 0 0 0 0 0 0
0 1 0 0 1 0 0 0 0 0
1 1 0 0 1 1 0 0 0 0
0 0 0 1 0 1 1 0 0 0
0 0 0 0 0 0 0 1 0 0
1 0 0 0 0 0 1 1 1 0
0 0 0 0 0 0 0 0 1 1

Indicatorul de dependente. Se considera matricea dependentelor B


avnd elementele bij e {0,1}. Se calculeaza complexitatea:
Cd=

nm nm

X ((X
bj )log (X b,j))
j=1
j=1
,

(8.36)

i=1

bazata pe dependente. Cd apartine intervalului [0, 6 ] unde 6 =

X i log 2 i
i=1

pentru ca se lucreaza cu matricea inferior triunghiulara.

Normarea indicatorului bazat pe dependente se va realiza astfel:


nm

nm

nm

( 2 A

lo 2 (
j= i

b j ))

(8.37)

nm

i l0 g 2
?=1

Matricea dependentelor maxime pentru un program cu 5 instructiuni


este:
I1
1
1
1
1
1

I1
I2
I3
I4
I5

I2
0
1
1
1
1

I3
0
0
1
1
1

I4
0
0
0
1
1

I5
0
0
0
0
1

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 bt = btj . Se alege elementul maxim din sirul b1 , b2, ...,

j=i

bn:
b m ax

m a x {b i i
=1, n

(8.38)

Se calculeaza valoarea D = (bmax -1 )/2 .


Fie:

Mr =

b
i =1
1<bt <A+1
(8.38, 8.39)

N=

i=1
A+<bi <bmax

Complexitatea gradata a programului este data de relatia


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

p lo g2 M

p +

(8.40)

lo g2

(8.41)

C g
(M

p +

N ) l o g 2 ( M p

Se considera un program P 4 avnd matricea dependentelor:

0
O

1
1
1
0
1
1

1
1 1
0 1 1
1 1 1 1
0
0

1
0
1
0
0
1

Sirul bi este format din elementele: {1, 2, 2, 3, 3, 5, 4}, bmax = 5, D =


2, Mp=1+2+2+3+3 = 11, N = 5 + 4 = 9.
C g = 11 log2 11 + 9 log 2 9 = 66.58

11 log 2 11 + 9 log 2 9
C = ----------------------- 52----- 2 = 0.77025
g
2 0 log 2 2 0
Complexitatea calitativa Ca opereaza cu numarul de componente
apartinnd intervalelor [ 1 , D+ 1 ] si (D+ 1 , bmax].
Fie M1 numarul de elemente din sirul b1, b2, ..., bn pentru care bi e
[1, D+1] si N1 numarul de elemente din sirul bi e (D+1, bmax].
Astfel:
Ca = M 1log 2 M 1 + N 1log 2 N1
= M 1log 2 M 1 + N 1log 2 N1
n log 2 n

(8.42)

Pentru programul P4, M1 = 5, numarul de elemente din sirul b 1, b2, ...,


bn pentru care h e [1, A+1], iar N1 = 2, numarul de elemente din sirul
bie (A+ 1, bmax].
Ca = 5log2 5 + 2 lo g 2 2 = 13,6
c a = 5l og25 + 2l og, 2
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 G estionarea clonelor inform atice
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 informaie, 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 electronice 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:
stabilirea denumirii produsului;
clasificarea produsului - se asigura descrierea prin intermediul
unui profil al produsului;
stabilirea regulilor de regasire si acces la nregistrarea creata;
asigurarea controlului versiunii produsului;
detalii privind mentinerea sau eliminarea nregistrarii.

9.2 Efecte economice ale clonarii inform atice


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:
D escresterea volum ului 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 p irateriei softw are asu p ra p retu rilo r 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.
E stim area 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.
A nticiparea 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 Instru m en te p en tru identificarea clonelor


Instrumentele pentru identificarea clonelor informatice actioneaza
asupra urmatoarelor elemente supuse analizei:
texte;
cod sursa scris n limbajul de programare C++;
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: num efl, 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 n u m efl si numef2; continutul
acestora se modifica, fiind suprascrise atunci cnd se compara

alte texte, date de asemenea prin n u m efl 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_fl.dat si
voc_f2.dat;
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.
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;
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 u tilizare. 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
g ra d ete x t.d a t;
- 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 n um efl 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 cmpcare memoreaza denumirea
tipului de date care corespunde coduluispecificat 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 in s tr a tr ib * .d a t,
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 fisierelor 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 u tiliz a re . Consta n furnizarea
unui vocabular de catre utilizator pentru contorizarea
frecventelor 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 num edprel;
fisierul care contine structura devizelor; numele este preluat,
de asemenea, de la tastatura si este ncarcat si folosit printr-o
variabila globala a aplicatiei num efdsprel;
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 num ef;
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:
D efinirea 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.
P relu area 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 stru c tu ra 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).

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