ORTOGONALITATEA PROGRAMELOR C++ SOFTWARE MINING

Documente similare
ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

Programarea şi utilizarea calculatoarelor

Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O

Microsoft Word - O problema cu bits.doc

1. Operatii cu matrici 1 Cerinte: Sa se realizeze functii pentru operatii cu matrici patratice (de dimensiune maxima 10x10). Operatiile cerute sunt: A

E_d_Informatica_sp_SN_2014_bar_10_LRO

Microsoft Word - CarteC.doc

Logică și structuri discrete Limbaje regulate și automate Marius Minea marius/curs/lsd/ 24 noiembrie 2014

Laborator 3

Microsoft Word - CarteC.doc

proiectarea bazelor de date

Ingineria Sistemelor de Programare

E_d_Informatica_sp_MI_2015_bar_02_LRO

Declararea variabilelor

Slide 1

Programarea şi utilizarea calculatoarelor

tehnologii web

Microsoft Word - Software pentru ordonarea multirang a componentelor unei colectivitati.doc

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

SUBPROGRAME

Laborator 9: Fire de execuţie Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 20 noiembrie 2011

PROGRAMARE ORIENTATA PE OBIECTE

Slide 1

CURS

Platforma 5. 1 Introducere in MSSQL Introducere Pe parcursul ultimilor ani, se poate observa o cuplare a limbajelor de programare majore cu tipuri de

Microsoft Word - Curs_08.doc

PowerPoint Presentation

Laborator 2 Incompatibilităţi/Diferenţe între C şi C++ Completări C++ Supraîncărcarea (redefinirea) numelui de funcţii În C nu este permisă existenţa

Microsoft Word - Curs_09.doc

Procesarea Imaginilor - Laborator 1: Introducere în utilizarea bibliotecii OpenCV 1 1. Introducere în utilizarea bibliotecii OpenCV 1.1. Introducere S

ALGORITMICĂ. Seminar 3: Analiza eficienţei algoritmilor - estimarea timpului de execuţie şi notaţii asimptotice. Problema 1 (L) Să se determine număru

Testare manuala: situatia in care o persoana initiaza fiecare test, interactioneaza cu el si interpreteaza, analizeaza si raporteaza rezultatele. Test

Paradigme de Programare

PowerPoint-Präsentation

GHERCĂ MAGDA CASA CORPULUI DIDACTIC BRĂILA PORTOFOLIU EVALUARE INFORMATICĂ ȘI TIC PENTRU GIMNAZIU CLASA A V-A Neamț SERIA 1 GRUPA 1 CURSANT: GHERCĂ G

Laborator 4: Continuare Programare Orientată pe Obiecte Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 29 octombrie 2011

Limbaje Formale, Automate si Compilatoare

Diapositive 1

Matrici și vectori în VBA În VBA, o matrice este un grup de variabile de același tip. De ce ar trebui să utilizați o matrice? Presupunem că ați vrut s

Microsoft Word - 4Adrian Vizitiu.doc

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

LUCRAREA 8 PROGRAMAREA NELINIARĂ ÎN REZOLVAREA PROBLEMELOR DIN ENERGETICĂ. METODE DE ORDINUL Aspecte generale Programarea neliniară are o foart

Limbaje de Programare Curs 8 – Fisiere

Lucrul în mediul Excel 1.1. Componentele ferestrei Excel CAPITOLUL 1 LUCRUL ÎN MEDIUL EXCEL Fereastra Excel figura are numeroase elemente comune

Microsoft Word _POO_Lab_1_Modificari_v01.htm

Programarea calculatoarelor. Note de curs Marius Minea 1 Introducere în programarea în C 1.1 Funcţii în limbajul C Calcule şi funcţii La origine, rolu

Microsoft Word - PCLP2_Curs_4_2019.doc

PowerPoint Presentation

Microsoft Word - Curs1.docx

Dorel LUCHIAN Gabriel POPA Adrian ZANOSCHI Gheorghe IUREA algebră geometrie clasa a VIII-a ediţia a V-a, revizuită mate 2000 standard EDITURA PARALELA

OPERATII DE PRELUCRAREA IMAGINILOR 1

Sistem de supraveghere video inteligent cu localizarea automata a evenimentelor de interes SCOUTER, cod proiect PN-II-IN-DPST , contract nr

Microsoft Word - Lab1a.doc

Slide 1

Subiectul 1

Capitole Speciale de Informatică Curs 4: Calculul scorurilor în un sistem complet de extragere a informaţiilor 18 octombrie 2018 Reamintim că în cursu

Microsoft PowerPoint - ImplementareLimbaj [Read-Only] [Compatibility Mode]

Microsoft Word - Prelegere 1 - Bratu C. - Microcontrolerul.doc

Top

PPSD

Logică și structuri discrete Logică propozițională Marius Minea marius/curs/lsd/ 3 noiembrie 2014

Proiectarea Sistemelor Software Complexe

Microsoft Word - Lucrarea_10_t.doc

26

Microsoft Word - L63 FPGA.doc

Paradigme de programare

Lecţia 2 Structura liniară, alternativă şi repetitivă Clasa a V-a Structuri de bază(liniară, alternativă şi repetitivă) Programarea structurată este o

Limbaje de Programare Curs 6 – Functii de intrare-iesire

Microsoft PowerPoint - Curs_SDA_10_RO_2019_v1.pptx

