La Web Application Extension è l‘estensione di UML per le applicazioni web. Introduciamone i concetti fondamentali.
Introduzione
Con questo articolo iniziamo una breve serie dedicata alla progettazione delle applicazioni web con UML. Le problematiche legate alle metodologie di sviluppo e all‘utilizzo di UML come linguaggio per la modellazione di sistemi object-oriented sono ampiamente affrontate ed esaminate in letteratura per cui non ci soffermeremo tanto su questi aspetti, ma ne faremo un breve accenno introduttivo per entrare nell‘argomento oggetto della serie, la progettazione di applicazioni web. Vedremo quali sono gli strumenti che UML ci mette a disposizione per assolvere a questo difficile compito e daremo qualche esempio concreto di utilizzo.
Il ciclo di sviluppo del software e la progettazione
Parlare di metodologie per la produzione del software richiederebbe una discussione vasta e approfondita. In bibliografia ci sono riferimenti a testi che parlano diffusamente ed egregiamente dell‘argomento [3].
La produzione del software è di per sà© un ambito nel quale ancora esiste molto dibattito e molta confusione. In alcune realtà , neanche tanto rare, non esistono metodologie per la produzione del software che avviene per così dire in maniera ‘artigianale‘. Questo a mio parere è dovuto ad una serie di fattori, alcuni legati alla specificità intrinseca del ‘prodotto‘ software altri a ragioni culturali.
Il software è di per sà© un prodotto immateriale la cui qualità è difficile da percepire da parte di un cliente. Nessuno acquisterebbe un‘automobile o una casa sapendo che questa non è il risultato di una precisa progettazione fatta da personale altamente qualificato e preparato.
Nel software invece questo non sempre avviene poiché spesso l‘unica percezione del cliente è che il prodotto ‘funzioni‘, il che di per sà© significa abbastanza poco. Ciò è dovuto alla concezione del tutto errata che la produzione del software non possa avvenire secondo un ciclo produttivo standardizzato nel quale la scrittura del codice è solo uno dei passi, sicuramente importante ma non il più importante.
Uno dei passi fondamentali nel ciclo di sviluppo del software è la progettazione, oggetto del nostro articolo. La progettazione è quella fase in cui le astrazioni del sistema da realizzare, evidenziate nella fase di analisi, assumono concretezza e portano a produrre un risultato ‘fisico‘ che sono i componenti software che costituiscono la realizzazione del sistema stesso.
Le applicazioni web e UML
Le applicazioni web sono sistemi ad oggetti che hanno alcune peculiarità . L‘interfaccia utente è un internet browser e la comunicazione tra il cliente ed il server avviene tramite il protocollo http. Le architetture delle applicazioni web possono essere le più disparate. Un‘ottima descrizione delle varie possibilità è in [1]. In ogni caso si farà riferimento ad applicazioni strutturate secondo il pattern MVC (Model-View-Controller) in base al quale l‘applicazione viene suddivisa in tre livelli logici distinti corrispondenti al presentation, al controllo e alla logica dell‘applicazione.
Una buona progettazione deve interessare ciascuno dei livelli, anche se erroneamente si tende a sviluppare modelli di classi ed oggetti solo per la parte di logica tralasciando in fase di progettazione l‘interazione tra view e controller che invece ha un notevole impatto sul risultato a livello di utente finale e di sistema.
Indipendentemente dalla metodologia utilizzata per lo sviluppo del software e dalla parte del sistema che si vuole progettare, il linguaggio per rappresentare i modelli del nostro sistema è UML , Unified Modelling Language. UML è divenuto lo standard per la modellazione di sistemi ad oggetti ed è ormai molto diffuso e conosciuto. UML non è una metodologia, ma è un linguaggio con la sua semantica e la sua sintassi che serve a rappresentare, in una maniera standard e condivisa da tutti, i modelli che rappresentano le astrazioni del nostro sistema software. E‘ bene puntualizzare che adottare UML senza avere una metodologia di sviluppo è come acquistare un macchinario senza avere un ciclo produttivo in cui questo macchinario possa assolvere al suo compito.
Un‘ottima descrizione di come UML possa essere utilizzato nell‘ambito della metodologia più utilizzata al momento, lo Unified Process, la si può trovare in [3].
Quello su cui ci soffermeremo è come con UML si possano rappresentare alcuni elementi specifici delle applicazioni web in fase di progettazione. UML di per sà© non fornisce strumenti per la rappresentazione di una pagina html piuttosto che di una pagina JSP. A questo punto si colloca il lavoro di Jim Conallen, l‘ideatore della Web Application Extension.
La Web Application Extension
La WAE , come la chiameremo d‘ora in avanti, consente di rappresentare in termini di classi ed oggetti le pagine web, oltre ad altri elementi del modello di una applicazione web importanti quanto le classi che appartengono al livello di business.
Per fare ciò è stato sfruttato il meccanismo di estensione tipico di UML. Gli ideatori di UML hanno giustamente previsto la possibilità di estendere la semantica del linguaggio affinchà© questo potesse adattarsi allo sviluppo tecnologico tipico di questo ambito e quindi essere più longevo.
E‘ possibile quindi definire nuovi elementi del linguaggio UML estendendo quelli già presenti tramite il meccanismo degli sterotype, dei tagged value e dei constraints.
Gli stereotipi sono delle estensioni del significato di un elemento del linguaggio UML.
Ad esempio tutti conoscono come in UML si rappresenta una classe; un rettangolo diviso in sezioni che riportano il nome della classe , i suoi attributi e i suoi metodi come in Figura 1.
Per rappresentare una tabella di un db relazionale in UML si può utilizzare lo stesso simbolo della classe ma estendone il significato, ovvero nella terminologia UML associandole uno stereotipo di tipo table. Lo stereotipo è indicato sopra il nome della classe racchiuso tra <<>> o con un icona diversa come in Figura 2.
In questo esempio la nostra tabella è una classe stereotipata <