La scorciatoia per realizzare le migliori interfacce utente

Il pensiero cooperativo è una grande idea che spesso si dimostra difficile da attuare nella pratica. Ciò rimane vero anche nella creazione di un'interfaccia utente (UI) per un dispositivo embedded. Quando consideriamo il progetto di un'applicazione software, può sembrare scontato che l'interfaccia utente debba non solo essere estremamente facile da usare, ma anche interagire agevolmente con l'applicazione sottostante. Tuttavia, le tecniche preferite dai progettisti di interfacce utente e le tecnologie utilizzate dagli sviluppatori software non sono mai andate troppo d'accordo.
Il software embedded ha molto a che fare con l'hardware, che tipicamente richiede una programmazione in C di bassissimo livello, mentre i progettisti di interfacce utente, concentrandosi sull'usabilità e chiarezza dell'applicazione, lavorerebbero in modo più naturale e produttivo con un linguaggio di markup di alto livello, il tipo di linguaggio che permette una transizione morbida da un concetto visivo a un codice software eseguibile. Far sì che questi due approcci convergano e, soprattutto, si combinino verso un risultato funzionale e un flusso di lavoro produttivo, non è un compito facile.
Oltre al fatto che non è facile ottenere un flusso di lavoro fluido e integrato per progettisti e sviluppatori di interfacce utente, il problema viene sovente complicato da altri requisiti funzionali. A differenza dei computer desktop, i dispositivi embedded hanno spesso prestazioni molto limitate, nonostante possa essere richiesta loro una risposta in tempo reale estremamente molto rapida. Ciò significa che per ottenere un prodotto finito l'ottimizzazione del software deve essere fatta tenendo conto anche dell'hardware in questione.
Se poi a tutto questo aggiungiamo la necessità di ottenere un'operabilità multipiattaforma, il quadro diventa ancora più complesso, soprattutto se occorre ottimizzare l'interfaccia utente sulla base del contesto, ad esempio all'interno di un autoveicolo o su un telefonino.

Ambiente multipiattaforma

I linguaggi di markup utilizzati per descrivere le interfacce grafiche si basano sul fatto che gli utenti finali non si aspettano troppe differenze tra le varie interfacce dei diversi dispositivi e tendono a preferire il comfort della familiarità, magari con piccole innovazioni di facile comprensione e utilizzo. Ciò si riflette in una evoluzione piuttosto lenta dei nuovi elementi di progetto, che poi diventano comuni in gran parte dei dispositivi; esempi di questo sono l'evoluzione di pulsanti, slider e, più di recente, dei menu a fisarmonica utilizzati per visualizzare lunghe liste di opzioni in maniera chiara su schermi di piccole dimensioni. I linguaggi di markup aiutano i progettisti ad evitare di dover “reinventare la ruota” consentendo la creazione di script riutilizzabili o di righe di markup che permettano di importare e configurare velocemente le caratteristiche dell'interfaccia utente.

QML
è il linguaggio di markup dell'ambiente di sviluppo Qt. Esso permette di dichiarare gerarchie di oggetti e sistemi logici a stati finiti, e può anche essere utilizzato in altri domini applicativi che esulano dal progetto di un'interfaccia utente. In effetti, QML aiuta a colmare il divario tra i progettisti di interfacce e gli sviluppatori di applicazioni. QML è molto adatto per lo sviluppo delle interfacce; ad esempio, un plugin permette di esportare i file QML dai comuni programmi di grafica come Adobe Photoshop o il software open-source GIMP.
Il framework Qt è concepito per creare applicazioni multipiattaforma e interfacce utente per la programmazione in C++. Permette alle applicazioni di girare in modo nativo su diversi dispositivi come desktop, tablet e palmari basati sui comuni sistemi operativi. Integrando anche un supporto per il sistema di destinazione, Qt permette ai progettisti di ottenere un risultato migliore e tempi più brevi rispetto alla classica trasposizione del progetto su piattaforme diverse. Grazie a QML e al supporto incorporato alla programmazione in C++, Qt permette ai team di progettazione di velocizzare lo sviluppo delle interfacce utente, semplificando l'integrazione dell'interfaccia grafica con l'applicativo principale.
Più recentemente, è stato rilasciato Qt Quick (Qt UI Creation Kit) che offre un framework più veloce e più versatile in grado di creare un'esperienza d'uso più fluida e di soddisfare le richieste di mercato per i dispositivi embedded e radiomobili. Qt Quick separa la fase dichiarativa del progetto dell'interfaccia dai comandi di programmazione. Il livello di presentazione dell'interfaccia utente è scritto in QML, ma è presente un codice di back-end in C++ che si occupa del rendering e permette l'accesso diretto ai servizi della piattaforma partendo dal livello di presentazione in QML. Questo approccio permette inoltre di arricchire il QML con oggetti grafici come gli OpenGL 3D scritti in C++.
Qt Quick è incluso in una serie di ambienti di sviluppo di proprietà di terze parti. I file in QML possono essere creati e sviluppati tramite un qualsiasi editor di testi. I documenti QML sono molto semplici sia come sintassi che come struttura, a differenza di quanto avviene con molti altri linguaggi di markup. Su richiesta, Qt Quick comprende l'ambiente di sviluppo Qt Creator, dotato di potenti strumenti di editing che permettono di velocizzare la codifica di progetto delle nuove interfacce.
Qt Creator offre strumenti per inserire caratteristiche come forme e testo, e migliorarle configurando aspetti come colori e animazioni. La barra degli strumenti di Qt permette al progettista di scegliere diverse opzioni e genera automaticamente il codice QML ad esse appropriato. A partire dalla versione 2.1, Qt Creator supporta inoltre una speciale modalità di progettazione che può essere utilizzata per avere una rapida conferma visiva che l'interfaccia utente stia assumendo l'aspetto desiderato. Un singolo clic del mouse permette di entrare o uscire dalla modalità di progettazione, mentre Qt Creator offre l'accesso alla documentazione di riferimento spostando il cursore del mouse sull'elemento di codice scelto all'interno del documento. Questa funzione fornisce informazioni utili per configurare diversi aspetti dell'elemento, come le animazioni.
Poiché QML contiene solo dei controlli elementari per l'interfaccia, come rettangoli, immagini, testo, comportamenti al passaggio del mouse (MouseArea) e bordi immagini, gli utenti possono costruire le proprie composizioni per creare l'aspetto e il tipo di interazione che desiderano. Ciò è facile da ottenere con QML e gli elementi composti possono essere riutilizzati per l'intera interfaccia e anche per altri progetti. Nuovi elementi composti di interfaccia utente vengono creati in modo gerarchico, pertanto è facile riscrivere la versione precedente di un controllo con una migliore iterazione. Ciò permette di ottenere un processo agile e incrementale e di creare l'interfaccia utente con una prototipazione veloce.