Laborator 1 suport teoretic Mediul de dezvoltare Eclipse GLOSAR - Aplicaţie: program obţinut în urma aplicării operației BUILD asupra unui proiect (ve

Lab6LCD

Analiză statică Analiza fluxului de date 23 octombrie 2014

Gheorghe IUREA Adrian ZANOSCHI algebră geometrie clasa a VII-a ediţia a V-a, revizuită mate 2000 standard EDITURA PARALELA 45 Matematică. Clasa a VII-

CL2009R0976RO bi_cp 1..1

Microsoft PowerPoint - Curs_SDA_4_RO_2019_v2.pptx

Object Oriented Programming

Aggregating Data

Adresarea memoriei Modurile de adresare constituie un instrument principal pentru reprezentarea în memorie a imaginii datelor, aşa cum este ace

Slide 1

Microsoft Word - Alina-Mihaela ION - TEHNOLOGIA INFORMA?IEI CU APLICA?II

Modul Modbus ASCII SISTEME DE COMUNICATIE CURS 5 - Constantinescu Catalin Atunci cand se foloseste modul MODBUS ASCII fiecare octet din mesaj

Unitatea: Școala Gimnazială Disciplina: Informatică și TIC Programa școlară aprobată cu OMEN nr.3393 din Profesor: prof. Clasa: a V-a A, B

Microsoft Word - Curs_10.doc

Fâciu N. Maria-Ema CASA CORPULUI DIDACTIC BRĂILA PROGRAM DE FORMARE INFORMATICĂ ȘI TIC PENTRU GIMNAZIU CLASA A V-A SERIA 1 GRUPA 2 CURSANT: Fâciu N. M

Chertif Ionuț - Andrei Prietenul meu, calculatorul CLASA a V - a, 1 ora pe săptămână ARGUMENT Transformările societăţii româneşti din ultimii ani, dez

Analiză de flux de date 29 octombrie 2012

Microsoft Word - Carte_APDSV_v8

Capitole Speciale de Informatică Curs 1: Extragerea informaţiilor. Modelul boolean şi modelul boolean extins 27 septembrie 2018 Extragerea informaţiil

Logică și structuri discrete Relații. Funcții parțiale Marius Minea marius/curs/lsd/ 20 octombrie 2014

Microsoft Word - Curs_07.doc

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior Universitatea de Vest din Timișoara 1.2 Facultatea Matematică și Informa

Microsoft Word - Ansamblul software CRONIS

Discipline aferente competenţelor Facultate: Facultatea de Electronică şi Telecomunicaţii Universitate: UNIVERSITATEA POLITEHNICA DIN TIMIȘOARA Domeni

PHP (II)

METODE NUMERICE ÎN INGINERIE

FD Informatica

Limbaje de Programare Curs 5 – Siruri de caractere

Limbaje de ordinul I LOGICA DE ORDINUL I Un limbaj L de ordinul I este format din: o mulţime numărabilă V = {v n n N} de variabile; conectorii şi ; pa

Metode avansate de gestiune a documentelor și a sistemelor de calcul - LABORATOR 1 -

Transcriere:

ORTOGONALITATEA PROGRAMELOR C++ SOFTWARE MINING Ion Ivan ionivan@ase.ro Daniel Milodin daniel. milodin@ase.ro Academia de Studii Economice Bucure ti Sorin-Nicolae Dumitru sorin.dumitru@yahoo.com Rezumat: Se prezinta conceptul de ortogonalitate pentru enti!ati text. Se construiesc indicatori de masurare a ortogonalita\ii. Se utilizeaza indicatori pentru masurarea 011ogonalitA)ii programelor scrise in limbajul C++. Se analizeaza influenta masurarii ortogonalita)ii asupra cre~terii calitafii programelor C++. Rezultatele sunt bazate pe utilizarea de software destinat studiului ortogonalitalii produselor - program scrise in diferite limbaje de programare. Cuvinte cheie: entitate text, ortogonalitate. 1. Ortogonalitatea entitafilor text Alfabetul este o mul!ime finita, formata din simbolurile ai. a 2, a:i. a... a,,,, unde ns este numarul de simboluri. Cu ajutorul simbolurilor alfabetului, se construiesc vocabularele. Asocierea dintre o serie de simboluri ale alfabetului ~i un element al lumii reale conduce la crearea de termeni reprezentativi ~i la formarea de vocabulare. Vocabularul con\ine asocieri de simboluri care indeplinesc condi\iile: sunt u~or de reprodus; sunt diferite unele de celelalte; au simetrii; sunt in coresponden\a biunivodi cu o mul\ime de sunete, elemente din lumea reala; permite construirea de ~iruri prin concatenare. Vocabularul este construit cu ajutorul simbolurilor alfabetului, iar termenii con\inuti de un vocabular sunt diferi\i. Vocabularele sunt utilizate pentru a reprezenta informa\ia in forma vizuala, fonica, tactila sau mentala. Sunetele reprezinta un vocabular distinct. Sunetul se transmite sub forma oscila\iilor In mediul in care s-a produs fiind perceput de aparatul auditiv In intervale de frecven\e. De asemenea, limitand aria de reprezentativitate a vocabularului la un domeniu strict, acesta este construit pe baza termenilor de referin\a din respectivul domeniu. Spre exemplu, in ceea ce prive~te coloristica, se pleaca de la trei culori de baza ro~u, verde ~i albastru, prin combinarea!or ob\inandu-se alte culori care lmboga\esc atat domeniul respectiv, cat ~i vocabularul acestuia. Domeniul muzical are, de asemenea, la baza un numar de note muzicale, iar prin compunerea de varia\iuni pe baza acestora rezulta noi game de note muzicale ~i noi sunete de reprezentat. In ceea ce prive~te vocabularul unui limbaj de programare, acesta este format din litere mari, litere mici, cifre, operatori ~i separatori. Toate simbolurile con\inute de un limbaj de programare se regasesc in cadrul caracterelor ASCII. Cu ajutorul simbolurilor sunt reprezentate no\iuni sau obiecte. Literele sunt simbolurile cu ajutorul carora se construiesc alfabetele. 0 condi\ie esen\iala pentru ca un simbol sa apartina unui alfabet este aceea de a respecta anumite reguli stricte, care-i pozi\ioneaza in mod unic fa\a de simbolul anterior ~ i fa\a de simbolul urmator. intre litere ~i sunete exista o coresponden\a. Prin intermediul literelor, aceasta coresponden\a este perceputa vizual, fonic sau tactil. in cadrul limbajului, exista simboluri care nu sunt incluse in alfabet. In aceasta categorie intra separatorii ~i simbolurile speciale. Prin conven\ie, separatorul cu cea mai mare frecven\a de apari\ie, utilizat lntre grupurile de litere, este,, blank". In categoria simbolurilor speciale, intra cele utilizate in reprezentarea informa\iei ~i a opera\iilor In diverse ramuri ale ~ti in\ei : matematica, fizica, chimie, informatica etc. Revista Romana de Informatica ~i Automatica., vol. 17, nr. 2, 2007 39

