Professional Documents
Culture Documents
Theory without practice is useless, practice without theory is blind Roger Bacon
Theory without practice is useless, practice without theory is blind Roger Bacon
1.INTRODUCERE
1.1 Descrierea produsului software : Tematica acestui sistem o reprezinta gestiunea unei case de moda ,emblema acesteia fiind un mnemonic Shine Fashion . Shine Fashion defasoara activitati specifice unui magazin virtual (varianta brik & mortar din comertul traditional) ce presupun postarea pe internet si tranzactionarea produselor , precum si o multime de posibilitati de configurare si personalizare a produselor disponibile cumparatorilor. Pentru a dezvolta o aplicatiei avand caracteristicile unui magazin virtual, modelul de castig pe care il impune este modelul negustorului sau comerciantului. Sistemul trebuie sa puna la punct un catalog de produse disponibil online,sa permita rasfoirea acestuia,adaugarea si stergerea de produse in cosul virtual de cumparaturi,preluarea unor ordine de cumparare ,o interfata prietenoasa cu utilizatorul , un meniu de help precum , o sectiune de identificare(Log In , Log Off) precum si gestiunea livrarii produselor catre consumatori. 1.2 Scop : Consta in dezvoltarea unui soft optim,sigur si flexibil pentru gestiunea unei case de moda. Sistemul trebuie sa asigure securitatea datelor clientilor/userilor avand in vedere faptul ca vom avea un site web prin care se vor realiza anumite tranzactii. 1.3 Abreviere : SHF : Shine Fashion
Theory without practice is useless, practice without theory is blind Roger Bacon 2. DESCRIERE
2.1 Potentialul produsului : ShF imbraca femeia clasica, romantica, visatoare, exigenta, exuberanta atragatoare,modesta si pune in lumina o expresie a frumusetii, senzualitatii si a incredereii in sine a femeii. In salonul de creatie o simpla tesatura capata o paleta de valente depinzand de personalitatea celei ce o imbraca. Rochiile de ocazie ,elegante, rafinate, cu talie evidentiata, cu bustul pus in valoare sunt special create pentru o imagine stralucitoare. Tafta, voal, tulle, organdi, dantela, strass, materiale de calitate, specifice pentru rochii de vis. Rochiile de mireasa Shine Fashion implinesc visele oricarei mirease si in plus confera acea aura de distinctie pe care numai o lady adevarata o poate avea . Shine Fashion (faima castigata atat datorita tinutelor confectionate cat si reclamelor publicitare,sedintelor foto) are nevoie atat de modele pentru prezentarile de moda cat si pentru diferite reclame publicitare ,sedinte foto. 2.2 Functiile produsului : Shine Fashion poate fi accest prin intermediul internetului ,utilizatorii inregistrati (care au completat un chestionar de inscriere ) primind un cont ce poate fi accesat prin intermediul unui nume de utilizator si o parola ;Initial acestea sunt prestabilite(Ex:username:system, password:shine001) putand fi insa personalizate asigurand in acest mod siguranta datelor transferate intre user si sistem . Orice user care acceseaza site-ul firmei Shine Fashion http://shine-fashion.uv.ro il vizualizeaza in calitate de guest initial, putand deveni un client al SHF printr-o simpla inregistrare. Va putea vizualiza celelalte sectiuni ale site-ului web cum ar fi :Galerii Shine, Despre noi, si va putea vizualiza produse din anumite categori, va putea cauta un anumit produs in functie de anumite criterii prestabilite ,va avea acces la liste ordonate de produse, va puea sa si personalizeze profilui si in final sa-si achizitioneze tinutele selectate din cosul sau de cumparaturi. Site-ul ofera de asemenea legaturi utile catre 3 case de moda renumite si anume : Atelier_Natalia_Vasiliev, Catalin_Botezatu, Rita_Muresan.
Theory without practice is useless, practice without theory is blind Roger Bacon
Sistemul software prezinta doua interfete specifice: cea a administratorului si cea a utilizatorului.In prima interfata putem realiza activitatii specifice ale unui cumparator online precum cele aminitite mai sus. In ceea de-a doua avem operatii specifice unui administrator dintre care amintim afisarea lista de produse clasificate pe categorii de poduse, sterge , insera si modificarea de inregistrari(categorii,produse,utilizatori), cauta un produs dupa nume, culoare, marime, pret,putem intocmi un inventar si putem atribui o bonusuri consumatorilor fideli cu ocazia serbarii zilei de nastere . 2.3 Caracteristicile utilizatorului : Fiecare utilizator va avea un nume de autentificare unic si o parola.Daca un utilizator are o activitate buna privind serviciul SHF(daca a achizitionat produse) poate primi un numar de puncte de fidelitate materializate intr-un card SHF . 2.4 Constrangeri generale : Capacitatea serverului reprezinta cati utilizatori pot accesa sau pot fi logati in acelasi timp, si cat spatiu este disponibil pentru fiecare utilizator. Cu cat numarul utilizatorilor este mai mare cu atat de mult va creste traficul in retea, aducand serverul in stare de nefunctionare. Firewall personal si update-urile sunt sarcini consumatoare de resurse si pot face sistemul SHF sa functioneze foarte lent . 2.5 Asumari si functii : SHF trebuie sa functioneze chiar si atunci cand traficul este foarte mare. Serverul si baza de date va dispune de backup. 3. CERINTE SPECIFICE 3.1 Cerinte pentru interfete 3.1.1 Interfata cu utilizatorul : Utilizatorul extern poate fi oricine isi creeaza un cont .Site-ul web intra adevar poate fi accesat oricine in calitate de guest dar achizitionarea unui produs SHF, completarea unui formular pentru selectia ca model, trimiterea unui mesaj , pot fi facute numai in calitate de utilizator intern/client . 3.1.2 Interfete software: Sistemul de operare poate fi orice versiune de Windows, Linux, Unix sau Mac car e suporta protocolul TCP/IP.
Theory without practice is useless, practice without theory is blind Roger Bacon
3.1.3 Interfete de comunicare : Interfata de comunicare intre utilizatori si sistemul SHF este Internetul. 3.2 Cerinte de performanta : 3.3 Constrangeri de proiectare : proiectarea sistemului va tine cont de nevoile utilizatorilor care se pot schimba. Astfel, proiectantii sistemului vor trebui sa tina cont de acest lucru si sa faca sistemul usor de modificat.
3.4 Atribute : Produsul trebuie sa dispuna de un server de baze de date . Produsul trebuie sa dispuna de un server WWW . Produsul trebuie sa dispuna de un sistem de recomandare a produselor. Produsul trebuie sa dispuna de firewall.
4 .Echipamente Utilizate:
Sistem Desktop AMD Athlon(tm) XP 2200+1.80 Ghz, 512 Mb of RAM, OS Microsoft
Windows XP Professional Version 2002 Service Pack 2 ; Sistem Notebook HP Intel(R) Core(TM) 2CPU T5500 1,66 Ghz, 0,99 GB of RAM , OS Microsoft Windows XP Professional Version 2002 Service Pack 3 ; Apache Tomcate vs 7.0; MySql Workbench; Eclipse Java 2EE; ArgoUML;
Theory without practice is useless, practice without theory is blind Roger Bacon
Arhitectura sistemului:
Ne propunem implementarea unei aplicatii www orientata pe prezentare ce are la baza o arhitectura de tipul three-tier client/server. Aceasta prezinta avantaje privind flexibilitatea, reducerea timpului total de raspuns al unei cereri client, reducerea traficului de date prin retea ,imbunatatirea eficientei aplicatiilor www. In cazul arhitecturii multinivel avem urmatorele entitati : Serverul Web asigura functionalitatea intregului pachetului software al aplicatiei (pentru aplicatia SHF am folosit serverul web Apache Tomcat); Gestionarea catalogului de produse foloseste datele din baza de date de produse pentru a genera catalogul cu oferta in format HTML iar utilizatorii pot consulta catalogul prin intermediul browser-ului pentru a cauta si compara produsele din oferta. Cosul de cumparaturi virtual ofera o modalitate standard de gestionare a produselor selectate de client si de lansare a comenzii ; Baza de date de produse este localizata pe serverul corespunzator (am utilizat un server MySQL) este posibil ca aceleasi date sa fie replicate in baza de date pentru utilizator, mai accesibile aplicatiei care gestioneaza magazinul online. Scheletul aplicatiei implica structurarea modelului sistem in doua subsisteme corespunzatoare pachetelor :administrare ,Date, Recomandari. Pachetul administrare contine multime de operatii ce se pot executa la nivelul aplicatiei iar Date cuprinde descriierile de baza ale modelului considerat. Modul de executie este relativ simplu un client transmite o cerere http catre serverul de aplicatii acesta preia cererea , o analizeaza , si genereaza un raspuns catre client sub forma unei pagini Web dinamice.Este ilustrat in figura 1.
Theory without practice is useless, practice without theory is blind Roger Bacon
. Figura. 1
Diagrame de clase
Diagramele de clase descriu structura sistemului modelat.In continuare prezentam
Theory without practice is useless, practice without theory is blind Roger Bacon
diagramele de clase pentru cele doua pachete.
I.
II.
Theory without practice is useless, practice without theory is blind Roger Bacon
III.
Theory without practice is useless, practice without theory is blind Roger Bacon
Theory without practice is useless, practice without theory is blind Roger Bacon
Theory without practice is useless, practice without theory is blind Roger Bacon
Theory without practice is useless, practice without theory is blind Roger Bacon
Figura (a) Acesta (figura (a )) surprinde o situatie extrem de frecventa ca, intr-un magazin, un set mic de produse este responsabil pentru cea mai mare parte din vanzari. In schimb, larga majoritate a produselor au vanzari mult mai reduse acea coada lunga a graficului. O recomandare obisnuita ar expune clientului doar cele mai vandute produse. Dar daca reusesti sa recomanzi corect itemii din setul cu vanzari reduse, unor clienti cat mai probabil sa fie interesati, vei vinde volume mici (cate putin), dintr-un set foarte vast (din mult mai mult) facand o afacere profitabila din ceea ce competitorii de pe piata cu greu pot vinde. Doua site-uri mari ce utilizeaza aceasta strategie sunt Amazon si Netflix (un foarte popular site de inchiriere de filme). Sistemele de recomandare sunt larg utilizate in sistemele online (de ex. Amazon.com, E- bay.com) pentru a sugera utilizatorilor elemente pe care le-ar putea gasi interesante. Aceste recomandari sunt generate folosind, in special, doua tehnici: a) bazate pe continut, b) filtrare colaborativa. Filtrarea colaborativa colecteaza opiniile utilizatorilor sub forma unor voturi. Pentru a face o recomandare, sistemul identifica utilizatorii similari si ii sugereaza utilizatorului curent elementele pe care acesti utilizatori le-au preferat in trecut. Acest algoritm nu necesita reprezentarea elementelor pe baza caracteristicilor lor, el este bazat numai pe parerile utilizatorilor dintr-o comunitate. Astfel, filtrarea
Theory without practice is useless, practice without theory is blind Roger Bacon
colaborativa poate fi aplicata pe orice fel de elemente: articole, stiri, site-uri, filme, muzica, excursii, etc. Si nu necesita interventia umana pentru a adnota continutul. Filtrare coloborativa centrata pe element presupune ca atunci cand utilizatorul a selectat un element/produs, sistemul ii face o recomandare bazata pe elementul selectat (filtrarea colaborativa centrata pe item); astfel se vor recomanda produse similare cu elementul pe care a selectat-o utilizatorul curent. Ea presupune : Construirea unei matrici item-item care determina relatia dintre doua item-uri ; Cu ajutorul matricei si a datelor pe care le stim despre utilizatorul curent incercam sa-i deducem preferintele;
Theory without practice is useless, practice without theory is blind Roger Bacon
Raluca
Andreea
Medie
Rochie Business
Rochie Lorelay
11/3
Theory without practice is useless, practice without theory is blind Roger Bacon
este votul acordat de utilizatorul a pentru elemental i; este media voturilor(voturilor) acordate de utilizatorul a;
Matricea de corelatie:
Catalina
Raluca
Andreea
Theory without practice is useless, practice without theory is blind Roger Bacon
Rochie Splendid
0.5
-0.982
Rochie Business
0.5
-0.655
Rochie Lorelay
-0.982
-0.655
De exemplu atunci cand utilizatorul Catalina se logheaza pe contul sau si doreste sa adauge in cosul virtual de cumparaturi rochia Business ii se va recomanda rochia Splendid, respectiv pentru scenariul invers. Scenariul A
Theory without practice is useless, practice without theory is blind Roger Bacon
Scenariu B
Theory without practice is useless, practice without theory is blind Roger Bacon
Clasa recomandari.java
package administrare; package administrare; import import import import java.io.BufferedReader; java.io.File; java.io.FileReader; java.sql.ResultSet;
import cnet.RecommenderBehaviour; public class recomandari { // user protected void GetItem() { //this runs once before starting behaviorsK } private int GetLastItem() { // TODO Auto-generated method stub return 0; } private int GetLastUser() { // TODO Auto-generated method stub return 0; } double Pearson[][];//matricea Pearson double ratings[][];//matricea de ratinguri date de useri pt itemi, inclusiv media ratingurilor int a[]; int nrUsers=0;//numarul de useri int nrItems=0;//numarul de itemis //parcurge data si calculeaza matricea Pearson public void calculeazaMatricePearson() throws Exception{ //completam matricea ratingurilor cu ratingurile gasite in fisier ConectareBD bd1; bd1 = new ConectareBD(Configurare.numeDriver, Configurare.bdURL, Configurare.bdUser, Configurare.bdParola); int minRatings = 3;//numarul minim de ratinguri date de catre un
Theory without practice is useless, practice without theory is blind Roger Bacon
bd1.DBManager(); bd1.SetConnection(); bd1.beginTransaction(); String strQuery="Select idutilizator,idprodus,rating from cos"; ResultSet rs = bd1.getResultSet(strQuery); while(rs.next()) { int id=Integer.parseInt(rs.getString("idutilizator").toString()); int idprodus=Integer.parseInt(rs.getString("idprodus").toString()); int rating=Integer.parseInt(rs.getString("rating").toString()); if(id>nrUsers) nrUsers=id; if(id>nrItems) nrItems=idprodus; } rs = bd1.getResultSet(strQuery); if(nrUsers>nrItems) ratings = new double[nrUsers][nrUsers+1]; else ratings = new double[nrItems][nrItems+1]; while(rs.next()) { int id=Integer.parseInt(rs.getString("idutilizator").toString()); int idprodus=Integer.parseInt(rs.getString("idprodus").toString()); int rating=Integer.parseInt(rs.getString("rating").toString());
int row = id;//pt itemul x int col = idprodus;//dat de userul ys ratings[row-1][col-1] =(double) rating;//punem ratingul z } bd1.endTransaction(); bd1.CloseConnection();
Theory without practice is useless, practice without theory is blind Roger Bacon
//completam la matricea ratingurilor, ultima coloana cu media reatingurilor pt fiecare item for (int i = 0; i < nrItems; i++) { int sum = 0; for (int j = 0; j < nrUsers; j++) { sum += ratings [i][j]; } ratings[i][nrUsers] = (double)sum/nrUsers; } //completam matricea Pearson for (int item1 = 0; item1 < nrItems; item1++) { for (int item2 = item1; item2 < nrItems; item2++) { if (item1 == item2)// daca sunt aceasi itemi completam Pearson[item1][item2] = 1; else {//altfel calculam corelarea dintre itemi cu formula pt corelare double sus = 0; double josStanga = 0; double josDreapta = 0; for (int i = 0; i < nrUsers; i++) { sus += (ratings[item1][i] ratings[item1][nrUsers])*(ratings[item2][i] - ratings[item2][nrUsers]); josStanga += (ratings[item1][i] ratings[item1][nrUsers]) * (ratings[item1][i] - ratings[item1][nrUsers]); josDreapta += (ratings[item2][i] ratings[item2][nrUsers]) * (ratings[item2][i] - ratings[item2][nrUsers]); } Pearson[item1][item2] = Pearson[item2][item1] = sus/Math.sqrt(josStanga*josDreapta); } //System.out.println(Pearson[item1][item2] + " "); } //System.out.println(); } System.out.println("Recommender: Matrice calculata"); for(int m=0;m<nrItems;m++){ for(int n=0;n<nrItems;n++) System.out.println(Pearson[m][n]+" "); }
cu 1
Theory without practice is useless, practice without theory is blind Roger Bacon
public void recomand(int x){ double aux=0; int aux1=0; a=new int[nrItems]; for(int i=0;i<nrItems;i++) a[i]=i; System.out.println("item "+nrItems); System.out.println("x "+x); for(int m=0;m<nrItems-1;m++){ for(int n=m+1;n<nrItems;n++) if(Pearson[x][m]<Pearson[x][n]){ aux1=a[m]; aux=Pearson[x][m]; Pearson[x][m]=Pearson[x][n]; a[m]=a[n]; Pearson[x][n]=aux; a[n]=aux1; } } for(int n=0;n<nrItems;n++){ a[n]=a[n]+1; System.out.println("a"+(a[n])+"p "+Pearson[x][n]); } } } JavaScript recomandari.jsp <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import = "jade.*" %> <%@ page import = "sun.management.resources.agent" %> <%@ <%@ <%@ <%@ <%@ <%@ page page page page page page import = "cnet.*" %> import = "java.util.*" %> import = "jade.wrapper.*" %> import = "javax.swing.*" %> import = "java.io.*" %> import="administrare.recomandari" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Recomandari</title> <h3 style="background-color:#009AFF; color:#9AD7FF ;width:706px; "> » Recomandari « </h3>
Theory without practice is useless, practice without theory is blind Roger Bacon
<body> <% recomandari r=new recomandari(); r.calculeazaMatricePearson(); r.recomand(3); /* double[] a=new double[P.length()]; for(int i=0;i<=r.getPearson().length;i++) a=P[cos.getProduse().get(i).getIdProdus()][i]; */ out.println("<td style='width:100px;text-align:left;padding-left:50px;' align='left'>"+P[3][1]); %> </body> </html>
WhatShouldIReadNext.com
http :// www .whatshou ldir eadnext . co m/ Last.fm http :// www .la st. fm/ StumbleUpon http://www .stumbleup on.com/
MyStrands
http :// www .mystrand s.com/ dow nload
ChoiceStream
http://www .cho icest ream. co m/
CleverSet
http://www.cleverset.co m/s olution/
Whattorent.com
http://www.whatto rent.com/user info.p hp Netflix http://www.netflix.c om/
Pandora
Theory without practice is useless, practice without theory is blind Roger Bacon
http://www.pand ora.c om/
BIBLIOGRAFIE
1. Colaborative Filtering. http://en.wikipedia.org/wiki/Correlation 2. Recommender Systems. http://en.wikipedia.org/wiki/Reco mmender_systems 3. TutorialAmazon.com Recommendations. http://www.win.tue.nl/~laro yo/2L340/resources/Amazon-Reco mmendat ions.pdf 4. Recommender Sustems. htt p://www.iota.org/Winter99/recommend.ht ml 5. Analysis of Recommender Systems Algorithms. http://users.uom.gr/~mans/papiria/hercma2003.pdf 6. Sarwar, Badrul and Karypis, George and Konstan, Joseph and Reidl, John, Itembased collaborative filtering recommendation algorithms, WWW '01: Proceedings of the 10th international conference on World Wide Web, 2001. 7. Wang, Jun and de Vries, Arjen P. and Reinders, Marcel J. T., Unifying user-based and item- based collaborative filtering approaches by similarity fusion, SIGIR '06: Proceedings of the 29th annual international ACM SIGIR conference on Research and development in information retrieval, 2006.