Sunteți pe pagina 1din 25

Theory without practice is useless, practice without theory is blind Roger Bacon

Theory without practice is useless, practice without theory is blind Roger Bacon

SHINE FASHION E-COMMERCE WEBSITE

Profesor coordonator : Sorin Ilie

Student : Andreea Elena Danisor Grupa:10403

Theory without practice is useless, practice without theory is blind Roger Bacon

Shine Fashion E-BUSINESS /E-Commerce

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.

Diagrama de clase pentru pachetul Date ;

II.

Diagrama de clase pentru pachetul administrare.

Theory without practice is useless, practice without theory is blind Roger Bacon

III.

Diagrama de clase pentru pachetul recomandari.

Theory without practice is useless, practice without theory is blind Roger Bacon

Theory without practice is useless, practice without theory is blind Roger Bacon

Implementarea aplicatie Shine Fashion


In faza de implementare se codifica in limbajul de programare stipulat in specificatia proiectului diferitele module ale design-ului , tot aici se face si testarea separate a modulelor definite in etapa de proiectare in detaliu. Avand in vedere faptul ca aplicatia ShF este o aplicatie orientata pe prezentare si ea va fi inglobata intr-un serviciu online oferit de site-ul official Shine Fashion www.shinefashion.uv.ro trebuiesc luate in vedere aspecte de design, de fiabilitate si mai ales securitate deoarece se transmit informatii importante legate de clientii si tot odata realizam anumite tranzactii ce modifica informatii legate de activitatiile acestora. Este o aplicatie complexa, deoarece inglobeaza si anumite caracteristici specifice domeniului E-commerce , necesita o atentie deosebita in implementarea si integrarea componentelor de design, scopul final fiind obtinerea unui rezultat eficient, sigur,fiabil , userfriendly , interactiv si cu un design rafinat. Aplicatia ShF contine si o legatura catre pagina oficiala a site-ul precum si catre alte ateliere de moda permitand astfel clientilor sa si revizuiasca preferintele , sa incerce noi outfituri.

Theory without practice is useless, practice without theory is blind Roger Bacon

Mecanisme de implementare a sistemului de recomandari bazat de filtrarea colaborativa


Declarate de readwriteweb.com in Top 5 Web Trends of 2009, sistemele de recomandare impart topul cu augmented reality, cu webul sematic si cu alte nume sonore. Motoarele de recomandare sunt astazi folosite intensiv in marketingul online si planurile ce le includ sunt mari. Dar tocmai modul prin care sistemul isi realizeaza rationamentul ne-a starnit curiozitatea. Daca ati intalnit linkul va recomandam si alte stiri / piese / carti similare, probabil ca v-ati intrebat: cum se poate masura aceasta similaritate? Intai este necesar sa aflam ca recomandarea nu tine doar de itemii similari, ci se face si pe baza comportarii anterioare a userului (care spune ce a cautat deja in sistem) si comparand userul cu alti useri care au profil similar, pentru a descoperi preferinte probabile. Algoritmic, am aflat ca provocarea e mult mai mare si reuneste algoritmi de la mai simplul Slope One, la K Nearest Neighbour, pana la combinatii complexe de retele neurale, arbori de decizie, si altele. Un proces ce implica atat sarcini de data mining, cat si sarcini de rationament artificial pentru a prezice ceea ce pare in aparenta simplu si indiscutabil, de vreme ce e vorba de gusturi si preferinte. Interesant este si conceptul de the long tail:

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;

Exemplu experimental privind sistemul de recomandari Shine Fashion


Datele experimentale ajutatoare pentru determinarea profilului utilizatorului online sunt preluate din baza de date .Atunci cand un utilizator activ (utilizator ce detine un cont valid in cadrul sistemului si realizeaza in mod frecvent tranzactii in mediul online) cumpara un produs , acesta poate sa-i asigneze un rating(echivalent cu un vot de preferinta). In momentul in care user-ul realizeaza finalizarea comenzi in tabela cos din baza de date shines se stocheaza idutilizatorului, id produsului si valoarea ratingului asociat de catre acesta. Sa consideram ca avem 3 utilizatori care apreciaza diferit (din punct de vedere al ratingului ) 3 produse.

Matricea item pe item

Theory without practice is useless, practice without theory is blind Roger Bacon

Catalina Rochie Splendid

Raluca

Andreea

Medie

Rochie Business

Rochie Lorelay

11/3

Continutul tabelei Cos din baza de date Shines

Theory without practice is useless, practice without theory is blind Roger Bacon

Corelarea Pearson :[www.scribd.com] este o valoare in intervalul [-1,1]


care se calculeaza pentru doua entitati (fie acestia useri sau itemi) unde 1 inseamna ca itemi sunt foarte asemanatori iar -1 foarte diferiti.

Figura (b) Unde:


este votul acordat de utilizatorul a pentru elemental i; este media voturilor(voturilor) acordate de utilizatorul a;

Matricea de corelatie:

Raspunde la intrebarea Cat de asemanatoare sunt rochiile Splendid si Business ? .

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

ANEXA I : Codul Java pentru implementarea sistemului de recomandari

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();

// ratings = new double[nrItems][nrUsers+1]; Pearson = new double[nrItems][nrItems];

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

} public int[] geta() { return a; }

public void setPearson(double[][] pearson) { Pearson = pearson; }

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; ">&nbsp;&raquo;&nbsp;Recomandari&nbsp;&laquo;&nbsp;</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>

ANEXA II : Exemple de sisteme de recomandare


MovieLens
http://movie le ns.u mn.ed u/log in

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.