Din setul de caractere ASCII, sunt extrase urmatoarele alfabete: alfabetul format din literele mici: SLm = alblcl... lz; alfabetul format din literele mari: SLM = AIBICl... IZ; alfabetul format din cifrele arabe: SCA= 011121... 19; alfabetul format din multimea separatorilor: SMS = #I I; I, I I?I.. []. Cu ajutorul alfabetelor definite, sunt descrise cuvintele limbajelor de programare. Cuviintul reprezinta un grup de simboluri din alfabetul A, concatenate ~i aranjate in ordinea C; =a; a;... a~, u~or de pronuntat, unde n; este numarul de simboluri din cuvantul c;. Se asociaza o semnificatie grupului de simboluri in functie de elementele extrase ~i relatia de ordine dintre ele. Un cuvant ci se caracterizeaza prin lungime, Lc(cJ, exprimata ca numar de elemente ce intra in alcatuirea sa. in functie de modul de construire, se <listing urmatoarele clase de cuvinte: cuvinte simple - formeaza lexicul de baza al unui limbaj; cuvinte compuse - se formeaza din agregarea cuvintelor simple prin intermediul operatiilor: prefixare, sufixare, concatenare. Vocabularul VA este o multime formata din cuvinte diferite: VA= {Co, CJ, C2, C3, C4,...., Cn}; Lungimea vocabularului VA poate fi notata cu Lgv(V,J, care indica numarul de cuvinte ce intra in alcatuirea vocabularului. Intre cuvintele vocabularelor se stabilesc asocieri. Astfel, se construiesc dictionare prin intermediul carora se evidentiaza semnificatia textului in doua limbi diferite. Vocabularul textului este constituit din multimea cuvintelor diferite, care apar intr-un text. Vocabularul textului, VT, este inclus in vocabularul VA Uneori, VT este identic cu VA De exemplu, pentru: alfabetul A = {a, b, c, d, e }, vocabularul se construie~te textul: VA = { abc, bbd, ddd, aaaaaaaa, bbbb, eeeee, abced} T = < abc + abc + abc + aaaaaaaa + aaaaaaaa + aaaaaaaa +eeeee+eeeee > Vocabularul textului T, VT, este alcatuit din cuvintele: abc aaaaaaaa eeeee Lungimea vocabularului VT este de 3 cuvinte. Vocabularul VTeste inclus in vocabularul VA. Regulile de construire a vocabularului constau in: pronuntia nativa - succesiuni de sunete asociate cu obiecte, fiinte, procese, fenomene din lumea reala; preluarea de sub~iruri din cuvintele vocabularului; preluarea din alte limbi (neologisme): sponsor, software, hot-dog etc. Textul T reprezinta o succesiune de cuvinte din vocabularul VA delimitate prin separatori. T = { CkJ. Ck2, Cu,..., C1cn }; unde k 1 k 2.... kne {l,n}. Lungimea textului este exprimata in urmatoarele moduri: 40 Revista Romana de Informatica ~i Automaticli, vol. 17, nr. 2, 2007

