POLITECNICO DI MILANO Facoltà di Ingegneria dell'Informazione Corso di Laurea in Ingegneria Informatica Dipartimento di Elettronica e Informazione GRIDCOM: UN SOCIAL NETWORK PER AZIENDE Relatore: Professoressa Franca Garzotto Tesi di Laurea di: Marco Bombarda, matricola 770964 Simone De Nicolo, matricola 771120 Anno Accademico 2012-2013 A tutte le persone care pag. 2 RINGRAZIAMENTI Vorremmo ringraziare la professoressa Garzotto per l’aiuto dato nella realizzazione del progetto. Vorremmo inoltre ringraziare i nostri genitori, i famigliari e tutte le persone care che ci sono state vicine in questi anni. Infine un grazie ai nostri compagni di corso e di studio. pag. 3 pag. 4 INDICE RINGRAZIAMENTI ................................................................................................................................ 3 INDICE .................................................................................................................................................. 5 INDICE DELLE FIGURE .......................................................................................................................... 7 INDICE DEI GRAFICI.............................................................................................................................. 8 1. 2 3 4 INTRODUZIONE ........................................................................................................................... 9 1.1 ABSTRACT ............................................................................................................................ 9 1.2 MOTIVAZIONI/ PROBLEMI ................................................................................................. 10 1.3 PERCHE’ ............................................................................................................................. 12 STATO DELL’ARTE ...................................................................................................................... 13 2.2 PREMESSA ......................................................................................................................... 13 2.2 DIFFERENZE CON I SOCIAL NETWORK ESISTENTI .............................................................. 17 2.2.1 FACEBOOK ..................................................................................................................... 17 2.2.2 TWITTER ........................................................................................................................ 19 2.2.3 LINKEDIN........................................................................................................................ 21 2.2.4 YOUTUBE ....................................................................................................................... 22 PROGETTAZIONE ....................................................................................................................... 25 3.1 PUNTI SVILUPPATI ............................................................................................................. 25 3.2 ASP..................................................................................................................................... 26 3.3 REQUISITI ........................................................................................................................... 28 3.4 USER EXPERIENCE.............................................................................................................. 30 3.5 DATABASE.......................................................................................................................... 31 3.6 UX CONCETTUALE.............................................................................................................. 33 DESIGN IMPLEMENT.................................................................................................................. 34 4.1 SCENARI ............................................................................................................................. 34 4.2 SICUREZZA INFORMATICA ................................................................................................. 47 4.3 LE PAGINE.......................................................................................................................... 53 4.4 PARTICOLARITA’ DEL CODICE ............................................................................................ 57 5 TEST EFFETTUATI ....................................................................................................................... 60 6 SVILUPPI FUTURI ....................................................................................................................... 63 7 CONCLUSIONI ............................................................................................................................ 64 pag. 5 8 BIBLIOGRAFIA ........................................................................................................................... 65 pag. 6 INDICE DELLE FIGURE Figura 1: interazione tra utente e clienti/fornitori ............................................................................ 15 Figura 2: relazione ciclica .................................................................................................................. 15 Figura 3: Logo Gridcom ..................................................................................................................... 16 Figura 4: logo facebook ..................................................................................................................... 18 Figura 5: logo twitter ......................................................................................................................... 20 Figura 6: logo Linkedin ...................................................................................................................... 21 Figura 7: logo youtube ...................................................................................................................... 22 Figura 8: analogie con i social network ............................................................................................. 23 Figura 9: Architettura Asp.net ........................................................................................................... 27 Figura 10: Requisiti ............................................................................................................................ 28 Figura 11: User experience Gridcom ................................................................................................. 30 Figura 12: Struttura database ........................................................................................................... 32 Figura 13: ux concettuale .................................................................................................................. 33 Figura 14: scenario registrazione ...................................................................................................... 35 Figura 15: Schema Ricerca fornitori .................................................................................................. 40 Figura 16: Aggiunta/Rimozione fornitore ......................................................................................... 42 Figura 17: Modifica impostazioni profilo .......................................................................................... 43 Figura 18: Partership ......................................................................................................................... 45 Figura 19: Fatturazione ..................................................................................................................... 46 Figura 20: Architettura Master-slaves............................................................................................... 50 Figura 21: architettura Master-Master ............................................................................................. 51 Figura 22: Architettura ad anello ...................................................................................................... 51 Figura 23: Homepage ........................................................................................................................ 53 Figura 24: pagina profilo personale .................................................................................................. 54 Figura 25: pagina profilo fornitore/cliente........................................................................................ 55 Figura 26: pagina storico fatture ....................................................................................................... 56 Figura 27: l'hiddenfield...................................................................................................................... 58 Figura 28: sqldependency ................................................................................................................. 59 pag. 7 INDICE DEI GRAFICI Grafico 1: Qualità grafica………………………………………………………………………………………………………………60 Grafico 2: Qualità dei tag………………………………………………………………………………………………………………61 Grafico 3: Gestione clienti/fornitori………………………………………………………………………………………………61 pag. 8 1. INTRODUZIONE 1.1 ABSTRACT Gridcom è un social network che è stato sviluppato per consentire alle aziende di avere maggiore visibilità sul mercato e per aiutarle ad individuare possibili fornitori e clienti in modo facile e mirato. La piattaforma riprende gli aspetti generali dei social network più comuni, quali un sistema di messaggistica, la ricerca di altri contatti e la fase di registrazione, ma in più aggiunge nuove funzionalità. GridCom si basa su un’idea totalmente differente e innovativa rispetto agli altri social network: le aziende organizzano stand, fiere ed eventi per farsi conoscere, per portare la propria immagine sul mercato e per parlare di sé, allo scopo di creare interesse verso possibili clienti e fornitori. Dunque il fine dell’azienda è di vendere i propri prodotti e quindi di diventare fornitrice dell’azienda cliente, oppure di acquistare le proprie forniture e quindi di diventare cliente di un possibile fornitore. GridCom si basa su questo concetto. L’obiettivo della piattaforma è dare visibilità alle aziende ed aiutarle a creare una rete commerciale sulla base di criteri mirati: ciò che essa produce e ciò di cui necessita. GridCom è quella fiera, quell’evento, al quale le aziende presentano i propri prodotti e cercano le proprie forniture tramite il loro stand ( il Profilo). GridCom è una piazza sulla quale si affacciano le aziende iscritte e stringono rapporti tra loro. Attualmente non esiste nulla sul web che sia definito secondo queste caratteristiche. pag. 9 1.2 MOTIVAZIONI/ PROBLEMI Le motivazioni che ci hanno portato alla sviluppo di Gridcom sono molteplici: • Volevamo creare qualcosa che si differenziasse dai soliti social network, nei quali lo scopo primario è l’interazione con altre persone. • Di solito (in particolare per piccole realtà) il social network non è sfruttato come mezzo di business, perché interpretato unicamente come fonte di svago. • I classici motori di ricerca, come Google o Bing, utilizzano l’analisi semantica per ricercare quello che si vuole trovare; noi invece abbiamo creato un sistema mirato, che permette di ricercare fornitori e clienti attraverso l’inserimento delle forniture e dei prodotti desiderati. I problemi riscontrati vengono divisi in quattro grandi aree: logici, implementativi, sicurezza informatica e grafica. Durante la trattazione questi problemi verranno analizzati ed esposte le soluzioni intraprese. Qui di seguito è riportata una lista di problematiche divise per macroarea: LOGICA Quando si vuole sviluppare una qualsiasi applicazione informatica il primo obiettivo su cui bisogna riflettere è l’algoritmo da implementare. Questo deve essere efficiente e funzionale. Un esempio può essere mostrare o meno ciò che un’altra azienda produce o cerca. Da un lato potrebbe portare a fare un’analisi di mercato e individuare possibili competitor, ma dall’altro potrebbe portare all’eliminazione di account di aziende che non vogliono più mostrare i loro dati di ricerca. IMPLEMENTAZIONE Qui sorgono i problemi di maggior rilievo: innanzitutto bisognava imparare a programmare in asp.net, ambiente di sviluppo della Microsoft utilizzato per la creazione di pagine dinamiche e basato su tutti i linguaggi che fanno uso del framework .NET, quali ad esempio C#, Visual Basic e j# (nello specifico è stato utilizzato C# per la sua maggiore somiglianza a C++). Inoltre per alcune funzionalità bisognava utilizzare altri linguaggio come jquery, utile per creare applicazioni aggiornabili a runtime. pag. 10 Altro problema era l’interfacciarsi con i server Google per utilizzare le loro API (Application Programming Interface) allo scopo di interfacciarsi al servizio Google Maps, il quale prevede la creazione di un codice da inserire nel sorgente. Altri problemi si sono riscontrati nel sistema di messaggistica; per spiegare meglio questo problema bisogna fare una premessa. Il codice asp.net si divide sostanzialmente in due aree: la prima “client side”, ovvero il codice dell’interfaccia visualizzata dal browser (ovviamente priva di codice c#), la seconda “Server side”, nel codice chiamata “behind code”, nel quale vengono gestiti i dati immessi, le api Google e il database. Per l’interfacciamento tra le due aree esistono dei comandi appositi, ma che richiedono il refresh della pagina, un problema in un servizio di messaggistica. SICUREZZA INFORMATICA Nel campo informatico la sicurezza è sempre uno dei problemi di maggior rilievo nello sviluppo di un software, soprattutto quando c’è la necessità di trattare dati personali. In particolare, è necessario risolvere vulnerability che possano portare a possibili exploit. Una possibile vulnerability riscontrata nell’implementazione del codice è stata la SQL Injection, debolezza che può portare un malintenzionato a introdursi nel database “iniettando” una query. Un altro problema è mantenere l’integrità dei dati nel tempo; il server potrebbe essere down, e se ci fosse un guasto, i dati potrebbero essere compromessi: si necessita quindi di un’architettura che possa mantenere l’integrità dei dati. GRAFICA Una volta sviluppata interamente la logica l’ultimo problema da affrontare è l’implementazione della grafica; questa deve essere semplice e user friendly, in modo che sia facilmente utilizzabile dall’utente medio. pag. 11 1.3 PERCHE’ Come accennato in precedenza lo scopo è offrire alle aziende un servizio web completamente innovativo, che attraverso la definizione di azienda come nodo tra fornitori e clienti, sia in grado di costruire una vera e propria rete commerciale. pag. 12 2 STATO DELL’ARTE 2.2 PREMESSA Per definire lo stato dell’arte, è necessario fare una prefazione sull’etimologia del termine “azienda”: “In economia aziendale, un'azienda è un'organizzazione di persone e mezzi finalizzata alla soddisfazione di bisogni umani attraverso la produzione, la distribuzione o il consumo di beni economici.” Esistono varie tipologie di aziende, ovvero: 1. familiare: persegue il suo scopo tramite valori non economici (come l'assistenza reciproca, i sentimenti, ecc.) ed economici (consumi, investimenti e risparmio). Tipicamente è un'azienda di consumo in cui il risparmio è formato dalla differenza tra redditi di lavoro e capitale da una parte, e consumi e investimenti dall'altra; se le uscite superano gli introiti si accede al finanziamento di terzo. Non va confusa con l'impresa familiare, cioè l'istituzione economica che impiega membri della stessa famiglia e che è volta a produrre reddito. 2. pubblica: si occupa in primo luogo di soddisfare i bisogni pubblici, inoltre crea, accresce e distribuisce valore non solo in relazione alla collettività; ma coinvolgendo anche altri soggetti (stakeholders) quali fornitori, dirigenti, dipendenti pubblici, clienti, concorrenti, ecc. 3. di produzione (o impresa): ha come fine diretto (principale) la produzione e la distribuzione di ricchezza, e come fine indiretto (secondario) il soddisfacimento dei bisogni umani. Si chiamano imprese perché operano in un'economia di mercato, e sono soggette al rischio del capitale investito. A seconda del settore in cui operano, possono essere ulteriormente classificate in: del primario (agricole, minerarie), del secondario (industriali, edili), del terziario (commerciali, mercantili, bancarie, assicurative, di servizi), del terziario avanzato (informatiche, di consulenza). pag. 13 4. no profit: si tratta di aziende che non hanno fini di lucro soggettivo, nel senso che, pur potendo realizzare dei risultati economici e finanziari positivi, questi non vengono distribuiti al soggetto economico. È tuttavia lecito che svolgano una qualche attività commerciale inerente all'oggetto sociale purché essa sia solo marginale o rientri all'interno di finalità di utilità sociale. Un discorso particolare vale per le ONLUS (Organizzazioni Non Lucrative di Utilità Sociale). Si tratta di una qualifica ai fini delle imposte - ovvero che incide sulle modalità di pagamento delle imposte - che possono assumere le aziende non profit che operano in uno dei seguenti settori: assistenza sociale e socio-sanitaria, assistenza sociale, assistenza sanitaria, beneficenza, istruzione, formazione, sport dilettantistico, tutela e promozione dei beni storici e artistici, tutela dell'ambiente, promozione culturale ed artistica, tutela dei diritti civili, ricerca scientifica. Tali società devono essere iscritte all'anagrafe delle ONLUS, presso la Direzione Regionale delle Imprese per avere diritto a particolari vantaggi fiscali (non sono soggette a tassazione). 5. mutualistiche: comprendono cooperative, società di mutua assicurazione e consorzi di cooperative. La cooperative hanno uno scopo principalmente mutualistico, che consiste nel fornire beni o servizi o lavoro direttamente ai soci, in modo più vantaggioso rispetto alle condizioni del mercato. Lo scopo mutualistico assicura la limitata distribuzione degli utili tra i soci e la devoluzione a scopi di utilità pubblica del patrimonio sociale, in caso dello scioglimento della società. Oltre ai soci ordinari è possibile che ci siano dei soci sovventori, che investono nella cooperativa al fine di ottenere un interesse sul capitale investito. Le attività che possono essere svolte in forma cooperativistica comprendono: consumo, produzione, lavoro agricolo, edilizia, trasporti, pesca, economia sociale. Le società di mutua assicurazione sono cooperative che si occupano di attività assicurativa (ramo vita e ramo danni), sono a responsabilità limitata e il capitale sociale è costituito dai contributi versati dai soci, che servono anche come premi assicurativi. Quasi tutte le aziende necessitano quindi di fornitori da cui comprare materie prime e di clienti per generare un profitto. pag. 14 Un esempio: l’azienda B produce motori e richiede all’azienda A dei bulloni. L’azienda C che produce ascensori necessita dei motori dell’azienda B. Graficamente: Azienda A Azienda B Azienda C Fornitore “Motori” Cliente “Bulloni” “Ascensori” Figura 1: interazione tra utente e clienti/fornitori Questa relazione è considerata dal punto di vista dell’azienda B dove A sarà un possibile fornitore e C un probabile cliente. La relazione invece cambia se ci si pone da un altro punto di vista; per esempio per l’azienda C, l’azienda B sarà un fornitore. Azienda B Azienda C Fornitore “Ascensori” “Motori” Figura 2: relazione ciclica Si crea in questo modo una griglia di aziende che sono collegate direttamente ai loro fornitori ed ai loro clienti. Questa rete di nodi rappresenta l’intero mercato. pag. 15 Da questa idea ha preso spunto il nome Gridcom: Gridcom Grid Commercial (Griglia Commerciale) Figura 3: Logo Gridcom pag. 16 2.2 DIFFERENZE CON I SOCIAL NETWORK ESISTENTI Come introdotto nel capitolo precedente (cap 1.1), Gridcom si pone nel contesto dei social network. Nel capitolo seguente analizzeremo analogie e differenze con i principali social network. 2.2.1 FACEBOOK “Facebook è un servizio di rete sociale lanciato nel febbraio 2004, posseduto e gestito dalla corporation Facebook, Inc. Il sito, fondato a Cambridge negli Stati Uniti da Mark Zuckerberg e dai suoi compagni di università Eduardo Saverin, Dustin Moskovitz e Chris Hughes, era originariamente stato progettato esclusivamente per gli studenti dell'Università di Harvard, ma fu presto aperto anche agli studenti di altre scuole della zona di Boston, della Ivy League e della Stanford University. Successivamente fu aperto anche agli studenti delle scuole superiori e poi a chiunque dichiarasse più di 13 anni di età. Da allora Facebook raggiunse un enorme successo: è diventato il secondo sito più visitato al mondo, preceduto solo da Google; è disponibile in oltre 70 lingue e nell'ottobre 2012 conta circa 1 miliardo di utenti attivi che effettuano l'accesso almeno una volta al mese, classificandosi come primo servizio di rete sociale per numero di utenti attivi. Il nome "Facebook" prende spunto da un elenco con nome e fotografia degli studenti, che alcune università statunitensi distribuiscono all'inizio dell'anno accademico per aiutare gli scritti a socializzare tra loro. Gli utenti possono accedere al sito previa una registrazione gratuita, durante la quale vengono richiesti dati personali come nome, cognome, data di nascita e indirizzo email. Il sito chiarisce che l'inserimento obbligatorio della data di nascita serve esclusivamente "per favorire una maggiore autenticità e consentire l'accesso ai vari contenuti in base all'età". Completata la registrazione, gli utenti possono creare un profilo personale, includere altri utenti nella propria rete sociale, aggiungendoli come amici, e pag. 17 scambiarsi messaggi, anche via chat, incluse le notifiche automatiche quando questi aggiornano i propri profili. Inoltre gli utenti possono fondare e unirsi a gruppi per condividere interessi in comune con altri utenti, organizzati secondo il luogo di lavoro, la scuola, l'università o altre caratteristiche, condividere contenuti multimediali ed utilizzare varie applicazioni presenti sul sito. Per personalizzare il proprio profilo l'utente può caricare una foto, chiamata immagine del profilo, con la quale può rendersi riconoscibile. Può inoltre fornire ulteriori informazioni, come il comune di nascita (esempio: Città natale: Roma) e quello di residenza (esempio: Vive a Milano), la scuola frequentata, il proprio datore di lavoro, l'orientamento religioso e quello politico, la propria situazione sentimentale e molte altre.” Figura 4: logo facebook Dalla descrizione di Wikipedia si evince che il più famoso social network al mondo si basa sull’interazione di “amici”. È la piattaforma da cui abbiamo tratto più spunto, in particolare: • Per quanto riguarda la grafica entrambe le piattaforme si basano sull’essenzialità con colori sobri e font sempre uguale; • Con entrambe le piattaforme è possibile creare una lista di amici; mentre in Facebook sarà una lista di conoscenti o di follower, in Gridcom sarà l’elenco di fornitori/clienti più interessanti per non intasare la homepage nel caso in cui i contatti trovati tramite i tag siano troppi. • Nella home page di Facebook vengono visualizzati tutti gli avvenimenti/post scritti dai contatti. Sulla nostra piattaforma è possibile interagire con la pagina di un contatto amico solamente nel caso in cui si clicchi sul suo logo; in pag. 18 • questo modo si verrà reindirizzati alla pagina principale del contatto dove sarà possibile messaggiare e creare fatture. Facebook utilizza una chat a tendina per interagire con il contatto, mentre noi utilizziamo una pagina dedicata (un popup). Facebook è l’unico social network ad introdurre la possibilità di creare un profilo aziendale, ma risulta identico ad un qualsiasi profilo utente, eccezion fatta per alcuni dati aggiuntivi quali la partita IVA. Utile in questo caso è la pubblicazione di messaggi pubblicitari nei banner dedicati ai lati delle pagine, ma non si avrà nessun incremento di visibilità qualora l’azienda produca semilavorati. 2.2.2 TWITTER “Twitter è un servizio gratuito di social network e microblogging che fornisce agli utenti una pagina personale aggiornabile tramite messaggi di testo con una lunghezza massima di 140 caratteri. Twitter è costruito totalmente su architettura Open source. Gli aggiornamenti possono essere effettuati tramite il sito stesso, via SMS, con programmi di messaggistica istantanea, posta elettronica, oppure tramite varie applicazioni basate sulle API di Twitter. Twitter è stato creato nel marzo 2006 dalla Obvious Corporation di San Francisco. Il nome "Twitter" deriva dal verbo inglese to tweet che significa "cinguettare". Tweet è anche il termine tecnico degli aggiornamenti del servizio. Itweet che contengono esattamente 140 caratteri vengono chiamati twoosh. Gli aggiornamenti sono mostrati nella pagina di profilo dell'utente e comunicati agli utenti che si sono registrati per riceverli. È anche possibile limitare la visibilità dei propri messaggi oppure renderli visibili a chiunque. Il valore del social network è stato stimato intorno agli 8,4 miliardi di dollari. Twitter nel 2012 ha raggiunto i 500 pag. 19 milioni di iscritti e 200 milioni di utenti attivi che fanno accesso almeno una volta al mese.” Figura 5: logo twitter Questo social network potrebbe essere considerato il successore di Windows live spaces. Previa registrazione, l’utente può scrivere dei microblog che possono essere commentati dagli altri utenti iscritti. Si basa sul concetto di following e di follower: i primi indicano la comunità di utenti che decidiamo di seguire, mentre i secondi indicano gli utenti che seguono i nostri blog. La più importante similitudine tra Gridcom e twitter è la creazione di una rete di utenti: nel caso di twitter sarà l’utente a scegliere chi seguire ( inoltre è implementato un algoritmo che consiglia altri possibili following sulla base dei precedenti inseriti), mentre nel nostro caso sarà il software stesso a individuare i potenziali clienti/fornitori basandosi solamente sui tag inseriti oppure ricercandoli manualmente. La più importante differenza tra Gridcom e Twitter, invece, è che il primo permette di creare opinioni e pensieri che possono essere letti e commentati da tutti, mentre il secondo crea un’interazione solo a scopo economico. pag. 20 2.2.3 LINKEDIN “LinkedIn è un servizio web di rete sociale, impiegato principalmente per lo sviluppo di contatti professionali. La rete di LinkedIn a gennaio 2009 contava circa 30 milioni di utenti, a maggio del 2010 sono più che raddoppiati arrivando a circa 68 milioni; il 22 marzo 2011 LinkedIn, presente in oltre 200 paesi, ha superato 100 milioni di utenti . Diffuso in tutti i continenti cresce a una velocità di 1 milione di iscritti a settimana. Il 56% degli iscritti risiede fuori dagli Stati Uniti. U.S.A., India, Regno Unito e Brasile sono i paesi col maggior numero di iscritti (quest'ultimo è anche quello che cresce più velocemente). Gli utenti europei sono oltre 22.100.000 e le nazioni che mostrano un maggiore interesse sono l'Olanda, la Francia e l'Italia. LinkedIn copre circa 150 comparti economici e oltre 400 "regioni economiche". La società che gestisce il servizio ha sede a Palo Alto (California).” Figura 6: logo Linkedin Il fine di Linkedin è creare una rete di persone in campo lavorativo (chiamate “connessioni”). Lo scopo principale non è rendere visibile un’azienda, ma permettere alle persone di trovare opportunità di lavoro grazie ai contatti amici. Inoltre le aziende possono pubblicare offerte e ricercare possibili candidati. Questo ultimo punto è un futuro obiettivo che verrà implementato nelle successive release del nostro software. pag. 21 2.2.4 YOUTUBE “YouTube è un sito web che consente la condivisione e visualizzazione di video. Di proprietà di Google Inc. da ottobre 2006, è il terzo sito più visitato al mondo dopo Google e Facebook. L'azienda ha sede a San Bruno (California) e utilizza Adobe Flash Video per visualizzare una vasta gamma di video che però viene sostituita da un'applicazione proprietaria del sito web nel caso l'utente abbia attivato la prova beta HTML5 nel sito. La maggior parte dei contenuti su YouTube viene caricata dai singoli utenti, anche se le società dei media tra cui la CBS, BBC, VEVO e altre organizzazioni offrono parte del loro materiale tramite il sito, come parte del programma di partnership di YouTube.” Figura 7: logo youtube Anche la piattaforma più grande al mondo di video in streaming è considerato un social network, o per meglio dire un sito di content sharing adibito alla condivisione di contenuti (in questo caso video) . Si possono creare collegamenti tra utenti iscritti e ogni video può essere commentato da chiunque. Youtube utilizza un sistema di ricerca analogo a quello di Gridcom: quando si fa l’upload di un video, vengono richieste della parole chiave (tag) che permetteranno al video di essere trovato nella fase di ricerca. Lo scopo di tale piattaforma è principalmente l’intrattenimento. pag. 22 Un fattore importante da considerare è la visualizzazione di questi siti in vetta alle classifiche mondiali; esattamente: • • • • 2° Facebook 3° Youtube 11° twitter 13° Linkedin Dati importanti che dimostrano quanto siano utilizzati i social network dall’utenza di tutto il mondo. La piattaforma Gridcom non vuole essere un concorrente o sostituto dei social network sopra descritti, ma un’integrazione diversa e mirata al business. FACEBOOK YOUTUBE LINKEDIN Amici tag Possibili assunzioni Messaggi GRIDCOM Figura 8: analogie con i social network Come si evince dal grafo Gridcom si basa su idee già esistenti e presenti sui più classici social network (la freccia tratteggiata indica la non implementazione nella corrente release), ma introduce una nuova figura, ovvero l’azienda come entità e non come individuo. Bisogna però distinguere tra due tipologie di aziende: quelle che si rivolgono al mercato customer (utenti finali) e le aziende B2B, ovvero le aziende che producono semilavorati destinati ad altre aziende. pag. 23 Le prime fanno largo uso dei social network esistenti per data mining, ovvero analisi dei dati allo scopo di creare possibili previsioni. Gli utenti scrivono sui social network per esprimere pareri riguardo i prodotti/servizi offerti e le società possono trarre beneficio da tali commenti. Inoltre pubblicare su un social network o comunque in Internet ha costi infinitamente inferiori rispetto ad altri mezzi pubblicitari quali locandine cartacee o pubblicità televisive. Le aziende che producono semilavorati invece, stentano ad utilizzare i social network perché non hanno la visibilità dei clienti consumer che rappresentano la fetta di mercato più grande. Manca quindi un social network che si rivolga esclusivamente a loro. pag. 24 3 PROGETTAZIONE 3.1 PUNTI SVILUPPATI Il progetto iniziale si basa sui seguenti punti: • Sistema di registrazione di una nuova azienda con inserimento di nuovi tag(forniture e prodotti) • Possibilità di inserimento di altri tag in qualsiasi momento • Sistema di ricerca di possibili fornitori e clienti • Sistema di messaggistica tra aziende • Sistema di creazione/memorizzazione fatture • Sistema di rimozione di un account di un’azienda • Gestire la lista di amici • Modificare in qualsiasi momento i dati personali (ad esclusione della mail di accesso) • Modifica e inserimento del logo aziendale • Possibilità di decidere quali dati verranno mostrati alle altre aziende attraverso specifiche impostazioni sulla privacy. pag. 25 3.2 ASP La tecnologia utilizzata per implementare l’applicazione è asp.net. Asp.net è caratterizzato da un’architettuta client-server Three Tier, in cui l’interfaccia grafica, i processi logici e l’accesso ai dati sono sviluppati su 3 moduli indipendenti Tali moduli sono: Livello di presentazione Questo è il livello più alto dell'applicazione. Il livello di presentazione mostra l’interfaccia grafica con la quale l’utente interagisce. Livello applicazione Questo livello gestisce le funzioni logiche che vengono attivate nel livello di presentazione. Si occupa di gestire le richieste dell’utente, di svolgere le funzioni a livello server e di interagire col database Livello dati Questo livello è costituito da server database. Qui le informazioni vengono memorizzate e recuperate. Si occupa di mantenere i dati neutrali e indipendenti da applicazioni server o da logica di business. Inoltre fornendo informazioni del proprio livello migliora la scalabilità e le prestazioni. pag. 26 Figura 9: Architettura Asp.net L’interfaccia grafica è stata gestita tramite i classici linguaggi grafici di programmazione di pagine web, quali HTML, CSS, JAVASCRIPT . Il back-end, invece, è stato programmato attraverso il linguaggio C#, mentre le chiamate al database sono stata implementate con SQL. pag. 27 3.3 REQUISITI Per progettare Gridcom abbiamo tenuto in considerazione diversi fattori in modo da prendere corrette decisioni di design : Stakeholders: a chi è rivolta l’applicazione Goals: quali sono gli obbiettivi del sito Requirements: quali sono i requisiti necessari a conseguire gli obbiettivi Design: come sono sviluppati i requisiti GOALS REQUIREMENTS DESIGN Figura 10: Requisiti STAKEHOLDERS L’applicazione è rivolta alle aziende, all’ambito business. In particolare possiamo pensare che nelle piccole imprese il sito possa essere gestito direttamente dal titolare, mentre in aziende di grandi dimensioni possa essere gestito dall’ufficio acquisti per quanto riguarda i fornitori, e dall’ufficio vendite per quanto riguarda i clienti. pag. 28 GOALS L’obiettivo è creare un social network che sia utile alle aziende per avere visibilità sul mercato e che sia assolutamente innovativo. REQUIREMENTS I requisiti necessari per raggiungere l’obbiettivo sono fornire un servizio di registrazione, login, messaggistica, visualizzazione e ricerca profili per quanto riguarda il social network. Per quanto riguarda gli aspetti innovativi, invece, i requisiti sono fornire la possibilità di ricerche mirate sul territorio in base a prodotti e forniture e consentire il salvataggio delle trattative concluse. DESIGN REQUIREMENTS DESIGN Registrazione Servizio di registrazione con i seguenti campi: nome Azienda, IVA,Indirizzo, Logo, Forniture,Prodotti,Password,Email Login Servizio che consente l’identificazione degli utenti e l’accesso al sito Messaggistica Dare la possibilità di inviare/ricevere messaggi in tempo reale, di salvare ed eliminare le conversazioni effettuate Visualizzazione e Ricerca Profilo Servizio che permette di ricercare e visualizzare i profili in base al nome dell’azienda Ricerche mirate Servizio che permette di ricercare e visualizzare i profili delle aziende che corrispondono alle forniture, ai prodotti e ai luoghi inseriti nella ricerca Salvare Trattative Servizio che permette di salvare le trattative attraverso l’inserimento dei prodotti comprati e del prezzo. Per soddisfare i requisiti oltre ad implementare la grafica delle pagine web, è stato necessario gestire un database contente i dati degli utenti, dei messaggi e delle trattative attraverso la logica. pag. 29 Abbiamo così deciso di utilizzare la tecnologia asp.net perché pone grafica, logica e database su 3 livelli diversi e perché è in forte sviluppo sul web. 3.4 USER EXPERIENCE <screen> Index Login <Input Form> Login Email Password Login Registrati OK OK Registrati OK <screen> Registration <screen> Ricerca Fornitori Ricerca Fornitori/Clienti /Clienti <screen> Profilo $ Lista Profili Trovati <input Form> Ricerca Fornitori Ricerca Fornitori /Clienti /Clienti Forniture Luogo Visualizza Profilo Conferma Logo Dati Azienda Lista amici Lista Fornitori Conferma Visualizza Profilo Ricerca Fornitori Ricerca Clienti Partnership Messaggi Storico Fatture Visualizza Profilo <Input Form> Regitration Email Passw IVa etc <screen> Storico Fatture Storico Fatture Lista Fatture Visualizza Profilo Visualizza Profilo Partnership Messaggi <screen> Partnership <screen> Messaggi Archivio Messaggi Lista Profili Utili Visualizza Profilo Visualizza Profilo Visualizza Profilo Aggiugi ai miei Fornitori/Clienti Visualizza Profilo Visualizza Profilo <input form> Fattura Salva messaggio <screen> ShowProfilo Salva Trattativa Attributes Dati Azienda Oggetto della spesa Prezzo Unità <input form> Messaggi <screen> Fattura Salva <screen> Messaggio Invia Invia Messaggio Salva Trattativa Invia Messaggio Aggiungi ai Fornitori Aggiungi ai clienti Attributes Invia OK Figura 11: User experience Gridcom GridCom offre all’utente tutte le caratteristiche dei social network e tutti gli strumenti necessari a ricercare le aziende specifiche sul mercato . L’utente ha la possibilità di registrarsi e loggarsi, di visualizzare le proprie liste di fornitori e clienti amici e di inviare e ricevere messaggi. pag. 30 Il sito è però integrato con altre funzionalità che caratterizzano l’azienda, quali la ricerca di fornitori e clienti sul territorio, e la possibilità di salvare le trattative concluse in uno storico. 3.5 DATABASE Il database utilizzato è sqlServer. È formato da 7 tabelle: TagForn serve per memorizzare le informazioni personali e anagrafiche dell’azienda utente memorizza le forniture associate ad ogni azienda TagProd memorizza i prodotti associati ad ogni azienda FriendList Fattura memorizza i rapporti di amicizia tra fornitore e clienti e tra cliente e fornitore memorizza i dati delle fatture salvate FattDett per ogni fattura memorizza i prodotti salvati Chat memorizza tutti i messaggi Profilo pag. 31 Figura 12: Struttura database La tabella Friendlist è di fondamentale importanza. I rapporti di amicizia sono salvati in questo modo: email di chi effettua la richiesta – email di chi riceve la richiesta- tipo di amicizia(fornitore o cliente)- confermata(si o no). Il tipo di amicizia è definito rispetto all’azienda che effettua la richiesta, quindi rispetto all’altra sarà l’esatto contrario, come avviene nelle trattative sul mercato reale dove se A è fornitore di B, allora B è cliente di A. Il campo “confermata” serve a sapere se la richiesta è stata accettata. Per esempio: A - B – forn - si Significa che B è nella lista fornitori di A, e che quindi A è nella lista clienti di B. pag. 32 3.6 UX CONCETTUALE Il modello UX concettuale su cui si basa l’idea di Gridcom è il seguente: Figura 13: ux concettuale L’azienda utente è al centro del sistema e può in qualsiasi momento interagire con le funzionalità messe a disposizione. Si evince come a livello astratto vi sia una netta distinzione tra fornitore e cliente. pag. 33 4 DESIGN IMPLEMENT 4.1 SCENARI Login Utente Inserisce Email e password e clicca il pulsante di login sulla home page Sistema Verifica la correttezza e in caso permette l’accesso alla pagina profilo. Registrazione: Utente Clicca il pulsante registrati sulla home page Sistema Apre il form di inserimento dati per la registrazione Utente Inserisce i dati e da l’ok Sistema Crea nel database un nuovo utente con i dati registrati. pag. 34 Figura 14: scenario registrazione Da questo punto in poi analizzeremo due possibili tipologie di aziende: i fornitori e i clienti. Tuttavia si tratta di un’astrazione della realtà, perché non esiste una netta distinzione tra le 2 tipologie, ogni azienda potrebbe essere fornitrice di un’altra e nel contempo essere cliente di una terza. Chiaramente per il rapporto di mercato che lega 2 aziende, se l’azienda A è un fornitore di B, allora l’azienda B è cliente di A. pag. 35 FORNITORE Inserimento forniture: Utente Clicca dal menu “opzioni” il pulsante “modifica forniture/prodotti ” Sistema Apre il menu forniture dove appare un editor dal quale selezionare le forniture desiderate. Utente Seleziona le forniture desiderate. Clicca su conferma Sistema Aggiorna il database con le forniture dell’utente e le visualizza sulla pagina profilo. Modifica forniture: Utente Clicca dal menu opzioni il pulsante “modifica forniture/prodotti” Visualizza il menu forniture dove appare un Sistema editor dal quale selezionare le forniture desiderate . Utente Deseleziona quelle da togliere e seleziona le forniture desiderate. Clicca su conferma. Sistema Aggiorna il database con le forniture dell’utente. pag. 36 Ricerca clienti: Utente Clicca sul pulsante ricerca clienti sulla pagina profilo. Sistema Apre un menu dove selezionare la locazione geografica e i prodotti da associare alla ricerca Seleziona la Utente nazione/regione/provincia/città desiderata e i prodotti Sistema Visualizza le aziende che corrispondono alla ricerca. Utente Vede le aziende utili e cliccando sul nome ne visualizza il profilo Elimina cliente Utente Clicca sul tasto “Non mi piace” nella lista dei clienti Sistema Elimina il fornitore dalla lista Aggiunge un azienda alla lista clienti Utente Dal profilo dell’azienda desiderata clicca aggiungi ai miei clienti Inserisce nel database la richiesta non Sistema confermata in attesa che venga accettata dall’altra azienda. pag. 37 L’azienda 1 accetta la richiesta di entrare nella lista fornitori dell’azienda 2 Dal menu “richieste in attesa” della pagina Utente 2 profilo visualizza le richieste di amicizia e clicca accetta(o rifiuta se vuole rifiutare) Aggiorna il campo “confermata” del database e Sistema inserisce l’azienda 2 tra i clienti dell’azienda 1 e l’azienda 1 tra i fornitori dell’azienda 2. Rimuove un azienda dalla lista clienti: Utente Clicca il pulsante rimuovi dai miei clienti sulla pagina profilo dell’azienda desiderata. Sistema L’azienda viene eliminata dalla lista pag. 38 CLIENTE Inserimento prodotti: Utente Clicca dal menu “opzioni” il pulsante “modifica forniture/prodotti ” Sistema Apre il menu prodotti dove appare un editor dal quale selezionare i prodotti desiderati. Utente Seleziona i prodotti desiderati. Clicca su conferma. Sistema Aggiorna il database con i prodotti dell’utente e le visualizza sulla pagina profilo. Modifica prodotti: Utente Clicca dal menu “opzioni” il pulsante “modifica forniture/prodotti” Sistema Apre il menu prodotti dove appare un editor dal quale selezionare i prodotti desiderati. Utente Deseleziona quelli da togliere e seleziona i prodotti desiderati. Clicca su conferma. Sistema Aggiorna il database con i prodotti dell’utente e le visualizza sulla pagina profilo. pag. 39 Ricerca fornitori: Utente Clicca il pulsante ricerca fornitori sulla pagina profilo. Sistema Apre un menu dove selezionare la locazione geografica e le forniture da associare alla ricerca Utente Seleziona la nazione/regione/provincia/città desiderata e le forniture. Sistema Visualizza le aziende che corrispondono alla ricerca Utente Vede le aziende utili e cliccando sul nome ne visualizza il profilo Figura 15: Schema Ricerca fornitori pag. 40 Elimina fornitore Clicca sul tasto “Non mi piace” nella lista dei Utente fornitori. Elimina il fornitore dalla lista Sistema Aggiunge un azienda alla lista fornitori Dal profilo dell’azienda desiderata clicca Utente aggiungi ai miei fornitori Inserisce nel database la richiesta non confermata in attesa che venga accettata Sistema dall’altra azienda L’azienda 1 accetta la richiesta di entrare nella lista clienti dell’azienda 2 Dal menu “richieste in attesa” della pagina Utente profilo visualizza le richieste di amicizia e clicca accetta(o rifiuta se vuole rifiutare) Aggiorna il campo “confermata” del database e Sistema inserisce l’azienda 2 tra i fornitori dell’azienda 1 e l’azienda 1 tra i clienti dell’azienda 2 Rimuove un azienda dalla lista fornitori: Utente Clicca il pulsante rimuovi dai miei fornitori sulla pagina profilo dell’azienda desiderata Sistema L’azienda viene eliminata dalla lista pag. 41 Figura 16: Aggiunta/Rimozione fornitore COMUNE AD ENTRAMBE Modificare le impostazioni personali Utente Clicca il tasto impostazioni profilo dal menu a tendina opzioni Sistema Ritorna una pagina dove sono contenuti i dati del profilo dell’utente Utente Modifica i campi desiderati Sistema Aggiorna il database pag. 42 Figura 17: Modifica impostazioni profilo Contattare altre aziende: Utente Dalla pagina profilo dell’altra azienda clicca invia messaggio Sistema Apre un form di inserimento messaggio Utente Inserisce il messaggio e clicca ok pag. 43 Leggere posta: Utente Dalla pagina profilo clicca messaggi Sistema Restituisce la pagina messaggi Utente Clicca sull’azienda della quale si vogliono visualizzare i messaggi Sistema Restituisce i messaggi dell’azienda selezionata Utente Scrive nell’apposito box se vuole rispondere Sistema Inserisce il messaggio nel database Visualizzare le aziende che corrispondono alle forniture/prodotti dell’azienda Utente Sistema Clicca “partnership” dalla pagina profilo Restituisce una lista di possibili clienti e fornitori nell’area geografica vicina all’utente Utente Sistema Clicca su un azienda della lista Restituisce la pagina profilo dell’azienda selezionata pag. 44 Figura 18: Partership Concludere una trattativa Utente Clicca sul pulsante “salva fattura ” dalla pagina profilo dell’azienda desiderata Sistema Ritorna un menu dal quale inserire i prodotti e il prezzo che caratterizzano la trattativa Utente Inserisce i dati della trattativa Sistema Salva i dati della trattativa nel database pag. 45 Visualizzare archivio fatture: Utente Dalla pagina profilo clicca su ”archivio fatture” Sistema Visualizza lo storico delle fatture Utente Clicca sulla fattura desiderata Sistema Visualizza i dati della fattura selezionata Figura 19: Fatturazione A livello software le distinzioni cliente/fornitore non esistono; tutte le aziende hanno funzionalità sia per i clienti che per i fornitori. pag. 46 4.2 SICUREZZA INFORMATICA Quando si sviluppa un software, uno dei punti fondamentali è garantire la sicurezza informatica, ovvero che non sia possibile introdursi nel codice al fine di distruggere, modificare o rubare i dati inseriti. Questo tema diventa ancora più importante nel momento in cui si sviluppano applicazioni web, perché queste si rivolgono a chiunque e quindi si è ignari di chi si possa introdurre nel sistema. Nello specifico, un software può contenere delle “vulnerability”, ovvero parti di codice vulnerabili che possono essere utilizzate da un malintenzionato (per esempio un hacker) al fine di produrre degli exploit; qui di seguito ne vengono citati alcuni: • • • • • • • • • • Buffer Overflow Eavesdropping Race Condition Man in the Middle Input Validation Session Hijacking Memory Residue Replays Path Manipulation Backdoors Nell’ambito web le più pericolose sono sicuramente queste: • • • • Input Validation Session Hijacking Sql injection Cookie poisoning In pochi anni il web ha subito una notevole evoluzione; inizialmente esistevano solo pagine statiche, ovvero siti in cui l’utente poteva solamente consultare il contenuto senza potervi interagire. All’inizio del nuovo millennio invece si sono cominciate a diffondere le prime pagine dinamiche, siti in cui gli utenti potevano interagire con applicazioni. Ne sono esempi gli E-commerce, le banche e le assicurazioni on line e i più recenti social network. pag. 47 Oggi il web conta miliardi di pagine dinamiche e altrettante interazioni di utenti; questo vuol dire che i dati personali sono moltissimi e bisogna garantire che almeno i più importanti siano protetti (per esempio numeri di conti correnti, carte di credito ecc). Qui di seguito vengono analizzate le contromisure adottate da Gridcom per difendere i dati delle aziende iscritte. INPUT VALIDATION Come citato in precedenza, chiunque può aprire una pagina web, e dato che Gridcom utilizza pagine dinamiche per interagire con i clienti, si necessita di una validazione. L’utente all’accesso nella piattaforma, sarà costretto ad effettuare il login previa registrazione. In questo modo è garantito il controllo dell’utente, che se non rispetta il servizio offerto verrà eliminato dal database impedendone un nuovo accesso. SQL INJECTION Il problema dello sql injection è noto da quando sono stati creati i primi database. Il funzionamento è molto semplice: si inserisce una stringa all’interno della query che permette di accedere ad una determinata tabella del database. Per esempio: “SELECT * FROM utente WHERE IDutente=’”+txtEmail.text+”’ and pass=’”+txtPass.text+”’; ” La query sopra indicata potrebbe essere utilizzata nella fase di login dove txtEmail indicherà il campo Email dell’utente e txtPAss il campo password. Se nel campo txtEmail venisse inserita la seguente stringa: ‘1’=’1’;-Si avrebbe un attacco sql injection perché: • 1=1 indica una condizione di verità costante • ;-- indica il termine della query. La parte rimanente viene considerata solamente un commento pag. 48 Il software vedrebbe quindi la seguente query: “SELECT * FROM utente WHERE IDutente=’1’=’1’;--” Permettendo all’utente di visualizzare l’intero contenuto della tabella utente. Gridcom risolve questo problema validando l’input e filtrando il contenuto: non sono permessi caratteri speciali quali ‘=’ ‘;’ e ‘-’. COOKIE POISONING In informatica i cookie HTTP (più comunemente denominati Web cookies, tracking cookies o semplicemente cookie) sono stringhe di testo di piccola dimensione inviate da un server ad un Web client (di solito un browser) e poi rimandati indietro dal client al server (senza subire modifiche) ogni volta che il client accede alla stessa porzione dello stesso dominio. Il termine "cookie" - letteralmente "biscotto" - deriva da magic cookie, concetto ben noto in ambiente UNIX e che ha ispirato sia l'idea che il nome dei cookie HTTP. Sono molto utilizzati in campo e-commerce per pubblicizzare nei banner prodotti visti in precedenza o per effettuare acquisti online (carrello elettronico). Il cookie poisoning consiste nel modificare i contenuti di un cookie (per esempio le informazioni personali salvate nel computer dell'utente) con il fine di eludere i meccanismi di sicurezza. Attraverso questa tecnica, chi attacca può ottenere informazioni private e non autorizzate da un utente, nonché rubare la sua identità. I cookie immagazzinati nel computer dell'utente contengono le informazioni che consentono alle applicazioni di autenticare la userID, monitorare i comportamenti e personalizzare i contenuti di un sito Gridcom non utilizza il metodo dei cookie perché il sistema si basa interamente sull’utilizzo del database e non ha lo scopo di pubblicizzare un prodotto. pag. 49 OLTRE GLI ATTACCHI INFORMATICI Uno dei principali problemi nello sviluppo di un software è garantire l’integrità dei dati nel tempo. Quando si parla di sicurezza informatica si pensa subito a virus, worm, malware o attacchi da parte di hacker, ma un problema serio è anche l’affidabilità dell’hardware. Come qualsiasi macchina un server può rompersi, e se non esiste una copia dei dati, questi saranno irreparabilmente compromessi. Esistono architetture che permettono di ovviare a questo problema. Nel seguito ne sono elencate alcune. Figura 20: Architettura Master-slaves Una delle architetture più utilizzate è master-slaves; il master contiene il database correntemente utilizzato mentre gli slave contengono le copie del database o del log (a seconda della dimensione del database e del tipo di query effettuate). È anche il caso di Gridcom; il sistema replica periodicamente i dati del database su un disco separato (slave); in questo modo se un disco si danneggia diventa facilmente sostituibile. La copia effettuata è integrale, ovvero viene clonato interamente il database; si tratta di una soluzione temporanea perché attualmente lo spazio occupato è minimo. pag. 50 Inoltre soluzioni future necessiteranno di un’architettura più complessa, composta da un numero di slave maggiore perché vi sarà un’ipotetica crescita esponenziale del numero di accessi al social network e quindi un maggiore stress a lettura/scrittura su hard disk. Esistono anche altre soluzioni architetturali quali la master-master Figura 21: architettura Master-Master In questo caso entrambi i database posti sui due server risultano operativi ma vi sono problemi di sincronia perché entrambi possono effettuare read e write. Figura 22: Architettura ad anello pag. 51 L’ultima architettura proposta è quella ad anello, poco utilizzata, perché risulta essere molto fragile, infatti basta un singolo guasto per compromettere l’intera l’architettura. pag. 52 4.3 LE PAGINE Il capitolo che segue, sarà dedicato a descrivere le funzionalità delle pagine principali, con alcuni esempi. INDEX Figura 23: Homepage La pagina iniziale presenta il form di login e il link per accedere alla pagina di registrazione. pag. 53 PROFILO Figura 24: pagina profilo personale Il profilo è il biglietto da visita dell’azienda: visualizza le informazioni principali e la posizione sulla mappa; inoltre permette di accedere alle pagine di ricerca, alle trattative salvate e alla pagina di partnership. Permette anche di cambiare i propri dati personali e di modificare le impostazioni sulla privacy. La parte centrale della pagina presenta nella colonna di sinistra la lista dei fornitori, al centro l’azienda stessa e nella colonna di destra la lista dei clienti. Dal punto di vista logico, questa struttura riflette la realtà perché definisce l’azienda come nodo legato ai suoi fornitori e ai suoi clienti, e ricalca il modello fornitori-azienda-clienti come parte della rete commerciale che definisce il mercato. pag. 54 PARTNERSHIP Questa pagina presenta la lista delle aziende che in base a forniture e prodotti potrebbero diventare possibili fornitori e clienti. Delinea quale può essere la rete commerciale dell’utente. La lista fornitori è popolata incrociando le forniture dell’utente ai prodotti degli altri utenti, la lista clienti invece incrocia i prodotti dell’utente con le forniture delle altre aziende. E’ possibile trovare le partnership nella propria città, provincia o nazione. PROFILO DI UN'ALTRA AZIENDA Figura 25: pagina profilo fornitore/cliente pag. 55 Questa pagina visualizza il profilo di un'altra azienda. Le informazioni sono rese disponibili in accordo con le decisioni sulla privacy definite dall’attività di cui si sta vedendo il profilo. Inoltre si può aggiungere o rimuovere l’azienda dalle proprie liste, accedere al salvataggio di una trattativa, o inviare un messaggio. PRIVACY La pagina della privacy è importantissima. L’azienda può decidere se rendere pubbliche o meno le sue liste di fornitori e clienti . Prende decisioni su come gli altri utenti visualizzeranno il suo profilo. STORICO FATTURE Visualizza l’archivio delle trattative concluse e la possibilità di vederne i dettagli. Figura 26: pagina storico fatture pag. 56 4.4 PARTICOLARITA’ DEL CODICE HIDDENFIELD La struttura di ASP.net, come detto, divide la parte client da quella server. Le strutture definite sul client sono riconosciute dal server attraverso il file aspx.design. Ogni volta che viene cliccato un tasto, la pagina viene ricaricata e le strutture vengono aggiornate. Per evitare il refresh della pagina e poter svolgere alcune operazioni in modo asincrono, abbiamo utilizzato il linguaggio “javascript”, andando incontro ad alcuni problemi. Infatti quando vengono fatte delle modifiche lato client, usando linguaggi esterni come javascript, le strutture non vengono aggiornate nel file di design e quindi non vengono viste dal server. La soluzione che abbiamo adottato in questo progetto è stato l’hiddenfield. L’hiddenfield è una struttura invisibile sulla pagina ASP, che è definita per essere a metà tra client e server. Attraverso l’hiddenfield le modifiche effettuate tramite tool esterni, come javascript, possono essere visualizzate dal server. Per esempio, la pagina che permette l’inserimento e la modifica di forniture e prodotti presenta una lista che viene riempita e filtrata attraverso javascript. Senza usare l’hiddenfield le modifiche finali sulle forniture, non sarebbero visibili dal lato server, perché non vengono automaticamente considerate da ASP. Attraverso l’hiddenfield invece è possibile registrare la lista finale tramite una stringa composta dai materiali presenti, separati dalla virgola. Ogni volta che il codice javascript inserisce un dato nella lista, lo stesso dato viene concatenato alla stringa dell’hiddenfield. In questo modo il server può vedere i dati inseriti. pag. 57 Figura 27: l'hiddenfield Per esempio, se tramite javascript l’utente inserisce nella lista le parole “vite”,”martello” e”metallo” la stringa finale nascosta nell’hiddenfield sarà “vite,martello,metallo” e sarà visibile dal lato server. AJAX Un'altra tecnica di sviluppo che abbiamo utilizzato per svolgere le operazioni in modo asincrono è AJAX: Asynchronous Javascript and XML. Questa tecnica si basa su uno scambio di dati in background fra web browser e server, che consente l'aggiornamento dinamico di una pagina web senza esplicito ricaricamento da parte dell'utente. Una struttura di Ajax che abbiamo utilizzato spesso è l’UpdatePanel: la sua caratteristica principale è quella di saper eseguire il codice presente o ad esso associato in modalità completamente asincrona, senza modificare la modalità di accesso al codice stesso, da parte dello sviluppatore e senza dover utilizzare linguaggi lato client, come javascript. Quindi la genialità di Ajax è che esegue le operazioni lato server, senza fare ricaricare la pagina. pag. 58 SQL DEPENDENCY Un'ultima questione rilevante è la messaggistica. Affinché il servizio funzioni in tempo reale, è necessario che quando un messaggio viene ricevuto il database notifichi il dato immediatamente. Questo è possibile utilizzando la funzione “SqlDependecy” che attiva un’effettiva dipendenza dal database, il quale segnalerà in tempo reale una notifica in caso di modifiche al suo interno. Quindi il client si iscrive al database per ricevere le notifiche e quando viene ricevuto un messaggio, il database avvisa che è avvenuto un cambiamento nei suoi dati. Figura 28: sqldependency pag. 59 5 TEST EFFETTUATI È stato proposto un questionario a 10 persone per analizzare l’usabilità dell’intero sistema. Le fasce di età sono le seguenti • 4 utenti tra i 18 e i 25 anni • 3 utenti tra i 26 e 45 anni • 3 utenti sopra i 466 anni Ogni domanda comprendeva un punteggio tra 1 (insoddisfatto) e 5 (pienamente soddisfatto). Inoltre il sistema era offline ed era già stato stato inizializzato con dati fittizi fittiz in modo che si potesse già sfruttare al massimo l’intera l’ piattaforma. Qui di seguito vengono riproposte le domande chieste ai vari utenti. 1. Credi che la grafica rafica sia piacevole (logo, colori, font caratteri)? media punteggi 5 4 3 2 media punteggi 1 0 18-25 anni media punteggi 26-45 45 anni >46 anni Grafico 1: qualità grafica pag. 60 Dal grafico si evince che gli utenti più adulti sono più attenti ai dettagli grafici ma comunque soddisfatti della grafica. 2. Credi che il sistema di tag sia facilmente intuibile? media punteggi 3 2 media punteggi 1 0 18-25 anni media punteggi 26-45 45 anni >46 Grafico 2: Qualità dei tag Questo punto ci ha stupiti per il punteggio mediamente basso e quindi abbiamo chiesto chiarimenti. Ci è stato detto che l’idea è buona ma necessita di spiegazione del funzionamento soprattutto nella fase di registrazione. 3. Pensi che la gestione della lista dei clienti/fornitori sia appropriato? media punteggi 4 2 media punteggi 0 18-25 anni media punteggi 26-45 45 anni >46 Grafico 3: gestione clienti/fornitori pag. 61 In questa domanda si evince come le generazioni più giovani sappiano gestire facilmente la lista di contatti. 4. Cosa introdurresti in Gridcom? (domanda aperta) Tra le risposte le principali sono state: • Gridcom su smartphone • Dare la possibilità di inserire altre immagini oltre a logo • Possibilità ad utenti esterni di cercare lavoro pag. 62 6 SVILUPPI FUTURI Gridcom è un social network che permette un’infinità di sviluppi futuri. Verrà introdotto un sistema di registrazione di utenti in cerca di lavoro, e in base a un sistema di tag l’utente potrà individuare tutte le aziende presenti che ricercano una figura professionale in base a determinate caratteristiche; per esempio se un ing. Informatico inserirà “consulenza informatica” verranno visualizzate tutte le aziende interessate ad assumere in tale ambito. Verrà introdotto un sistema di inserimento immagini, cosicché l’azienda nell’immediatezza potrà mostrare i prodotti sviluppati. Sarà implementata un’architettura che permetta, in caso di un crollo del server principale, che uno slave si attivi a diventare il nuovo master. Un possibile sviluppo è l’implementazione di app in ambito mobile; potrebbe essere creato un sistema che avvisi tramite smartphone, e quindi su piattaforme quali Android, Windows Phone e IOS che una nuova azienda è stata trovata oppure inviare messaggi ai propri clienti/fornitori. Un contributo ulteriore alle aziende sarebbe l’introduzione di un sistema completo per la gestione della contabilità interna e quindi non solo la gestione delle fatture; Gridcom in questo modo si dividerebbe in due software complementari: da una parte il social network e dall’altra un sistema gestionale (fatture, bolle, commissioni bancarie ecc.) in modo che venga eliminato l’archivio cartaceo. Verrà introdotto un sistema di feedback in modo che si possa migliorare l’usabilità generale della piattaforma in base alle richieste degli utenti iscritti. Ultimo punto importante la traduzione in varie lingue. pag. 63 7 CONCLUSIONI L’obbiettivo di GridCom è che un grande numero di aziende si iscriva al sito. Questo farebbe di GridCom un’importante piazza di mercato, dove tutte le aziende iscritte avrebbero grande visibilità e potrebbero interagire tra loro direttamente e sulla base di specifici parametri quali le forniture e i beni prodotti. L’azienda infatti si delinea sul mercato per quello che produce e per quello che ha bisogno per produrre. Le interazioni con le altre aziende hanno questi elementi come parametri fondamentali. Ciò è testimoniato dal ruolo principale che l’ufficio acquisti e l’ufficio vendite ricoprono nell’azienda. GridCom può essere visto come un ulteriore integrazione del CRM (Customer relationship management) operativo poiché si propone come nuovo canale (sottocanale del web) utilizzato dall’azienda per interagire con i clienti. Inoltre si propone come primo passo anche nel Supply Chain Management Aziendale che si occupa della gestione dei fornitori. GridCom vuole essere il primo passo che delinea il rapporto tra le aziende, il primo step che in modo concreto ed esauriente permette di capire quali sono le aziende che possono entrare nella sfera di mercato dell’azienda stessa. E’ il primo servizio che agisce per legare e stringere rapporti di business. Non esiste nulla sul web che sia definito secondo queste caratteristiche. pag. 64 8 BIBLIOGRAFIA http://www.alexa.com/topsites/global Slide corso “SISTEMI INFORMATIVI 1 ” della prof. Francalanci Slide corso “COMPUTER SECURITY” del prof. Zanero http://it.wikipedia.org/wiki/YouTube http://it.wikipedia.org/wiki/Twitter http://it.wikipedia.org/wiki/Facebook http://it.wikipedia.org/wiki/Linkedin http://it.wikipedia.org/wiki/Azienda pag. 65