Documente Academic
Documente Profesional
Documente Cultură
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,
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
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.
Nivelul
de abstractizare
ncapsulat
Tipuri de componente
-
Nivelul
de executie
Nivelul
de accesibilitate
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.
Tipul
de reutilizator
Granularitatea
componentelor
M odul
de adaptare al
componentelor
Integrarea n
ciclul de viata
software
grosiera
este
(2 . 1 )
(2.3)
= m^ { f (a ,1, a 1 )}
*,3
(24)
(2.5)
(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.
Tipuri de fisiere
Tipul fisierului
executabil
cod sursa
obiect
Extensia uzuala
exe, com, bin sau fara
extensie
batch
text
txt, doc
procesor de text
biblioteca
tiparire/vizualizare
arhiva
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
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.
Frecvente de aparitie
T1
T2
f21
fu
f22
f12
a1
a2
ar
f2r
f1r
Bs
g1s
g2 .s
X (i /
,
- / i)
i=1____________________________
r * max(| f 1i - f
2i
|)
(3.1)
12 =
S ( l g 1j 1 -------^
r * m a x ( \ g 1j
g 2j \)
- g 2j
r (3.2)
\)
++
(
)
--
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
T1
4
4
2
0
T2
2
2
0
4
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.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:
-
ncv i
J 3 = ------NCV
(3.9)
unde:
-
ncv/
J 4 = -------N TC V
(3.10)
unde:
-
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.
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:
-
(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)
J=
Ctl
J
i =1
(3.18)
unde:
-
++
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
0 . 8
* 0.7916 = 0.6(3)
(3.19)
(3.20)
(3.21)
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;
Gf
a la tipul b
Conversie
directa
Fs.a
Fs.a
Fs.b
Fisiere
sursa
Compilare
Modul
obiect
Program scris
n limbaj de
asamblare
Asamblor
Modul
obiect
integer
real
record
case
string
Descrierii:
struct nume {
tip1 nume1 ;
tip 2 nume 2 ;
tipn numen ;
};
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 ;
+ = 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;
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
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;
}
a, b,
x, y,
a, b,
c
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;
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;
}
}
}
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 discipline[20][20];
student stud1;
student * studi;
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;
}
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;
}
-
Omogenizarea conform
secventei de cod:
acestei
ni - numarul de operanzi;
n2 - numarul de operatori.
(4.1)
= ( 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;
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;
}
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.
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
(5.1)
i =1
unde:
-
1 c lo n a r e
L c lo n a
bd
(5 2 )
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
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
BD
BD
| 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 |
T ab ela
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
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 |
| Tabela/ |
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
C lo n a r e le g a t u r i
Legaturi clona
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
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
| Tabela 1
| Tabela 2 |
|T ab ela n|
| Tabela n+1 |
|Tabela n+m
Legaturi BD
Clonare legaturi
Tabela
Tabela
Legaturi clona
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
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.
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.
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
Structura
com ponentei n a
interfetei
'Y '
Interfata
initiala
Structura
com ponentei n a
interfetei
------ Y ~
C lona
obtinuta
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.
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.
>
>
>
>
>
>
>
software
se
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 )
(8.3)
(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
(8 . 6 )
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:
-
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:
-
(8 . 1 1 )
0 0
;a++)
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.
i X logf
(X
f ) l
og_(X
f)
=
=
fi 2
D v = - ----m 1=1-----------------m
'
(8.13)
/
i i
i i
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
_ ,
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, = ,
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
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)
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:
-
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;
z
4
Frecventa
1
1
Simboluri
comune
Frecvente
simboluri
comune
c
d
3
4
++
Simbol
Frecventa
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
, .,
pozitia aj n programul P .
Se calculeaza indicatorul:
l * , - ii
k =----- j=------------c n max{| at - j |,1}
(8.18)
P
*
x[i
12 7
_ 84 _ ,
_ x i' 6 + 3+3 ^
x3 _ _ ----------_ 4
3
3
3
(x - x ) 2
i
3
a 32 _
3
4 +1 +1
_2
3
CV 3 _
3
_
a3
_2, 83
1,41
_
,=, 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
f2
In
fn
f1
..., 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
1 1 a, - j |
K =
-------
n m ax{|at - j |,1}
(8 19)
bn
hn
(8'2>)
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;
6
4
1
1
4
1
6
9
7
8
9
10
3
7
3
1
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.
Ik=
*A ~ B X
m in{G k , G k }
(8-21)
unde:
-
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= 7 n
h-
(822)
k=1,I> ^0
B P C = 7 n eh
k=1
(8-22)
daca Ia =
daca Ia =
daca Ia e
daca Ia e
(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.
Tip fisier
Fisier sursa
Fisier obiect
4063
167982
Fisier executabil
-
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
Frecventa de aparitie
0
9
4
0
56
0
2
3
23
6
6
48
48
22
8
2
18
10
5
5
3
1
6
2
8
4
2
3
)
{
}
[
]
,
.
=
++
\
:
%
&
+=
*
+
g a ij,
=a
kn
(8.25)
Pi
49
Pj
50
Numar de cuvinte
(A2)
Pj
4
10
3
4
5
11
12
11
Total
49
50
Pi
7
Pj
8,33
(A3)
4. dispersia, A 4 ;
X
A4 =
- x )2
------------n
(8.26)
Pi
5,42
Pj
8 ,2 1
(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
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
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
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
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
=a =0 =0
k
7
unde:
-
g2 =
i= 1 j = 1
(m + 1 ) nc
(8.30)
unde:
-
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;
a2
a3
ai
a2
a3
a4
a5
a4
Tabelul 8.38
a5
1
2
1
1
2
1
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
Start
a=3
b=5
c= 8
d=7
scanf( )
if
e=c+d
e=a+b
printf( )
Stop
(835)
//Ii
/ / I2
//I3
//I4
I1
I2
I3
I4
I1
1
0
0
0
I2
0
1
0
0
I3
0
0
1
0
I4
0
0
0
1
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
nm nm
X ((X
bj )log (X b,j))
j=1
j=1
,
(8.36)
i=1
X i log 2 i
i=1
nm
nm
( 2 A
lo 2 (
j= i
b j ))
(8.37)
nm
i l0 g 2
?=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
j=i
bn:
b m ax
m a x {b i i
=1, n
(8.38)
Mr =
b
i =1
1<bt <A+1
(8.38, 8.39)
N=
i=1
A+<bi <bmax
p lo g2 M
p +
(8.40)
lo g2
(8.41)
C g
(M
p +
N ) l o g 2 ( M p
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
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)
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.