Framework per lo sviluppo di applicazioni Web-Oriented, Component & XML Based

1 - Presentazione.

Il sistema realizzato, successivamente descritto in tutte le fasi di sviluppo del software, consiste in un framework per la creazione di applicazioni web mediante collegamento e coordinamento di componenti software e realizzazione separata dell'interfaccia utente. I passi per realizzare un'applicazione per l'infrastruttura prodotta possono essere sinteticamente riassunti nei seguenti:

  1. Reperire (o realizzare) dei componenti software adatti a realizzare la business logic dell'applicazione. Questi componenti devono essere realizzati, o wrappati nel caso di componenti legacy, secondo le specifiche di base dei JavaBean. Inoltre per quei componenti dal cui stato dipende l'output da presentare all'utente, bisogna implementare il metodo getStatus() che deve ritornare un documento XML rappresentate detto stato; nessun vincolo è imposto sul tipo di documento XML, quindi è possibile rappresentare dati di qualsiasi natura.
  2. Descrivere, attraverso un file XML, i collegamenti fra i precedenti componenti in modo che essi possano interagire. Sono previsti collegamenti mediante delega oppure ad eventi. Si specificherà inoltre per ogni componente se esso è legato all'intera applicazione (ApplicationBean) oppure se ne è presente un'istanza per ogni utente (SessionBean).
  3. Realizzare, seguendo le specifiche dell'infrastruttura, due file XSL attraverso i quali definire rispettivamente le azioni di controllo e visualizzazione da eseguire in corrispondenza dell'input dell'utente. In questo modo sarà possibile creare l'applicazione programmando in stile dichiarativo la corrispondenza fra l'input introdotto e l'output desiderato.
  4. Realizzare un file XSL per formattare l'output XML nel formato opportuno a seconda dell'interfaccia utente utilizzata (tipicamente si produrrà dello HTML da visualizzare con un browser).

back top 1.1. Punti di forza.

L'infrastruttura realizzata trae il massimo vantaggio dal linguaggio interpretato Java e dalle potenzialità del metalinguaggio XML. In particolare, grazie all'utilizzo dei meccanismi di Reflection di Java, l'infrastruttura è infatti in grado di realizzare un'applicazione qualsiasi non predeterminata a compiletime. Ciò ha consentito ai successivi sviluppi dell'infrastruttura di aggiungere la capacità di cambiare l'applicazione a runtime, nonché di realizzare più applicazioni diverse contemporaneamente che possono essere aggiunte, rimosse e modificate sempre a runtime. Questo secondo ciclo di sviluppo del software ha quindi testimoniato la bontà del progetto iniziale qui descritto.

Per quanto riguarda invece l'utilizzo intensivo del metalinguaggio XML all'interno dell'infrastruttura, esso garantisce una flessibilità completa necessaria per potere trattare dati non noti a priori sui quali non sarebbe possibile fare alcuna ipotesi. Trattandosi poi di dati formalmente strutturati essi possono essere manipolati automaticamente col semplice utilizzo del linguaggio dichiarativo XSL. Più precisamente è possibile modificare in modo anche radicale il comportamento dell'intera applicazione semplicemente modificando un file XSL, poiché l'essenza della logica applicativa non è più cablata all'interno del codice ma è invece estratta e isolata in un documento XSL, lasciando al codice la sola realizzazione di compiti specifici. L'utilizzo di XSL non esaurisce qui i sui vantaggi, bensì li estende alla rappresentazione finale dei dati che può essere la più svariata: si tratterà tipicamente di HTML, ma potrebbe trattarsi di linguaggi diversi per interpreti specifici quali un browser WML, oppure un interprete SVG per la rappresentazione grafica delle immagini, o altre soluzioni ad hoc per contesti particolari.

Dalle precedenti considerazioni si comprende che l'infrastruttura realizzata fornisce un framework di sviluppo che si colloca ad un livello superiore rispetto a soluzioni specifiche per la realizzazione di applicazioni web quale, ad esempio, la tecnologia delle Java Server Pages (JSP). Infatti, sebbene la tecnologia JSP consenta di richiamare JavaBean, instanziabili sia a livello di applicazione che di sessione utente, il controllo dell'applicazione è affidato alle pagine JSP stesse, comportando quindi un controllo distribuito e, soprattutto, mescolato con tutta la problematica di visualizzazione. La presente infrastruttura, invece, separa nettamente gli aspetti di controllo da quelli di visualizzazione consentendo un più razionale sviluppo dell'applicazione, maggiormente percepibile all'aumentare del grado di complessità del problema. Inoltre, in virtù dell'utilizzo di XML e XSL, si possono trattare dati molto più complessi da inserire all'interno dell'output senza dovere ricorrere all'introspezione delle singole proprietà di un JavaBean; sempre grazie a XML e XSL, è infine possibile una gestione decisamente più flessibile per la fase di visualizzazione dell'output aprendo la fruizione dell'applicazione al di là dei comuni browser di pagine HTML.

