UNIVERSITÀ DEGLI STUDI DI MODENA e
REGGIO EMILIA
Facoltà di Ingegneria
Corso di Laurea in Informatica
Indirizzo Economico-gestionale
TESI DI LAUREA
Progetto e Realizzazione di un'Applicazione
Web per l'Elaborazione Cooperativa di Testi
Candidato
Relatore
Alessandro Sessa
Chiar.mo Prof. Letizia Leonardi
Correlatore
Ing. Franco Zambonelli
Anno Accademico 1998-1999
Indice
Introduzione ........................................................................................................... iv
Capitolo 1: Lavoro Cooperativo ............................................................................. 1
1.1 Generalità ...............................................................................................................................3
1.2 Servizi .....................................................................................................................................5
1.3 Componenti del CSCW .........................................................................................................6
1.3.1 Componenti Tecnologici ....................................................................................................... 6
1.3.2 Componenti Umani ............................................................................................................... 7
1.4 Realtà d'Interesse ..................................................................................................................7
Capitolo 2: Server Proxy ........................................................................................ 8
2.1 Architetture per il Lavoro Cooperativo ..............................................................................9
2.2 Requisiti ................................................................................................................................12
2.3 Server Proxy.........................................................................................................................13
Capitolo 3: Realizzazione del Proxy in Java ....................................................... 15
3.1 Obiettivi ................................................................................................................................15
3.2 Scelta Implementativa .........................................................................................................16
3.3 Architettura..........................................................................................................................18
3.4 Messaggistica Mediante il Protocollo AMTP ....................................................................22
3.4.1 Primitive del Protocollo ...................................................................................................... 23
3.4.1.1 Statement.......................................................................................................................... 24
3.4.1.2 Messaggi .......................................................................................................................... 25
3.5 Struttura dei Moduli ...........................................................................................................26
3.6 Applet di Controllo ..............................................................................................................28
3.7 Avvio di un Modulo .............................................................................................................32
3.8 Caching di Gruppo ..............................................................................................................36
3.8.1 Scheda Documenti .............................................................................................................. 38
3.8.2 Scheda Utenti ...................................................................................................................... 39
Capitolo 4: BlackBoard Testuale ......................................................................... 43
4.1 Requisiti ................................................................................................................................44
4.2 Gestione dei File ...................................................................................................................45
4.3 Struttura del BlackBoard Module .....................................................................................48
4.4 Avvio del BlackBoard Module............................................................................................49
4.5 Applet di Controllo ..............................................................................................................53
4.6 Scheda File ...........................................................................................................................55
4.7 Funzionamento ....................................................................................................................60
4.8 Metodi Associati agli Elementi Grafici ..............................................................................67
4.9 Classe BlackApplet ..............................................................................................................76
4.10 Message Component ..........................................................................................................82
4.10.1 Algoritmi ........................................................................................................................... 86
4.12 Web Component ................................................................................................................88
4.13 Main Component ...............................................................................................................89
Conclusioni ........................................................................................................... 90
Appendice A: Internet .......................................................................................... 92
A.1 La Rete .................................................................................................................................92
A.1.1 Storia di Internet ................................................................................................................. 92
A.2 Socket ...................................................................................................................................95
A.2.1 Socket Connection - Less ................................................................................................... 95
A.2.2 Socket Connection - Oriented ............................................................................................ 96
A.2.3 Connessioni a Server Web ................................................................................................. 96
A.3 Il WWW...............................................................................................................................97
A.3.1 Componenti base del Web ................................................................................................. 97
A.3.2 Panoramica del Web .......................................................................................................... 97
A.3.3 Nascita e Sviluppo del Web ............................................................................................... 98
A.3.4 Varietà del Web ............................................................................................................... 100
A.4 CGI.....................................................................................................................................101
A.5 Il WWW e Java .................................................................................................................102
A.6 Applicazioni Multimediali in Rete con Java...................................................................104
A.7 Linguaggio HTML ............................................................................................................106
A.8 Protocolli di Comunicazione ............................................................................................113
A.9 Il Protocollo HTTP ...........................................................................................................114
A.10 URL ..................................................................................................................................116
Appendice B: Il Liguaggio Java: Generalità .................................................... 118
B.1 Introduzione al Linguaggio ..............................................................................................118
B.2 Evoluzione del Linguaggio ...............................................................................................119
B.3 Affinità con il C e il C++ ...................................................................................................120
B.4 Semplicità ..........................................................................................................................120
B.5 Architettura Neutrale .......................................................................................................121
B.5.1 Byte-Code ........................................................................................................................ 121
B.5.2 Portabile ........................................................................................................................... 122
B.5.3 Robusto ............................................................................................................................ 122
B.6 Gestione Automatica della Memoria ...............................................................................122
B.7 Dinamico ............................................................................................................................123
B.8 Sicurezza in Java ...............................................................................................................123
B.9 Multithreading in Java .....................................................................................................126
B.9.1 Cosa sono i thread ............................................................................................................ 127
B.10 Applet ...............................................................................................................................128
B.10.1 Inserimento di applet in un documento HTML .............................................................. 130
B.10.2 Creazione di interfacce utente nel Web (User Interface) ................................................ 131
B.11 Macchina Virtuale ..........................................................................................................132
Appendice C: Il linguaggio Java: Caratteristiche ............................................ 134
C.1 La Programmazione Object-Oriented ............................................................................134
C.1.1 Gli Oggetti ........................................................................................................................ 134
C.2 Struttura di un File Java ..................................................................................................137
C.3 Tipi, Operatori ed Espressioni.........................................................................................137
C.3.1 Parole riservate ................................................................................................................. 138
C.3.2 Tipi fondamentali ............................................................................................................. 138
C.3.3 Espressioni ed Operatori .................................................................................................. 140
C.3.4 Precedenza ed Associatività degli Operatori .................................................................... 143
C.4 Classi ..................................................................................................................................143
C.4.1 Modificatori...................................................................................................................... 145
C.4.1.1 Specificatori di accesso ................................................................................................. 145
C.4.1.2 Specificatori di classe .................................................................................................... 147
C.4.1.3 Specificatori di metodi .................................................................................................. 147
C.4.1.4 Elementi Static .............................................................................................................. 148
C.4.2 Creazione ed uso di Oggetti ............................................................................................. 149
C.4.3 Costruttori e Distruttori .................................................................................................... 150
C.5 Struttura dei Programmi .................................................................................................152
C.5.1 Metodi .............................................................................................................................. 152
C.5.2 Passaggio per Valore ........................................................................................................ 154
C.5.3 Overloading ...................................................................................................................... 155
C.6 Exceptions (Eccezioni) ......................................................................................................156
C.6.1 Le Eccezioni ..................................................................................................................... 156
C.6.2 Le Istruzioni try e catch .................................................................................................... 157
C.6.3 Dichiarazioni throws ........................................................................................................ 158
C.7 Input e Output ..................................................................................................................159
C.7.1 Organizzazione dell'I/O .................................................................................................... 159
C.7.2 La Libreria java.io ............................................................................................................ 160
C.7.3 File.................................................................................................................................... 160
C.8 Ereditarietà .......................................................................................................................161
C.8.1 Classi Astratte .................................................................................................................. 162
C.8.2 Classi final ........................................................................................................................ 164
C.8.3 Interfacce .......................................................................................................................... 164
C.9 Java AWT..........................................................................................................................166
C.9.1 Gerarchia delle Classi ....................................................................................................... 166
C.10 Java API ..........................................................................................................................166
Sigle e Abbreviazioni .......................................................................................... 168
Bibliografia ......................................................................................................... 170
Introduzione
Scopo della tesi è progettare e realizzare un'applicazione software di supporto al lavoro
cooperativo in ambiente Web. Il contesto nel quale s'inserisce tale progetto è quello di
un gruppo di persone che richiedano di poter collaborare e coordinarsi fra loro. In una
realtà multiutente, diventa essenziale dotarsi di sistemi che supportino in maniera
efficiente le attività degli individui riuniti in gruppi di lavoro: in altre parole servono
sistemi che utilizzino i computer per supportare il lavoro cooperativo. In particolare è
interessante la situazione che si presenta quando più utenti che vogliono collaborare, si
trovano fisicamente in luoghi distanti tra loro; in questo caso nasce l'esigenza di
collaborare a distanza e dotarsi di sistemi che permettano la coordinazione, lo scambio
d'informazioni e la disponibilità di spazi comuni dove possa avvenire la cooperazione.
La disponibilità di documentazione d'ogni tipo presente in Internet, fa di Internet un
immenso archivio mondiale il cui accesso è reso possibile tramite l'uso di computer.
Conseguenza di ciò, è che gli utenti necessitano di sistemi che supportino la
cooperazione e s'integrino con l'ambiente Web; si vogliono esaudire le esigenze di un
gruppo di lavoro che sfrutta il Web per accedere alle informazioni disponibili in
Internet. Inoltre occorre fornire un supporto allo scambio di informazioni fra i
componenti del gruppo. Tutto ciò deve essere realizzato senza andare a modificare gli
standard presenti in Internet, e per tale motivo si è implementata una struttura
aggiuntiva che s'integri con l'esistente: il Proxy.
Con Proxy si intende un software che viene posto in esecuzione su un host (al limite su
una macchina di una rete locale) e che funge da intermediario fra il gruppo di lavoro e
la Rete, fornendo un ambiente nel quale gli utenti possono scambiarsi informazioni,
accelerare i tempi di ricerca dei documenti Web, cooperare nella stesura di documenti
testuali, essere supportati nelle attività gestionali del gruppo di lavoro.
Basandosi su un Proxy realizzato in linguaggio Java presso l'Università di Modena e
Reggio Emilia, si vuole realizzare un modulo che permetta l'elaborazione cooperativa di
documenti testuali.
La scelta di realizzare il Proxy in linguaggio Java, è dovuta al fatto che tale linguaggio
di programmazione è indipendente della piattaforma, ed essendo Internet per sua stessa
natura formata da macchine di vario tipo, occorre dotarsi di un software in grado di
essere eseguito su ognuna di esse; in particolare occorre che ogni utente che si
interfaccia al Proxy sia in grado di utilizzare le funzionalità messe a disposizione da
questo. Inoltre l’uso del linguaggio java permette di realizzare un'applicazione immersa
nel contesto delle tecnologie WWW con tutti i vantaggi in termini d'ampiezza e
diffusione del mercato potenziale.
Le richieste alle quali risponde il Proxy sono sostanzialmente due:
1. massimizzare la versatilità dell'ambiente di lavoro
2. massimizzare il grado di cooperazione fra utenti.
Le funzionalità a disposizione sono utilizzabili direttamente tramite i browser che gli
utenti del gruppo usano per lavorare. Attraverso l'uso delle applet Java è possibile
definire delle interfacce grafiche, tramite le quali l'utente può usufruire del servizio.
Inoltre data la necessità di scambio delle informazioni, si è realizzato un supporto per la
messaggistica col quale le persone possono scambiarsi messaggi senza dover uscire
dalla sessione di lavoro cooperativo.
Varie sono le situazioni nelle quali il Proxy può essere utile per supportare il lavoro
cooperativo: in primo luogo può accelerare i tempi di ricerca su Internet fornendo una
cache di gruppo del Proxy che mantiene traccia dei documenti acceduti da tutti gli
utenti durante una seduta di lavoro. Un altro servizio può essere quello di supportare la
navigazione guidata sul Web.
La principale caratteristica del Proxy, è che il servizio messo a disposizione degli utenti
dipende dal modulo software installato. Inoltre esso mette a disposizione una serie di
classi ed interfacce utili a chiunque voglia realizzare un modulo; in questo senso si ha a
che fare con un vero e proprio "insieme di regole" da seguire quando s'intende
progettare un modulo applicativo.
Il modulo che si vuole realizzare in questa tesi è rivolto alla cooperazione su testi
condivisi. La situazione che si presenta è quella di un insieme di persone che hanno
interesse a cooperare nella stesura di documenti comuni. Il modulo applicativo dovrà
quindi fornire uno spazio di lavoro condiviso al quale gli utenti hanno accesso, e nel
quale trovano i documenti comuni. Ogni utente del gruppo che accede alla sessione di
lavoro cooperativo, ha accesso ad un elenco di documenti disponibili, i quali possono
essere visionati e, al limite, modificati. L'accesso allo spazio di lavoro permette di
cooperare nella stesura dei documenti presenti.
La tesi è strutturata come segue: nel capitolo 1 si introducono i concetti di lavoro
cooperativo, le componenti che caratterizzano i gruppi di lavoro e i servizi che possono
essere richiesti dai gruppi. Nel capitolo 2 si propongono le possibili architetture di
supporto al lavoro cooperativo ed in particolare si giustifica la scelta fatta di dotarsi del
Proxy server. Il capitolo 3 descrive in dettaglio com'è stato implementato in linguaggio
Java il Proxy e come vengono gestite le connessioni HTTP degli utenti. Infine, nel
capitolo 4, viene descritto il modulo applicativo realizzato: si descrive la politica di
gestione dei documenti, vengono mostrate le classi necessarie per la sua realizzazione e
l'interfaccia grafica realizzata tramite un'applet Java. Inoltre si è allegata una ricca parte
d'appendici che tratta in modo generale la rete Internet, i linguaggi a oggetti e in
particolare Java.