Debug del software per dispositivi mobili
MobileTogether è uno strumento per la creazione di soluzioni complesse, eleganti e multipiattaforma. Gli sviluppatori hanno bisogno di strumenti di debug per applicazioni mobile per risolvere i problemi durante lo sviluppo e comprendere il comportamento dell'applicazione. Il MobileTogether Designer offre funzionalità complete di debug del flusso di esecuzione dell'applicazione all'interno degli alberi di azioni e permette il debug delle funzioni XPath/XQuery. Queste funzionalità sono disponibili in due viste di debug per applicazioni mobile, integrate in un unico strumento.
La vista "Debugger delle azioni" consente agli sviluppatori di eseguire il debug delle azioni associate a un evento di controllo o a un evento di pagina. Questa vista è disponibile quando, durante l'elaborazione, viene rilevata un'azione che è stata selezionata per il debug. La vista "Debugger XPath" apre la finestra di valutazione di XPath/XQuery, che permette di tracciare e debuggare in modo approfondito le espressioni.
Gli sviluppatori possono impostare punti di interruzione in diverse posizioni e, quindi, eseguire l'applicazione passo dopo passo, interrompendola in qualsiasi momento per poter esaminare l'ambiente di esecuzione completo.
Vediamo ora un esempio pratico di debug di applicazioni mobile:

In un precedente articolo sulle tecniche di programmazione per lo sviluppo di applicazioni mobile, abbiamo utilizzato un'applicazione per il monitoraggio della qualità dell'aria per illustrare una subroutine all'interno di un'applicazione mobile. La subroutine, implementata come un gruppo di azioni MobileTogether, calcolava l'ora locale di una misurazione della qualità dell'aria a partire dai dati restituiti da un'API, forniti in formato GMT e con un valore di correzione. Possiamo eseguire il debug della subroutine per assicurarci che i nostri calcoli siano corretti.
Innanzitutto, imposteremo un punto di interruzione all'inizio del gruppo di azioni "Calc time local" per interrompere l'esecuzione quando la subroutine viene chiamata:

È possibile aggiungere tutti i punti di interruzione necessari, e non è necessario preoccuparsi di doverli ritrovare in seguito. Questi vengono gestiti dal menu principale di Debug:

Abbiamo anche utilizzato il menu per impostare l'opzione "Interrompi al prossimo punto di interruzione". Ora possiamo eseguire la nostra applicazione nel simulatore, e questa funzionerà normalmente fino a quando non viene chiamata la sezione "Calc local time".
L'immagine qui sotto mostra la schermata del simulatore quando l'applicazione si è fermata al punto di interruzione. L'utente ha selezionato un rapporto sulla città di Londra, l'applicazione ha chiamato l'API e ora desidera calcolare l'ora locale a partire dai dati ricevuti:

Due pannelli del debugger sono aperti sul lato sinistro dello schermo. Nella parte superiore, si visualizzano le azioni che stanno per essere eseguite, con un punto di interruzione rosso e una freccia verde che indica il passaggio corrente. Nel pannello sottostante, si visualizza la pila di chiamate delle azioni che portano al gruppo di azioni.
I pulsanti "più" nella visualizzazione dello stack delle chiamate mostrano i valori dei parametri forniti quando il gruppo di azioni è stato chiamato. Possiamo cliccare sul pulsante "Entra nell'azione" in alto per continuare l'esecuzione passo dopo passo:

Un momento, Londra non si trova nella stessa zona oraria di Greenwich, nel Regno Unito, e quindi non dovrebbe richiedere alcuna correzione rispetto al GMT? Ho chiesto a tutti i miei assistenti virtuali e a tutti i motori di ricerca, e mi hanno risposto che sia Londra che Greenwich utilizzano l'ora legale britannica, che è un'ora in più rispetto al GMT.
In ogni caso, questi sono i dati che l'API ci ha fornito, quindi possiamo procedere. Esaminando i commenti, arriviamo alla prima azione "Aggiorna nodo":

Il nodo "localDateTime" viene impostato con il valore del parametro "$time".
Passo successivo:

La lettera "T" viene inserita tra la data e l'ora per conformarsi alla sintassi richiesta dalla funzione add-hours-to-dateTime().
Passo successivo:

Le ore di aggiustamento vengono aggiunte.
Passo successivo:

Ci sono delle correzioni da apportare? No.
Passo successivo:

Sostituire la lettera "T" con uno spazio.
Passo successivo:

La riga di commento indica la fine del gruppo di azioni. Ora possiamo utilizzare il pulsante "Esegui" verde, situato in alto, per riprendere l'esecuzione normale dell'applicazione. Si apre una sottosezione per visualizzare l'indice di qualità dell'aria:

Quindi, la funzionalità di visualizzazione delle azioni nell'app mobile ha confermato che la nostra logica era corretta.
Tuttavia, è piuttosto noioso e superfluo salvare il risultato intermedio ad ogni passaggio. Dovremmo combinare i passaggi in un'unica espressione:

Le tre azioni originali sono state disabilitate e sostituite da un'unica azione che include un'espressione complessa. Possiamo utilizzare la vista del debugger XPath per testare questa espressione.
Avremmo potuto passare senza problemi da una visualizzazione all'altra, ma abbiamo interrotto la prima sessione di debug per modificare l'espressione. Ora eseguiremo questa nuova versione nel simulatore. Questa volta, quando si fermerà al punto di interruzione, utilizzeremo il pulsante "Entra in XPath" per avviare il debug dell'applicazione mobile nella visualizzazione "Debugger XPath/XQuery":

Si apre la finestra dell'interprete XPath/XQuery e il debugger inizia a valutare l'espressione:

Ora utilizzeremo il pulsante "Entra" nella finestra XPath, per continuare ad analizzare l'espressione passo dopo passo:

Le sezioni inferiori dell'immagine indicano il contenuto dei parametri forniti quando il gruppo di azioni è stato chiamato. La variabile "$time" proveniva da un elemento JSON contenente dati testuali, che era stato restituito dall'API.
Passo successivo:

All'interno dell'espressione, è necessario che la variabile "T" rispetti la sintassi della funzione "add-hours-to dateTime()".
Passo successivo:

Ora abbiamo completato l'operazione e ottenuto il risultato finale. In questa esecuzione, il parametro originale $time era il 03/08/2020 07:00:00 e il valore $adj per la correzione era -07:00. A questo punto, il risultato ottenuto è 2020-08-03T00:00:00.
La prossima operazione sarà un test per verificare se è necessario apportare una correzione per i minuti. Il parametro "adj" termina con "00", quindi questo test fallisce, la "T" viene sostituita e viene visualizzata la sottopagina:

Se state sviluppando applicazioni per diverse piattaforme, avrete bisogno di uno strumento che offra funzionalità di debug per le applicazioni mobile. Date un'occhiata a MobileTogether dimostrazioni video, di più applicazioni di esempio, o addirittura il/la manuale online per un'analisi approfondita di tutte le informazioni. Quando sarete pronti a iniziare e a sviluppare le vostre applicazioni mobili multipiattaforma nel modo più rapido, Scaricate il software MobileTogether Designer per iniziare.