In riferimento ai JavaBean va inoltre precisato che le richieste dell'infrastruttura si limitano unicamente alla presenza di un costruttore di default, quindi è molto semplice integrare una qualunque classe Java realizzata in precedenza.

back top 1.2. Tecnologie e pattern di progettazione adottati.

La progettazione della soluzione è stata preceduta da una attenta fase di analisi attraverso la quale si è giunti a delineare l'architettura logica del sistema. Questa fase di analisi, come la successiva fase di progetto, è stata condotta con l'ausilio di diagrammi UML.

Questi diagrammi hanno consentito di produrre delle viste standard del sistema che mettessero in chiara evidenza i componenti fondamentali e le loro relazioni e dipendenze. E' quindi possibile affermare che i diagrammi UML hanno costituito un valido e indispensabile strumento di analisi e progetto, motivo per il quale nella presente relazione si è dedicato la maggior parte dello spazio proprio a questi diagrammi che meglio sintetizzano la struttura e la dinamica del sistema. L'utilizzo di UML è stato coerente e continuativo in tutte le fasi di sviluppo e se ne può trovare una chiara traccia nel codice prodotto.

Nell'analisi e progetto del sistema si è poi attinto ad alcuni pattern che hanno consentito di individuare una valida soluzione a problemi specifici. In particolare l'intera fase di analisi è stata ispirata al pattern MVC e ciò ha inciso in modo determinante sull'architettura scelta per questa infrastruttura. Successivamente sono stati adottati i pattern Singleton e Object Pool rispettivamente per centralizzare la configurazione del sistema e per introdurre parallelismo nella gestione degli utenti.

In merito alle tecnologie adottate, esse riguardano il linguaggio Java con particolare riferimento ai JavaBean, alla Reflection e alla gestione degli eventi; XML e le specifiche JAXP per la manipolazione del DOM associato all'XML; XSL per la trasformazione dei documenti del sistema e per la realizzazione della presente relazione; le Servlet Java e l'ApplicationServer Tomcat per la realizzazione dell'interfaccia web e il deployment dell'applicazione; HTML, XHTML e CSS.

back top 1.3. Stesura della documentazione.

La presente documentazione è stata scritta secondo le specifiche XHTML Strict (http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd). Se da un lato è stato richiesto un maggiore controllo sul codice, questa scelta ha prodotto indubbi benefici. Infatti trattandosi di codice HTML esso è direttamente visualizzabile da un browser e formattabile con un CSS collegato. Tuttavia, trattandosi di codice XML esso è al contempo trasformabile con uno XSL. In particolare lo XHTML originale è stato trasformato con un XSL appositamente sviluppato (docBuilder.xsl) in grado di generare la barra laterale di navigazione nonché paginare l'intero testo suddividendolo nelle sue sezioni grazie al riconoscimento dei blocchi di testo (tag div). Vengono anche gestiti i riferimenti interni al documento paginato, nonché la numerazione dei paragrafi e delle figure nei riferimenti. Il codice prodotto è ancora conforme alle specifiche XHTML.

Per quanto riguarda invece la rappresentazione dei documenti XML in HTML con l'evidenziazione degli elementi sintattici, si è sviluppato un altro XSL (xml2html.xsl) in grado di generare il codice HTML necessario. Ai tag di tale HTML vengono assegnate opportune classi in modo da poter formattare diversamente, ed in modo flessibile gli elementi significati dello XML originale.

back top 1.4. Sviluppi futuri.

Gli sviluppi per questa applicazione hanno già portato alla realizzazione di una versione evoluta capace di sfruttare la potenza elaborativa di più macchine collegate fra le quali ripartire il carico di utenti. Inoltre fra le novità più interessanti spicca la possibilità di eseguire contemporaneamente più applicazioni sull'infrastruttura e la capacità di modificare, aggiungere e rimuovere le applicazioni a tempo di esecuzione.