LGcAR(I'): numlir de caractere; LGsYMB(I'): numlir de simboluri; LGwoRD(I'): numlir de cuvinte; LGPH(I'): numlir de propozi\ii; LGSTM(I'): numlir de fraze. $ablonul este o formalizare a regulilor de construire a textelor. Textul este impliftit in sub iruri de cuvinte, iar ablonul impune ca fiecare sub ir sli apar\ina unui subvocabular. Un exemplu de ablon este structura unui cod sursli, ce con\ine sec\iuni standard, care se repetli de la un cod sursli la altul. Ceea ce diferli este con\inutul informational, reprezentat prin entitatea text respectivi'i. ~ablonul prive te i un mod de formatare a construc\iilor sintactice. De exemplu, tipul variabilelor, declararea unei proceduri, pozi\ia blocului de declarare a variabilelor etc. De asemenea, existli posibilitatea ca ablonul unei entiti'i\i text sli con(inli informa\ie statici'i, netransmisibilli de la o entitate la alta, i date dinamice, care sunt particulare fieci'irei entitli\i. Operatorii sunt simboluri utilizate pentru precizarea opera\iilor care trebuie executate asupra operanzilor. Operanzii se regi'isesc in constante, variabile, nume de func\ii, expresii. Expresiile sunt entita\i construite cu ajutorul operanzilor i operatorilor, respectiind sintaxa i semantica limbajului. Cea mai simplii expresie este cea formati'i dintr-un singur operand. Separatorul este un simbol ce nu apar(ine alfabetului A, care are rolul de a delimita cuvintele ce alcatuiesc o secventa de cuvinte. Dacli se definesc separatorii Si, s 2,..., s., oricare dintre ei se utilizeazli pentru a delimita cuvintele dintr-o in iruire de cuvinte. Dacli un separator este utilizat consecutiv, se ob\ine o secventa de separatori. Cuvintele cheie sunt construc\iile pe baza cllrora se define te i se delimiteazli un domeniu in mul\imea de activita\i umane. Ele se concretizeazli prin concepte definite in cadrul domeniului. Se procedeazi'i la definirea domeniului pentru care se efectueazli testarea. Existli texte pentru prezentarea domeniului. Cuvintele cheie din textul asociat domeniului apar sub forma de cuvinte cheie i in cazul intrebi'irilor i variantelor de riispuns din bateriile de texte. In cadrul unui limbaj de programare, cuvintele cheie sunt implir\ite pe categorii de aplicabilitate: cuvinte folosite pentru definirea tipului de variabile, cuvinte folosite pentru definirea tipului de constante, cuvinte folosite pentru a realiza instruc\iunile asociate structurilor repetitive sau structuri secven\iale, cuvinte folosite pentru apelarea de func\ii predefinite, cuvinte care apeleazli biblioteci de func(ii. Cuvintele utilizator sunt construc\iile definite de clitre programator; se concretizeazli prin concepte definite in func\ie de necesitatea folosirii acestora; de exemplu, se folosesc cuvinte standard, apar(iniind unui stil de realizare a codului, denumit in limba englezli., coding style", acestea alclituind un vocabular. 0 instrucfiune executabilii realizeazi'i ac(iuni precum: execuu! metode sau proceduri, controleazli fluxul execu\iei codului. 0 instruc\iune este, in unele cazuri, scrisi'i pe mai multe linii prin utilizarea caracterelor de continuare a liniei specifice fieci'irui limbaj. Vocabularul limbajului C++ este format din: literele mici {a,b,c,... z}; literele mari {A,B,C,....,Z}; operatori: Aritmetici operatorii unari de plistrare I schimbare a semnului: + - operatorii binari multiplicativi - de inmul\ire, implir\ire, modulo: * I % operatorii binari aditivi - de adunare i sclidere: + - Rela\ionali "< " "<= " "> " ">=" " " "!= " Revista Romana de Informatica i Automatica, vol. 17, nr. 2, 2007 41

- Logici "!" negatie logica "&&" si logic "II" sau logic - La nivel de bit: - " complementare ">>" deplasare la dreapta "<<" deplasare la stiinga "& "A" "I" si sau exclusiv sau separatorii reprezentati In multimea S S = { '}', '{', ' '(tab), '{space), cuvintele cheie: '(, ')','_ '} pentru domeniul informatic {procedura, variabili'l globala, structura repetitiva} specifice limbajului C++ {char, int, long, float, unsigned, canst, double, function, printf. scanf stdin, stdout, putchar, for, while, return, case, main, include, if, abs} cuvintele definite de utilizator; Tabelul L Cuvinte utilizator ~i semnificatia acestora pentru programator Cuvant utilizator Inc Dec Matricel A B instructiuni (executabile, neexecutabile) Exista mai multe categorii de instrucfiuni executabile: simple: structurare: instructiuni de intrare I ie~ire (Read_ Write); instructiuni de atribuire I memorare; instruc\iuni de transfer (Return_ Exit); instruqiuni de operare liste (inserare, extragere). instruc\iuni secventiale (Begin_ End); instructiuni decizionale I decizia: Semnificatie pentru programator Incrementare Decrement are Numele unei matrice definite de programator Vectorul de numere Vectorul de coresponden/i'l instructiuni cu seleqie simpla (If_ Then_ Else); instruc\iuni cu selec\ie multipla (Case); instruc\iuni repetitive I repeti\ia: ciclu cu test initial (While_Do); ciclu cu test final (Repeat_ Until); 42 Revista Rom na de Informatica ~ i Automatica, vol. 17, nr. 2, 2007

ciclu cu contor (For_Do); ape! de procedura I func\ie. lnstrucpunile executabile apeleaza diferite categorii de funcpi de biblioteca. Aceste func\ii sunt parametrizate ~i, prin apelarea lor, se realizeaza particularizarea parametrilor cu care func\ia a fost construitli. using System; public class Exceptie : Exception { public Exceptie(string p _szmotiv) : base(p_szmotiv) {} } lldeclara domeniul de nume utilizat /ldeclara clasa Exceptie derivata din clasa Exception lldeclara inceput de bloc lldeclara ante/ constructor /lapel instrucfiune executabila, executa constructorul clasei mo$tenite llsfrir$it de bloc Un modul de cod poate incepe cu o sec\iune de declara\ii. Prin declara{ii se in\eleg instruc{iuni neexecutabile prin care se definesc constante, variabile ~i proceduri exteme. #define DEBUG /ldeclara constanta preprocesare If def DEBUG llverijica declarare constanta preprocesare Principala componentli a unui program este blocul format din dec/arafii ~i instrucpuni, din linii sursa ce includ: partea de declarare a etichetelor, in care se definesc etichetele folosite in partea de instruc\iuni a blocului; partea de declarare a tipurilor, care con\ine definirea unor tipuri de date pe baza altor tipuri definite anterior, standard sau ale utilizatorului; partea de declarare a constantelor, care cuprinde identificarea constantelor simbolice (identificatori asocia\i unor constante) ~i a constantelor cu tip (variabile ini\ializate in momentul compilarii); partea de declarare a variabilelor, care con\ine definirea tuturor variabilelor specifice blocului respectiv; partea de declarare a procedurilor ~i I sau func\iilor. Programele C++ sunt entita\i text dezvoltate dupa regulile de sintaxa ale limbajului. Se considera P mul\imea programelor C++, definita prin P = { P 1, P 2,...,PN}, unde N reprezintli numarul de programe existente intr-o companie de dezvoltare software. Fie programele P 1 si Pi apartiniind mul\imii P. Se spune ca P; si Pi sunt ortogonale daca indicatorii folosi\i pentru determinarea gradului de asemanare au valori cuprinse in intervalul [0.92;1]. Ortogonalitatea programelor identifica diferen\ele intre programe, pe baza con\inutului lor ~i pe baza modalita\ii de aranjare a con\inutului. Sunt avute in vedere declara\iile flicute in cadrul programelor, cuvintele cheie folosite, structurile repetitive ce stau la baza implementarii programelor, precum ~i rezultatele ob\inute pleciind de la acela~i set de date de intrare. Programele sunt identice daca au un grad de asemanare ridicat, au aceea~i structura, acelea~i cuvinte cheie, ordinea de folosire a acestora este aceea~i, rezultatele furnizate sunt identice ~i numarul de pa~i parcur~i pentru fumizarea rezultatelor corespund. Programe ortogonale prezintli diferente de structura, de realizarea ~i de finalitate. Programe care sufera modificari sunt programele de la care se pleaca in realizarea de noi programe sursa. Diferen\ele intre aceste programe nu sunt mari, noul program re\iniind in structura sa aspecte ce se regasesc in programul original. Programe care sufera interschimb de comenzi, sufera variatii in ceea ce prive~te dispunerea in codul sursa a comenzilor, a declararii variabilelor de lucru, flira a suferi schimbari majore privitoare la termenii utiliza\i ~i la structurile implementate. Programele translatate automat din C++ in Pascal, trebuie considerate neortogonale. Revista Romana de Informatica i Automatica, vol. 17, nr. 2, 2007 43

Scrierea in coresponden\a a cuvintelor cheie permite realizarea de definiri de operanzi echivalen\i in programele C++, pornind de la programele Pascal. Se prezinta coresponden\a intre programele scrise in C++ ~i Pascal, astfel: pentru definirea variabilelor: int float struct switch char* C++ pentru definirea unui articol din programe C++: struct nume { tip1 nume1; tip2 nume2; Pascal integer real record case string tip. nume.; }; ii va corespunde construc\ia in limbajul Pascal, ob\inuta prin translatarea automata: nume = record nume1: tip1; nume2: tip2; nume.: tip.; end; Structurilor alternative multiple din programele C++: switch (expresie) { case vall: {.. break; } case va/2: {.. break;} default: {... break;} } le corespund, prin translatare automata, descrierile urmatoare in limbajul Pascal: case expresie of begin vall: begin... end; val2: begin... end; vain: begin... end; end; Dezvoltarea de software impune o atitudine de asigurare a ortogonalita\ii programelor. Programele aflate intr-un depozit software trebuie supuse unui proces de analiza a ortogonalita\ii. Conceptele utilizate in analiza ~i proiectarea produselor - program sunt: clasii de obiecte - o mul\ime de obiecte care impart o structura ~i un comportament comune; este un ~ablon pe baza caruia se instan\iaza obiecte; 44 Revista Romana de Informatica i Automatica, vol. 17, nr. 2, 2007

moitenire - o relatie intre clase prin care o clasli preia atributele ~i metodele definite in una sau mai multe clase; instanfiere - proces de creare a unui obiect i inipalizarea sa cu date specifice; atribut- variabilli definit1! in cadrul unei clase de obiecte; multimea atributelor reflect1! starea unui obiect; metodii - opereaz1l asupra datelor ca rlispuns a mesajelor primite, fiind parte a declaratiei clasei de obiecte; multimea metodelor precizeazli comportamentul unui obiect; obiect - o instantiere a unei clase capabilli sli salveze o stare i care oferli o serie de operatii care examineazli starea i I sau o modificli. 2. Indicatori ai ortogonalitafii programelor C++ Construirea de indicatori ai ortogonalitlitii, care sli respecte toate cerintele impuse indicatorilor, este un obiectiv destul de dificil de realizat. Se urmlire te identificarea cerintelor importante pentru conceptul de ortogonalitate i care, implementate asupra produselor - program supuse analizei, ajutli la identificarea elementelor de originalitate. Existli numeroase abord1lri ale analizei ortogonalitlitii: analiz1! pentru intreaga entitate; analiz1! pe amprente. Pentru studierea ortogonalit1ltii, se propune algoritmul urmlitor: selecfie limbaj, prin care utilizatorul produsului - program are la dispozitie o varietate de limbaje de programare din care poate realiza selectia inainte de procesul de analizli a textelor sursli. Selectia in cauz1l se realizeazli prin intermediul unui control apartinand mediului de dezvoltare C#, denumit ComboBox. Acest control are asociat1l o colectie, in cazul nostru, aceast1! colectie fiind reprezentatli de: C#; PHP; C++; JAVA; VB; se/ec(ie feyiere, care, dupli incheierea cu succes a primul pas, face trecerea la selecpa fi~ierelor de comparare. Acestea sunt definite dupli un ablon prestabilit de programator. Ele trebuie sli respecte o structurli, iar in denumirea fi~ierelor ce contin texte sursl\, sli fie inclus numele limbajului corespunz1ltor. De asemenea, se pot stab iii reguli cu privire la locapa fizicl\, unde trebuie sli fie regllsit textul sursli; selecfie separatori este realizatli automat. Implicit se creeaz1l un fi ier in care sunt inclu i to\i separatorii, in functie de specificul fieclirui limbaj in parte. Aceste fi iere pot ti editate prin intermediul produsului - program; comparare texte sursii este procesul care se realizeazli la nivel de cod, fllrli a vizualiza in mod grafic procesele destll urate pentru determinarea solu\iei; parcurgere fi#ere prin care textele sursli apar\inand aceluia i program sunt parcurse in vederea determinlirii aparitiei cuvintelor din vocabular i calcullirii gradului de asemlinare dintre cele douli. Parcurgerea se realizeazli linie cu linie; consultare vocabular se realizeazli de fiecare datli ciind se determinli un separator de cuvinte. Cuvantul rezultat se comparli cu eel din vocabular. Dacli acestea sunt identice, este retinut pentru o prelucrare viitoare; ca/cul indicatori calculeaz1! frecventele de aparitie ale fieclirui cuvant din vocabular. grad de similaritate: este calculat cu ajutorul indicatorilor prezentati mai sus, formula de calcul fiind datli de rela\ia: G =!!_, r unde: G, - grad de similaritate; h - numlirul de aparitii, in cadrul cuvintelor, ale simbolurilor comune; r -num1lrul maxim de simboluri care formeazli cuvintele analizate. Revista Romana de Jnformatic!l ~i Automatic!!, vol. 17, nr. 2, 2007 45

Grad de asemiinare: determinat cu ajutorul matricelor care eviden\iaza pozi\iile de apari\ie a cuvintelor din vocabular. Acesta se calculeaza dupa formula: D(Tj)= L;= 1 J/lg2f/ unde: D(T 1 ) - grad de asemanare a cuvantului Ti; f / -frecven\ele de apari\ie ale cuvintelor din vocabular In textul T 1. comutativitate arata ca, In caz de comutativitate totala, prin interschimbarea lui Ii cu lj,, textul ramane la fel; interschimb este procedeul prin care matricele sunt ordonate pentru calcularea gradului de asemanare. Se realizeaza interschimbul liniilor sau coloanelor astfel!neat pe primele linii sa fie afi ate cuvintele din vocabular cu gradul de apari\ie eel mai mare; aji$are este procedeul prin care rezultatele ob\inute In urma proceselor prezentate mai sus, sunt furnizate utilizatorului prin intermediul unui mediu vizual, folosind controale specifice mediului de dezvoltare C#. 3. Structura software pentru implementarea metricilor ortogonalitatii Produsul - program realizeaza verificarea gradului de ortogonalitate In cadrul unui depozit software. Sunt definite criteriile de ortogonalitate, structura produselor - program, caracteristicile ce sunt urmiirite pentru verificarea ortogonalita\ii. La crearea software-ului ce testeaza ortogonalitatea se are In vedere faptul ca programele pentru o identificare corecta a gradului de ortogonalitate trebuie sa aiba acee~i structura, sa respecte o anumita compozij:ie. in acest sens, software-ul propus spre analiza realizeaza testarea ortogonalita\ii pentru un depozit de produse - program construite doar in limbajul C++. La crearea software-ul s-a \inut cont de particularita\ile limbajului C++ i, In acela i timp, s-a urmarit ca software-ul rezultat sii aibii un grad de generalitate cat mai ridicat pentru a fi aplicat i pentru studierea ortogonalita\ii altar limbaje de programare i chiar pentru studierea ortogonalitii\ii bazelor de date i chiar a alfabetelor construite cu ajutorul termenilor i denumirilor folosite In cadrul unui anumit limbaj. Demersul este dat de: multitudinea de produse software, existente la ora actuala pe pia\a; stabilirea gradului de asemanare intre produsele software; stabilirea produselor software identice; stabilirea produselor software originale; definirea de opera\ii care sii duca la cre terea gradului de ortogonalitate a produselor - program; diferen\ierea clara a conceptului reutilizare de conceptul inovafie; crearea unui software care sa asigure un proces eficient de filtrare a produselor - program stocate In cadrul depozitului de software; construirea unui concept de transformare a programelor aparent diferite pentru a identifica aspectele in fapt comune, dar care creeaza o falsa impresie de originalitate; spre exemplu secven\ele: int a, b=a+ I; i int a,b; b=a+ J; la prima vedere sunt diferite, insa, In fapt, produc acela i rezultat; conceptul trebuind sa \ina cont de modalitatea ulterioara de utilizare a variabilelor definite; 46 Revista Romana de Informatica ~i Automatic;\, vol. 17, nr. 2, 2007

crearea unui software care sll determine dacll un produs - program respectll criteriile de ortogonalitate, astfel!neat sll fie stocat In depozitul de produse - program; se urmllre~te astfel ca informa\ia con\inutll In cadrul depozitului sll aibll redundan\ll minima. Utilizatorul are posibilitatea de a modifica textele sursa existente, de a crea elemente de comparatie, prin intermediul interfe\ei utilizator pusa la dispozitie, sau direct din interfa\a Windows, cu utilitarele specifice fi~ierelor text: NotePad, WordPad, MicrosoftWord. Este oferitll posibilitatea de selec\ie a modului de rulare a produselor program prestabilite, In care sunt prezente cazuri predefinite de programator, singura interac\iune dintre utilizator ~i datele de test fiind vizualizarea, consultarea sau folosirea acestor date In alte produse program prin copierea datelor cu ajutorul instrumentelor Copy ~i Paste. Exista o componentll care necesitll interac\iunea utilizatorului, prin inserarea datelor de text In doull controale TextBox ~i vizualizarea rezultatelor prin apelul evenimentelor de calcul cu ajutorul controlului Button. De asemenea, se configureazll vocabularele ~i separatorii. Produsul - program este extins pe diferite domenii, cum ar fi cele contabil ~i statistic. 3.1. Cerinfe hardware ~i software Cerin{ele hardware ale sistemului sunt influentate de natura distribuitll a acestuia. Este necesara o sta\ie pe care sll ruleze un sistem Windows XP sau 2003 server, pentru a exista compatibilitatea sistemului cu Framework 2.0. Cerin{ele software implicll existenta unui Windows Installer 3.0 sau a unei versiuni mai recente, de asemenea, existenta Framework 2.0 pentru compatibilitatea lntre mediul In care a fost dezvoltata aplicatia ~i fi~ierele existente pe sta\ia de lucru. Structura produsului - program este prezentatll In figura I: Deschidere fi~ier sursll Domeniul contabil Comparare programe cu n/2 linii comune programe complet diferite programe cu n/4 linii comune utilizator Domeniul politic Ajutor Figura 1. Structura aplica\iei Fiecare op\iune prezentatll are drept corespondent o form!! sau mai multe, in func\ie de complexitate, pentru a se realiza cu succes trecerea de la nivelul de cod sursll, la nivelul utilizator. Codul sursa este lmpllr\it In clase, proceduri, functii. In continuare, vor fi prezentate func\iile cu caracter determinant In derularea algoritmilor de comparare a textelor sursll: esteeleme11t: determinll dacll elementul curent se regllse~te In vocabularul specificat la lnceputul apelului; calcfrecvcuv: realizeazll identificarea frecven\elor de apari\ie a unui cuvant din vocabular; calcpozcuv: prin intermediul acestei proceduri, se determina pozi\ia la care a fost gasit elementul, pentru a se construi ulterior matricele de coresponden\ll; aratamatr: se populeaza cele doua controale textbox cu elementele matricei compuse din pozi\iile de apari\ie a cuvintelor din vocabular; calcgradasem: realizeazll identificarea gradului de asem!inare a textelor sursa, care se determina prin raportul dintre numarul de frecven\e identice de apari\ie ~i numarul elementelor de compara\ie din vocabular; Revista Romanll de Informatica ~i Automaticll, vol. 17, nr. 2, 2007 47

calcgradsim: se prelucreaza matricea pentru a se determina cu funqia logaritrnica gradul de asemiinare a doua texte sursa in functie de pozitiile de aparitie a cuvintelor definite in vocabular in textul sursa; ordonarematrfrecv: realizeaza ordonarea matricelor in functie de numarul maxim de apari\ii ale cuvintelor. Aceasta ordonare se realizeaza prin interschimbul liniilor ~i \im'ind cont de comutativitate, care este considerata totala; public class FctComp: este o clasa definita pentru a u~ura lucrul cu func\iile ~i procedurile create. Cu ajutorul acestei clase, apelul func\iilor se realizeaza prin apelul numelui clasei, alaturi de numele functiei/procedurii. De exemplu: F ctcomp. CalcFrecvAparitieO In vederea studierii ortogonalita\ii programelor C++, se creeaza un depozit software, in care sunt stocate programe. Pentru a fi introduse in depozitul software, programele trebuie sa respecte o serie de condi\ii legate de gradul de asemanare dintre ele, pentru a incarca doar programe originale. Un criteriu esen\ial pentru diferen\ierea produselor software este gradul acestora de complexitate. Pe baza acestui criteriu, se realizeaza clasificarea programelor, astfel incat la studierea ortogonalitil.\ii se realizeaza compara\ii pe clase de complexitate, contribuind astfel la imbunatil.\irea timpilor de execu\ie ai programului. 4. Lotul de programe C++ pentru evaluarea ortogonalitafii Lotul de programe destinat testarii produsului software este compus din programe scrise in C++. Programele sunt astfel alese incat sa fie atinse toate caracteristicile programelor C++. Loturile de programe sunt create astfel!neat sa fie atinse toate situa\iile in care se pot regasi doua programe sursa. Din rularea produsului - program, a rezultat ca cele doua coduri sursa se asearnana in propofiie de 25%. Compararea programelor sursa se face folosind acela~i principiu ca ~i compararea textelor. Compararea de texte este opera\ia de punere in corespondenta a douli entitati ETi ~i ETi in vederea stabilirii asemanarilor sau deosebirilor intre ele. Comparabilitatea textelor se analizeaza la urmatoarele niveluri: forma de reprezentare; con\inut informational. Reprezentarea perceptiilor omului privind lumea inconjuratoare se face prin intermediul construc\iilor sintactice, formate din simboluri alfanumerice, grafice, spa\iale. In cea mai mare parte a lor, textele se realizeaza pe baza alfabetului A ~i sunt colectii de cuvinte aranjate intr-o ordine conform regulilor definite. Exista mai multe criterii de comparare a doua entitati text, ET; ~i ET;, pornind de la forma de reprezentare a acestora. Criteriile vizeaza: lungimea entitatii text - este exprimata in mai multe moduri; numar de simboluri utilizate; numar de caractere utilizate cu posibilitatea de a diferentia pe caractere mici ~i caractere mari; numar de cuvinte folosite; numar de pagini; numar de bytes ocupa\i, in cazul entita\ilor text care sun! date in format electronic; lungimea vocabularelor entita\ilor - exprimata ca numar de cuvinte distincte utilizate in construc\ia entita\ilor text ET; ~i ET;; lungimea vocabularelor cuvintelor cheie - sunt luate in considerare cuvintele definitorii pentru domeniul abordat; numarul de cuvinte cheie din titlurile entita\ilor; 48 Revista Romana de Informatica ~ i Automaticll, vol. 17, nr. 2, 2007

diversitatea vocabularelor entita\ilor - raporteaza cuvintele din vocabularele entitli\ilor cu cele din vocabularul limbii in care au fost realizate; frecven\ele de apari\ie a cuvintelor din entitli\ile ET 1 ~i ET; - pentru fiecare cuviint din vocabularul unei entita\i se asociaza numarul de aparitii in cadrul entita\ii; frecventele de apari(ie a cuvintelor din vocabularele entita\ilor in raport cu un vocabular definit de utilizator; construirea matricelor de preceden\e in vederea analizei comparate a textelor in func\ie de pozi\iile construc\iilor sintactice. Comparabilitatea textelor din punctul de vedere al con\inutului informational are in vedere urmatoarele aspecte: delimitarea domeniului abordat prin eviden\ierea semanticii cuvintelor cheie; in\elesul cuvintelor specifice domeniului ~i sensul in care acestea au fost utilizate in construc\ia entitli\ii text; acoperirea cadrului conceptual prin utilizarea cuvintelor specifice domeniului; aducerea entita\ilor ET, i ET; la o forma comuna prin eliminarea cuvintelor de legatura i a prefixelor I sufixelor adaugate conform regulilor gramaticale specifice limbii; identificarea sinonimelor pentru cuvintele din vocabularul entita\ilor i modificarea textelor prin utilizarea aceleia i forme a cuviintului; identificarea i prezentarea elementelor de natura teoretica i practica, exprimate in cele doua entita\i, i realizarea de asocieri; identificarea func\ionalita\ilor descrise in texte, inventarierea lor i eviden\ierea eventualelor asocieri. A viind in vedere natura calitativa a aspectelor din lumea reala, prezentate intr-o entitate text, se impune derularea de procese i aplicarea de opera\ii asupra entita\ilor text, supuse analizei comparative. Scopul este de a aduce textele la o aceea i forma cuantificabila din punct de vedere numeric. Criteriile de clasificare a programelor stocate in depozitul software contribuie la identificarea de programe originale, calitative i cu un grad ridicat de solicitare. Valoarea rezultata pentru indicatorul de ortogonalitate este supusa analizei de calitate, iar In urma testelor a rezultat ca indicatorul respecta criteriile de calitate, respectiv necatastroficitate, senzitivitate ~i necompensatoriu. in urma rularii produsului - program, s-a observat ca programele din aceea i clasa de complexitate sunt mai pu\in ortogonale, lucru explicabil prin faptul ca vocabularul programelor este format din acelea i cuvinte cheie, din acelea i tipuri de date, folose te acelea i tipuri de structuri. in tabelul 2 sunt prezentate produse - program identice pentru care este determinat indicatorul de ortogonalitate: Tabel 2. Texte sursa ale programelor identice using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System. Windows.Forms; namespace CodPtLicenta namespace CodPtLicenta Revista Romiinli de Informaticli ~i Automaticli, vol. 17, nr. 2, 2007 49

public partial class Form! : Form public partial class Forml : Form public Int32 suma; public FormlO public Int32 suma; public FormlO InitializeComponentO; InitializeComponentO; b) private void suma _ 2numere(Int32 a, Int32 private void suma _ 2numere(Int32 a, Int32 b) this.suma = a+ b; this.suma = a+ b; private void Calculeaza _Click( object sender, EventArgs e) private void Calculeaza_ Click( object sender, EventArgs e) suma_2numere(int32.parse(tbxa.text), Int32.Parse(tbxB.Text)); this.tbxsuma.text = suma.tostringo; suma _ 2numere(Int32.Parse(tbxA. Text), Int32.Parse(tbxB.Text)); this.tbxsuma.text = suma.tostring(); A a cum se observa, indicatorul de ortogonalitate are valoare 0, programele fiind identice atiit in ceea ce prive te partea declarativa, cat i in ceea ce prive te con\inutul. Variabilele sunt declarate folosind acela i format, func\iile sunt declarate ~i apelate in acela~i context, declararea de biblioteci se realizeaza in mod similar. in tabelul 3, sunt prezentate doua programe sursa, a caror ortogonalitate este maximi\. Tabelul 3. Texte sursa total diferite using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System. Windows.Forms; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System. Windows.Forms; 50 Revista Roman[ de lnformaticli. ~i Automatic[, vol. 17, nr. 2, 2007

namespace CodPtLicenta namespace CodPtLicenta public partial class Form! : Form public partial class Form! : Form public Int32 suma; public Form!() public Form!() InitializeComponent(); InitializeComponent(); b) private void suma _ 2numere(Int32 a, Int32 this.suma = a + b; private void Calculeaza _Click( object sender, EventArgs e) sum a_ 2numere(Int32.Parse(tbxA. Text), Int32.Parse(tbxB.Text)); this.tbxsuma.text = suma.tostring(); Valoarea indicatorului de ortogonalitate este, in acest caz, J, rezultand ca cele doua produse - program sunt total diferite. Se observa o oarecare asemanare la declararea bibliotecilor, dar acest fapt nu afecteazil cu nimic caracterul de originalitate al programelor, tiut fiind faptul ca nu este important ceea se folose te din cadrul bibliotecilor, ci modul cum se folose~te. Au fost prezentate cele doua situatii extreme in care se afla doua programe sursa, respectiv total diferite ~i identice. In tabelul 4, este prezentata o situatie intermediara. Tabelul 4. Texte sursli in care apar unele diferenfe intre programe using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; Revista Roman~ de lnformatic~ ~i Automatic~, vol. 17, nr. 2, 2007 51

using System.Text; using System.Windows.Forms; using System.Text; using System. Windows.Forms; Using System.SQL; namespace CodPtLicenta namespace CodPtLicenta public partial class Forml : Form public partial class Forml : Form public Int32 suma; public FormlO public FormlO lnitializecomponento; lnitializecomponent(); this.suma=o; MessageBox.Show("Suma a fost intializata cu valoarea O:"); private void Calculeaza _Click( object sender, EventArgs e) private void suma() form I.Close(); break; in acest exemplu, ortogonalitatea este 0.75. Este foarte important ca, la analizarea surselor programelor, sa fie construite o serie de criterii valide ~i cuprinzatoare pentru caracterizarea produselor software. Doua programe sunt aparent identice, dar schimbari care nu sunt evidente contribuie la furnizarea de rezultate total diferite. In exemplele de mai sus, se observa ca toate secven\ele folosesc acele~i biblioteci, dar aceasta nu inseamna ca toate secven\ele furnizeazli acela~i rezultat. Pentru analiza programelor se folosesc criterii ce cuprind gradul de utilizare a cuvintelor cheie, ordinea de declarare a variabilelor, implementarea structurilor repetitive, variabilele folosite in cadrul structurilor repetitive, numarul de p~i parcur~ i de program pentru a furniza rezultate, nivelul de folosire a variabilelor in cadrul programelor. 5. Cai de cre~tere a ortogonalitatii programelor C++ Prin construirea unui depozit de produse software, se urmare~te crearea de software original, reducerea efortului depus pentru a crea produse - program care sa corespunda cerin\elor formulate de clien\i, prin realizarea de cautliri in cadrul depozitului ~i identificarea solu\iilor propuse pentru aceea~i problema. Daca au fost formulate solu\ii de catre programatori, in baza acordurilor realizate prin aderarea la comunitatea reprezentata de dezvoltatorii ce au contribuit cu programe la realizarea depozitului de 52 Revista Romlln[ de Informatic[ ~i Automaticli, vol. 17, nr. 2, 2007

software, ele sunt preluate, studiate ~i modificate pentru a intruni conditiile clientului. Pentru cre~terea ortogonalitatii programelor se urmare~te implementarea solutiilor: specializarea programelor pe tipuri de problematica; crearea de biblioteci care con\in programe specializate ~i apelarea procedurilor din cadrul bibliotecilor, functie de specificul fiecarei probleme de rezolvat; dezvoltarea unui stil de programare adecvat, care face ca la probleme diferite sa fie folosite resurse diferite, in concordanta cu specificul problemei; se evita astfel folosirea inutila de resurse. Cre~terea ortogonalitatii programelor are ca rezultat important cre~terea, tn primul rand, a calitatii produselor software. Programele sunt create pentru a furniza solu\ii. Cu cat solutia pe care respectivul software o implementeaza este mai apropiata de cerinte, cu atat calitatea produsului este mai buna. Se urmare~te axarea pe rezultate ~i mai putin pe continutul in sine al produsului. lnainte de achizi\ie, sunt furnizate seturi complete de teste care identifica erorile de rezultat. Prm construirea unui depozit software, se ofera spre consultare ~i folosire un important stoc de funcpi proceduri, prograrne, comentarii asupra prograrnelor, rezultate fumizate care ajuta la crearea de software de calitate. Problema in discu\ie nu tine de analizarea codului sursa pentru a determina gradul de ortogonalitate, acesta fiind preluat integral, ci de identificarea a procedurilor prin care respectivul cod sursa a fost incorporat in cadrul aplica\iei, cum a preluat sarcinile din partea aplicapei generale ~i cum prelucreaza datele furnizate de utilizator. 1n final, intreaga aplicatie va fi la randul ei disponibila, fiind creata pe baza de software,,liber", programatorul ce se ocupa cu crearea programului principal fiind eel care face diferenta intre doua sau mai multe produse software, care i~i propun ca finalitate realizarea aceluia~i set de cerin\e. Analiza programului apelator combinata cu analiza rezultatelor furnizate ofera suficiente rezultate pentru analiza ortogonalita\ii a doua produse software. Un alt concept deosebit de important avut in vedere o data cu crearea unui depozit software este eel al reutilizarii produselor software, coroborat cu conceptul de inova\ie. Se pune problema efortului depus pentru a descoperi noi produse software care sa aiba o finalitate pentru utilizator comparat cu efortul depus pentru a imbunatati un software existent care are aceea~i finalitate. Ortogonalitatea produselor software trebuie axata pe crearea de software care sa rezolve o serie de cerinte noi, nu sa reinventeze software pentru acelea~i cerin\e. Cre~terea ortogonalita\ii produselor software trebuie sa aiba in vedere ca abordarea de noi domenii pentru crearea de software va face ca noile programe sa difere fundamental de cele vechi. Plecand de la acela~i domeniu de activitate, programele trebuie structurate astfel incat sa ofere o maxima flexibilitate pentru adaptarea acestora la toate cerintele domeniului. Trebuie avuta in vedere la construirea de software cerinte de extindere a aplica\iei la nivelul intregii arii de activitate. Abordarea de noi domenii face ca nivelul de aplicabilitate al informaticii sa creasca ~i conduce la apari\ia de noi oportunita\i privitoare la rolul informaticii in domeniul social. 6. Concluzii Prin studierea ~i aprofundarea conceptului de ortogonalitate a programelor sunt create premisele imbunata\irii calitatii programelor, realizarii de software orientat pe problematica ~i este definit mediul de lucru pentru implementarea conceptului de reutilizare a produselor software. Crearea unui depozit software contribuie la cre~terea eficientei de lucru, la imbunata\irea timpilor de executie a programelor ~i, nu in ultimul rand, la crearea de software superior din punct de vedere calitativ, prin oferirea acestuia spre testare ~i spre integrare in cadrul altor aplica\ii. Depozitul software este structurat pe domenii de interese, sintetizand astfel rezultatele ob\inute in diverse domenii de activitate. Persoanele care au acces in cadrul depozitului beneficiaza de aceasta resursa importanta ~i folose~te modulele deja implementate pentru obtinerea de rezultate conform cu cerin\ele intr-un timp optim. Implementarea unui sistem al calita\ii produselor stocate in depozitul software, abordarea de noi domenii de interes, cre~terea gradului de ortogonalitate sunt factori care conduc la imbunatatirea calira\ii produselor software, la cre~terea gradului de aplicabilitate a acestora ~i, nu in ultimul rand, la o mai buna utilizare a produsului software. Revista Romana de Informatica ~i Automaticll, vol. 17, nr. 2, 2007 53

Bibliografie I. IV AN, I., D. MILODIN, M. POPA: Ortogonalitatea alfabetelor. Revista Romanl! de Informaticl! ~i Automaticl!, vol. 15, nr. 3, 2005, pp. 41-56. 2. IV AN, I., M. POPA, C. BOJA: Opera\ii pe entitli\i text. Conferinta ~tiin\ificl\ Interna\ionall\,,The Dichotomy Poverty - Wealth and Romania's Integration in The European Union", Universitatea,,Lucian Blaga" Sibiu, 20-21 mai, 2005, vol. 3, pp. 464-473. 3. IVAN, I., M. POPA: Consisten\a entitl!\ilor text, Studii ~i Cercetl!ri de Calcul Economic ~i Ciberneticl! Economicl!, 2005 (in curs de apari\ie). 4. IVAN, I., M. POPA, AL. POPESCU: Classes of Text Entities. Lucrl!rile Workshop-ului International Information Systems and Operations Management, Universitatea Romano - Americanl!, Editura ProUniversalis, Bucure~ti, 20-21 aprilie, 2005, pp. 195-204. 5. POPA, M.: Text Entities Metrics. in: Informatica Economicl!, vol. 9, nr. 2, 2005, pp. 56-60. 6. IV AN, I., M. POPA: Reprezentativitatea entitl!plor text. Conferinta Interna\ionall! The Impact of European Integration on the National Economy, Universitatea,,Babe~-Bolyai" Cluj-Napoca, 28-29 octombrie, 2005. 7. POPA, M.: Structured Text Entities Metrics. Proc. of The 36th Informational Scientific Symposium ofmetra, Bucure~ti, 26-27 mai 2005, pp. 486-491. 8. IVAN, I., M. POPA, AL. POPESCU: The Text Entities' Engineering. Workshop-ul international,,collaborative Support Systems in Business and Education", Cluj-Napoca, 28-29 octombrie 2005, pp. 320-351. 54 Revista Romana de Informatica ~i Automatica, vol. 17, nr. 2, 2007