Se fino a non molto tempo fa tutto quanto era presente su internet veniva definito genericamente "sito web" o al massimo "portale", è noto ormai il moltiplicarsi di servizi e definizioni: abbiamo blog, podcasting, web services, e soprattutto RIA (Rich Internet Applications). Proprio alle RIA dedichiamo questo articolo, esaminando anzitutto di cosa si tratta, come Flex e Flash possono aiutarci a crearle e quali consigli tenere presenti in fase di progettazione e sviluppo.
Cos'è una RIA
Il concetto di Rich Internet Application è piuttosto semplice: si tratta di applicazioni utilizzabili via web in grado di reagire dinamicamente agli input dell'utente, sia andando a recuperare dinamicamente dei dati, sia variando l'aspetto visivo di alcuni elementi; possiamo considerarle simili alle classiche applicazioni desktop, col vantaggio però di essere raggiungibli da internet.
Alcuni esempi di RIA sono: AirTreks Trip Planner e
RBK Custom, oppure per citare un servizio ormai molto famoso, Google Maps.
Il settore delle applicazioni web è piuttosto vasto, lo scopo finale comunque è solitamente quello di offrire all'utente un servizio personalizzato.
Tecnologie di sviluppo
Il primo aspetto che le RIA hanno in comune con le più classiche applicazioni desktop è la capacità di interagire e rispondere agli input dell'utente senza bisogno di cambi di pagina, reload o simili.
Con il classico HTML invece è necessario ricorrere a popup, aggiornamenti, cambiamenti di pagina, etc., con conseguente aumento dei tempi di attesa tra un'operazione e l'altra ed al tempo stesso una navigazione frustrante per l'utente.
Un'ancora di salvezza in questo ambito la getta Ajax, che permette di variare dinamicamente le informazioni all'interno della stessa pagina senza doverla aggiornare o cambiare; questa tecnologia però non può essere utilizzata in condizioni di javascript disabilitato, inoltre è più arduo offrire un'impatto visivo paragonabile a quello raggiungibile con Flex o con Flash.
Ad esempio l'applicazione RBKCustom vista in precedenza deve senza dubbio gran parte del suo "fascino" all'utilizzo di animazioni e all'anteprima in tempo reale con il semplice rollover.
Flash del resto permette di cambiare l'aspetto di un'interfaccia in maniera molto fluida.
Da dove cominciare
Possiamo considerare le RIA alla stregua delle applicazioni desktop, pertanto chi avesse già sviluppato (in qualsiasi linguaggio) software desktop potrà sfruttare le abitudini acquisite per velocizzare il flusso di lavoro, specialmente se già conosce le problematiche cui potrebbe trovarsi di fronte.
Ricordiamo sempre che, specie per progetti di una certa complessità, gioca un ruolo importante ciò che avviene prima ancora di sedersi davanti al pc, ovvero l'ideazione del progetto da realizzare e la sua stesura con carta e penna.
Ad esempio, analizzare a fondo le caratteristiche che l'applicazione dovrà avere, quali potrebbero essere i problemi o gli errori comuni degli utenti, aiuterà nel processo effettivo di realizzazione del progetto e soprattutto eviterà che gli errori vengano fuori in fase di sviluppo, quando solitamente è più complesso e dispendioso apportare modifiche.
Possibilmente scriviamo le caratteristiche che vogliamo implementare nell'applicazione, riportiamo su carta il processo che facciamo mentalmente: ci aiuterà a non "perdere le idee per strada", potremmo utilizzare il foglio stesso per segnare le procedure create, quelle da realizzare, quelle accantonate, etc.
Fare un mini-progetto anche per applicazioni che sviluppiamo a scopo personale è molto utile per assimilare una buona abitudine e consolidare una mentalità progettuale.
Non reinventiamo la ruota
Sia per Flash che per Flex esistono librerie, componenti ed esempi già realizzati; una risorsa con moltissimi esempi è IFBIN, raccolta di esempi (Flash e Flex) recentemente divenuta gratuita. Specialmente per Flash poi vi sono molti componenti, librerie e classi che possono essere sfruttare per velocizzare il processo di sviluppo; Flex da questo punto di vista è un po' "svantaggiato" essendo più recente, di contro però essendo pensato principalmente per lo sviluppo di RIA già di default integra un'ampia quantità di strumenti e funzioni utili.
Il discorso di non reinventare la ruota si applica anche e soprattutto all'interfaccia: per quanto creare dei sistemi di navigazione originali possa essere una sfida interessante e stimolare la propria creatività, è consigliato utilizzare gli schemi ormai "classici" di tutte le applicazioni, per mettere a proprio agio l'utente: avere di fronte un'interfaccia complessa e non riuscire a farla funzionare correttamente è frustrante e può portare l'utente ad abbandonare il nostro servizio.
Possiamo invece "sbizzarrirci" maggiormente per quanto riguarda la personalizzazione degli elementi grafici, poiché questo consentirà di offrire un servizio con una navigazione "classica" ma con un look più accattivante rispetto alle soluzioni "concorrenti".
Curiamo il codice
Questo vale un po' per tutti i progetti e non solo per le RIA: curare il più possibile il codice, rendendolo leggibile ma anche ottimizzato.
Usare dichiarazioni fortemente tipizzate
Lo strong typing permette un processo di debugging più efficiente, dato che consente di assegnare ad ogni variabile il tipo di valori che può accettare.
Esempi di dichiarazioni strong typing
Tipizzazione forte | Tipizzazione debole |
---|---|
var numero:Number = 0; |
var numero = 0; |
var stringa:String = "Ciao" |
var stringa = "Ciao" |
Forse bisognerà dedicare qualche secondo in più a scrivere una dichiarazione, ma saremo sicuri che il processo di test dell'applicazione sarà più rapido e maggiormente dettagliato.
La leggibilità del codice
Utilizzare nomi chiari
Spesso durante la stesura del codice, magari per fretta o tempi di consegna stretti, si tende a scrivere variabili dal nome più corto possibile: questo magari consente di risparmiare inizialmente del tempo, ma penalizza moltissimo la manutenzione del progetto ed eventuali modifiche, senza parlare della penalizzazione nel lavoro di gruppo, nel qual caso la necessità di usare nomi chiari per variabili, funzioni e quant'altro è fondamentale.
Commenti chiari e concisi
Commentare classi e funzioni che la RIA andrà ad utilizzare è molto importante. Attenzione solo a non esagerare: il commento deve essere breve e non un "romanzo", altrimenti perderebbe la sua utilità. Bastano un paio di righe per accennare lo scopo del codice. Usare uno standard per i commenti, inoltre, può tornare utile per distinguere e trovare rapidamente porzioni di codice.
Pulizia
A volte può capitare di commentare un blocco di codice, per sperimentare un'alternativa o perché si sono usate delle azioni a puro scopo di debug. È bene ricordarsi di eliminare questi blocchi qualora non venissero utilizzati nell'applicazione finale, sia perché andrebbero ad appesantire inutilmente il codice finale, sia perché in fase di manutenzione potrebbero essere fastidiosi o peggio fraintesi.
Creare codice versatile
Qualora creassimo script che pensiamo esserci utili in futuro, badiamo a renderli il più possibile versatili, così che nei progetti successivi sia possibile riutilizzarli comodamente e risparmiare sui tempi di sviluppo. Potremmo impiegare più tempo nella creazione iniziale dello script, ma avremo delle componenti già pronte per sviluppi futuri, senza doverle creare ogni volta da zero.
Separazione delle risorse
Nel caso di applicazioni piuttosto complesse è consigliabile separare le risorse, in modo da avere una miglior divisione dei contenuti in fase di sviluppo. Specialmente nel caso in cui si sviluppi in team, una buona divisione dei compiti è molto importante e proprio a questo scopo si rivela utile la possibilità di integrare più fonti: ogni sviluppatore svilupperà una precisa parte del progetto e queste potranno essere facilmente integrate nell'applicazione principale.
Per quanto riguarda immagini, suoni e simili, può essere utile mantenerli come elementi esterni per rendere più leggera l'interfaccia principale e caricarli solo quando necessario. Sia con Flash che con Flex è possibile incorporare le risorse oppure caricarle dall'esterno.
Distribuire i contenuti
Le soluzioni adottate in fase di sviluppo influiscono per alcuni aspetti anche sulla distribuzione dell'applicazione: includere tutto nel file del progetto permette di poter distribuire solo un file per far funzionare l'applicazione, mentre l'utilizzo di file esterni implica la necessità di uploadare sullo spazio web anche questi file.
Sia Flex che Flash generano dei file ".swf" che possiamo inserire all'interno di classiche pagine HTML, per cui i contenuti saranno accessibili pressappoco da qualsiasi browser, grazie soprattutto alla grande diffusione del Flash Player; a tal proposito va considerato che Flex genera contenuti per il Flash Player 9, che attualmente potrebbe non essere ancora diffusissimo, per cui da questo punto di vista potrebbe essere meglio affidarsi a Flash che consente di esportare i contenuti per versioni meno recenti del player, anche se lo sviluppo di RIA almeno mediamente complesse Flex è decisamente più idoneo, vista la quantità di controlli che mette a disposizione.
Conclusioni
Questi consigli sono validi sia per Flash, sia per Flex, inoltre queste pratiche sono da tenere a mente anche per lo sviluppo di progetti meno complessi di una RIA.
Un ultimo consiglio, anch'esso utile in ogni occasione, è quello di impiegare più tempo possibile nel test dell'applicazione, provando anche le situazioni che ci sembrano più "improbabili"... E che poi puntualmente si verificano! Analizziamo quindi come la nostra applicazione reagisce ad input imprevisti, valutiamo l'eventualità di inserire messaggi di errore e avvisi per aiutare l'utente a diminuire la possibilità di sbagli o a riconoscere i propri errori.