MokaByte Numero 31  - Giugno 1999
Progettazione e programmazione visuale... 
fino a che punto le promesse
vengono mantenute?
di 
Garlaschelli Andrea
..


...lo scopo "completamente disinteressato" di questo articolo è quello di scegliere tra i programmi visuali presenti sul mercato quelli più adatti alla realizzazione di un macro-ambiente di sviluppo, che dia la possibilità anche ad utenti con scarsa mobilità agli arti superiori di realizzare in completa autonomia prodotti software in Java....

Quante volte si è sentito nominare il termine visuale associato ad un prodotto software, e al momento dell’utilizzo del programma in questione ci si è resi conto che mai tale termine era stato usato tanto a sproposito?
Chiunque ami provare di persona i vari prodotti presenti sul mercato, sa che quella sopra citata è una situazione abbastanza frequente, infatti, per quanto molti programmi vengano presentati come completamente visuali, ed utilizzabili semplicemente tramite il mouse in modo rapido ed efficace, dopo una veloce fase di test, spesso risultano avere semplicemente un’interfaccia più accattivante rispetto quella della versione precedente del prodotto, e nulla a che vedere con ciò che ci si potrebbe aspettare.
La faccenda diventa ancor più fastidiosa e seria quando l’utente si trova nella reale necessità non poter utilizzare la tastiera, come nel caso di persone disabili con particolari problemi motori (tra le quali vi sono anch’io).
Quindi, lo scopo "completamente disinteressato" di questo articolo è quello di scegliere tra i programmi visuali presenti sul mercato quelli più adatti alla realizzazione di un macro-ambiente di sviluppo, che dia la possibilità anche ad utenti con scarsa mobilità agli arti superiori di realizzare in completa autonomia prodotti software in Java.
I prodotti che ho testato e valutato possono essere suddivisi in tre grandi famiglie: quella dei software CASE (Computer Aided Software Engineering), quella degli ambienti di sviluppo e quella degli strumenti alternativi alla tastiera per immettere dati nel computer, che hanno avuto il compito di integrare i primi due.
In primo luogo ho dovuto valutare e testare i prodotti dedicati alla progettazione software CASE e gli ambienti di sviluppo visuali.
La scelta di utilizzare dei prodotti software CASE è dovuta al fatto che per realizzare un buon programma, si debba anche realizzare un buon progetto, sia perché ciò permette di portare ad un livello più intuitivo l’essenza del programma in fase di sviluppo, sia perché così tutte le persone coinvolte alla realizzazione possano sapere a che punto si è giunti nello sviluppo ed il funzionamento globale del sistema.
Ecco una breve rassegna di alcuni fra i più famosi prodotti sfotware diposnibili sul mercato.
 
 
 

Rational Rose 98

Rational Rose, è un prodotto molto completo ed allo stesso tempo intuitivo, che per mezzo di un’interfaccia grafica ben sviluppata, permette all’utente la realizzazione di progetti di sistemi Object Oriented, semplicemente tramite l’utilizzo del mouse come sistema di input primario.
Questo programma consente sia di realizzare dei grafici che rappresentano la struttura teorica del progetto, sia grafici che rappresentano la struttura delle classi realmente coinvolte.

.
 
 
 
 


 
 
 
 
 
 
 

La notazione che utilizza, per la struttura del progetto, è l’UML; essa è ottima in quanto allo stesso tempo robusta e compatta.
È possibile reperire una versione demo di questo prodotto software all’indirizzo:
http://www.rational.com/products/rose/index.jtmpl
 
 
 
 

With Class 1.2

