Gestione dei vincoli in ambiente Wiki - Università degli Studi di Bologna Corso di Laurea Triennale in Informatica

Pagina creata da Antonio Milani
 
CONTINUA A LEGGERE
Università degli Studi di Bologna
  Corso di Laurea Triennale in Informatica

  Gestione dei vincoli
   in ambiente Wiki
  Relatore:             Candidato:
  Chiar.mo Prof.        Francesco Draicchio
  Fabio Vitali
 Correlatore:
 Dott.
 Stefano Zacchiroli

                                              1
The Wiki Way

Il Wiki è uno strumento sociale che abilita gli utenti senza competenze
tecniche a pubblicare contenuti sul web in modo facile, veloce e senza
restrizioni.

In ambiente wiki, durante la sessione di editing, l'utente può:
      ●
        pubblicare liberamente qualsiasi tipologia di contenuti
      ●
        creare e modificare pagine HTML mediante un linguaggio di markup semplificato
      ●
        condurre l'attività editoriale direttamente dal browser
      ●
        collaborare con altri utenti alla realizzazione di una singola pagina

                                                                                        2
Convenzioni e Requisiti sui Contenuti Wiki

Gli utenti stessi stabiliscono spontaneamente procedure per semplificare
e rendere più efficiente l'attività di editing dei contenuti.

Tali procedure sono costituite da insiemi di convenzioni e requisiti.
Alcuni esempi sono:
      ●
        uniformità presentazionale delle pagine
      ●
        uniformità strutturale dei contenuti appartenenti a domini specifici
      ●
        organizzazione dei contenuti sulla base di determinati modelli semantici

Gli utenti che non rispettano le procedure durante la sessione di editing
producono pagine wiki non conformi.

                                                                                   3
Constrained Wiki
Per supportare l'attività di editing si introduce il concetto di Constrained Wiki,
ovvero un sistema che assiste gli utenti a rispettare le procedure, traducendo
convenzioni e requisiti nel concetto di vincolo.

Si definisce il concetto di “vincolo in relazione al contenuto wiki” come
l'insieme dei requisiti che una pagina dovrebbe idealmente soddisfare.

La violazione di tali vincoli non compromette il corretto funzionamento del
wiki, pertanto vengono classificati “vincoli deboli”, ovvero light constraint.

                                                                              4
Lightly Constrained Wiki

Lo scopo della tesi è implementare un sistema di supporto automatico
per gli utenti sulla base del wiki­engine MoinMoin per:
    ●
      verificare la realizzabilità e la compatibilità del concetto di “Constrained Wiki”
      nei reali scenari wiki.
    ●
      realizzare un'infrastruttura generica che formalizzi tutti i possibili vincoli e assista
      gli utenti a rispettarli durante la sessione di editing.

Requisiti dell'implementazione:
    ●
      integrare le funzionalità di supporto in maniera modulare
    ●
      evitare di modificare il codice sorgente di MoinMoin

                                                                                                 5
Architettura di funzionamento
 Il sistema di supporto consiste nella realizzazione di un motore di
 validazione che, mediante la traduzione dei vincoli in validatori:
   ●
     rileva la violazione dei vincoli
   ●
     stimola gli utenti a rispettare convenzioni e requisiti
   ●
     non altera la libertà di editing del wiki

 I principali componenti sono:
   ●
      validatore: i vincoli vengono esplicitati dagli utenti, associando i rispettivi
     validatori alla pagina mediante la sintassi wiki.
   ●
     motore di validazione: a tempo di salvataggio della pagina vengono
     invocati i validatori in funzione del contenuto.

Il workflow del wiki viene sensibilmente modificato introducendo:
   ●
     Visualizzazione Annotata
   ●
     Salvataggio Condizionale

                                                                                        6
Visualizzazione Annotata

   L'azione di “stimolare gli utenti a rispettare i vincoli” consiste nel notificare
   e localizzare all'interno del contenuto della pagina gli eventuali errori,
   al fine di agevolare gli utenti nell'attività di correzione.

                                                                                       7
Salvataggio Condizionale

A tempo di salvataggio della pagina si effettua la validazione del contenuto.
Tale azione valuta se la pagina soddisfa i vincoli “imposti” su di essa.

Viene introdotto il concetto di Salvataggio Condizionale, riproponendo
una ulteriore sessione di editing se la pagina non risulta valida.

Il paradigma di editing dei wiki viene preservato dal Salvataggio Forzato,
per il quale una pagina che non rispetta i vincoli può comunque essere
pubblicata.

                                                                             8
Implementazione

●
    I validatori sono stati implementati creando una nuova classe di plugin,
    validators.

●
    Il motore di validazione è stato realizzato mediante un modulo che utilizza
    le API dei plugin events di MoinMoin, estendendo le funzionalità del
    salvataggio.

●
    Il sistema di notifica delle violazioni dei vincoli è stato realizzato mediante
    un modulo che utilizza le API del parser di MoinMoin.

●
    È stato necessario apportare modifiche al sorgente del wiki­engine.
    Tali modifiche ammontano a non più di 20 righe di codice python.

                                                                                9
Conclusioni e Sviluppi futuri
●
    È stato integrato nel wiki un motore di validazione per supportare gli utenti
    a rispettare i vincoli in fase di editing.
●
    È stato modificato sensibilmente il processo di editing, senza però alterare
    in maniera sostanziale la libertà di utilizzo di questo strumento.
●
    È stato possibile implementare le funzionalità principali che realizzano il
    sistema di editing assistito in maniera non invasiva.

Per ufficializzare e dare maggiore visibilità al lavoro svolto, un passo
importante sarebbe quello di generalizzare le modifiche apportate al sorgente
MoinMoin, in modo da renderle includibili nell'attuale branch di sviluppo.

                                                                              10
Puoi anche leggere