Migliorare la Modellazione del Software con Feedback in Tempo Reale
Nuovi strumenti di programmazione live puntano a semplificare il modeling del software e migliorare l'esperienza utente.
― 7 leggere min
Indice
I cercatori di modelli finiti aiutano gli utenti a descrivere le caratteristiche di un sistema usando matematica e poi a trovare automaticamente esempi che si adattano a quelle caratteristiche. Questi esempi sono preziosi perché permettono agli sviluppatori di vedere come funziona il loro modello nella pratica. Tuttavia, spesso gli utenti si rendono conto che gli esempi non sono utili come pensavano. I ricercatori pensavano che fosse perché c'erano troppi esempi da esaminare. Ma studi recenti mostrano che agli utenti piace avere molte opzioni da scegliere. Invece, il problema potrebbe essere che gli esempi sono troppo distanti dalle regole che li hanno creati, rendendo difficile per gli utenti afferrare quelle regole.
Sfide nella Modellazione del Software
Le lingue di modellazione del software sono migliorate molto, e analizzare questi modelli è diventato molto più efficiente. Tuttavia, molte persone non usano ampliamente i modelli software. Questo è principalmente perché scrivere le descrizioni per questi modelli è ancora una grande sfida. Mentre gli esperti possono scrivere queste specifiche, potrebbero mancare delle conoscenze specifiche sui sistemi che stanno modellando. Idealmente, le persone che costruiscono il software dovrebbero scrivere queste specifiche.
Sfortunatamente, le lingue di modellazione sono difficili da imparare, e gli strumenti usati per la modellazione sono spesso superati rispetto agli ultimi ambienti di sviluppo. Un problema principale è la mancanza di Feedback utile. Quando un modello viene eseguito, gli utenti di solito ricevono una semplice risposta sì o no riguardo se il modello funziona. Questo non li aiuta realmente a capire se hanno scritto correttamente il loro modello.
Molte funzionalità che potrebbero aiutare nella scrittura, come suggerimenti di codice, sono anche assenti. Per affrontare il problema del feedback, sono stati creati i cercatori di modelli finiti. Gli utenti scrivono un modello del design del loro sistema, e il cercatore di modelli fornisce esempi reali di come si comporta il modello. Questo output è chiamato soluzioni. Invece di una semplice risposta sì o no, queste soluzioni forniscono informazioni più dettagliate su quanto bene funziona il modello. Questi esempi possono aiutare gli utenti a convalidare i loro design, testare il codice, risolvere problemi e analizzare la sicurezza dei sistemi.
Preferenze degli Utenti e Soluzioni
Mentre molte persone vedono le soluzioni come un vantaggio principale dei cercatori di modelli finiti, gli utenti spesso le trovano meno utili del previsto. Molti credono che avere troppe soluzioni crei confusione. Per questo motivo, è stato fatto molto lavoro per ridurre il numero di soluzioni aggiungendo più criteri su cosa renda una buona Soluzione. Ma scoperte recenti suggeriscono che gli utenti preferiscono avere più esempi da esplorare.
Gli studi sugli utenti mostrano che, siano principianti o esperti, gli utenti faticano a ispezionare le soluzioni e migliorare i loro modelli basandosi su di esse. Questo indica che la comunità ha affrontato il problema sbagliato. Sembra che le soluzioni siano chiare ma scollegate dalle regole sottostanti che le creano, lasciando gli utenti a capire come le loro regole astratte influenzino gli esempi che vedono.
L'obiettivo è creare un ambiente di sviluppo in cui scrivere il modello e valutarlo avvenga insieme. Questo potrebbe trasformare le soluzioni generate dai cercatori di modelli finiti in feedback utili, rendendo la modellazione del software più facile per i normali sviluppatori.
Programmazione Live in Alloy
Questa sezione parla di un ambiente di programmazione live per il linguaggio di modellazione Alloy. Alloy permette agli utenti di definire sia proprietà strutturali che comportamentali con regole logiche specifiche. Questo ambiente assisterà gli utenti fornendo feedback in tempo reale mentre scrivono i loro modelli.
Motivazione per la Programmazione Live
Per dimostrare l'approccio della programmazione live, considera come un utente definirebbe una struttura dati di coda in Alloy. Prima, scrivono il loro modello nell'editor di testo dello strumento di analisi. Definiscono gruppi di elementi, o atomi, e come si relazionano tra loro. L'utente crea regole per assicurarsi che il modello si comporti come previsto, ad esempio assicurandosi che nessun oggetto punti a se stesso e che tutti gli oggetti siano inclusi nella coda.
Una volta pronto, l'utente esegue un comando per controllare il suo modello, il che porta il motore di analisi a cercare tutte le potenziali soluzioni che si adattano alle regole dell'utente. Le soluzioni vengono visualizzate in una finestra separata, dove gli utenti possono vedere i diversi risultati. Se scoprono una soluzione che non dovrebbe esistere, possono modificare il loro modello nell'editor di testo e ripetere il processo per vedere come le loro modifiche influenzano i risultati.
Tuttavia, questo approccio ha le sue limitazioni. Gli utenti devono pensare separatamente a come le loro regole influenzeranno gli esempi visualizzati. Un'impostazione di programmazione live consentirebbe agli utenti di vedere questi effetti in tempo reale mentre scrivono le loro regole, assicurando che sappiano come ogni cambiamento altera i risultati possibili.
Suggerimenti per il Miglioramento
Per migliorare l'esperienza di sviluppo in Alloy, il team ha creato un prototipo con caselle di suggerimento per aiutare gli utenti con le loro formule. Queste caselle forniscono formule raccomandate e mostrano come funzionerebbero con il modello attuale. Questo è simile a come molti ambienti di programmazione suggeriscono comandi validi da scrivere.
Inoltre, gli utenti possono passare tra due modalità di visualizzazione: una che mostra tutti i potenziali risultati e un'altra che si concentra su un risultato specifico. In questo modo, gli utenti possono avere un'immagine più chiara di come le loro regole plasmino il loro modello e le sue soluzioni.
Vista di Enumerazione Dinamica
La vista di enumerazione dinamica mostra due insiemi di soluzioni accanto all'editor di testo. Un insieme consiste in soluzioni valide, e l'altro contiene quelle invalide. Man mano che gli utenti aggiungono regole al modello, possono vedere come le soluzioni valide e invalide cambiano. Questo è importante perché capire sia le soluzioni valide che quelle invalide aiuta gli utenti a conoscere meglio il modello.
In questa vista, il programma categorizzerà le soluzioni in quattro gruppi: soluzioni valide che rimangono valide, nuove soluzioni valide, soluzioni invalide che rimangono invalide e nuove invalide. Questo consente agli utenti di vedere come i loro cambiamenti influenzano i risultati nel complesso.
Vista di Focus
Mentre gli utenti sono interessati a tutte le soluzioni, potrebbero anche voler concentrarsi su soluzioni specifiche che si aspettano di funzionare o meno in base alle loro regole. La vista di focus consente agli utenti di fare esattamente questo. Possono selezionare una soluzione che vogliono tenere d'occhio e etichettarla come prevista valida o invalida.
Mentre scrivono, possono continuamente controllare se la soluzione selezionata corrisponde alle loro aspettative. Se non lo fa, il sistema fornisce informazioni su soluzioni simili per aiutare gli utenti a capire cosa è andato storto.
Direzioni Future
Per passare l'ambiente di programmazione live dalla teoria alla pratica, ci sono due sfide principali da affrontare. Prima di tutto, i prototipi per diverse interfacce devono essere affinati per garantire che gli utenti ricevano informazioni utili senza essere sopraffatti. È essenziale capire il modo migliore per presentare le informazioni, ad esempio se le soluzioni dovrebbero essere simili o se visualizzare soluzioni più grandi aggiunge chiarezza o crea confusione.
In secondo luogo, il sistema deve essere reattivo. Poiché il sistema di analisi di Alloy può essere lento, è necessario trovare modi per far funzionare l'ambiente senza ritardi. Ci sono metodi esistenti che possono aiutare a rendere il processo di analisi più veloce, e questi dovrebbero essere utilizzati per mantenere un'esperienza utente positiva.
Ricerca Correlata
La programmazione live sta guadagnando attenzione in vari campi della programmazione, ma la sua applicazione nelle lingue di modellazione è stata limitata. Ci sono sistemi che cercano di chiarire perché specifici esempi appaiano nelle soluzioni o che scompongono le soluzioni in componenti che soddisfano regole particolari. Questi sistemi potrebbero essere aggiunte preziose a un ambiente di programmazione live, offrendo spiegazioni per le soluzioni man mano che vengono generate.
In definitiva, c'è una disconnessione tra le regole di un modello e le soluzioni prodotte, rendendo difficile per gli utenti vedere quanto bene hanno scritto i loro modelli. Questo ambiente di programmazione live mira a colmare quel divario integrando la scrittura e la valutazione dei modelli, dando agli utenti la possibilità di rispondere alla domanda: “Ho scritto correttamente il mio modello?”
Titolo: Live Programming for Finite Model Finders
Estratto: Finite model finders give users the ability to specify properties of a system in mathematical logic and then automatically find concrete examples, called solutions, that satisfy the properties. These solutions are often viewed as a key benefit of model finders, as they create an exploratory environment for developers to engage with their model. In practice, users find less benefit from these solutions than expected. For years, researchers believed that the problem was that too many solutions are produced. However, a recent user study found that users actually prefer enumerating a broad set of solutions. Inspired by a recent user study on Alloy, a modeling language backed by a finite model finder, we believe that the issue is that solutions are too removed from the logical constraints that generate them to help users build an understanding of the constraints themselves. In this paper, we outline a proof-of-concept for live programming of Alloy models in which writing the model and exploring solutions are intertwined. We highlight how this development environment enables more productive feedback loops between the developer, the model and the solutions.
Autori: Allison Sullivan
Ultimo aggiornamento: 2023-05-26 00:00:00
Lingua: English
URL di origine: https://arxiv.org/abs/2305.17317
Fonte PDF: https://arxiv.org/pdf/2305.17317
Licenza: https://creativecommons.org/licenses/by/4.0/
Modifiche: Questa sintesi è stata creata con l'assistenza di AI e potrebbe presentare delle imprecisioni. Per informazioni accurate, consultare i documenti originali collegati qui.
Si ringrazia arxiv per l'utilizzo della sua interoperabilità ad accesso aperto.