3
1.1 - Il processo Ingegneristico
Diversamente da come spesso accade nello sviluppo di applicazioni Web, si vuole
applicare un processo tipico dell’ingegneria del software, adattandolo alla specificità delle
applicazioni Web centrate sui dati; il classico processo incrementale e interattivo ben si
presta alla strutturazione ed alla presentazione delle attività di progetto.
Lo sviluppo del software ispirato al modello a spirale di Bohem [5], è in oltre in linea con la
rapida evoluzione imposta da Internet, attraversando successivi cicli di sviluppo iterati è
possibile prototipare rapidamente il cuore dell’applicazione rendendola cosi
immediatamente disponibile a test e a validazioni successive.
Il primo passo non può che essere un analisi e modellizzazione dei requisiti, dove si
chiariscono gli obiettivi del software, gli attori, e i dati trattati. La parte più impegnativa del
processo di sviluppo si concretizza nella modellizzazione dei dati e dell’ipertesto, mentre la
fase di implementazione, grazie al tool CASE (computer-aided software engineering)
WebRatio, risulta essere semplice ed automatizzata. L’ultima fase del ciclo iterattivo è il
Testing (Fig. 1.1).
Fig.1.1 – Fasi del processo di sviluppo
Per motivi di chiarezza, i capitoli della presente tesi, sono redatti in modo da rispettare la
sequenza di un ciclo completo, e soltanto nel capitolo 6 verranno esposti quali sono stati i
passi successivi, e le scelte intermedie che hanno portato al prodotto finito.
A partire dal capitolo 2, sono riportate le specifiche dei dati e le specifiche funzionali.
All’individuazione degli utenti è dedicato largo spazio nei paragrafi 2.1.1 e 2.2.1, poiché un
CMS è un’applicazione di tipo “collaborativo”, che non si prefigge solo di condividere
attraverso Internet dei contenuti, ma pone in collaborazione diversi gruppi di utenti, che
leggono, scrivono e monitorizzano in modo singolarmente indipendente, e tutti
contemporaneamente operanti all’arricchimento dell’applicazione.
I capitoli 3, e 4 sono dedicati alle fasi di progetto dei dati, e dell’ipertesto. Il capitolo 5 si
occupa dell’implementazione, e nel capitolo 6, sono illustrati i cicli di iterazione dello
sviluppo, soffermandosi sulle scelte e obiettivi posti per ogni ciclo. Nell’ultimo prima delle
conclusioni, il capitolo 7 si occupa del testing e della valutazione finale.
4
1.2 - Gli strumenti (metodologia WebML)
Web Modelling Language (WebML, http://www.webml.org/) è un linguaggio a notazione
visuale, che fornisce le primitive per la modellazione di ipertesti, permettendo la
progettazione di siti Web anche complessi, esclusivamente a livello concettuale. I concetti
WebML sono associati a intuitive rappresentazioni grafiche ed alla sintassi XML. Le
specifiche di WebML sono indipendenti sia dai linguaggi che rendono possibile le
applicazioni client, sia dalle piattaforme tecnologiche che legano i dati alle pagine
ipertestuali, pertanto la progettazione con WebML permette di sviluppare siti Web ad alto
livello disinteressandosi dei dettagli architetturali.
WebML può essere considerato un estensione naturale del modello Entità-Relazione, che
ne estende lo schema dei dati alla sua rappresentazione ipertestuale ed alla manipolazione
tramite semplici costrutti operazionali.
WebML assiste il programmatore in tutta la fase di sviluppo dell’applicazione Web, a)
descrizione della struttura dati con un modello di tipo E-R; b) creazione di strutture dati
derivate; c) progettazione del modello ipertestuale; d) estende con semplici operazioni
transazionali il modello d’ipertesto.
Il modello E-R è un modello per la rappresentazione concettuale dei dati ad un alto livello
di astrazione [6], i cui principali costrutti sono: entità, attributi, e relazioni.
L’entità non è altro che una categoria di oggetti, dove ciascun oggetto è descritto da una
serie di attributi.
Per ciascuna classe entità, dobbiamo definire anche una chiave. La chiave è un insieme
minimale di attributi che identificano univocamente una tupla all’interno del database.
Potrebbe esserci più di una chiave, in questo caso si parla di chiavi candidate. La scelta
però deve ricadere solo su una chiave candidata, detta chiave primaria. Con l’attributo OID
(object identifier) si individua pertanto in modo univoco ogni istanza.
Le relazioni rappresentano le connessioni semantiche tra le entità, permettono di associare
un entità con altre. Ogni relazione ha un nome ed una cardinalità (minima e massima), al
fine di quantificare gli oggetti messi in relazione tra le entità.
La cardinalità è un valore che può variare da 0 a N, dove 0 indica che la relazione è
opzionale, ed N indica che un oggetto di un entità è in relazione con molti (potenzialmente
tutti) oggetti dell’entità associata.
La derivazione dei dati, è utilizzata per aggiungere concetti alla struttura dati, che non
possono essere esplicitamente memorizzati nella base dati, ma debbono essere calcolati.
Per ottenere la derivazione, è necessario utilizzare un Query Language, WebML contiene
un linguaggio chiamato WebML-OQL (Object Query Language), liberamente ispirato a
UML OCL (Unified Modeling Language - Object Constraint Language) e OQL path
expression, che tramite ODBC (Open Database Connectivity), o JDBC (Java DataBase
Connectivity) si interfaccia facilmente con la maggior parte dei DBMS (Database
Management System) commerciali.
Gli attributi derivati, sono sostanzialmente di 4 tipi:
a) Attributi importati; informazioni provenienti da entità esterne.
b) Attributi calcolati; tipicamente ottenuti dal calcolo su attributi della stessa
entità.
c) Attributi aggregati; ottenuti da conteggi, o operazioni aritmetiche su
l’occorrenza di oggetti connessi.
d) Attributi costanti; aggiungono informazioni fisse, a fronte di condizioni
verificate.
5
L’obiettivo del modello dell’ipertesto è specificare l’organizzazione dell’interfaccia
dell’applicazione Web, rendendola semplice ed efficace [2]. WebML fornisce le primitive
per la modellizzazione dell’ipertesto, prendendo in prestito dal modello E-R, il concetto di
utilizzare espressioni semplici supportate da una notazione grafica intuitiva.
Gli ingredienti di WebML sono le Units, entità atomiche di contenuti pubblicabili. Le
Units possono estrarre dati dallo schema dei dati, mostrare i dati presenti nella base di dati,
e aggiornare la base dati. Le cinque Units base sono:
1) Data Units: mostra informazioni relative ad un singolo oggetto.
2) Multidata Units: mostra le informazioni relative ad un insieme di oggetti.
3) Index Units: Mostra un insieme di indicizzato di oggetti.
4) Scroller Units: Fornisce le primitive di accesso ad una lista ordinata di oggetti.
5) Entry Units: Costituisce l’interfaccia di input dei dati.
La combinazione delle cinque Units base, permette la costruzione di sofisticate pagine
Web. La struttura ipertestuale si ottiene poi considerando gli altri ingredienti messi a
disposizione da WebML, link, aree, site view, pagine e sottopagine.
Tutti i concetti espressi sono parametrizzabili, ed hanno una notazione grafica, ogni Units
è identificabile da una specifica icona, che ne permette un facile “assemblaggio” e
personalizzazione [3].
L’estensione del modello ipertestuale, si ottiene introducendo le Operation Units ed il
concetto di Link condizionale. Quest’ultimo, rappresenta la possibilità di intraprendere
“strade” diverse a seconda del risultato di un operazione. Le Operation Units, forniscono
invece le primitive di aggiornamento, creazione, e cancellazione di oggetti, ed operano
senza intaccare la struttura dati già definita.
Le più importanti Operation Units, e Link condizionali sono:
1) Create Units: Permette di aggiungere nuove istanze ad un entità.
2) Delete Units: Per cancellare delle istanze.
3) Modify Units: Utile per modificare attributi di un istanza.
4) Relationship Creation Units: Instaura una nuova relazione tra oggetti di
differenti entità.
5) Relationship Deletion Units: Rimuove una relazione tra oggetti di differenti
entità.
6) OK-Link: Link eseguito a fronte di un operazione riuscita.
7) KO-Link: Link eseguito a fronte di un operazione non riuscita.
WebML non specifica i dettagli realizzativi delle singole Units; ogni Units è una “black
box”, sono noti solo i parametri di ingresso necessari, e i risultati attesi. Questo fatto
costituisce la vera forza di WebML, che non solo fornisce una metodologia di sviluppo, ma
astraendosi dai dettagli funzionali, permette di costruire un network di oggetti (units)
interconnessi da Link, che trasportano le informazioni da una Units ad un'altra,
concorrendo alla progettazione di pagine Web, suddivisibili in aree e site view.
L’ambiente di sviluppo utilizzato, WebRatio (http://www.WebRatio.com/), è un tool
CASE che permette di realizzare per via grafica “l’assemblaggio” di pagine ipertestuali
utilizzando le caratteristiche tipiche di WebML, inoltre, in fase di implementazione ne
permette la traduzione automatica in server-side script, table mapping e template.
WebRatio è un tool molto potente in grado di guidare il progettista in tutte le sue fasi del
processo di realizzazione del sito Web. Quindi, progettazione visuale, generazione del
codice completo per architetture Java2EE (Java 2 Enterprise Edition) e fonti dati SQL [9]
6
(Structured Query Language) e XML, con sincronizzazione bidirezionale tra database e
modello dei dati, ed in fine integrazione tramite Web Service.
Il processo di sviluppo assistito da WebRatio, può essere riassunto nei seguenti punti:
a) Creazione del data base vuoto, e impostazione dei collegamenti ODBC;
b) Progetto del modello E-R, e mapping del data base;
c) Progetto del modello ipertestuale, organizzato in site view, aree e pagine;
d) Creazione e/o, personalizzazione dello Stylesheet che realizza il template della GUI
(Graphic User Interface);
e) Generazione (deployment) del codice realizzato.
7
2 - Specifica dei requisiti
Concettualmente ogni applicazione Web può essere intesa come un semplice insieme di
pagine, dove ciascuna pagina è a sua volta un insieme di contenuti e servizi. Una pagina
Web può essere immaginata come una griglia, le cui caselle costituiscono una possibile
collocazione dei contenuti.
Con un CMS si vuole realizzare un’applicazione che lasci la libertà di organizzare, e
arricchire tali griglie tramite browser, garantendo assoluta trasparenza all’utilizzatore
dell’applicazione, che può completamente disinteressarsi dei meccanismi che danno luogo
a ciò che è visibile come risultato finale.
Si individuano 4 punti su cui focalizzare l’opera di progettazione:
Struttura dati che possa gestire le personalizzazioni
Modello ipertestuale articolato i aree alternative
Gestione degli accessi utente
GUI, e Layout grafico
2.1 - Raccolta dei requisiti
Questa sezione preliminare si occupa di individuare le classi di utilizzatori dell’applicazione,
quali dovranno essere le funzionalità dell’applicazione, e in fine quale struttura dati e
caratteristiche specifiche attribuire al CMS.
2.1.1 - Individuazione degli utenti
Per un sito Web è tipicamente possibile individuare 4 tipologie di utilizzatori, ed un CMS
non fa eccezione:
a) Utenti non registrati, che navigano le pagine di presentazione del servizio,
chiamati anche utenti casuali perché interagiscono in modo passivo con le
risorse dell’applicazione.
b) Utenti registrati, che accedono ai contenuti speciali, e che possono
interagire attivamente coi servizi della sito.
c) Gestori dei contenuti, utenti non tecnici, che però sono in grado di creare,
cancellare, aggiornare, quindi gestire completamente le specificità del sito
Web.
d) Amministratori; questa classe di utenti, può occuparsi di tutti gli aspetti più
tecnici legati alla gestione, e manutenzione del sito, come per esempio
creare nuovi utenti, estendere autorizzazioni, o apportare modifiche al
layout grafico del sito.
2.1.2 - Requisiti funzionali
Con requisiti funzionali si intendono tutte e sole le funzioni che dovrà svolgere
l’applicazione in senso stretto, lasciando al paragrafo dei requisiti non funzionali coprire
tutte le restanti caratteristiche desiderate per un applicazione che debba essere usabile, e
performante.
Funzioni di pubblicazione: creazione, cancellazione, aggiornamento contenuti, e
pubblicazione.
8
La navigazione deve essere garantita per tutti gli utenti (anche casuali) su tutte le
pagine dichiarate pubbliche.
L’accesso ai contenuti e servizi speciali, deve essere consentito solo a utenti
registrati.
Dato un layout generale il sito deve garantire flessibilità di composizione delle
pagine e dei contenuti.
Tipo di contenuti gestiti: testi, immagini, link, download.
Servizi forniti agli utenti registrati: hot news, forum, blog, newsletter, messaggistica
privata, e modifica profilo personale.
Elenco funzioni amministrative: gestione utenti, gestione gruppi, gestione layout,
configurazioni generali sito, e inoltro messaggi di servizio a tutti gli utenti.
2.1.3 - Requisiti dei dati
La base dati soggiacente all’applicazione Web deve essere in grado di raccogliere tutte le
informazioni e i contenuti che l’applicazione si prefigge di gestire e mettere a disposizione.
I dati possono essere raggruppati in due classi, quelli legati agli utenti e quelli legati ai
contenuti. I dati legati agli utenti, devono permettere di identificare un utente, inquadrarlo
in un gruppo, e vincolarlo alle funzionalità previste per il gruppo di appartenenza.
Fino ad ora ci si è riferiti con la parola contenuti, a tutto ciò che può essere pubblicato
sulle pagine del sito, è importante specificare che non tutti i contenuti sono uguali, e non
possono essere trattati nella stessa maniera; infatti a seconda della funzione alla quale sono
legati acquistano delle caratteristiche specifiche. Per esempio, il forum raccoglie i messaggi
degli utenti suddividendoli per argomento, l’area download costituisce un repository di file
scaricabili, e le HotNews sono dei messaggi visualizzati in una scrolling bar. In particolare:
a) i testi saranno immagazzinati in formato HTML (HyperText Markup Language); b) le
immagini devono essere in formato JPG per minimizzarne le dimensioni; c) i loghi
possono essere di qualsiasi formato immagine per garantire gli effetti trasparenza.
2.1.4 - Requisiti di personalizzazione
Il CMS mette a disposizione delle impostazioni di personalizzazione globali, quindi tipiche
dell’installazione e operabili dall’amministratore del sistema:
Layout generale delle pagine pubbliche e per utenti registrati.
Personalizzazione dei messaggi di servizio.
Impostazione personalizzata del logo.
Dislocazione personalizzata della scroll bar delle HotNews.
Gestione dei gruppi di utenti di default.
Creazione nuovi gruppi di utenti.
Le altre impostazioni sono lasciate invece ai gestori dei contenuti:
Creazione e gestione di “stanze” del forum.
Creazione nuove NewsLetter.
Creazione categorie per HotNews.
Organizzazione in categorie dei contenuti.