Il prodotto With Class, è un software abbastanza semplice da utilizzare in quanto non offre tutte le caratteristiche che sono state riscontrate esserci in Rational Rose.
Si può ritenere ugualmente un buon programma per la stesura di progetti, anche se è risultato essere carente sotto l’aspetto del dettaglio delle classi, infatti non è stato possibile creare commenti associati ai singoli componenti degli oggetti, e non è neanche stato possibile realizzare codice dallo schema realizzato.
A tutto ciò, si aggiunge anche una notazione obsoleta e superata, infatti questo prodotto non utilizza l’UML, che oramai è diventato lo standard de facto per la stesura dei progetti, ma usa ancora la notazione OMT.
È risultato evidente dalle prove fatte che il programma Rational Rose era l’ideale per la realizzazione del macro-ambiente, mentre With Class poteva andare bene ad un utente che aveva necessità di utilizzarlo solo per creare un progetto fine ha se stesso e non un programma realmente funzionante.
Dopo aver deciso che strumento usare per la creazione del progetto che era in fase di realizzazione, è stata la volta della scelta dell’ambiente di sviluppo; tra le caratteristiche che questo strumento doveva avere, una primaria era quella che doveva permettere all’utente un utilizzo il più ristretto possibile della tastiera come mezzo di input.
I prodotti per lo sviluppo di applicazioni Java sono molti, e di conseguenza la scelta è stata più difficile del previsto, ad ogni modo quelli da me testati sono:
 
 
 
 

CodeWarrior 2.0

Questo programma, pur offrendo un’eccellente supporto interpiattaforma resta tuttavia molto indietro rispetto agli altri programmi testati.
E’ infatti privo di quegli strumenti ormai abituali che consentono di facilitare e velocizzare le operazioni più ripetitive dello sviluppo, come semplici strumenti RAD per la progettazione visuale e le procedure di autocomposizione dedicate alla connettività database.
Malgrado la totale mancanza di supporto per i componenti visuali, il suo ambiente IDE (Integrated Development Environment) è tuttavia eccellente e molto piacevole da usare, anche se non supporta le macro che permetterebbero di facilitare alcune operazioni di sviluppo.
A causa della mancanza di un editor visuale per i componenti è necessario progettare gli elementi dell’applicazione scrivendo il codice "a mano", ciò per la realizzazione del macro-ambiente di sviluppo è risultato estremamente negativo.
È possibile reperire una versione demo di questo prodotto software all’indirizzo:

http://www.ars2000.com/metrowerks/metrowerks.htm
 
 
 

Java Workshop 2.0

Questo ambiente è particolarmente adatto a chi dispone di una conoscenza completa del modello a eventi JDK, è inoltre in grado di facilitare alcune noiose operazioni di programmazione, anche se si tratta in ogni caso di uno strumento dedicato a chi scrive molto codice "a mano".
Sebbene offra tutta la potenza necessaria per creare applicazioni Internet a livello professionale, con il supporto per più piattaforme native e per il debugging remoto, queste funzionalità sono risultate disponibili anche in altri pacchetti dotati di un maggior numero di strumenti visuali.
L’ambiente di sviluppo è costituito, in pratica, dal browser HotJava, ciò significa che lo spazio di lavoro non è altrettanto pulito come quello degli altri ambienti di lavoro, senza contare il fatto che essendo un’applicazione scritta in Java risulta molto pesante da essere eseguita (nella fase di test l’ambiente IDE si è bloccato, apparentemente senza motivo, più di volte).
È possibile reperire una versione demo di questo prodotto software all’indirizzo:
http://www.sun.com/workshop/java/
 
 
 
 

PowerJ 2.1

La principale caratteristica di questo prodotto è la sua capacità di utilizzare qualsiasi versione del kit JDK e strumenti CORBA o ActiveX, rendendolo aperto ad ogni possibilità di sviluppo.
Il suo ambiente strettamente integrato offre la possibilità di usare il "drag and drop" offrendo funzionalità particolarmente valide; la potente Reference Card utilizza l’introspezione per raccogliere metodi, proprietà e sintassi dei comandi di tutti i Bean trovati.
L’interfaccia del pacchetto si basa sull’ambiente Power++ di Sybase, che è estremamente configurabile, si può scegliere quali palette di componenti visualizzare e aggiungere facilmente nuovi Bean.
Manca, tuttavia, a questo prodotto una vista grafica gerarchica delle classi simile a quella offerta da molti degli altri ambienti di sviluppo testati.
 
 
 