Un'ottimizzazione rapida multipiattaforma

Le proprietà multipiattaforma di Qt permettono agli sviluppatori di realizzare prototipi e progetti da un PC desktop senza che sia presente il dispositivo embedded di destinazione. L'inserimento del progetto nel dispositivo può essere effettuato successivamente in maniera indipendente quando l'hardware è pronto. Ciò significa che l'interfaccia finita opererà come previsto sul dispositivo hardware di interesse.
Spesso, l'unico requisito delle applicazioni multipiattaforma è ridimensionare l'interfaccia utente per adattarla alla dimensione dello schermo nelle diverse apparecchiature e piattaforme. Qt effettua questo ridimensionamento automaticamente. In alcuni casi, però, la stessa applicazione viene utilizzata su schermi e ambienti operativi molto diversi. Sarebbe quindi utile poter riottimizzare il layout dell'interfaccia da un dispositivo all'altro, al fine di adattarlo a differenti contesti di utilizzo, ad esempio su un telefonino, in auto o su un pc desktop. Per costruzione, il layout di un'interfaccia utente pensato per lo schermo di un pc desktop non va altrettanto bene per un telefonino e viceversa. Separando il progetto dichiarativo dell'interfaccia urente dalla logica di codifica, Qt Quick offre la possibilità di cambiare solo il sottile livello di presentazione in QML. Lo stadio di progettazione di back-end in C++ contenente la maggior parte delle funzioni può essere riutilizzato nella sua interezza. Poiché QML è un linguaggio di mark-up produttivo e di alto livello, riscrivere questo piccolo livello per un altro layout è molto semplice e, come già visto, può essere fatto un po' per volta in maniera graduale.

Flusso di lavoro della prototipazione in QML

La maggior parte degli sviluppatori ama sperimentare con QML, utilizzando un approccio creativo “per tentativi ed errori”; è divertente fare prove con QML avvicinandosi sempre di più al risultato desiderato. Tuttavia, è necessario fare qualche valutazione all'inizio di un progetto per decidere un approccio valido per l'interfaccia utente e per la relativa infrastruttura. Il processo non è automatico, perché QML contiene solo controlli di interfaccia e gestori di layout di tipo semplice. Gli aspetti da considerare comprendono variabili come la presenza di diverse viste o di una struttura di navigazione a pagine, se vi sono parti statiche come un navigatore a schede e una barra di stato, o se invece è presente una semplice vista principale con delle finestre di dialogo a comparsa.
Un modo pratico per iniziare a sviluppare l'interfaccia utente in QML è usare un elemento base come il rettangolo per posizionare dei segnaposto. Questi possono essere sostituiti ciascuno con la forma e il testo corretto. Caratteristiche più complesse come le immagini possono essere aggiunte in una fase successiva. Ciò fornisce ai team di progettazione la possibilità di iniziare a lavorare con dei veri e propri prototipi e ottenere una chiara comprensione di come l'interfaccia utente funzionerà, ancora prima che i progettisti dell'interfaccia abbiano messo a punto la grafica.
L'interfaccia utente può essere distribuita velocemente su più dispositivi, sfruttando le proprietà multipiattaforma dell'infrastruttura Qt; in questo modo i test di utilizzabilità possono essere effettuati su tutti i prodotti e ambiti di interesse. I feedback ricevuti nei workshop per utenti finali possono essere utilizzati per effettuare delle rapide modifiche sul pc host e produrre una nuova versione. I file QML possono essere subito sostituiti dinamicamente senza dover ricompilare e reinserire il software vero e proprio.

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome