Babeş-bolyai university of cluj-napoca



Yüklə 381,75 Kb.
səhifə12/13
tarix26.07.2018
ölçüsü381,75 Kb.
#59182
1   ...   5   6   7   8   9   10   11   12   13

4.3 Analiză și proiectare


În continuare vom prezenta aspecte legate de dezvoltarea platformei de recomandare MovieRightAway, cu accent pe analiză, proiectare, implementare și utilizare.

4.3.1 Tehnologi utilizate


Pentru dezvoltarea întregului sistem au fost utilizate o serie de medii de programare, limbaje de programare și software framework-uri, pe care le vom prezenta pe scurt în cele ce urmează.

Java este un limbaj de programare orientat-obiect, puternic tipizat, conceput de către James Gosling la Sun Microsystems la începutul anilor ’90. Cele mai multe aplicații distribuite sunt scrise în Java, iar noile evoluții tehnologice permit utilizarea sa și pe dispozitive mobile, agendă electronică, palmtop etc. În felul acesta se creează o platformă unică, la nivelul programatorului. Acesta este utilizat în prezent cu un succes deosebit.

Limbajul împrumută o mare parte din sintaxă de la C și C++, dar are un model al obiectelor mai simplu și prezintă mai puține facilități de nivel jos. Un program Java compilat, corect scris, poate fi rulat fără modificări pe orice platformă care are instalată o mașină virtuală Java (Java Virtual Machine, prescurtat JVM). Acest nivel de portabilitate (inexistent pentru limbajele mai vechi cum ar fi C) este posibil deoarece sursele Java sunt compilate într-un format standard.



Eclipse este un mediu de dezvoltare open-source scris preponderent în Java. Acesta poate fi folosit pentru a dezvolta aplicații Java și, prin intermediul unor plug-in-uri, în alte limbaje.

Unul dintre principalele motive care a condus la utilizare tehnologiilor descrise mai sus este platforma JADE (Java Agent DEvelopment Framework). JADE este o platformă dezvoltată în limbajul Java, bine cunoscută în domeniul agenților inteligenți și al sistemelor multi-agent, cu p documentație bogată față de majoritatea instrumentelor asemănătoare ce se pot regăsi în acest domeniu. Acest instrument pentru cu ușurință crearea și întreținerea sistemelor multi-agent oferind o serie de tool-uri ce au fost descrise în capitolele anterioare. Mai important decât atât este faptul ca posibilitatea de a crea aplicații distribuite în Java se reflectă și asupra sistemului multi-agent, permițând astfel crearea agenților mobili cât și crearea de noi containere pe diferite mașini.



C Sharp (C#) este un limbaj asemănător sintactic cu limbajul Java, fiind un limbaj multi-paragimă, înglobând mai multe discipline precum: puternic tipizat, declarativ, funcțional, generic, orientat-obiect (bazat pe clase) și orientat spre componente. Acesta a fost dezvoltat de Microsoft în cadrul inițiativei de dezvoltare a framework-ului .NET și mai tarziu a fost aprobat ca și un standard de Ecma (ECMA-334) și ISO (ISO/IEC 23270:2006). C# este unul dintre limbajele de programare conceput pentru Common Language Interface. C# este destinat să fie un limbaj simplu, modern, de uz general, orientat-obiect. Cea mai recentă versiune a sa este C# 5.0, care a fost lansată pe 15 august 2012.

Microsoft Visual Studio este un mediu de dezvoltare ce include un set de instrumente ce permit dezvoltarea aplicațiilor ASP.NET, servicii web XML, aplicații desktop și aplicații mobile. Visual Basic, Visual C++, Visual C# și Visual J# toate folosesc acest mediu de dezvoltare integrat (IDE) care le permite partajarea instrumentelor și facilitează crearea de soluții folosind mai multe limbaje de programare. Aceste limbaje permit să beneficieze de caracteristicile framework-ului .NET care oferă acces la tehnologi cheie și simplifică dezvoltarea de aplicații web ASP și XML Web Services cu Visual Web Developer. Acesta include un editor de cod și sprijinul ItelliSense-ului, precum și posibilitatea de refactorizare a codului. Depanatorul integrat funcționează atât ca un debugger la nivel de sursă cât și ca un debugger la nivel de mașină. Alte unelte built-in includ un designer de formulare pentru dezvoltarea aplicaților ce includ si o interfață pentru utilizator, web designer, designer pentru clase și un designer pentru schema bazei de date. Acceptă plug-in-uri care îmbunătățesc funcționalitatea la aproape fiecare nivel, inclusiv adăugarea suportului pentru sistemele de source control (cum ar fi Git) și adăugarea de noi toolset-uri.

Tehnologiile Microsoft au fost utilizate pentru dezvoltarea parții web a acestui sistem, acestea venind în ajutorul dezvoltatorilor cu o multitudine de instrumente, având ca scopul creșterea productivității, dar și calitatea soft-ului dezvoltat. Aplicația a fost dezvoltată utilizănd ultima tehnologie în materie de aplicații web, de pe piață, pe care cei de la Microsoft o pun la dispoziție împreună cu versiunea 2013 a IDE-ului. Pe langă faptul că tehnologia MVC 5 oferă o mare parte din template-uri, precum generarea claselor pentru view și controller îmreună cu operațiile de CRUD aferente (create-read-update-delete), aceasta vine integrată și cu un framework pentru CSS, mai exact Bootstrap.



Pentru stocarea datelor s-a folosit Microsoft SQL Server – un sistem de gestionare de baze de date relaționale, produs de Microsoft. Suportă versiunea companiei Microsoft de SQL (Structured Query Language - limbaj structurat de interogări), cel mai răspândit limbaj pentru bazele de date. Este un sistem pentru întreprinderi - se poate aplica bazelor de date de dimensiuni foarte mari. Microsoft SQL Sever folosește o variantă de SQL numită T-SQL, sau Transact-SQL, o implementare de SQL-92 (standardul ISO pentru SQL) cu unele extensii. T-SQL în principal adaugă sintaxa adițională pentru procedurile stocate si pentru tranzacții. Standardele SQL necesită ACID; acesta este un acronim pentru cele 4 condiții pentru orice tranzacție: atomicitate, consistenta, izolare, durabilitate. MS SQL Server suporta ODBC (Open Database Connectivity).

Microsoft Azure SQL Database este un serviciu bazat pe cloud creat de Microsoft, oferind capabilițăți de stocare a datelor ca și parte a platformei Azure. Spre deosebire de alte baze de date din cloud, Azure permite utilizatorilor săi să execute interogări relaționale peste datele stocate.

JSON este un format text care facilitează schimbul de date structurate între orice două limbaje de programare, atâta timp cât există o librărie care să facă conversia. Este ușor de citit și de editat de către oameni, iar mașinile pot să îl păstreze și să îl genereze fără mari probleme. JSON este construit pe baza a două structuri care constau într-o colecție de perechi cheie-valoare, care în cazul altor limbaje se reprezintă cu ajutorul unor obiecte, structuri sau dicționare, iar al doilea element al construcției este reprezentat de o listă ordonată de valori, care în majoritatea limbajelor este cunoscută sub denumirea de array, vector, listă sau secvență. Formatul este în special folosit ca și punte de comunicare între JavaScript și datele din baza de date, cu preponderență cele pentru statistici a căror format variază în funcție de mai multe criterii.

JavaScript este limbajul de programare al web-ului datorită faptului că majoritatea website-urilor folosesc JavaScript și toate navigatoarele moderne de pe orice tip de dispozitiv includ un interpretor de JavaScript făcând limbajul să fie atotprezent în momentul din care se trece granița dinspre mediul real spre cel virtual. JavaScript este un limbaj care poate să fie folosit la programarea orientă pe obiect sau programarea funcțional, parte din sintaxa acestuia fiind inspirată din limbajul Java.

Git este un sistem de revision control pentru platforma UNIX. Ca și Mercurial, Git este un sistem distribuit și nu întreține o bază de date comună. Este folosit în echipe de dezvoltare mari, în care membrii echipei acționează oarecum independent și sunt răspândiți pe o arie geografică mare.

În mod curent, Git este dezvoltat și întreținut de Junio Hamano.


4.3.2 Diagramă de clase


În continuare vom prezenta aspecte legate de dezvoltarea platformei de recomandare MRA, cu accent pe analiză, proiectare și utilizare.

Platforma de recomandare MovieRightAway este concepută respectând normele actuale ale programării orientate pe obiecte și ale programării orientate pe agent, fiind caracterizată prin:



Coeziune înaltă (high cohesion). Coeziunea măsoară cât de puternic sunt legate între ele responsabilitățile unui modul. Coeziunea înaltă a unui sistem generează o serie de avantaje, cum ar fi:

  • Modulele devin mai ușor de înțeles, fiind mai simple, executând operații relativ puține și care sunt strâns legate între ele în contextul responsabilității pe care o îndeplinește modulul.

  • Întreținerea sistemului devine mai facilă, din cauza faptului că schimbările într-unul dintre modulele sistemului necesită puține schimbări în cadrul celorlalte module.

  • Reutilizabilitatea modulelor crește, pentru că eventualii dezvoltatori ai sistemului vor găsi componentele de care au nevoie mult mai ușor, din cauza setului de operații coeziv ce-l furnizează un modul.

  • Robustețea sistemului este afectată în mod pozitiv, modulele mai simple facilitând tratarea erorilor din timpul execuției.

Cuplare slabă (low coupling). Cuplarea măsoară gradul de dependență între modulele ce alcătuiesc sistemul. Se spune că un modul este puternic cuplat cu un alt modul dacă schimbările din interiorul său vor genera schimbări și în celălalt modul. Un modul se spune că este cuplat slab dacă acesta este independent de celelalte module. Cuplarea slabă aduce o serie de avantaje sistemului, cum ar fi:

  • Întreținerea sistemului devine mai ușoară.

  • Testarea modulelor se execută mai ușor.

  • Codul devine mai ușor de citit și de înțeles.

Cuplarea slabă este în general considerată un identificator al unui sistem bine structurat și bine conceput, iar atunci când este combinată cu coeziunea înaltă conferă sistemului soft multiple avantaje, ca și cele menționate mai sus.

Exită mai multe componente de bază ce alcătuiesc sistemul de recomandare, și nu am putea afirma că unul dintre acestea este de o importanță mult vizibilă față de celelate. În consecință în cele ce urmează a fi prezentate vom expune câteva dintre componente, iar o anumită parte din acestea vom prezenta și implementarea.

Vom începe prin a prezenta structura bazei de date impreună cu o diagramă a claselor componente alte proiectului.

Există două base de date pentru acest proiect, o bază de date unde se stochează informații despre filmele sau serialele preluate de pe rețeaua Internet (Figura 4.2) și o bază de date a utilizatorilor (Figura 4.3) unde sunt stocate informații precum: profilul utilizatorului, lista filmelor vizionate, liste filmelor pe care utilizatorul le-a votat etc.

În ceea ce privește baza de date cu informații despre filme, aceasta a fost astfel construită și evaluată, cu scopul de a avea interogări a căror durată de execuție să fie minimă. Se pot pot observa următoarele tabele:


  • Type – reprezintă tipul obiectului care urmează să fie stocat în baza de date. În acest caz tipul poate fi unul dintre următoarele: Movie, TvSeries, Season, Episode.

  • Source – reprezintă sursa de unde au fost preluate informațiile (în acest caz sursa este: TheMovieDb).

  • Rating – în acest tabel se stochează informațiile referitoare la voturile preluate din respectiva sursă (votul de pe respectivul site, numărul de persoane care au votat acel articol).

  • PosterPath – acest tabel are rolul de a stoca informațiile despre url afișului filmului sau a serialului.

  • Genre – În acest tabel se află toate genurile regaăsite pentru fiecare film sau serial.

Figura 4.2 Baza de date a filmelor și serialelor

MovieGenre – Este un tabel de legătură, ce ajută la eliminarea duplicatelor între genuri și filme. Astfel dacă două filme au genuri asemănătoare acestea vor fi salvate o singură dată în tabelul Genre.

  • MovieMaste - Acest tabel este asemănător unei clase generice (abstracte). În acesta se țin informațiile care sunt comune celor patru categorii definite mai sus.

  • Movie – În acest tabel datele care sunt specifice filmelor sunt salvate.

  • TvSeries – În acest tabel datele specifice serialelor sunt salvate. Există și o legătură cu tabelul Season pentru a face scădea complexitatea interogărilor (de asemenea se poate obseva și legătura dintre Season și Episode care a fost contruită cu același scop).

  • Season – Acest tabel stochează informații particulare despre sezoanele unui serial.

  • Episode – Acest tabel stochează informații particulare despre episoadele unui serial.

Figura 4.3 Baza de date cu informații despre utilizatori.

Baza de date care este responsabilă cu stocarea datelor despre utilizatori are o structură simplă și este menită pentru a ajuta la stocarea datelor despre voturile utilizatorilor cât și anumite informații despre aceștia.

Datorită complexității diagramei de clase generate pentru întreg sistemul de recomandare multi-agent, vom prezenta în cele ce urmează câteva secțiuni importante ale acestei diagrame. O prezentare pe modulele aplicației poate fi observată în Figura 4.4.




Figura 4.4 Diagrama modulelor



Figura 4.4 Diagrama UML a modulelor aplicației
Application este modulul principal al aplicației. Acesta înglobează clasa Main, cu ajutorul căreia sistemul multi-agent poate fi pornit și de asemenea tot în această clasă se face deploy-ul serviciului web prin care se asigură comunicarea cu o altă platformă sau tehnologie. În această clasă există doua metode: initializeJadePlatform (Figura 4.5) și initializeWebService (Figura 4.6).

Figura 4.5 Metoda de inițializare a platformei JADE

Figura 4.6 Metoda de inițializare a serviciului web

Interfața serviciul web, cu ajutorul căruia se întreține comunicarea dintre aplicația web și sistemul multi-agent se poate observa în Figura 4.7. Aceasta conține trei metode cu ajutorul cărora clientul poate să solicite sistemului să plaseze o cerere pentru un film, să plaseze o cerere pentru un serial și să solicite sistemului recomandări.

Figura 4.7 Interfața serviciului web

Diagrama agentului care oferă recomandări unui utilizator poate fi observată în Figura 4.8.

Figura 4.8 Diagrama agentului care oferă recomandări

Se poate observa că acest agent comunică direct cu baza de date în care se află recomandările, prin relația către clasa RecommenderDataBaseManager. Această clasă este responsabilă cu deschiderea conexiunii la baza de date (datele conexiunii sunt preluate din fișierul config.xml) și cu executarea unui interogări pentru a obține rezultatele dorite, de asemenea această clasă moștenește din clasa GeneralManager unde sunt setate informațiile strigului de conexiune și sunt implementate metodele de deschidere și inchidere a conexiunii cu baza de date.

Atât agentul coordonator cât și agentul care se ocupă de recomandările sistemului utilizează un comportament numit GetAndSendMessageBehaviour, care odată implementat se ocupă de primirea mesajelor din partea agenților, de tratarea acestora (din diagramă se poate observa faptul că ambii agenți prezenți utilizează o clasă numită ResolveRecommenderRequest pentru agentul Recommender ți ResolveCoordinatorRequests pentru agentul Coordinator, clasă care se ocupă de prelucrarea solicitărilor) ți trimiterea răspunsului emițătorului solicitării.

În aplicație există două mari comportamente implementate de agenți. Unul dintre acestea tocmai ce a fost descris anterior (GetAndSendMessageBehaviour), iar cel de-al doilea numit SendAndWaitMessageBehaviour al cărui scop este de a trimite un mesaj (solicitare) unui agent prezent în sistem și mai apoi de a aștepta răspunsul. Acesta este comportamentul care implementează sistem în caz de nereuțită, dacă raspunsul primit este unul de refuz, atunci acest comportament mai trimite o dată cererea.

Figura 4.9 Diagrama agentului care oferă recomandări

În Figura 4.9 se poate observa comportamentul agentului care se ocupă de preluarea datelor de pe rețeaua Internet. Acesta la rândul său implementează comportamentul GetAndSendMessageBehaviour, cu ajutorul căruia primește o solicitare de la agentul coordonator și apoi începe operația de preluare a datelor. Se poate observa faptul că acest agent deține ca și membru privat în clasă un obiect de tipul IRetriever.



IRetriever este o interfață ce cuprinde două metode getMovieInfo și getTvSeriesInfo. Cu ajutorul clasei TheMovieDbRetriever care implementează această intefață, agentul care prestează acest serviciu primește informațiile despre articolul căutat. Prezența acestei interfețe ne indică faptul că agentul poate implementa mai multe tipuri de obiecte care să se ocupe de preluarea informației, defapt dacă aruncăm o privire peste Figura 4.5, putem ovserva faptul că atunci câng agentul se creează un parametru care indică clasa care se ocupă de preluarea informației este pasat constructorului. În acest sens se pot crea oricâți astfel de agenți care pot să preia diferite articole.

În sețiunile ce urmează vom prezenta pe scurt algoritmii de recomandare implementați în sql. După cum am menționat anterior, din motive de performanță și din necesitatea de a executa anumite pre-procesări pentru a primi recomandările într-un timp util (pentru a testa sistemul de recomandare s-a utilizat un set de date de pe [41]http://grouplens.org/, acesta conținând un numar de 6.000 de utilizatori, 4.000 de filme și un număr de 1.000.200 voturi) am decis dezvoltarea acestor algoritmi pe partea bazei de date, efectul fiind unul pozitiv. Pentru corelările dintre utilizatorii sistemului s-au utilizat doi algoritmi: PearsonCorrelationAlgorithm (Figura 4.10) și EuclideanDistance (Figura 4.11).

Figura 4.10 Algoritmul corelării utilizatorilor: Pearson Correlation

Figura 4.11 Algoritmul corelării utilizatorilor: Euclidean Distance

Ca urmare a calculului similarităților a utilizatorului curent cu ceilalți utilizatori prezenți în baza de date (aceste similaritate se calculează pe baza voturilor pe care ambii utilizatori le-au acordat unui articol), o altă metodă preia toate articolele pe care utilizatorul nu le-a votat și se face un join între similarități și aceste articole, rezultatul fiind prezicerea sistemului asupra votului pe care utilizatorul l-ar oferi unui anumit articol. Pentru a utiliza aceste metode cât mai ușor cu putință, o procedură stocată a fost creată (Figura 4.12).

Figura 4.12 Procedura stocată care oferă recomandări


4.3.3 Diagrama cazurilor de utilizare


Figura 4.12 Procedura stocată care oferă recomandări

Funcționarea sistemului de recomandare oferit de platforma de recomandare MovieRightAway este ilustrată prin diagrama cazurilor de utilizare de mai jos (Figura 4.13).



Yüklə 381,75 Kb.

Dostları ilə paylaş:
1   ...   5   6   7   8   9   10   11   12   13




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