VisualAge 2.0

VisualAge è un pacchetto estremamente difficile da imparare, e richiede un significativo periodo di apprendimento.
La tecnica di programmazione visuale di questo prodotto consente di sistemare e connettere gli oggetti JavaBean all’interno del suo editor visuale.
Questo strumento non elimina totalmente la necessità di scrivere il codice, ma aiuta ad ottenere il risultato finale in modo più veloce, il programma genera infatti automaticamente buona parte del codice relativo.
È possibile reperire una versione demo di questo prodotto software all’indirizzo:
http://www7.software.ibm.com/vad.nsf/data/document2590
 
 
 

Visual Cafe 2.0

Gli sviluppatori esperti non avranno alcuna difficoltà a "scavare" in Visual Cafe per ottenere il massimo della produttività.
Il suo ambiente IDE è ben progettato, nonostante abbia forse una presenza eccessiva di finestre, e l’ambiente permette una stretta correlazione tra la rappresentazione grafica e la scrittura del codice relativo.
Infatti, quando si apporta una modifica ad una finestra di codice o al suo modulo visuale, essa viene immediatamente riprodotta anche nell’altro ambiente, realizzando così il migliore strumento di programmazione visuale che è stato testato.
.

È possibile reperire una versione demo di questo prodotto software all’indirizzo:

http://shop.symantec.com/

In seguito al test di tutti questi prodotti per lo sviluppo la scelta è ricaduta su Visual Cafe, in quanto, oltre all’estrema intuitività dell’interfaccia, è anche l’ambiente più versatile e bene bilanciato tra tutti, in quanto offre tools abbastanza complessi ma allo stesso tempo utilizzabili quasi esclusivamente tramite il mouse in modo visuale.
Dopo aver valutato questi programmi, è risultato subito evidente che, l’utilizzo della tastiera per inputare dati è l’unico modo per compiere certe operazioni fondamentali, non fattibili tramite mouse, di conseguenza si è reso indispensabile valutare dei sistemi per inserire dati in modo alternativo.
La scelta da me fatta è stata quella di evitare le periferiche non comuni su tutti i computer, tipo mini tastiere o sistemi di puntamento ad infrarosso, in modo che questa esperienza fosse il più possibile portabile e replicabile su qualsiasi macchia dotata degli strumenti di input output standard.
Di conseguenza, il mouse è lo strumento di input alternativo alla tastiera sul quale ho fatto principalmente affidamento, in quanto sicuramente presente su tutte le macchine
Per poterlo usare come strumento di inserimento caratteri in finestre Windows, è stato necessario trovare un software che interfacciato con esso adempisse a tale scopo.
Prodotti di questo tipo, in commercio non se ne trovano, in quanto gli utenti interessati non sono certamente molti, però, ho trovato alcuni programmi shareware, adatti allo scopo, in Internet.
Quelli trovati, testati e valutati sono:
 
 
 

No-Keys 1.1

No-Keys offre una tastiera virtuale (sullo schermo) a persone con limitata capacità motoria, usando un mouse, è possibile selezionare dei caratteri da una sequenza di tasti che scorre.
Si può fare in modo, tramite le opzioni, che il programma resti sempre in primo piano e così utilizzarlo anche per caricare altre applicazioni sotto Windows.
È possibile reperire questo software shareware all’indirizzo:
http://206.66.184.152/program.html
 
 
 

SoftKBD 2.0

SoftKBD è stato creato per dare la possibilità di utilizzare un computer in ambiente Windows in modo approfondito anche a persone che non possono usare la classica tastiera, usandone una software, che compare sullo schermo, con il semplice metodo del "points & clicks".

Caratteristica notevole è quella che è possibile creare un dizionario personale per ogni applicazione che si intenda usare combinata al SoftKBD.
È possibile reperire questo software shareware all’indirizzo:

http://www.wildmantim.com/acsp/sharewar.html
 
 
 
 

Unictrl 1.0

