12.06.2013 Views

Thesis full text PDF - Politecnico di Milano

Thesis full text PDF - Politecnico di Milano

Thesis full text PDF - Politecnico di Milano

SHOW MORE
SHOW LESS

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/

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

Saved successfully!

Ooh no, something went wrong!