Un motor eficient de cautare in e-commerce



Yüklə 350,51 Kb.
səhifə8/11
tarix02.08.2018
ölçüsü350,51 Kb.
#66425
1   2   3   4   5   6   7   8   9   10   11

3.3 Utilitatea metodei


In primul rand, functia de auto-completare termeni. Daca se urmeaza pasii descrisi de noi, se poate obtine o functie de auto-completare termeni foarte buna.

Apoi, functia de validare date. Cand se importa datele din baza de date a eMAG si se impart datele pe coloane in Excel, si se sorteaza alfabetic, se pot gasi usor erori de introducere date, care pot fi corectate. Am gasit husa de laptop in categoria laptop-uri, titluri de laptop puse gresit (fara "," ca separator, sau cu virgula, dar fara spatiul de dupa), ordine cuvinte din titlu nerespectata.

Mai departe, odata realizata procedura pe un set de date (noi am facut procedura pentru laptop-uri), se pot imagina usor solutii pentru alte tipuri de date de pe site-uri de tip e-commerce. Solutia propusa in algoritm este replicabila.

De asemenea, cautarea devine mult mai buna prin procesul de intelegere a unor obiceiuri de tastare (notebook, in loc de laptop; 2 Core in loc de Dual Core), si prin incercarea de intelegere a sensului unei cautari. Statistici de genul acesta se pot colecta cu instrumente precum Google Analytics, si apoi folosi pentru a rafina, constant, cautarile. E un proces repetitiv ce ar trebui sa fie constant.


3.4 Analiza implementarii algoritmului


Programul a fost implementat in C++, deoarece am avut experienta ca programatori cu programele Pascal, C si C++. Avem o oarecare expertiza in PHP si HTML, dar am preferat sa ne axam pe scrierea de cod si algoritmi, nu neaparat in a invata sa folosim un limbaj de programare pentru web/Internet.

De asemenea, codul a fost scris in paradigma de scriere programare functionala, pentru ca avem expertiza in acest tip de programare.

Constructia programului a avut ca prim pas salvarea in calculator a unor pagini HTML de descriere laptopuri de pe site-ul eMAG. Acestea au fost procesate in calculator, pentru a obtine, in final, o lista cu nume de laptopuri (randurile impare 1, 3, 5 etc.) si de URL-uri pentru acele laptopuri (randurile pare 2, 4, 6 etc.).

Apoi, din lista respectiva am extras cele mai folosite cuvinte, si le-am folosit pentru functie de autocompletare cuvinte (utilizatorul completeaza un string, programul stie la ce e posibil sa ma refer).

In continuare, am facut o lista de conjunctii si prepozitii, care vor fi ignorate in cautari.

Mai departe, am scris codul pentru a procesa aceste informatii.

Pentru ca in C++ string-urile functioneaza ceva mai atipic decat in Java, si din cauza faptului ca experienta noastra in programare este limitata, am ajuns sa scriem foarte mult cod. Sunt aproximativ 2.500 de linii de cod, si aproape 8.000 de cuvinte folosite. Ce-i drept, codul are numeroase comentarii, si, pentru debugging usor, am lasat si variantele de testare (sunt multe linii, ulterior comentate, care doar afiseaza un status, pentru debugging usor).

Mai jos se prezinta cativa indicatori folositi pentru a masura fiabilitatea software-ului. Algoritmul a fost testat folosind un program numit CCCC.



Indicator

Eticheta

Metrica globala

Metrica per modul

Numar module

NOM

1



Linii de cod

LOC

1714

1714

Numarul ciclomatic al lui McCabe

MVG

363

363

Linii de comentarii

COM

347

347

LOC/COM

L_C

4,939



MVG/COM

M_C

1,046



Linii de cod respinse de compilator

REJ

78




Tabel 3.4.1 Indicatori pentru a masura fiabilitatea programului propus (Littlefair, 2018)