Unictrl è un simulatore di tastiera shareware, per persone con problemi fisici, che non riescono a usare una comune tastiera. L’utilizzatore usa il bottone del mouse sincronizzato con dei tasti lampeggianti in una piccola finestra sullo schermo per inviare i caratteri selezionati alla finestra attiva in Windows.
È possibile reperire questo software shareware all’indirizzo:
http://www.sped.ukans.edu/~dlance/windows.html
Tra i prodotti shareware qui elencati, la scelta è ricaduta su SoftKBD, in quanto dopo averlo testato e confrontato con gli altri programmi del suo genere, ho riscontrato che è ricco di funzioni utili al macro-ambiente di sviluppo.
Un problema che è subito risultato evidente con l’utilizzo prolungato di SoftKBD, è la lentezza con la quale un utente può inserire dati, infatti risulta piuttosto difficile coordinare rapidamente il movimento del mouse con il clic per la digitazione dei caratteri.
Avendo i computer, quasi di serie, la scheda audio, ho ritenuto quindi possibile utilizzare anche un programma di riconoscimento vocale, oltre alla tastiera virtuale, per velocizzare la fase di inserimento dati sotto forma di testo.
Ecco alcuni prodotti di riconoscimento vocale che sono stati testati :
 
 
 

DragonDictate 2.2

Il DragonDictate è un prodotto estremamente versatile, infatti senza l’ausilio di alcuna scheda hardware dedicata, ma appoggiandosi su una qualunque scheda audio, raggiunge un livello di riconoscimento vocale molto buono.
Il funzionamento del DragonDictate si basa su due modelli matematici del parlato: uno acustico, relativo alle modalità di riconoscimento dei singoli fonemi, ed uno linguistico, relativo alle modalità di combinazione dei fonemi in parole identificabili.
Nella versione precedente di questo prodotto, tutta la parte matematica relativa all'elaborazione del modello acustico (conversione analogico/digitale, trasformazione di Fourier, best-matching dei fonemi e così via) veniva svolta in hardware da un processore dedicato, contenuto su una apposita scheda di espansione.
Il nuovo DragonDictate invece ha portato in software anche questa parte, che avviene concorrentemente all'elaborazione del modello linguistico.
Il sistema dunque effettua in hardware solo la conversione analogico/digitale, delegando tutte le altre parti matematiche al microprocessore del computer; e pertanto "si appoggia" a qualunque scheda audio standard (ad esempio compatibile SoundBlaster) installata nel sistema, passando attraverso le normali routine di campionamento previste dal sistema operativo.
Ciò significa meno problemi di installazione, nessun conflitto con altre periferiche, e in definitiva un minor costo del prodotto, a fronte di un maggior impegno sulla CPU; questa dev'essere almeno un Pentium 100, con almeno 24 MByte di RAM.
La possibilità di utilizzarlo per dettare in qualunque applicazione lo rende facilmente integrabile con qualsiasi applicazione Windows.
 
 

VoiceType

