Thesis full text PDF - Politecnico di Milano
Thesis full text PDF - Politecnico di Milano
Thesis full text PDF - Politecnico di Milano
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Politecnico</strong> <strong>di</strong> <strong>Milano</strong><br />
Polo Territoriale <strong>di</strong> Como<br />
Scuola <strong>di</strong> Ingegneria dell’Informazione<br />
Corso <strong>di</strong> Stu<strong>di</strong> in Ingegneria Informatica<br />
Dai requisiti alla progettazione <strong>di</strong> reti sociali<br />
per il web<br />
Tutor universitario: Prof. Marco Brambilla<br />
Elaborato finale <strong>di</strong>:<br />
Davide Maria Filippo Ripamonti matr. 702249<br />
A.A. 2009-2010
In<strong>di</strong>ce<br />
1 Introduzione 5<br />
2 Background 9<br />
2.1 Goal <strong>di</strong>agram . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />
2.1.1 Framework basati su goal <strong>di</strong>agram . . . . . . . . . . . 10<br />
2.1.2 KAOS . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />
2.1.3 i*/Tropos . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />
2.2 UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />
2.3 OODBMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />
2.4 Apache Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />
2.5 Altre tecnologie . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />
3 Approccio 21<br />
3.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />
3.2 Requisiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />
3.3 Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />
3.3.1 Relazioni fra gli utenti . . . . . . . . . . . . . . . . . . 29<br />
3.3.2 Interazione tra gli utenti . . . . . . . . . . . . . . . . . 32<br />
3.3.3 Messaggi . . . . . . . . . . . . . . . . . . . . . . . . . . 33<br />
3.3.4 Organizzazione . . . . . . . . . . . . . . . . . . . . . . 33<br />
3.3.5 Azioni del sistema . . . . . . . . . . . . . . . . . . . . 36<br />
3.3.6 Interazione sui contenuti . . . . . . . . . . . . . . . . . 37<br />
3.3.7 Estensioni del sistema . . . . . . . . . . . . . . . . . . 38<br />
3.4 Implementazione . . . . . . . . . . . . . . . . . . . . . . . . . 39<br />
3
4 INDICE<br />
4 Implementazione 41<br />
4.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />
4.2 Selezione delle features . . . . . . . . . . . . . . . . . . . . . . 42<br />
4.3 Mappatura delle classi . . . . . . . . . . . . . . . . . . . . . . 43<br />
4.4 Gestione UML . . . . . . . . . . . . . . . . . . . . . . . . . . . 45<br />
5 PoliBook 47<br />
5.1 Obiettivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47<br />
5.2 Architettura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47<br />
5.3 Realizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . 48<br />
5.3.1 Scelta dei requisiti . . . . . . . . . . . . . . . . . . . . 48<br />
5.3.2 Design e rifinitura . . . . . . . . . . . . . . . . . . . . . 49<br />
5.3.3 Implementazione e interfaccia grafica . . . . . . . . . . 49<br />
5.4 Valutazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56<br />
6 Conclusione 61<br />
6.1 Sviluppi futuri . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />
Bibliografia 62
Capitolo 1<br />
Introduzione<br />
Nell’era del web 2.0, caratterizzata sempre più dall’interazione tra gli utenti e<br />
dalla creazione e scambio <strong>di</strong> contenuti da parte <strong>di</strong> questi ultimi, i protagonisti<br />
in<strong>di</strong>scussi <strong>di</strong> questa evoluzione <strong>di</strong>gitale sono i social network.<br />
Al giorno d’oggi chi naviga per la rete possiede almeno uno tra un profilo<br />
su Facebook, un account <strong>di</strong> YouTube, una pagina personale su MySpace o,<br />
continuando l’elenco tra i social network più popolari, si scambia link e mes-<br />
saggi con Twitter, con<strong>di</strong>vide le proprie foto su Flickr, cerca e consiglia libri<br />
su Anobii, ascolta musica su Last.fm o, in campo professionale, è registrato<br />
a LinkedIn.<br />
Essenzialmente un social network è una applicazione web in cui è possibile<br />
creare un profilo personale, costruire la propria lista <strong>di</strong> amici inserendo gli<br />
utenti della comunità con i quali si vuole instaurare un rapporto ed esaminare<br />
le amicizie degli utenti amici per ampliare la propria rete sociale.<br />
Oltre a questi elementi base sono stati introdotti i gruppi e le raccoman-<br />
dazioni per favorire la ricerca <strong>di</strong> persone, e nuovi e originali meccanismi per<br />
aumentare il grado <strong>di</strong> interazione e utilità del sito web.<br />
La forza e il successo delle reti sociali consistono nella con<strong>di</strong>visione del-<br />
le esperienze e dei contenuti, nella possibilità <strong>di</strong> stringere nuove amicizie e<br />
collaborazioni con utenti che hanno gli stessi interessi, nella velocità <strong>di</strong> <strong>di</strong>f-<br />
fusione delle informazioni e delle conoscenze e, non ultimo, nel <strong>di</strong>vertimento<br />
e intrattenimento coi propri amici reali e virtuali.<br />
5
6 CAPITOLO 1. INTRODUZIONE<br />
Per <strong>di</strong>verse ragioni quali ad esempio la necessità <strong>di</strong> avere a <strong>di</strong>sposizione un<br />
sistema più flessibile per i propri scopi, un controllo maggiore sulla sicurezza<br />
e sulla privacy dei contenuti, il bisogno <strong>di</strong> funzionalità aggiuntive o la libertà<br />
<strong>di</strong> poter sviluppare componenti integrativi per dei sistemi già esistenti, può<br />
nascere l’esigenza <strong>di</strong> dover creare un social network ad hoc.<br />
L’obiettivo principale <strong>di</strong> questa tesi è quello <strong>di</strong> mostrare una possibile so-<br />
luzione a questo problema la quale permetta la creazione <strong>di</strong> un social network<br />
partendo dall’analisi dei requisiti, passando per il design e infine giungendo<br />
all’implementazione nel modo più produttivo possibile.<br />
L’idea è quella <strong>di</strong> selezionare i requisiti desiderati utilizzando un sem-<br />
plice e intuitivo goal <strong>di</strong>agram, contenente le features tipiche e particolari<br />
in<strong>di</strong>viduate tramite l’analisi <strong>di</strong> molti e <strong>di</strong>versi social network.<br />
Dopo aver effettuato le proprie scelte, un tool creato appositamente si<br />
occupa <strong>di</strong> mappare le features su dei modelli UML, nello specifico generan-<br />
do dei class-<strong>di</strong>agrams, i quali modellizzano la logica <strong>di</strong> funzionamento del<br />
sistema.<br />
A questo punto è possibile raffinare il design, per poi generare gli scheletri<br />
delle classi, o associare ad ogni classe nel modello la classe completa se già<br />
esistente, e quin<strong>di</strong> procedere con l’implementazione.<br />
La tesi è strutturata nei seguenti capitoli:<br />
• Capitolo 2: viene presentato il background concettuale, le soluzioni<br />
proposte in precedenza e le tecnologie utilizzate.<br />
• Capitolo 3: viene descritto nei particolari l’approccio al problema con<br />
le varie fasi per giungere alla soluzione.<br />
• Capitolo 4: viene mostrato il framework utilizzato e in particolare l’im-<br />
plementazione degli strumenti <strong>di</strong> selezione dei requisiti e <strong>di</strong> trasforma-<br />
zione in <strong>di</strong>agrammi UML.
• Capitolo 5: viene illustrata la creazione <strong>di</strong> un social network col metodo<br />
proposto e il suo sviluppo dalla selezione dei requisiti all’implementa-<br />
zione finale funzionante.<br />
• Capitolo 6: conclusione con considerazioni finali e idee per possibili<br />
sviluppi futuri.<br />
7
8 CAPITOLO 1. INTRODUZIONE
Capitolo 2<br />
Background<br />
In questo capitolo vengono presentate le tecnologie utilizzate sia nell’approc-<br />
cio al problema affrontato da questa tesi, che nella scelta architetturale ese-<br />
guita in fase <strong>di</strong> implementazione. Inoltre vengono descritti alcuni framework<br />
preesistenti nell’ambito dell’analisi dei requisiti.<br />
2.1 Goal <strong>di</strong>agram<br />
Un goal <strong>di</strong>agram [1] è un modello usato nella specifica dei requisiti costituito<br />
essenzialmente da una gerarchia <strong>di</strong> elementi, i goals, i quali rappresentano gli<br />
obiettivi che il sistema in esame deve avere con un dettaglio crescente mano<br />
a mano che si procede nella decomposizione. Al contrario, più si scende in<br />
profon<strong>di</strong>tà e più <strong>di</strong>minuisce il livello <strong>di</strong> astrazione.<br />
Pertanto si può affermare che un goal è raggiunto quando tutti i goals<br />
che lo compongono sono stati raggiunti.<br />
Il <strong>di</strong>agramma si sviluppa e cresce traducendo in obiettivi le richieste e<br />
le necessità degli stakeholders, analizzando sistemi precedenti o simili, ed<br />
elaborando e dettagliando sempre più i goals già inseriti.<br />
La modellazione tramite goals permette <strong>di</strong> concentrarsi sull’identificazio-<br />
ne dei problemi e sull’esplorazione delle soluzioni e delle alternative all’interno<br />
del sistema.<br />
Si possono in<strong>di</strong>viduare due principali tipi <strong>di</strong> goals: gli hard-goals e i soft-<br />
goals. Gli hard-goals in<strong>di</strong>cano i requisiti funzionali del sistema, ossia le fun-<br />
9
10 CAPITOLO 2. BACKGROUND<br />
zionalità che il sistema sarà in grado <strong>di</strong> fornire; i soft-goals, o fuzzy-goals, rap-<br />
presentano invece i requisiti non funzionali, e quin<strong>di</strong> la qualità, le prestazioni<br />
e l’usabilità in generale.<br />
Oltre ai goals nel <strong>di</strong>agramma trovano spazio i link, le linee <strong>di</strong> collegamento,<br />
che specificano se la <strong>di</strong>pendenza tra due goals è necessaria per il raggiungi-<br />
mento dell’obiettivo (AND) o rappresenta una alternativa o una funzionalità<br />
non obbligatoria (OR), e i tasks, ovvero le modalità per risolvere alcuni degli<br />
obiettivi.<br />
La modellazione dei requisiti tramite goals rientra quin<strong>di</strong> nella fase pre-<br />
liminare <strong>di</strong> progettazione del sistema ed è quella che precede e introduce i<br />
<strong>di</strong>agrammi UML.<br />
I punti <strong>di</strong> forza <strong>di</strong> questo approccio sono la leggibilità e l’intuitività, non-<br />
ché la possibilità <strong>di</strong> poter raffinare costantemente il modello e la visione<br />
d’insieme sull’intero sistema.<br />
2.1.1 Framework basati su goal <strong>di</strong>agram<br />
Vengono ora descritti due framework usati in fase progettuale che utilizzano<br />
il goal <strong>di</strong>agram come strumento principale per la specifica dei requisiti [2].<br />
2.1.2 KAOS<br />
KAOS [3], acronimo <strong>di</strong> Knowledge Acquisition in autOmated Specification<br />
o Keep All Objects Satisfied, è un approccio goal oriented alla specifica dei<br />
requisiti fornito <strong>di</strong> un ricco insieme <strong>di</strong> tecniche <strong>di</strong> analisi formali.<br />
Questo framework permette un ragionamento su <strong>di</strong>versi livelli: semifor-<br />
male per la modellazione e la strutturazione dei goals, qualitativo per la<br />
selezione delle alternative possibili, e formale quando occorre una riflessione<br />
più approfon<strong>di</strong>ta.<br />
L’approccio KAOS prevede una struttura a due livelli: lo strato esterno,<br />
costituito dalla parte grafica e semantica il cui scopo è quello <strong>di</strong> descrivere i<br />
concetti e le relazioni che li collegano, e lo strato interno, il quale definisce<br />
gli stessi concetti in modo formale.
2.1. GOAL DIAGRAM 11<br />
Oltre ai goals, il linguaggio definito da KAOS comprende altre ontolo-<br />
gie come reti semantiche, agenti, oggetti, linee temporali e operazioni da<br />
compiere sul sistema.<br />
Gli oggetti rappresentano entità, relazioni ed eventi e le loro istanze<br />
possono evolversi cambiando più volte il loro stato.<br />
Le operazioni sono relazioni <strong>di</strong> input e output fra gli oggetti, determinano<br />
un cambio <strong>di</strong> stato e possiedono precon<strong>di</strong>zioni, postcon<strong>di</strong>zioni e triggers per<br />
l’attivazione.<br />
Un agente è un tipo particolare <strong>di</strong> oggetto che si propone come un com-<br />
ponente attivo quale può essere una persona, un device o un software.<br />
Gli agenti non possono compiere operazioni su tutti gli oggetti del sistema<br />
ma solo su quelli appositamente definiti.<br />
Un goal è definito come una <strong>di</strong>chiarazione <strong>di</strong> obiettivi <strong>di</strong> un sistema la<br />
cui sod<strong>di</strong>sfazione in genere richiede la cooperazione <strong>di</strong> alcuni degli agenti che<br />
costituiscono tale sistema.<br />
I goals in KAOS possono riferirsi a dei servizi, functional goals, o alla<br />
qualità dei servizi, non-functional goals.<br />
I goals sono organizzati gerarchicamente secondo relazioni AND/OR e il<br />
raffinamento del <strong>di</strong>agramma ha termine quando ogni sottogoal è realizzabile<br />
da parte dell’agente assegnatogli. Per questo motivo ogni goal deve essere<br />
espresso in termini <strong>di</strong> con<strong>di</strong>zioni visibili e controllabili dall’agente.<br />
Riassumendo, il framework KAOS è costituito da questi elementi:<br />
• goal model: rappresentazione dei goals e degli agenti assegnati;<br />
• object model: un modello UML derivato dalle specifiche formali dei<br />
goals;<br />
• operation model: i servizi da fornire agli agenti software.<br />
Una mancanza <strong>di</strong> KAOS è un metodo per determinare l’impatto delle<br />
decisioni prese in fase <strong>di</strong> design sui requisiti non funzionali del sistema.
12 CAPITOLO 2. BACKGROUND<br />
2.1.3 i*/Tropos<br />
i* [4] è un framework <strong>di</strong> modellazione dei requisiti agent-oriented formato da<br />
due componenti principali: lo Strategic Dependency model (SD) e lo Strategic<br />
Rationale model (SR).<br />
Questo approccio è stato stu<strong>di</strong>ato per essere usato durante la fase iniziale<br />
della specifica dei requisiti e il rifinimento finale.<br />
All’inizio infatti viene adoperato per descrivere quello che sarà il sistema<br />
finale e l’ambiente in cui sarà inserito, un’analisi del dominio facilitata dal-<br />
l’inserimento degli stakeholders, dei loro obbiettivi e delle loro relazioni. Ciò<br />
permette <strong>di</strong> capire l’utilità e la necessità del sistema che si sta progettando.<br />
Nella fase finale della specifica invece serve per proporre i nuovi processi<br />
e le nuove configurazioni <strong>di</strong> sistema e la valutazioni <strong>di</strong> questi in relazione ai<br />
requisiti funzionali e non funzionali degli utenti.<br />
i* è basato su intentional actor e intentional dependency.<br />
Un actor può essere un agente, un ruolo o una posizione.<br />
Un agente è un attore concreto, quin<strong>di</strong> un umano o un sistema dalle<br />
capacità specifiche.<br />
Un ruolo è un attore astratto che incarna aspettative e responsabilità.<br />
Una posizione è invece un insieme <strong>di</strong> ruoli socialmente riconosciuti tipi-<br />
camente impersonati da un agente.<br />
Questa sud<strong>di</strong>visione risulta particolarmente utile nell’analisi del contesto<br />
sociale del sistema.<br />
Le <strong>di</strong>pendenze tra gli attori sono definite intenzionali se appaiono a segui-<br />
to del perseguimento degli obiettivi da parte <strong>di</strong> altri agenti. Una <strong>di</strong>pendenza<br />
può essere un goal, un softgoal, un task o una resource.<br />
Lo Strategic Dependency model è formato dalla rete <strong>di</strong> relazioni <strong>di</strong> <strong>di</strong>pen-<br />
denza esistenti fra gli attori. Esso permette l’analisi delle <strong>di</strong>pendenze <strong>di</strong>rette<br />
e in<strong>di</strong>rette <strong>di</strong> ogni attore e l’esplorazione delle possibilità e delle vulnerabilità.<br />
Lo Strategic Rationale model è usato per analizzare il fondamento logico<br />
che sta <strong>di</strong>etro ai processi del sistema. Il modello SR descrive in maniera più
2.2. UML 13<br />
approfon<strong>di</strong>ta le relazioni che compaiono nel SD model <strong>di</strong>chiarando per ogni<br />
agente cosa necessita e come deve fare per sod<strong>di</strong>sfare le proprie richieste.<br />
In questo modello trovano spazio i link <strong>di</strong> decomposition e <strong>di</strong> means-ends,<br />
i quali rispettivamente descrivono le relazioni <strong>di</strong> AND e OR tra le <strong>di</strong>pendenze<br />
prima elencate.<br />
Il framework i* è alla base della metodologia agent-oriented requirements-<br />
driven Tropos [5].<br />
L’approccio Tropos permette lo sviluppo <strong>di</strong> sistemi basati su agenti dall’a-<br />
nalisi iniziale dei requisiti, passando per il design architetturale fino al design<br />
dell’implementazione.<br />
Tropos utilizza la modellazione i* per la rappresentazione delle scelte e<br />
delle configurazioni fatte sul sistema.<br />
Inoltre possiede un linguaggio formale <strong>di</strong> specifica chiamato Formal Tro-<br />
pos che permette <strong>di</strong> aggiungere vincoli, invarianti, pre e post con<strong>di</strong>zioni e che<br />
consente <strong>di</strong> catturare più informazioni dai modelli rispetto a quanto fa i*.<br />
Inoltre è presente uno strumento <strong>di</strong> validazione dei modelli.<br />
2.2 UML<br />
UML (Unified Modeling Language) [6] è il linguaggio <strong>di</strong> modellazione e <strong>di</strong><br />
specifica standard nell’ingegneria del software controllato dallo OMG (Object<br />
Management Group) [7]. Esso è orientato alla programmazione ad oggetti e<br />
si colloca perfettamente tra la specifica dei requisiti e l’implementazione del<br />
sistema.<br />
Tramite l’insieme delle notazioni grafiche fornite da UML è possibile de-<br />
scrivere dei modelli che rappresentano tutti gli aspetti del ciclo produttivo<br />
del sistema, astraendo dal linguaggio scelto per l’implementazione dei vari<br />
componenti. Ciò avviene grazie alla varietà dei modelli <strong>di</strong>sponibili, ognuno<br />
specifico e in<strong>di</strong>cato per un preciso passo all’interno della progettazione.<br />
I principali modelli forniti da UML sono:<br />
• use case <strong>di</strong>agram: mostra le funzionalità del sistema dalla prospettiva
14 CAPITOLO 2. BACKGROUND<br />
<strong>di</strong> <strong>di</strong>versi attori quali ad esempio gli amministratori o gli utenti generici<br />
(aspetto comportamentale);<br />
• activity <strong>di</strong>agram: descrive il flusso <strong>di</strong> esecuzione delle varie operazioni<br />
che portano al raggiungimento <strong>di</strong> un obiettivo (aspetto comportamen-<br />
tale);<br />
• class <strong>di</strong>agram: descrive la struttura intera del sistema tramite classi,<br />
attributi, meto<strong>di</strong> e relazioni tra le classi (aspetto logico);<br />
• sequence <strong>di</strong>agram: mostra come gli oggetti comunicano tra loro scam-<br />
biandosi messaggi e il loro ciclo <strong>di</strong> vita (aspetto interattivo);<br />
• deployment <strong>di</strong>agram: descrive la tipologia <strong>di</strong> hardware che verrà utiliz-<br />
zata per implementare il sistema (aspetto fisico);<br />
Nel contesto <strong>di</strong> questa tesi è stato fatto utilizzo principalmente dei class<br />
<strong>di</strong>agrams e per questo motivo è giusto dettagliarne maggiormente le caratte-<br />
ristiche.<br />
Il class <strong>di</strong>agram rientra nella descrizione della struttura logica del sistema,<br />
rappresenta le entità in esso contenute e il modo in cui esse si relazionano<br />
tra loro. Nello specifico sono descritte le classi, coi loro attributi e meto<strong>di</strong>, e<br />
le associazioni che intercorrono tra queste.<br />
Una classe descrive un insieme <strong>di</strong> entità, chiamate oggetti o istanze della<br />
classe, che con<strong>di</strong>vidono le stesse caratteristiche e proprietà. Graficamente è<br />
rappresentata da un rettangolo contenente il nome della classe, autodescrit-<br />
tivo e con iniziale maiuscola, gli attributi che la descrivono e i meto<strong>di</strong> che<br />
possono essere invocati.<br />
Un attributo è una caratteristica comune a ogni istanza della classe ed è<br />
caratterizzato da:<br />
• visibilità: in<strong>di</strong>ca se l’attributo è visibile da altre classi o meno. In<br />
particolare l’attributo può essere pubblico (segno +) e quin<strong>di</strong> visibile a<br />
tutte le classi; privato (segno -), visibile solo all’interno della classe in<br />
cui è definito; protetto (segno #), visibile solo dalle classi ere<strong>di</strong>tarie;
2.2. UML 15<br />
• nome: nomi scritti in minuscolo e autodescrittivi;<br />
• tipo: il tipo <strong>di</strong> riferimento dell’attributo, ad esempio può essere String,<br />
Integer, Boolean o anche un’istanza <strong>di</strong> un’altra classe.<br />
Un metodo è un’operazione eseguita sull’istanza <strong>di</strong> una classe ed è carat-<br />
terizzato da nome e visibilità, come nel caso degli attributi, e da parametri,<br />
l’input fornito, e tipi <strong>di</strong> ritorno, l’output restituito.<br />
Altre entità importanti sono la classe astratta, la quale non può essere<br />
istanziata <strong>di</strong>rettamente poiché contiene solo attributi e alcune operazioni<br />
soltanto <strong>di</strong>chiarate, e pertanto deve essere implementata nei suoi meto<strong>di</strong> da<br />
un’altra classe, e l’interfaccia che presenta solo <strong>di</strong>chiarazioni <strong>di</strong> operazioni<br />
da implementare nelle classi che la estendono.<br />
Un’associazione è una relazione statica che lega tra <strong>di</strong> loro delle classi.<br />
La caratteristica più importante <strong>di</strong> una associazione è la molteplicità che<br />
in<strong>di</strong>ca il numero <strong>di</strong> istanze <strong>di</strong> una classe che sono coinvolte nella relazione.<br />
In particolare si possono avere le seguenti molteplicità:<br />
• 1 : nell’associazione è coinvolta una e una solo istanza della classe;<br />
• 0..1 : nell’associazione può essere coinvolta o meno una istanza della<br />
classe;<br />
• 0..* /1..* : possono essere coinvolte molte istanze, con un minimo <strong>di</strong><br />
nessuna o una rispettivamente;<br />
• 0..n/1..n: possono essere coinvolte al massimo n istanze;<br />
• n: sono coinvolte esattamente n istanze.<br />
Le associazioni possono essere descritte da un nome univoco ed essere<br />
navigabili da sinistra a destra, viceversa o in entrambe le <strong>di</strong>rezioni. Solita-<br />
mente l’associazione è binaria, coinvolge cioè solamente due classi, ma può<br />
essere anche n-aria o ad<strong>di</strong>rittura riflessiva quando è applicata tra istanze<br />
della medesima classe.<br />
Oltre alle semplici associazioni ne esistono alcune particolari:
16 CAPITOLO 2. BACKGROUND<br />
• generalizzazione: in<strong>di</strong>ca che una classe è una specializzazione <strong>di</strong> un’al-<br />
tra e che quin<strong>di</strong> ne possiede le caratteristiche <strong>di</strong> fondo;<br />
• aggregazione: in<strong>di</strong>ca che una classe è vista come l’insieme delle istanze<br />
<strong>di</strong> altre classi;<br />
• composizione: in<strong>di</strong>ca un caso particolare dell’aggregazione in cui ogni<br />
istanza delle classi componenti può appartenere a una sola istanza della<br />
classe composta.<br />
2.3 OODBMS<br />
Con OODBMS (Object Oriented DataBase Management System) [8] si in-<br />
tende una base <strong>di</strong> dati in cui l’informazione è rappresentata per mezzo <strong>di</strong><br />
oggetti come accade nei linguaggi <strong>di</strong> programmazione object-oriented.<br />
I database ad oggetti sono una evoluzione dei tra<strong>di</strong>zionali database rela-<br />
zionali e permettono una migliore integrazione con il para<strong>di</strong>gma <strong>di</strong> progetta-<br />
zione orientato agli oggetti. Infatti al giorno d’oggi le informazioni trattate<br />
sono sempre più dei tipi <strong>di</strong> dato complessi, come ad esempio file video, au-<br />
<strong>di</strong>o, immagini e grafici, i quali non sono supportati nativamente dai modelli<br />
relazionali in cui verrebbero rappresentati tramite più relazioni.<br />
Gli OODBMS invece garantiscono la consistenza <strong>di</strong> questi dati poiché sia<br />
il database che il linguaggio <strong>di</strong> programmazione utilizzano lo stesso modello<br />
<strong>di</strong> rappresentazione, evitando problemi <strong>di</strong> comunicazione. Inoltre non si deve<br />
progettare a parte la struttura della base <strong>di</strong> dati.<br />
Il vantaggio però più evidente dei database ad oggetti è la velocità perché<br />
l’accesso agli oggetti avviene tramite puntatori. Ciò permette il più delle<br />
volte <strong>di</strong> evitare il ricorso ad operazioni molto <strong>di</strong>spen<strong>di</strong>ose come quella del<br />
join che invece risulta fondamentale nei database relazionali.<br />
Altre caratteristiche sono l’accesso ai dati navigazionale, invece che <strong>di</strong>-<br />
chiarativo, e la possibilità <strong>di</strong> creare classi e tipi personalizzati dall’utente.
2.4. APACHE TOMCAT 17<br />
In un OODB ogni oggetto è caratterizzato da:<br />
• un identificatore (OID) che garantisce l’in<strong>di</strong>viduazione univoca all’in-<br />
terno del database e consente <strong>di</strong> realizzare riferimenti tra i vari oggetti;<br />
• uno stato, costituito dall’insieme dei valori assunti dagli attributi del-<br />
l’oggetto;<br />
• un comportamento, descritto dall’insieme dei meto<strong>di</strong> che possono essere<br />
eseguiti sull’oggetto.<br />
Gli oggetti sono associati ad un tipo, astrazione che descrive lo stato e il<br />
comportamento, e ad una classe che descrive l’implementazione <strong>di</strong> un tipo.<br />
Alla classe è associato un solo tipo e pertanto gli oggetti <strong>di</strong> una classe sono<br />
tra loro omogenei.<br />
Gli oggetti possono essere temporanei o persistenti. Poiché il modello è<br />
quello object-oriented, sono implementati i meccanismi <strong>di</strong> incapsulamento e<br />
<strong>di</strong> ere<strong>di</strong>tarietà, quest’ultima anche multipla dove consentita.<br />
Per quanto riguarda il linguaggio <strong>di</strong> interrogazione, oltre ai meto<strong>di</strong> speci-<br />
fici <strong>di</strong> ogni OODB, viene usato lo standard OQL (Object Query Language).<br />
2.4 Apache Tomcat<br />
Tomcat [9] è un web container open-source che permette l’esecuzione <strong>di</strong> ap-<br />
plicazioni sviluppate nel linguaggio Java. In particolare implementa le spe-<br />
cifiche Servlets e JSP definite da Sun Microsystems.<br />
Tomcat è composto dai seguenti tre componenti:<br />
• Catalina: è il servlet container, ambiente d’esecuzione delle servlet e<br />
delle jsp;<br />
• Coyote: è il componente <strong>di</strong> interfacciamento col protocollo HTTP, ri-<br />
mane in ascolto <strong>di</strong> richieste in entrata che inoltra all’engine <strong>di</strong> Tomcat<br />
dal quale, dopo l’esecuzione dell’operazione, viene ritornata la risposta<br />
da restituire al client.
18 CAPITOLO 2. BACKGROUND<br />
• Jasper: è un parser che si occupa <strong>di</strong> tradurre le jsp in servlets in modo<br />
tale che possano essere eseguite da Catalina. A runtime riconosce le<br />
jsp mo<strong>di</strong>ficate e le ricompila.<br />
Una servlet è una classe Java conforme al protocollo Java Servlet Api<br />
che permette <strong>di</strong> interagire <strong>di</strong>rettamente col meccanismo request/response <strong>di</strong><br />
HTTP.<br />
La Servlet estende la classe HttpServlet e implementa i due meto<strong>di</strong> do-<br />
Get(request, response) e doPost(request, response) per gestire rispettivamente<br />
le chiamate effettuate coi meto<strong>di</strong> get e post <strong>di</strong> HTTP.<br />
Lo scopo principale <strong>di</strong> una servlet è quello <strong>di</strong> recuperare i parametri d’in-<br />
gresso dalla request, eseguire l’operazione richiesta e scrivere l’html <strong>di</strong> rispo-<br />
sta sulla response.<br />
Una pagina JSP (Java Servlet Pages), detta template, è una pagina html<br />
in cui sono innestati brani <strong>di</strong> co<strong>di</strong>ce Java, chiamati scriptlet.<br />
Ciò agevola la leggibilità della struttura della pagina capovolgendo ciò<br />
che succede nella servlet. Quando una pagina jsp viene richiesta, il server la<br />
compila in una servlet e la esegue.<br />
Il cuore <strong>di</strong> ogni web application in Tomcat è la cartella WEB-INF. Essa<br />
contiene il file web.xml, il deployment descriptor, un file dal formato standard<br />
che configura la web application stessa. In esso sono in<strong>di</strong>cati i nomi e i<br />
percorsi delle servlets.<br />
Quando una servlet è invocata, il server ne crea una istanza in memoria<br />
soltanto la prima volta; infatti le successive chiamate alla medesima servlet<br />
vengono gestite tramite il meccanismo dei threads. Ne derivano prestazioni<br />
migliori poiché vi è una minore occupazione della memoria, si evita la crea-<br />
zione <strong>di</strong> più istanze e soprattutto si permette il riutilizzo degli oggetti creati<br />
dalla servlet.<br />
Poiché HTTP è un protocollo stateless, ossia non ha una memoria e non<br />
permette <strong>di</strong> verificare se una serie <strong>di</strong> richieste provengono da uno stesso client,<br />
le servlet e le jsp supportano il meccanismo della sessione e dei cookies per
2.5. ALTRE TECNOLOGIE 19<br />
memorizzare variabili e informazioni utili durante la navigazione dell’utente.<br />
Le servlet e le jsp implementano il pattern MVC (Model-View-Controller)<br />
fondato sulla separazione dei compiti che i componenti software devono avere:<br />
• model: rappresenta lo stato e le operazioni <strong>di</strong>sponibili;<br />
• view: definisce il modo attraverso il quale il modello deve essere pre-<br />
sentato all’utente;<br />
• controller: interpreta l’azione dell’utente e invoca le operazioni del<br />
model opportune.<br />
In una web application le servlet costituiscono il controller, le jsp la view e<br />
i java bean il model. Il vantaggio <strong>di</strong> questa architettura è che nei componenti<br />
<strong>di</strong> presentazione non avviene nessuna elaborazione e il loro unico scopo è<br />
quello <strong>di</strong> inserire il contenuto <strong>di</strong>namico all’interno della parte statica.<br />
2.5 Altre tecnologie<br />
Poiché un social network è a tutti gli effetti una web application, la sua<br />
interfaccia utente non può che essere sviluppata utilizzando i linguaggi e i<br />
framework tipici del web:<br />
• HTML: è il linguaggio <strong>di</strong> mark-up che permette la visualizzazione delle<br />
pagine web.<br />
• CSS: i fogli <strong>di</strong> stile (Cascade Style Sheet) sono i componenti che si<br />
occupano <strong>di</strong> gestire interamente la grafica degli elementi delle pagine<br />
web; usando i fogli CSS si scinde il contenuto dalla visualizzazione.<br />
• JavaScript: il linguaggio <strong>di</strong> scripting orientato agli oggetti che permette<br />
<strong>di</strong> interagire con gli elementi della pagina web scaricata nel browser da<br />
lato client.
20 CAPITOLO 2. BACKGROUND<br />
• AJAX : il framework (Asynchronous JavaScript and XML) che per-<br />
mette alle pagine caricate nel browser dell’utente <strong>di</strong> interagire in modo<br />
asincrono col server; ciò vuol <strong>di</strong>re che la pagina può continuare a scam-<br />
biare e ricevere informazioni senza che l’utente debba ricaricarla per<br />
intero.
Capitolo 3<br />
Approccio<br />
In questo capitolo viene descritto nei particolari il metodo proposto per la<br />
progettazione <strong>di</strong> una rete sociale, partendo da una visione d’insieme delle<br />
operazioni da compiere per proseguire poi con i singoli passaggi affrontati<br />
nei loro dettagli.<br />
3.1 Overview<br />
L’approccio adottato per la progettazione <strong>di</strong> un social network consiste <strong>di</strong> tre<br />
passaggi: la specifica dei requisiti, il design del sistema e l’implementazione.<br />
In Figura 3.1 è rappresentata la sequenza delle operazioni e per ognuna<br />
<strong>di</strong> essa è evidenziato se si tratta <strong>di</strong> una procedura automatica o necessita <strong>di</strong><br />
compiere operazioni manuali.<br />
La selezione dei requisiti avviene manualmente scegliendo tra quelli <strong>di</strong>-<br />
sponibili nel goal <strong>di</strong>agram. Per agevolare la selezione si è fatto ricorso a<br />
un tool in cui viene visualizzato il <strong>di</strong>agramma completo e da cui si possono<br />
effettuare le selezioni eliminando dal grafo i requisiti non necessari.<br />
Una volta ottenuto l’albero delle features si può procedere alla genera-<br />
zione delle classi UML. Ciò avviene in modo automatico tramite l’utilizzo<br />
<strong>di</strong> un piccolo software creato appositamente che mappa e associa le scelte<br />
precedentemente effettuate ai relativi pattern UML.<br />
21
22 CAPITOLO 3. APPROCCIO<br />
Figura 3.1: Approccio al problema<br />
I class <strong>di</strong>agram così generati sono visibili e raffinabili all’interno del soft-<br />
ware scelto per la gestione dei <strong>di</strong>agrammi UML.<br />
Se il design del sistema ottenuto risulta sod<strong>di</strong>sfacente si può passare<br />
all’implementazione generando il co<strong>di</strong>ce base delle classi.<br />
3.2 Requisiti<br />
Il primo passo che ha portato alla definizione dei requisiti propri <strong>di</strong> un social<br />
network è stato quello dell’analisi <strong>di</strong> sistemi sociali esistenti.<br />
E’ stata condotta un’indagine approfon<strong>di</strong>ta su varie decine <strong>di</strong> siti web<br />
con l’intento <strong>di</strong> in<strong>di</strong>viduare e classificare le caratteristiche comuni a tutti e<br />
segnalare le features uniche e particolari.<br />
I primi social network presi in considerazione sono stati quelli attualmente<br />
più blasonati, <strong>di</strong> carattere generale e che vantano un maggior numero <strong>di</strong><br />
iscritti.<br />
Ciò ha permesso l’in<strong>di</strong>viduazione dei pattern tipici e ricorrenti, la <strong>di</strong>stin-<br />
zione logica delle aree all’interno dei siti web e una prima elicitazione dei<br />
requisiti fondamentali.<br />
L’attenzione si è poi spostata gradualmente verso i social network incen-<br />
trati su <strong>di</strong> un argomento specifico e infine verso quelli minori.<br />
Questo l’elenco dei social network analizzati <strong>di</strong>visi per argomento:<br />
• a carattere generale: Facebook, Netlog, Google Buzz
3.2. REQUISITI 23<br />
• blog e micro-blogging: Twitter, Live Spaces, Tumblr, Jaiku, Xanga<br />
• business e mondo del lavoro: LinkedIn, Xing, Viadeo<br />
• video e multime<strong>di</strong>a: YouTube, Flixster<br />
• fotografia: Flickr, Fotolog, Faces, Sneppi<br />
• de<strong>di</strong>cati alla musica: MySpace, Last.fm, Blip.fm, Trig<br />
• libri e lettura: Anobii, weRead, Shelfari, GoodReads<br />
• arte e immagini: DeviantArt<br />
• viaggi: Wayn, TripAdvisor, Tripit<br />
• bookmarks: Delicious, Bibsonomy, Citeyoulike<br />
• basati su locazione: Foursquare, Gowalla, Brightkite<br />
Nella Tabella 3.1 è riportata la <strong>di</strong>stribuzione delle features più ricorrenti<br />
su alcuni dei social network presi in considerazione.<br />
Nella Tabella 3.2 sono visualizzate alcune features singolari e i social net-<br />
work che le implementano.<br />
I requisiti sono stati organizzati in aree logiche, raggruppandoli in base al<br />
loro scopo e funzionalità. Di seguito è riportata la lista dei gruppi dei gruppi<br />
e delle features, ognuna delle quali corredata da una breve descrizione:<br />
• Users Relations: raggruppa i requisiti che interessano le relazioni tra<br />
gli utenti all’interno del social network.<br />
– profile: ogni utente ha un proprio profilo contenente informazioni<br />
personali come ad esempio nome e cognome, età, sesso, e-mail,<br />
avatar, contatti <strong>di</strong> instant messagging, stato, breve descrizione. Il<br />
profilo è solitamente pubblico e visibile da tutti gli utenti registrati<br />
al social network.
24 CAPITOLO 3. APPROCCIO<br />
groups<br />
friends<br />
recommendations<br />
chat<br />
favorites<br />
rating<br />
Facebook * * * * * * * * * * *<br />
MySpace * * * * * * * *<br />
Netlog * * * * * * * * * * *<br />
Google Buzz * * * * * * * * * *<br />
Twitter * * * * * * * * * *<br />
Jaiku * * * * * * * * * *<br />
Live Spaces * * * * * * * *<br />
Xanga * * * * * * * * * *<br />
LinkedIn * * * * *<br />
Xing * * * * * * * * *<br />
Viadeo * * * * * *<br />
Blip.fm * * * * * * * *<br />
Last.fm * * * * * * * *<br />
Anobii * * * * * * * * *<br />
weRead * * * * * * * * * * *<br />
Shelfari * * * * * * * * * *<br />
Goodreads * * * * * * * * * * *<br />
Flickr * * * * * * * * *<br />
Fotolog * * * * * * * * * * *<br />
Faces * * * * * * * * * * *<br />
Sneppi * * * *<br />
YouTube * * * * * * * * * * *<br />
Flixster * * * * * * *<br />
DevianArt * * * * * * * * * *<br />
Wayn * * * * * * * * *<br />
reputation<br />
tags<br />
contests<br />
notifications<br />
customizations<br />
authorizations<br />
plugins<br />
Tabella 3.1: Features tipiche e ricorrenti dei social network<br />
mobile<br />
shop
3.2. REQUISITI 25<br />
features<br />
YouTube subscriptions<br />
Twitter geolocation<br />
Blip.fm props<br />
badges<br />
Anobii<br />
Facebook<br />
Foursquare<br />
data exportation<br />
wishlist<br />
fan<br />
poke<br />
gifts<br />
check-in<br />
badges<br />
geolocation<br />
Tabella 3.2: Features particolari <strong>di</strong> alcuni social network<br />
– friends: gli utenti possono richiedere l’amicizia <strong>di</strong> altri utenti<br />
iscritti al social network. A fronte <strong>di</strong> una richiesta <strong>di</strong> amicizia<br />
è possibile accettare o rifiutare tale richiesta. L’amicizia <strong>di</strong> un<br />
utente permette il libero accesso ai contenuti dell’utente amico e<br />
quin<strong>di</strong> la completa interazione.<br />
– groups: i gruppi sono aggregazioni <strong>di</strong> utenti collegati tra loro<br />
secondo un qualche criterio. Ogni utente può creare dei grup-<br />
pi. I gruppi possono essere pubblici, e quin<strong>di</strong> ognuno è libero <strong>di</strong><br />
iscriversi, o privati, e quin<strong>di</strong> l’iscrizione avviene solo su invito.<br />
– subscriptions: sottoscrizione che permette a un utente <strong>di</strong> seguire<br />
altri utenti senza essere necessariamente amici.<br />
• Users Interaction: raggruppa i requisiti che hanno a che fare con le<br />
interazioni <strong>di</strong>sponibili tra gli utenti.<br />
– props: i props sono entità che gli utenti si scambiano in segno <strong>di</strong><br />
riconoscenza e rispetto.
26 CAPITOLO 3. APPROCCIO<br />
– pokes: il poke consiste in una forma <strong>di</strong> saluto muto, un modo per<br />
attirare l’attenzione <strong>di</strong> un altro utente.<br />
– contests: concorsi a premi a cui possono partecipare tutti gli<br />
utenti, o quiz che permettono <strong>di</strong> guadagnare cre<strong>di</strong>ti.<br />
– badges: le badges sono simboli che denotano il raggiungimento<br />
<strong>di</strong> precisi obiettivi e traguar<strong>di</strong> all’interno del social network come<br />
ad esempio avere tante amicizie o aver creato un certo numero <strong>di</strong><br />
gruppi.<br />
– cre<strong>di</strong>ts: i cre<strong>di</strong>ti sono dei punti che vengono assegnati dal si-<br />
stema come ricompensa per qualcosa. Possono essere utilizzati<br />
all’interno del social network per avere dei benefici.<br />
– reputation: la reputazione è relativa all’utente e può essere asse-<br />
gnata dal sistema o dagli altri utenti.<br />
• Messages: raggruppa i requisiti relativi alla creazione e scambio <strong>di</strong><br />
informazioni.<br />
– posts: un post è un messaggio scritto da un utente per con<strong>di</strong>videre<br />
fatti personali, pensieri, opinioni o mostrare dei contenuti quali<br />
link, fotografie o video agli altri utenti.<br />
– guestbook: una bacheca relativa al profilo utente dove gli altri<br />
utenti possono lasciare messaggi generici, come un saluto o un<br />
invito a visualizzare i loro profili.<br />
– comments: i commenti sono dei messaggi <strong>di</strong> risposta a un post da<br />
parte <strong>di</strong> altri utenti.<br />
– inbox: è il gestore dei messaggi privati (<strong>di</strong>rect messages) e può<br />
integrare anche una casella email.<br />
– <strong>di</strong>rect messages: messaggi privati <strong>di</strong>retti solitamente a uno speci-<br />
fico utente. Vengono gestiti tramite l’inbox.<br />
– chat: la chat permette agli utenti <strong>di</strong> scambiare tra loro messaggi<br />
in tempo istantaneo. A <strong>di</strong>fferenza dei posts e dei commenti, i
3.2. REQUISITI 27<br />
messaggi scritti via chat sono visibili solo agli utenti che se li<br />
scambiano e non vengono in genere salvati.<br />
• Organization: raggruppa i requisiti a carattere organizzativo.<br />
– customizations: possibilità <strong>di</strong> mo<strong>di</strong>ficare graficamente le proprie<br />
pagine e organizzare la <strong>di</strong>sposizione dei propri contenuti.<br />
– authorizations: le autorizzazioni consentono un controllo sull’ac-<br />
cessibilità dei contenuti.<br />
– calendar: calendario con<strong>di</strong>viso con gli amici o col proprio gruppo<br />
in cui pianificare eventi.<br />
• System Actions: raggruppa i requisiti propri del sistema in generale.<br />
– search: funzione <strong>di</strong> ricerca a più livelli in base a tag, utenti,<br />
contenuti, zone, ecc.<br />
– stats: grafici e statistiche come ad esempio il numero <strong>di</strong> visualiz-<br />
zazioni del proprio profilo.<br />
– recommendations: le raccomandazioni sono amicizie o contenuti<br />
consigliati <strong>di</strong>rettamente dal sistema in base ai gusti e al profilo del-<br />
l’utente. Le raccomandazioni permettono <strong>di</strong> allargare la propria<br />
cerchia <strong>di</strong> amicizie e l’approfon<strong>di</strong>mento <strong>di</strong> argomenti.<br />
– activities: un resoconto delle azioni salienti dell’utente, ad esempio<br />
un elenco dei suoi contenuti preferiti o dei rating che ha assegnato<br />
<strong>di</strong> recente.<br />
– notifications: le notifiche sono effettuate dal sistema e ad esempio<br />
avvertono gli utenti dei nuovi contenuti inseriti dagli amici.<br />
– newsletters: le newsletters sono e-mail perio<strong>di</strong>che inviate dal siste-<br />
ma per informare gli utenti <strong>di</strong> novità, mo<strong>di</strong>fiche, concorsi e altre<br />
comunicazioni.<br />
• Contents Interaction: raggruppa i requisiti che permettono l’interazio-<br />
ne sui contenuti.
28 CAPITOLO 3. APPROCCIO<br />
– rating: il rating consiste nel dare un voto a un certo contenuto<br />
scegliendo tra una scala <strong>di</strong> valori.<br />
– favorites: i preferiti sono i contenuti propri o <strong>di</strong> altri utenti dei<br />
quali si vuole salvare un collegamento veloce in modo da poter<br />
facilitare la loro visione in futuro.<br />
– playlist: una playlist è un elenco, creato dall’utente, <strong>di</strong> video o<br />
canzoni che vengono eseguiti in successione.<br />
– tags: i tag sono parole chiave che vengono associate a un con-<br />
tenuto rendendone possibile la classificazione e la ricerca. I tag<br />
sono scelti dagli utenti in modo informale e costituiscono una<br />
categorizzazione alternativa.<br />
– upload: il servizio <strong>di</strong> upload permettere <strong>di</strong> caricare sul server i<br />
propri file multime<strong>di</strong>ali come ad esempio le proprie foto e video in<br />
modo tale da con<strong>di</strong>viderle con gli altri utenti.<br />
• Extensions: raggruppa i requisiti che permettono l’estensione delle<br />
funzionalità base del sistema.<br />
– mobile: supporto per gli smartphone e palmari, realizzato con<br />
interfacce web più leggere e con una visualizzazione stu<strong>di</strong>ata ap-<br />
positamente per schermi più piccoli.<br />
– check-in: il check-in è un modo per segnalare la propria posizione<br />
fisica, il luogo da dove si sta accedendo al social network. Basato<br />
su geolocazione.<br />
– plugins: i plugins o widgets sono estensioni e applicazioni interne<br />
o esterne al social network che ne arricchiscono le funzionalità.<br />
– import: importazione <strong>di</strong> dati dal pc o da altri siti al social network,<br />
ad esempio importazione dei contatti.<br />
– export: esportazione e salvataggio <strong>di</strong> dati in locale in vari formati.<br />
– shop: carrello per l’acquisto online <strong>di</strong> prodotti creati o trattati<br />
all’interno del social network.
3.3. DESIGN 29<br />
– gifts: regali che un utente può fare ad un altro. I gifts posso essere<br />
gratuiti oppure comprati spendendo i propri cre<strong>di</strong>ti o con moneta<br />
elettronica.<br />
– wishlist: una lista pubblica delle cose che si vorrebbero possedere.<br />
Utile per gli altri nel caso volessero fare un regalo all’utente.<br />
– synchronization: sincronizzazione <strong>di</strong> contenuti da postazioni <strong>di</strong>-<br />
verse.<br />
Sulla base <strong>di</strong> questa sud<strong>di</strong>visione delle features, e l’introduzione <strong>di</strong> una<br />
opportuna gerarchia tra le aree, è stato creato infine il goal <strong>di</strong>agram dei<br />
requisiti (Figura 3.2).<br />
In Figura 3.3 sono invece evidenziate le aree logiche.<br />
3.3 Design<br />
Dopo la selezione delle features e la mappatura automatica nei class <strong>di</strong>agrams,<br />
la fase <strong>di</strong> design prevede la visualizzazione del sistema finale all’interno del<br />
software <strong>di</strong> gestione UML scelto.<br />
I <strong>di</strong>agrammi sono organizzati in packages corrispondenti alle aree con cui<br />
sono state sud<strong>di</strong>vise le features nel goal <strong>di</strong>agram.<br />
Il punto <strong>di</strong> contatto tra tutti i pacchetti è la classe User che modella<br />
l’utente, in quanto l’utente è l’attore chiave all’interno della rete sociale.<br />
Nelle figure da Figura 3.4 a Figura 3.10 sono mostrati i <strong>di</strong>agrammi del<br />
social network completo <strong>di</strong> tutte le features.<br />
3.3.1 Relazioni fra gli utenti<br />
In Figura 3.4 è riportato il class <strong>di</strong>agram relativo alle relazioni tra gli utenti<br />
facenti parte <strong>di</strong> una rete sociale.<br />
La classe User contiene le informazioni essenziali <strong>di</strong> identificazione <strong>di</strong> un<br />
utente, quin<strong>di</strong> id ( assegnato dal sistema al momento della registrazione),<br />
username (univoca), password ed email (univoca).
30 CAPITOLO 3. APPROCCIO<br />
Figura 3.2: Goal <strong>di</strong>agram dei requisiti
3.3. DESIGN 31<br />
Figura 3.3: Mapping delle aree
32 CAPITOLO 3. APPROCCIO<br />
Figura 3.4: Users Relations class <strong>di</strong>agram<br />
Il profilo con le informazioni secondarie è rappresentato a parte dalla<br />
classe Profile in modo da poter essere ampliato con nuovi attributi in base<br />
alle proprie esigenze.<br />
La classe Friends contiene la lista degli amici e si occupa <strong>di</strong> gestire le<br />
richieste <strong>di</strong> amicizia tramite i meto<strong>di</strong> <strong>di</strong> cui è fornita. E’ infatti possibile<br />
richiedere l’amicizia ad un altro utente il quale potrà acconsentire o rifiutare<br />
la proposta.<br />
Groups è il gestore dei gruppi <strong>di</strong> cui l’utente è membro e permette l’i-<br />
stanziazione <strong>di</strong> un nuovo gruppo <strong>di</strong> cui si <strong>di</strong>venta amministratori. Il singolo<br />
gruppo è modellizzato dalla classe Group con le informazioni generali e la<br />
lista dei membri partecipanti.<br />
Completa il package la classe Subscriptions contenente la lista degli utenti<br />
dei quali si vuole ricevere aggiornamenti e la lista dei propri sottoscrittori.<br />
3.3.2 Interazione tra gli utenti<br />
La Figura 3.5 mostra la modellizzazione delle interazioni possibili tra gli<br />
utenti.<br />
L’utente può inviare e ricevere dei Poke (come in Facebook) tramite il
3.3. DESIGN 33<br />
gestore Pokes; può assegnare e ricevere Prop da altri utenti come segno <strong>di</strong> ap-<br />
prezzamento per i contenuti da lui con<strong>di</strong>visi attraverso la classe Props(come<br />
in Blip.fm); ha una lista delle Badge sbloccate e tramite la classe Contests<br />
gestisce i concorsi proposti dal social network e a cui vuol partecipare.<br />
La classe Cre<strong>di</strong>ts si occupa <strong>di</strong> gestire i Cre<strong>di</strong>t che l’utente guadagna e spen-<br />
de all’interno della rete sociale, tenendo in memoria le operazioni effettuate<br />
e i cre<strong>di</strong>ti attualmente <strong>di</strong>sponibili.<br />
Infine vi è la classe Reputation, specializzata da ReputationByUsers la<br />
quale permette agli altri utenti <strong>di</strong> assegnare un punteggio all’utente e da<br />
ReputationBySystem dove invece la reputazione viene calcolata automatica-<br />
mente dal sistema in base a dei criteri.<br />
3.3.3 Messaggi<br />
Nella Figura 3.6 è modellizzato lo scambio <strong>di</strong> messaggi e informazioni tra gli<br />
utenti.<br />
La classe Posts funziona come un blog personale dell’utente e contie-<br />
ne l’elenco dei Post da lui pubblicati. Sia il singolo post che il Guestbook<br />
permettono lo sviluppo <strong>di</strong> una <strong>di</strong>scussione tramite i Comment.<br />
La classe Inbox permette la ricezione e l’invio <strong>di</strong> messaggi privati verso<br />
gli utenti del social network, messaggi rappresentati da DirectMessage.<br />
E’ presente anche la Chat che mostra i contatti amici online con i quali è<br />
possibile interagire.<br />
Le classi Comment e DirectMessage specializzano la classe astratta Mes-<br />
sage alla quale aggiungono attributi e meto<strong>di</strong> specifici.<br />
3.3.4 Organizzazione<br />
In Figura 3.7 sono mostrati elementi utili per controllare aspetti organizzativi<br />
tra gli utenti e tra il rapporto degli utenti e il sistema.<br />
In particolare la classe Authorizations permette <strong>di</strong> controllare per ogni<br />
utente i contenuti a lui visibili e le aree a cui egli ha libero accesso.<br />
La classe Customizations gestisce i Setting, ovvero singole impostazio-
34 CAPITOLO 3. APPROCCIO<br />
Figura 3.5: Users Interaction class <strong>di</strong>agram
3.3. DESIGN 35<br />
Figura 3.6: Messages class <strong>di</strong>agram
36 CAPITOLO 3. APPROCCIO<br />
Figura 3.7: Organization class <strong>di</strong>agram<br />
ni configurabili dall’utente che mo<strong>di</strong>ficano il comportamento dell’interfaccia<br />
grafica o dei <strong>di</strong>versi componenti del sistema.<br />
Infine la classe Calendar rappresenta un calendario, che l’utente può<br />
tenere privato o con<strong>di</strong>viso con gli amici, in cui segnalare degli Event.<br />
3.3.5 Azioni del sistema<br />
La Figura 3.8 mostra le entità che arricchiscono le funzionalità del sistema.<br />
La classe Updates gestisce gli aggiornamenti da fornire all’utente <strong>di</strong>visi<br />
tra Notification, per segnalare eventi che lo possono interessare, Activity, che<br />
tengono traccia delle azioni da lui compiute, e Newsletter, che lo informano<br />
<strong>di</strong> novità all’interno del social network o gli forniscono un resoconto della sua<br />
esperienza all’interno della rete.<br />
La classe Recommendations si occupa invece <strong>di</strong> proporre all’utente nuove<br />
amicizie, gruppi o contenuti che possono piacergli.<br />
Le classi Stats e Search a <strong>di</strong>fferenza delle altre sono uniche per tutti gli<br />
utenti del sistema e permettono rispettivamente <strong>di</strong> calcolare statistiche <strong>di</strong><br />
vario genere e <strong>di</strong> effettuare ricerche secondo vari criteri quali ad esempio per<br />
nome utente, per gruppo o per un certo Tag.
3.3. DESIGN 37<br />
Figura 3.8: System Actions class <strong>di</strong>agram<br />
3.3.6 Interazione sui contenuti<br />
Nella Figura 3.9 sono descritte la gestione dei contenuti creati dall’utente e<br />
l’interazione possibile con essi.<br />
Tramite il gestore Contents l’utente può effettuare l’upload <strong>di</strong> video,<br />
immagini, au<strong>di</strong>o ai quali corrisponderà un oggetto <strong>di</strong> tipo Content.<br />
Questi contenuti possono essere salvati in una lista <strong>di</strong> favoriti con la<br />
classeFavorites o essere organizzati in <strong>di</strong>verse Playlist che possono essere<br />
con<strong>di</strong>vise anche con gli altri utenti.<br />
Sia le Playlist che i singoli Content sono forniti <strong>di</strong> una classe Rating<br />
attravero cui gli utenti possono esprimere il loro gra<strong>di</strong>mento, e da una lista<br />
<strong>di</strong> Tag, un insieme <strong>di</strong> parole chiave inserite dall’autore del contenuto che ne<br />
permettono la ricerca e la classificazione.
38 CAPITOLO 3. APPROCCIO<br />
Figura 3.9: Contents Interaction class <strong>di</strong>agram<br />
3.3.7 Estensioni del sistema<br />
La Figura 3.10 illustra le estensioni che possono arricchire il social network,<br />
ampliarlo e renderlo maggiormente accessibile.<br />
Il gestore Plugins detiene il controllo dei <strong>di</strong>versi Plugin installabili, atti-<br />
vabili o <strong>di</strong>sattivabili da parte dell’utente.<br />
La classe Mobile permette la registrazione dei <strong>di</strong>spositivi mobili, Devi-<br />
ce, attraverso i quali l’utente può accedere al sistema, e può integrare il<br />
meccanismo del Checkin con geolocazione (tipico ad esempio <strong>di</strong> Foursquare).<br />
La classe Shop realizza il meccanismo del carrello virtuale col quale è
3.4. IMPLEMENTAZIONE 39<br />
possibile comprare degli Item online sia attraverso valuta elettronica che<br />
attraverso i cre<strong>di</strong>ti guadagnati nel social network.<br />
Le classi Gift e Wishlist completano lo shop permettendo agli utenti <strong>di</strong><br />
fare regali agli amici e <strong>di</strong> elencare i prodotti che si vorrebbe avere.<br />
La classe Import e la classe Export consentono rispettivamente <strong>di</strong> impor-<br />
tare ed esportare dati <strong>di</strong> vario genere e in vari formati dal social network,<br />
mentre la classe Synchronization permette l’aggiornamento e la sincronizza-<br />
zione delle informazioni nel caso in cui l’accesso alla rete sociale avvenga da<br />
più postazioni.<br />
3.4 Implementazione<br />
L’implementazione ha inizio dal momento in cui si è sod<strong>di</strong>sfatti del design<br />
ottenuto e si è sicuri che esso sia completo e coerente con gli obiettivi preposti.<br />
Come base <strong>di</strong> partenza si può procedere con la generazione automatica,<br />
se <strong>di</strong>sponibile nel tool <strong>di</strong> gestione UML, delle <strong>di</strong>chiarazioni delle classi e delle<br />
associazioni che le legano, e partire quin<strong>di</strong> con l’implementazione dei meto<strong>di</strong>.<br />
Per come è stata pensato, questo approccio prevede che le classi costitui-<br />
scano sia la logica <strong>di</strong> controllo che il modello dei dati da salvare nel database.<br />
Ciò è possibile avendo scelto <strong>di</strong> usare un database ad oggetti.<br />
Poiché un social network è una web application, risulta necessario creare<br />
altri componenti <strong>di</strong> controllo che andranno a costituire lo strato superiore<br />
della logica <strong>di</strong> sistema, occupandosi <strong>di</strong> rispondere alle richieste http invocando<br />
i meto<strong>di</strong> forniti dagli oggetti dello strato inferiore, e <strong>di</strong> restituire le pagine<br />
jsp opportune.
40 CAPITOLO 3. APPROCCIO<br />
Figura 3.10: Extensions class <strong>di</strong>agram
Capitolo 4<br />
Implementazione<br />
In questo capitolo vengono introdotti e descritti gli strumenti software che<br />
costituiscono il framework della progettazione <strong>di</strong> una rete sociale proposto<br />
da questa tesi.<br />
4.1 Overview<br />
In Figura 4.1 è mostrata l’interazione tra i <strong>di</strong>versi tool scelti per la proget-<br />
tazione.<br />
Figura 4.1: Framework usato<br />
GR-Tool ed OpenOME sono due programmi usati nella progettazione<br />
goal-oriented che consentono la creazione <strong>di</strong> goal <strong>di</strong>agram e la verifica delle<br />
alternative possibili.<br />
41
42 CAPITOLO 4. IMPLEMENTAZIONE<br />
La fase iniziale <strong>di</strong> selezione viene quin<strong>di</strong> effettuata caricando il <strong>di</strong>agramma<br />
dei goals in uno <strong>di</strong> questi strumenti e in esso viene eseguita la scelta delle<br />
features.<br />
Il controllo passa poi a Goals2UML, un tool <strong>di</strong> supporto scritto appo-<br />
sitamente nell’ambito <strong>di</strong> questa tesi, il quale si occupa della mappatura<br />
automatica delle features selezionate sui class <strong>di</strong>agrams.<br />
Infine utilizzando ArgoUML, software <strong>di</strong> gestione UML, si procede alla<br />
visione e alla rifinitura del design operando sui class <strong>di</strong>agrams.<br />
4.2 Selezione delle features<br />
Per la creazione del goal <strong>di</strong>agram dei requisiti e per agevolarne la successiva<br />
selezione si è fatto uso dello strumento <strong>di</strong> goal reasoning GR-Tool [10].<br />
Figura 4.2: GR-Tool: goal <strong>di</strong>agram<br />
Il tool presenta una interfaccia semplice e intuitiva con cui è possibile<br />
creare il goal <strong>di</strong>agram (Figura 4.2).
4.3. MAPPATURA DELLE CLASSI 43<br />
La scelta delle features avviene tramite l’eliminazione dei goals non ne-<br />
cessari dal modello semplicemente selezionandoli e cliccando sul tasto <strong>di</strong><br />
eliminazione dal modello.<br />
Il <strong>di</strong>agramma risultante a questo punto può essere salvato e si può pro-<br />
cedere alla fase <strong>di</strong> mappatura delle classi.<br />
Come alternativa per la selezione dei goals viene supportato anche Ope-<br />
nOME [11], un tool che rientra nella progettazione dei requisiti all’interno<br />
del framework Tropos.<br />
Per entrambi gli strumenti è <strong>di</strong>sponibile il goal <strong>di</strong>agram completo delle<br />
features da cui iniziare la progettazione del social network desiderato.<br />
4.3 Mappatura delle classi<br />
Allo scopo <strong>di</strong> effettuare automaticamente il mapping delle features selezionate<br />
con GR-Tool o OpenOME sui class <strong>di</strong>agrams UML è stato creato apposita-<br />
mente in linguaggio Java il tool Goals2UML.<br />
Esso si frappone tra la selezione dei requisiti e il raffinamento UML dando<br />
un senso <strong>di</strong> continuità all’azione <strong>di</strong> progettazione e velocizzando le operazioni.<br />
Il compito <strong>di</strong> questo strumento è quello <strong>di</strong> analizzare le selezioni effettuate<br />
sul goal <strong>di</strong>agram e associare a ogni scelta le classi UML coinvolte tramite<br />
regole descritte in un file xml <strong>di</strong> configurazione.<br />
Questo file <strong>di</strong> configurazione ha il ruolo chiave nella mappatura poiché<br />
specifica per ogni feature le classi necessarie per sod<strong>di</strong>sfarlo, garantendo l’a-<br />
dempimento dei requisiti e la stabilità finale del sistema.<br />
La logica d’azione del programma è stata <strong>di</strong>visa in due parti.<br />
Nella prima parte vi è la lettura del goal <strong>di</strong>agram generato da GR-Tool<br />
da cui viene estratta la lista delle scelte effettuate.<br />
La lista viene quin<strong>di</strong> confrontata col file <strong>di</strong> configurazione e il risultato è<br />
l’elenco dei nominativi delle classi <strong>di</strong> cui il sistema avrà bisogno.<br />
La seconda parte ha il compito della vera e propria mappatura.
44 CAPITOLO 4. IMPLEMENTAZIONE<br />
Figura 4.3: Goals2UML: lista delle features selezionate<br />
Innanzitutto viene caricato il file contenente i class <strong>di</strong>agrams UML com-<br />
pleti e successivamente da questo vengono rimosse le classi e le associazioni,<br />
ad esse legate, che non compaiono nell’elenco e che quin<strong>di</strong> non risultano più<br />
necessarie.<br />
A livello <strong>di</strong> co<strong>di</strong>ce il programma si basa sulla creazione <strong>di</strong> alberi DOM a<br />
partire dai file xml coinvolti: quello <strong>di</strong> configurazione e quello contenente i<br />
class <strong>di</strong>agrams UML.<br />
In sintesi il comportamento <strong>di</strong> Goals2UML è assimilabile a quello <strong>di</strong> un<br />
parser xml.<br />
Una volta che l’albero DOM dei class <strong>di</strong>agrams è caricato in memoria,<br />
esso viene mo<strong>di</strong>ficato togliendo i no<strong>di</strong> non necessari e quin<strong>di</strong> salvato su un<br />
nuovo file.<br />
Nel caso si aggiungano nuove features al goal <strong>di</strong>agram, per poter usare<br />
questo tool basta soltanto mo<strong>di</strong>ficare il file xml <strong>di</strong> configurazione aggiungen-
4.4. GESTIONE UML 45<br />
do le relazioni <strong>di</strong> <strong>di</strong>pendenza tra le nuove classi e fornire il nuovo file dei class<br />
<strong>di</strong>agrams aggiornato.<br />
A livello <strong>di</strong> interfaccia utente il funzionamento <strong>di</strong> Goals2UML è molto<br />
semplice (Figura 4.3).<br />
Una volta lanciato il tool si può caricare il goal <strong>di</strong>agram cliccando sul<br />
bottone ’Load Goals’. Sono supportati sia i file generati con GR-Tool che<br />
con OpenOME.<br />
Scelto il file da analizzare, il programma esegue la prima scansione e<br />
mostra in finestra le features che sono state selezionate.<br />
Se si è sod<strong>di</strong>sfatti si può procede con la mappatura su class <strong>di</strong>agrams<br />
cliccando il tasto ’Generate UML’.<br />
Dopo aver specificato dove salvare il nuovo file, esso può essere aperto<br />
con ArgoUML e da lì continuare la progettazione.<br />
4.4 Gestione UML<br />
Per la progettazione del design, la creazione e la visualizzazione dei class<br />
<strong>di</strong>agrams la scelta è ricaduta su ArgoUML [12], strumento <strong>di</strong> modellazione<br />
UML conforme agli standard del linguaggio, multi-piattaforma e open-source.<br />
Dopo aver caricato il file generato tramite Goals2UML sono visibili i class<br />
<strong>di</strong>agrams che modellizzano il sistema (Figura 4.4).<br />
Essi compaiono organizzati nei packages che rispettano la <strong>di</strong>stinzione in<br />
aree logiche effettuata in principio e mantenuta in tutti i passaggi precedenti.<br />
Per ogni classe compaiono <strong>di</strong> default gli attributi e le <strong>di</strong>chiarazioni dei<br />
meto<strong>di</strong> che descrivono il comportamento base del sistema, esattamente come<br />
illustrati in precedenza nella presentazione del design nel capitolo de<strong>di</strong>cato<br />
all’approccio.<br />
Tramite ArgoUML si può raffinare il design aggiungendo, se occorre, nuo-<br />
ve classi e associazioni o mo<strong>di</strong>ficando e arricchendo quelle offerte.
46 CAPITOLO 4. IMPLEMENTAZIONE<br />
Figura 4.4: ArgoUML: class <strong>di</strong>agram<br />
Una utile funzionalità <strong>di</strong> ArgoUML permette infine la generazione auto-<br />
matica del co<strong>di</strong>ce dell’intero progetto nel linguaggio Java.
Capitolo 5<br />
PoliBook<br />
In questo capitolo viene descritta la realizzazione <strong>di</strong> un social network secondo<br />
l’approccio proposto da questa tesi seguendo tutte le fasi dalla selezione dei<br />
requisiti, al design fino all’implementazione finale usando le tecnologie e gli<br />
strumenti illustrati nei capitoli precedenti.<br />
5.1 Obiettivo<br />
L’obiettivo è quello <strong>di</strong> realizzare PoliBook, un ipotetico social network de<strong>di</strong>-<br />
cato agli studenti del <strong>Politecnico</strong> <strong>di</strong> <strong>Milano</strong>, dove gli utenti possano perso-<br />
nalizzare il proprio profilo, estendere le proprie amicizie online, aggregarsi in<br />
gruppi e scambiare informazioni.<br />
Inoltre vogliamo che sia presente un sistema <strong>di</strong> aggiornamenti, notifiche<br />
e rating.<br />
5.2 Architettura<br />
Trattandosi <strong>di</strong> una web application, come architettura si è scelto <strong>di</strong> usare<br />
l’ambiente Java e in particolare il web container Tomcat con servlet e jsp.<br />
Per il database la scelta è caduta su Db4object [13], un database ad oggetti<br />
open-source dotato anche <strong>di</strong> interfaccia Java.<br />
Db4o supporta il multi-threa<strong>di</strong>ng e tre <strong>di</strong>versi meto<strong>di</strong> <strong>di</strong> query: Query-<br />
By-Example (QBE), Native Queries (NQ) e SODA API.<br />
47
48 CAPITOLO 5. POLIBOOK<br />
5.3 Realizzazione<br />
Figura 5.1: Architettura<br />
Vengono ora descritte passo per passo le azioni che hanno portato alla rea-<br />
lizzazione del social network PoliBook.<br />
5.3.1 Scelta dei requisiti<br />
Il primo passo da compiere è la definizione dei requisiti che il social network<br />
dovrà avere.<br />
Il primo strumento da utilizzare è quin<strong>di</strong> GR-Tool col quale viene caricato<br />
il goal-<strong>di</strong>agram predefinito contenente tutte le features <strong>di</strong>sponibili.<br />
Come features <strong>di</strong> PoliBook sono state selezionate:<br />
• Profile, Friends e Groups come interazione fra gli utenti;<br />
• Posts, Guestbook, Comments, Inbox e DirectMessages dal ramo relativo<br />
ai messaggi;
5.3. REALIZZAZIONE 49<br />
• Authorizations dall’organizzazione;<br />
• Updates, Activities e Notifications dalle azioni <strong>di</strong> sistema;<br />
• Rating dall’interazione sui contenuti.<br />
Una volta eliminati dal <strong>di</strong>agramma tutti i goals non necessari si salva il<br />
goal <strong>di</strong>agram ottenuto.<br />
La fase successiva consiste nel mappare le features sui class <strong>di</strong>agram.<br />
Si lancia allora il tool Goals2UML, vi si carica il goal <strong>di</strong>agram, si verificano<br />
le scelte fatte e infine si procede alla generazione dei modelli UML.<br />
5.3.2 Design e rifinitura<br />
Dopo aver aperto il progetto ArgoUML generato con Goals2UML si possono<br />
visualizzare i class <strong>di</strong>agrams per la rifinitura del design.<br />
Nel package ContentsInteraction si nota che la classe Rating è associata<br />
alla classe Content che modellizza un generico contenuto creato o caricato<br />
dall’utente.<br />
Nel caso <strong>di</strong> PoliBook gli unici contenuti sono i post e i commenti e per<br />
questa ragione si crea l’associazione tra Post e Rating e tra Comment e<br />
Rating nel package Messages (Figura 5.2).<br />
Nel package ContentsInteractions si possono invece eliminare le classi<br />
Contents e Content.<br />
Il design a questo punto risulta sod<strong>di</strong>sfacente e si può procedere verso<br />
l’implementazione.<br />
Tramite la funzione fornita da ArgoUML vengono generate le <strong>di</strong>chiara-<br />
zioni delle classi e associazioni coinvolte andando a costituire il progetto <strong>di</strong><br />
partenza dell’IDE preferito, ad esempio Eclipse.<br />
5.3.3 Implementazione e interfaccia grafica<br />
Nel corso dell’implementazione si è fatto riferimento al pattern MVC in cui<br />
le servlet svolgono il ruolo <strong>di</strong> controller, le jsp quello <strong>di</strong> visualizzazione e le
50 CAPITOLO 5. POLIBOOK<br />
Figura 5.2: Rifinitura del class <strong>di</strong>agram<br />
classi progettate in fase <strong>di</strong> design il modello dei dati.<br />
La logica <strong>di</strong> controllo è stata sud<strong>di</strong>visa in due strati.<br />
Il primo strato ha il compito <strong>di</strong> interfacciarsi con le richieste http dell’u-<br />
tente, invocare i meto<strong>di</strong> offerti dal secondo strato e restituire la visualizza-<br />
zione corrispondente.<br />
Essenzialmente questo livello è formato dalle due classi Loader e Up-<br />
dater che estendono l’interfaccia HttpServlet e implementano i meto<strong>di</strong> do-<br />
Get(request, response) e doPost(request, response) tramite i quali gestiscono<br />
le requests.<br />
In particolare la classe Loader si occupa <strong>di</strong> gestire le requests, interrogare<br />
il database, caricare i dati e restituire la pagina jsp giusta.<br />
La classe Updater si preoccupa <strong>di</strong> mo<strong>di</strong>ficare i dati già presenti e <strong>di</strong> creare<br />
nuovi oggetti, dopo<strong>di</strong>ché cede il controllo al Loader.<br />
Il secondo strato invece è formato dalle classi definite in fase <strong>di</strong> design e<br />
si basa sui meto<strong>di</strong> da esse forniti.
5.3. REALIZZAZIONE 51<br />
Figura 5.3: Homepage <strong>di</strong> PoliBook<br />
Il compito della visualizzazione, come detto, è svolto dalle pagine jsp che<br />
ricevono i contenuti salvati in sessione dalle servlet e li presentano all’utente<br />
tramite html e i fogli <strong>di</strong> stile css.<br />
Per quanto riguarda il modello dei dati che costituiscono il database, esso<br />
coincide con la logica del secondo strato dal momento che i meto<strong>di</strong> delle clas-<br />
si provvedono a interagire con la base <strong>di</strong> dati a seguito della loro invocazione.<br />
Per interloquire col database ad oggetti è stata creata una classe appo-<br />
sita, DBManager che implementa le query necessarie definite nell’interfaccia<br />
DBMethods.<br />
In questo modo risulta possibile sostituire il database con un altro ag-<br />
giornando solamente i meto<strong>di</strong> implementati in DBManager senza andare a<br />
mo<strong>di</strong>ficare il co<strong>di</strong>ce <strong>di</strong> altre classi.
52 CAPITOLO 5. POLIBOOK<br />
Figura 5.4: Menu principale<br />
Altro compito importante della classe DBManager è quello <strong>di</strong> gestire l’ac-<br />
cesso concorrente al database.<br />
Per quanto riguarda la realizzazione dell’interfaccia grafica si è fatto uso<br />
dei fogli <strong>di</strong> stile css, javascript e <strong>di</strong> ajax.<br />
Collegandosi a PoliBook viene mostrata la pagina login.jsp, la quale per-<br />
mette <strong>di</strong> registrare una nuova utenza o <strong>di</strong> effettuare il login se si è già membri<br />
del social network.<br />
Nei campi <strong>di</strong> registrazione viene effettuato un controllo <strong>di</strong> vali<strong>di</strong>tà iniziale<br />
con javascript mentre sfruttando la tecnologia ajax viene mostrata la <strong>di</strong>spo-<br />
nibilità dell’username scelto.<br />
Una volta autenticati dal sistema viene presentata la pagina principale,<br />
home.jsp (Figura 5.3), dove sono presenti l’elenco degli ultimi post pubbli-<br />
cati dagli amici, le notifiche, che informano l’utente <strong>di</strong> amicizie confermate o<br />
rifiutate, nuovi messaggi privati o commenti, e la lista delle attività salienti<br />
e delle azioni compiute all’interno della rete sociale.<br />
Il menu principale (Figura 5.4) è fisso per ogni pagina e consente in ogni<br />
momento <strong>di</strong> navigare tra le varie sezioni del social network, mentre il menu<br />
secondario varia in base alla pagina visualizzata e consente <strong>di</strong> eseguire azioni
5.3. REALIZZAZIONE 53<br />
Figura 5.5: Profilo dell’utente<br />
più specifiche relative al contesto in cui ci si trova.<br />
In particolare il menu principale permette <strong>di</strong> raggiungere la homepage,<br />
i propri profilo, guestbook e blog, la pagina degli amici e quella dei propri<br />
gruppi, la pagina <strong>di</strong> tutti gli utenti e <strong>di</strong> tutti i gruppi esistenti, l’inbox e la<br />
possibilità <strong>di</strong> effettuare il logout.<br />
Ogni utente ha il proprio profilo personale (Figura 5.5) in cui compaiono<br />
l’avatar, le informazioni personali, le sue amicizie e i gruppi <strong>di</strong> cui è membro.<br />
profili.<br />
Cliccando su <strong>di</strong> un amico o un gruppo è possibile raggiungere i rispettivi<br />
Nella pagina <strong>di</strong> profilo <strong>di</strong> un utente, tramite il menu secondario è possibile<br />
chiedere o rimuovere l’amicizia, mandare un messaggio privato, visitare il<br />
guestbook (Figura 5.8) e leggere il suo blog.<br />
In quest’ultimo caso bisogna avere l’autorizzazione che viene concessa se
54 CAPITOLO 5. POLIBOOK<br />
si è amici dell’utente.<br />
Figura 5.6: Lista degli amici<br />
La pagina myfriends.jsp (Figura 5.6) consente <strong>di</strong> visualizzare le proprie<br />
amicizie e <strong>di</strong> gestire le richieste <strong>di</strong> amicizia in arrivo da parte <strong>di</strong> altri utenti,<br />
accettandole o rifiutandole, e quelle da lui chieste e ancora in attesa <strong>di</strong> con-<br />
ferma (Figura 5.7).<br />
Sia nel guestbook che nei post (Figura 5.9) si possono lasciare dei com-<br />
menti e partecipare alle <strong>di</strong>scussioni che lì nascono e si sviluppano.<br />
Per i commenti e i post è stato implementato un sistema <strong>di</strong> rating che<br />
permette agli utenti <strong>di</strong> esprimere il proprio gra<strong>di</strong>mento assegnando un voto<br />
positivo o negativo.<br />
La pagina posts.jsp corrisponde ad un blog in cui si possono scrivere e<br />
pubblicare nuovi post o mo<strong>di</strong>ficare e cancellare quelli già presenti se si è<br />
autori.<br />
Vi sono poi le pagine users.jsp e groups.jsp nelle quali sono elencati rispet-
5.3. REALIZZAZIONE 55<br />
Figura 5.7: Gestione delle amicizie<br />
tivamente tutti gli utenti e tutti i gruppi (Figura 5.10) presenti su PoliBook<br />
e per ognuno <strong>di</strong> essi è possibile visitare il profilo de<strong>di</strong>cato.<br />
Per ogni gruppo è mostrato il logo, la descrizione e gli utenti che ne<br />
fanno parte e dal menu secondario si può scegliere <strong>di</strong> <strong>di</strong>ventarne membri o <strong>di</strong><br />
lasciarlo.<br />
Vi è poi la pagina de<strong>di</strong>cata ai propri gruppi, mygroups.jsp in cui è possibile<br />
crearne uno nuovo <strong>di</strong>ventandone amministratore.<br />
L’inbox funziona come una casella email e permette <strong>di</strong> inviare, ricevere e<br />
gestire i messaggi privati all’interno del social network.<br />
I nuovi messaggi in arrivo vengono segnalati attraverso le notifiche nella<br />
homepage ed evidenziati graficamente nella lista dei messaggi in arrivo nella<br />
inbox.
56 CAPITOLO 5. POLIBOOK<br />
5.4 Valutazioni<br />
Figura 5.8: Guestbook<br />
La creazione del social network sopra descritto ha messo in evidenza i van-<br />
taggi e gli svantaggi dell’approccio proposto in questa tesi.<br />
Poiché è necessario progettare a priori tutta la parte <strong>di</strong> design, appare<br />
evidente che occorre un tempo iniziale <strong>di</strong> progettazione del sistema, il qua-<br />
le può variare sensibilmente a seconda del livello <strong>di</strong> dettaglio che si vuole<br />
ottenere.<br />
In questo caso si è voluto approfon<strong>di</strong>re maggiormente i meccanismi più<br />
tipici riscontrati nelle reti sociali, lasciando un poco più astratti quelli meno<br />
<strong>di</strong>ffusi.<br />
Una volta superata questa fase il meccanismo <strong>di</strong> selezione e rifinitura ri-<br />
sulta imme<strong>di</strong>ato e veloce, grazie al mapping automatico, e anche abbastanza<br />
flessibile nella mo<strong>di</strong>fica o aggiunta <strong>di</strong> ulteriori classi, meto<strong>di</strong> o attributi.<br />
La parte <strong>di</strong> implementazione è quella che ha necessitato <strong>di</strong> maggior tempo<br />
per essere portata a termine.<br />
Avendo prestato la dovuta attenzione in fase <strong>di</strong> design, l’implementazione
5.4. VALUTAZIONI 57<br />
Figura 5.9: Esempio <strong>di</strong> post<br />
delle classi e dei meto<strong>di</strong> è risultata abbastanza veloce ed efficace.<br />
Quello che maggiormente ha inciso sul tempo è stata invece la realizza-<br />
zione dell’interfaccia web con la parte grafica, e il debugging.<br />
In Tabella 5.1 sono mostrate le tempistiche qualitative relative allo svi-<br />
luppo e all’implementazione <strong>di</strong> ogni feature <strong>di</strong> PoliBook.<br />
I tempi nella colonna classes comprendono la rifinitura manuale del co<strong>di</strong>ce<br />
generato con ArgoUML, l’implementazione dei meto<strong>di</strong> e la scrittura delle<br />
query al database relative alla specifica classe.<br />
Si tratta della logica <strong>di</strong> secondo livello costituita dalle classi mappate in<br />
automatico ed esaminate in fase <strong>di</strong> design.
58 CAPITOLO 5. POLIBOOK<br />
Figura 5.10: Profilo del gruppo<br />
La colonna UI invece elenca i tempi dello sviluppo e della realizzazio-<br />
ne dell’interfaccia grafica, quin<strong>di</strong> la logica del primo strato, costituita dalle<br />
pagine jsp e dalle servlet coinvolte nel caricamento dei dati.<br />
Questa parte è stata co<strong>di</strong>ficata tutta manualmente poiché non coperta<br />
dall’approccio, dal momento che essa può variare sensibilmente sia in base alle<br />
features scelte che in base all’obiettivo finale del social network desiderato.<br />
Sono poi elencati i tempi totali de<strong>di</strong>cati ad ogni singola features e infine<br />
le tempistiche globali.<br />
Su un totale <strong>di</strong> circa 55 ore risulta che il 32% è stato de<strong>di</strong>cato all’imple-<br />
mentazione delle classi mentre ben il 68% all’interfaccia web.<br />
Nella Tabella 5.2 sono mostrate numericamente le righe <strong>di</strong> co<strong>di</strong>ce delle<br />
classi implementate, <strong>di</strong>stinguendo tra le righe generate in automatico e quelle<br />
aggiunte manualmente.<br />
Per ogni classe le righe <strong>di</strong> co<strong>di</strong>ce generate automaticamente sono quelle<br />
nella colonna auto, derivanti da ArgoUML, alle quali si possono aggiungere<br />
quelle dei meto<strong>di</strong> getters and setters generabili con Eclipse, o IDE equivalenti<br />
che <strong>di</strong>spongano <strong>di</strong> tale funzione, rappresentate nella colonna get/set.<br />
Le righe <strong>di</strong> co<strong>di</strong>ce scritte a mano per implementare i meto<strong>di</strong> sono elen-
5.4. VALUTAZIONI 59<br />
feature classes UI total<br />
user .30 .45 1.15<br />
profile .40 2.30 3.10<br />
friends 1.45 4.00 5.45<br />
groups 1.45 4.00 5.45<br />
posts 1.30 4.00 5.30<br />
guestbook 1.30 4.00 5.30<br />
comments .30 1.15 1.45<br />
inbox 2.00 4.30 6.30<br />
<strong>di</strong>rectmessages .30 1.15 1.45<br />
authorizations 1.20 1.45 3.05<br />
updates .45 1.45 2.30<br />
activities 1.45 2.30 4.15<br />
notifications 1.45 3.30 5.15<br />
rating 1.20 2.00 3.20<br />
total 17.35 37.45 55.20<br />
Tabella 5.1: Tempistiche (espresse in ore e minuti)<br />
cate nella colonna manual, mentre nella colonna total viene calcolata la<br />
<strong>di</strong>mensione totale <strong>di</strong> ogni classe.<br />
Ne risulta quin<strong>di</strong> che su 2244 righe <strong>di</strong> co<strong>di</strong>ce che costituiscono la logica<br />
<strong>di</strong> secondo livello, circa il 66% viene generato in maniera automatica mentre<br />
circa il 34% viene scritto successivamente a mano.<br />
A questo punto bisogna considerare che l’aggiunta <strong>di</strong> co<strong>di</strong>ce manuale viene<br />
effettuata soltanto la prima volta che si implementano tali classi.<br />
Infatti le classi complete <strong>di</strong>ventano dei templates riutilizzabili nelle pro-<br />
gettazioni future a meno <strong>di</strong> piccole mo<strong>di</strong>fiche <strong>di</strong>pendenti dalle features sele-<br />
zionate.<br />
In questo caso, a livello qualitativo, il co<strong>di</strong>ce automatico raggiungerebbe<br />
il 90% e in alcuni casi anche il 100%.<br />
Sempre per questo stesso motivo, anche le tempistiche elencate nella Ta-<br />
bella 5.1 calerebbero drasticamente per quanto riguarda l’implementazione<br />
delle classi.
60 CAPITOLO 5. POLIBOOK<br />
class auto manual get/set total<br />
user 34 28 162 224<br />
profile 25 16 96 137<br />
friends 29 110 58 197<br />
group 34 23 100 157<br />
groups 37 80 30 147<br />
post 32 51 100 183<br />
posts 23 73 30 126<br />
guestbook 29 38 30 97<br />
comment 25 18 29 72<br />
inbox 34 87 72 193<br />
<strong>di</strong>rectmessage 19 19 53 91<br />
message 18 0 51 69<br />
authorizations 17 19 14 50<br />
updates 25 142 48 215<br />
activity 19 14 49 82<br />
notification 19 13 49 81<br />
rating 29 35 59 123<br />
total 448 766 1030 2244<br />
Tabella 5.2: Dimensione e sviluppo delle classi (espressi in righe <strong>di</strong> co<strong>di</strong>ce)<br />
In conclusione, il grande vantaggio che emerge da questo approccio è<br />
quello del riuso del co<strong>di</strong>ce e dei componenti che può risultare particolarmente<br />
utile se si prevede <strong>di</strong> realizzare ad esempio un servizio <strong>di</strong> creazione <strong>di</strong> social<br />
network.
Capitolo 6<br />
Conclusione<br />
In questo elaborato è stato illustrato un approccio per la progettazione <strong>di</strong><br />
una rete sociale che permetta in maniera veloce e funzionale <strong>di</strong> seleziona-<br />
re le features e ottenere in modo automatico il design dal quale iniziale<br />
l’implementazione.<br />
Punto <strong>di</strong> partenza è un goal <strong>di</strong>agram contenente i requisiti tipici e parti-<br />
colari dei social network esistenti dal quale selezionare le features desiderate.<br />
La selezione avviene isolando i goals desiderati attraverso un software <strong>di</strong><br />
supporto dopo<strong>di</strong>ché sfruttando un tool appositamente creato viene effettuato<br />
in automatico il mapping su class <strong>di</strong>agrams UML.<br />
Nella fase <strong>di</strong> design è possibile rifinire il sistema mo<strong>di</strong>ficando le classi, i<br />
meto<strong>di</strong> e gli attributi e quin<strong>di</strong> procedere con l’implementazione.<br />
Infine è stato creato il social network PoliBook seguendo l’approccio<br />
descritto.<br />
6.1 Sviluppi futuri<br />
I lavori futuri potrebbero concentrarsi sull’aumento dei meccanismi auto-<br />
matici in fase <strong>di</strong> mappatura e sull’estensione degli stessi anche in fase <strong>di</strong><br />
implementazione.<br />
Ad esempio si potrebbero creare in automatico le classi servlet e gli<br />
scheletri delle pagine jsp in base alle features selezionate nel goal <strong>di</strong>agram.<br />
61
62 CAPITOLO 6. CONCLUSIONE<br />
Tutto ciò permetterebbe una ulteriore riduzione della scrittura manuale<br />
del co<strong>di</strong>ce e un sostanziale risparmio <strong>di</strong> tempo.<br />
Questa scelta però richiederebbe minore flessibilità nell’architettura, nel<br />
senso che l’ambiente e l’architettura dovrebbero essere fissati e ben definiti<br />
in partenza.<br />
Proseguendo sempre sulla stessa linea si potrebbe pensare a componenti<br />
grafici, come menu e aree, auto configurabili sempre in base ai goals da<br />
raggiungere.<br />
Un altro possibile sviluppo potrebbe essere quello <strong>di</strong> estendere il goal<br />
<strong>di</strong>agram anche ai requisiti non funzionali e non solo a quelli funzionali.
Bibliografia<br />
[1] Axel van Lamsweerde, Goal-Oriented Requirements Engineering: A<br />
Guided Tour, http://courses.cs.ut.ee/2010/sem/uploads/Main/04RE-<br />
rea<strong>di</strong>ng-goals.pdf<br />
[2] Alexei Lapouchnian, Goal-Oriented Requirements En-<br />
gineering: An Overview of the Current Research,<br />
http://www.cs.utoronto.ca/ alexei/pub/Lapouchnian-Depth.pdf<br />
[3] KAOS, goal-oriented software requirements approach,<br />
http://www.info.ucl.ac.be/ avl/ReqEng.html<br />
[4] i*, modeling language, http://www.cs.toronto.edu/km/istar/<br />
[5] Tropos, software development methodology,<br />
http://www.troposproject.org/<br />
[6] UML, Unified Modeling Language, http://www.uml.org/<br />
[7] OMG, , Object Management Group, http://www.omg.org/<br />
[8] ODBMS, Portale de<strong>di</strong>cato ai database ad oggetti,<br />
http://www.odbms.org/<br />
[9] Apache Tomcat, servlet container, http://tomcat.apache.org/<br />
[10] GR-Tool, goal-reasoning tool, http://troposproject.org/tools/grtool/index.php<br />
[11] OpenOME, an open-source requirements engineering tool,<br />
http://www.cs.toronto.edu/km/openome/<br />
63
64 BIBLIOGRAFIA<br />
[12] ArgoUML, UML modeling tool, http://argouml.tigris.org/<br />
[13] db4objects, object oriented database, http://www.db4o.com/