Thesis full text PDF - Politecnico di Milano

Thesis full text PDF - Politecnico di Milano Thesis full text PDF - Politecnico di Milano

dbgroup.como.polimi.it
from dbgroup.como.polimi.it More from this publisher
12.06.2013 Views

Politecnico di Milano Polo Territoriale di Como Scuola di Ingegneria dell’Informazione Corso di Studi in Ingegneria Informatica Dai requisiti alla progettazione di reti sociali per il web Tutor universitario: Prof. Marco Brambilla Elaborato finale di: Davide Maria Filippo Ripamonti matr. 702249 A.A. 2009-2010

<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/

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!