Il prodotto VoiceType è risultato essere un buon prodotto di riconoscimento vocale, con un ampio vocabolario e delle routine di voice matching molto efficienti; purtroppo però è risultato essere carente sotto un’importante aspetto legato alla tesi, ovvero la versatilità e la facilità di interfacciamento con altri programmi sotto Windows.
Infatti si nota subito che la maggior parte della dettatura si può fare soltanto all’interno di un applicativo di nome "VoicePad" (perfettamente analogo al WordPad) e non nella finestra realmente desiderata, obbligando così l’utente ad un noioso e macchinoso "cut & paste" continuo.
Il secondo problema riscontrato è relativo alla portabilità di questo prodotto; il VoiceType infatti delega tutta la parte di calcolo per la conversione del segnale in input dal microfono ad una scheda hardware dedicata che ovviamente potrà risiede soltanto su una macchina.
Risulta evidente dalla descrizione dei due prodotti testati che, sebbene il VoiceType abbia un ottimo livello di riconoscimento vocale, non è risultato adatto allo scopo della tesi; invece il prodotto DragonDictate permette una più ampia interazione con il sistema e con le applicazioni funzionanti in esso.
Una volta individuati gli strumenti con le caratteristiche più adatte allo sviluppo del macro-ambiente, ho dovuto valutare il modo migliore per integrarli, in modo da minimizzare l’interazione con la tastiera.
Durante la fase di progettazione, tramite l’utilizzo di con Rational Rose, è risultato subito evidente che determinate procedure venivano ripetute molte volte, con poche variazioni, questo ha fatto subito pensare alla possibilità di automatizzare questa procedura.
Tra le caratteristiche del prodotto DragonDictate, oltre a quel di poter creare o aggiungere vocaboli ad un vocabolario proprietario, vi è anche la possibilità di creare delle macro.
Una macro consiste in una serie di battiture di tasti che DragonDictate esegue quando si pronuncia la parola associata a tale macro.
Le macro sono difatti parole di comando create nel vocabolario di DragonDictate alle quali è associato non l’equivalente di un elemento di testo bensì dei tasti di funzione.
È possibile creare e utilizzare macro per formattare testo in un programma di video scrittura, per modificare colonne in un foglio elettronico o come nel nostro caso per inserire in modo automatico degli oggetti (classi, relazioni, ecc.) all’interno di un progetto in fase di realizzazione con Rational Rose.
Così infatti è stato fatto, e dopo un’attenta analisi dei comandi più frequenti, le macro che ho creato permettano la l’inserimento automatizzato di: una nuova classe, un nuovo package, una nuova interfaccia, una nuova associazione, una nuova aggregazione, una nuova generalizzazione, un nuovo attore ed in fine un nuovo use case.
Ovviamente ogni utente può scegliere per quali elementi creare la macro, quelli sopra citati sono, a mio avviso, gli elementi di utilizzo più comune e quindi indispensabili da avere.
Una volta creato il progetto del programma che si sta per sviluppare, incomincia la parte di lavoro che richiede una maggior interazione con la tastiera: la scrittura del codice sorgente.
Il software SoftKBD, per quanto sia un prodotto semplice e dalle limitate possibilità di utilizzo, si è dimostrato essere una soluzione alternativa all’utilizzo di un programma di riconoscimento vocale estremamente valida per questa fase.
Il suo punto di forza sta nel fatto che permette all’utente di inserire qualsiasi stringa di caratteri in una qualunque applicazione funzionante sotto Windows, permettendo così di non dover mai (e qui il termine mai è veramente utilizzato a proposito) digitare tramite la tastiera del computer.
Il difetto fondamentale di DragonDictate, che SoftKBD non ha, è quello di permettere solamente l’inserimento di termini che "conosce", infatti, in caso si debba scrivere, per la prima volta, una parola non contenuta nel suo vocabolario standard, l’unico modo è quello di inserirla noi "a mano", e vi assicuro che l’operazione è abbastanza lunga e complessa.
Quindi, per la creazione del macro-ambiente di sviluppo, il prodotto software SoftKBD si è dimostrato essere la migliore soluzione esistente, in quanto, tramite il suo vocabolario configurabile per ogni applicazione, permette di divenire uno strumento molto versatile e potente per l’inserimento rapido di linee di codice.
Inoltre, una volta creato il vocabolario per SoftKBD dedicato alla programmazione in Java, è possibile utilizzarlo in qualunque ambiente di sviluppo si decida di lavorare; facendo così in modo che gli sforzi fatti per la sua realizzazione non vadano sprecati.
 

Conclusioni

Concludendo, vorrei sottolineare come tramite una scelta opportuna di prodotti software presenti sul mercato, sia stato effettivamente possibile realizzare un macro-ambiente di sviluppo efficiente, che dia la possibilità, pur non utilizzando mai la tastiera, di raggiungere un livello di produttività adeguato alle esigenze di un esperto programmatore Java.

 
 

MokaByte rivista web su Java

MokaByte ricerca nuovi collaboratori
Chi volesse mettersi in contatto con noi può farlo scrivendo a mokainfo@mokabyte.it