Detaliere indicatori (sursa pentru textul original este un raport creat de programul CCCC, in care sunt explicati si indicatorii: Littlefair, 2018):



  • NOM = Numarul de module (program principal, biblioteci folosite; noi am folosit doar un program principal, fara biblioteci). Ne-a fost mai util sa lucram intr-un singur program, pentru ca am putut avea o intelegere a programului facila (in partea de sus functii de predictie, la mijloc citirea tastelor, in partea de jos sortare rezultate. Dar daca am fi lucrat intr-o echipa, cu alte persoane sa ne supervizeze codul, ar fi fost mai util sa fi lucrat in mai multe programe.

  • LOC = Linii de cod, numarul de linii care sa nu fie goale, si nici comentate, numarate de program. Numarul respectiv este ridicat atat pentru ca nu sunt inca un programator profesionist, cat si pentru ca am lucrat in C++, care are mici probleme in gestionarea facila a string-urilor. Se pot gestiona, doar ca este un pic mai dificil decat in Java, de exemplu.

  • COM = Linii de comentarii. De mentionat ca o mare parte din comentariile facute de noi au fost si in continuarea unor linii de cod, asa ca numarul este inexact. Am preferat sa punem comentarii cat mai detaliate, pentru a face codul usor de inteles. Am lasat comentate si diferite instructiuni utile pentru debugging. Prin de-comentarea lor se poate verifica usor in ce loc al programului va aflati.

  • MVG = Complexitatea ciclomatica a lui McCabe. Aceasta este o masura a complexitatii decizionale care formeaza programul. Definitia stricta a acestei masuratori este ca este un numar de rute linear independente printru grafic aciclic directionat, care identifica trecerea controlului unui subprogram. Software-ul analizator CCCC masoara aceasta prin inregistrarea rezultatelor decizionale distincte continute in fiecare functie, din care rezulta o buna aproximare a versiunii definite formal a masuratorii. Detaliem indicatorul mai jos. De mentionat ca recomandarea numarului optim ar fi undeva intre 10 si 15, iar la noi depaseste 350. Explicatia e ca nu am impartit programul in module distincte.

  • L_C = Linii de cod pentru o linie de comentarii. Prin acest indicator se masoara densitatea comentariilor, cu atentie la dimensiunea textului programului. Indicatorul in cazul de fata nu este foarte precis masurat, deoarece nu ia in considerare comentariile „inline”, cele scrise in continuarea unei linii de cod. Totusi, consideram ca si asa se poate vedea ca am folosit comentarii in codul nostru.

  • M_C = Complexitatea ciclomatica pe linia de comentarii. Folosind acest indicator putem afla densitatea comentariilor in ceea ce priveste complexitatea logica a programului. Detaliem mai jos despre acest indicator.

  • REJ = Linii de cod respinse de compilator. Indicatorul e unul specific programului CCCC, in Dev C++ pe Windows x64 nu ni s-a reportat niciun fel de eroare de cod.

Mai jos, cateva aspecte despre complexitatea ciclomatica a lui McCabe (sursa – o prezentare dintr-un curs al Universitatii Auckland - Tempero, 2018).

In primul rand, cu cat este mai complexa structura codului, cu atat este mai dificil de inteles, e mai probabil sa aiba ceva defect, va fi mai dificil de actualizat, va dura mai mult timp realizarea lui, si va fi mai dificil de reutilizat.

Apoi, numarul complex ciclomatic al lui McCabe (McCabe’s Cyclomatic Complexity Number, CCN) masoara numarul de cai liniare independente prin graful programului (de vazut imaginea de mai jos, cu un graf).

v(F) = e – n + 2,

unde F este graful de parcurgere in cod, n numarul de noduri, e numarul de margini.

Intuitiv, pe masura ce numarul complex ciclomatic al lui McCabe devine mai mare, codul devine mai complex. Diferite surse recomanda un CCN nu mai mare de 10-15.



Figura 3.4.1 Exemplu pentru numarul complex ciclomatic al lui McCabe (Tempero, 2018)



Yüklə 350,51 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9   10   11




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin