Presentiamo AIQL: semplificare le query sull'architettura software
AIQL offre un modo semplice per accedere in modo fluido alle informazioni sull'architettura.
― 6 leggere min
Indice
I sistemi software hanno bisogno di manutenzione regolare, che si chiama manutenzione. Col tempo, mentre vengono fatti aggiornamenti e cambiamenti al software, la documentazione sull'architettura può rimanere indietro, creando problemi per chi cerca di capire o lavorare col sistema. Questo disallineamento di informazioni è noto come drift architetturale. Per aiutare a risolvere questo problema, è stato sviluppato uno strumento chiamato Digital Architecture Twin (DArT). Questo strumento aiuta a tenere traccia delle informazioni architettoniche e consente aggiornamenti continui man mano che il software evolve.
Tuttavia, gli utenti spesso faticano ad accedere a queste informazioni architettoniche, il che può ostacolare la loro capacità di prendere decisioni informate. Per affrontare questa necessità, è stato creato un nuovo Linguaggio di Query specificamente per le informazioni architettoniche, noto come Architecture Information Query Language (AIQL). Questo linguaggio permette agli utenti di recuperare informazioni architettoniche attuali e rilevanti in modo efficiente.
Importanza dell'Architettura del Software
Con lo sviluppo dei sistemi software, mantenere aggiornata la documentazione architettonica è fondamentale. Quando la documentazione non viene rinfrescata regolarmente, può portare a confusione e a maggior impegno durante la manutenzione. Per contrastare questa sfida, sono stati introdotti metodi per il Recupero dell'Architettura del Software (SAR), che aiutano a recuperare informazioni architettoniche da varie fonti.
Tuttavia, i metodi SAR tradizionali si concentrano tipicamente su visioni isolate di un sistema software e potrebbero offrire informazioni solo in un determinato momento. Questo significa che gli utenti potrebbero perdere spunti preziosi se non riescono ad accedere alla giusta vista o informazione quando ne hanno bisogno.
Il Ruolo del Digital Architecture Twin (DArT)
Il DArT funge da copia digitale dell'architettura del sistema software che viene continuamente aggiornata. Estrae dati da varie fonti, come codice sorgente, script di build e script di distribuzione, per costruire una visione complessiva dell'architettura del sistema.
Questo modello consente l'integrazione nei processi di sviluppo in corso, permettendo la reverse engineering dell'architettura software. Utilizzando il DArT, le parti interessate possono accedere a informazioni architettoniche pertinenti e tempestive, che li aiuta a prendere decisioni informate sul design del sistema software.
Necessità di un Linguaggio di Query
Nonostante l'accesso a una grande quantità di dati architettonici tramite il DArT, c'è stata una significativa lacuna su come le parti interessate possono recuperare questi dati. Un linguaggio di query è necessario per accedere e gestire efficacemente le informazioni architettoniche raccolte.
I linguaggi di query esistenti potrebbero non adattarsi bene alle esigenze dei dati architettonici software, poiché possono essere troppo rigidi o concentrati su query più strette. Questo limite rende difficile per gli utenti connettersi ai vasti dati architettonici associati ai loro modelli software.
Introduzione all'AIQL
Per colmare questa lacuna, è stato creato l'AIQL per consentire agli utenti di accedere alle informazioni architettoniche senza essere legati a un processo di recupero specifico o a una metodologia. L'obiettivo è fornire un modo flessibile e user-friendly per le parti interessate di estrarre dati rilevanti dal DArT.
L'AIQL supporta vari tipi di query, rendendolo utile per vari aspetti della manutenzione del software e del recupero dell'architettura. Il linguaggio include la possibilità di recuperare dati su diverse viste architettoniche, il che può aiutare gli utenti a ottenere spunti e prendere decisioni basate sullo stato attuale e sulla storia dei loro sistemi software.
Scenari di Applicazione per l'AIQL
L'AIQL può essere utilizzato in diverse situazioni reali che riflettono le sfide continue affrontate da chi lavora con i sistemi software:
1. Identificazione di Pattern e Stili
Uno dei principali utilizzi dell'AIQL è nell'identificazione di pattern di design riutilizzabili e nell'evitare anti-pattern nei sistemi software. Essere in grado di interrogare informazioni relative alle decisioni di design permette agli utenti di mantenere una qualità architettonica elevata.
2. Documentazione Personalizzata
Un'altra applicazione dell'AIQL è la creazione di documentazione su misura per specifiche parti interessate. Ad esempio, un architetto d'impresa potrebbe voler raccogliere documentazione per un sottosistema specifico, oppure un product owner potrebbe aver bisogno di una panoramica della struttura del sistema. L'AIQL può facilitare queste richieste attraverso query personalizzate.
3. Verifica Automatica della Conformità
L'AIQL supporta anche la verifica automatica della conformità, consentendo agli utenti di confrontare rapidamente l'architettura progettata con l'implementazione effettiva. Questo può aiutare a identificare discrepanze precocemente nel processo, migliorando l'aderenza alle linee guida e riducendo i problemi di manutenzione.
4. Sistema di Raccomandazione
Infine, l'AIQL può servire da spina dorsale per un sistema di raccomandazione, che fornisce spunti sulle decisioni di design architettonico basate su progetti passati. Questo può aiutare gli architetti a riutilizzare pattern di successo evitando insuccessi precedenti.
Requisiti per l'AIQL
Per essere efficace negli scenari di applicazione identificati, l'AIQL deve soddisfare requisiti specifici. Questi includono:
- Supportare più viste architettoniche per consentire un'interrogazione esaustiva.
- Essere user-friendly e comprensibile, anche per le parti interessate con diversi livelli di competenza tecnica.
- Restituire informazioni in un formato utilizzabile e facile da interpretare, migliorando l'esperienza utente.
Caratteristiche dell'AIQL
L'AIQL ha diverse caratteristiche progettate per soddisfare le esigenze dei suoi utenti:
- Struttura Typizzata: Il linguaggio è strutturato con tipi, garantendo che le query siano chiare e significative.
- Estensibilità: L'AIQL può facilmente incorporare nuove viste e adattarsi all'architettura in evoluzione del sistema software.
- Template di Query Riutilizzabili: Il linguaggio consente la composizione di template di query, promuovendo riutilizzabilità e efficienza.
- Sintassi Chiara: L'AIQL ha una sintassi semplice che migliora la comprensione tra gli utenti.
AIQL in Pratica
Le query AIQL possono essere costruite definendo elementi e restrizioni sul modello di informazioni architettoniche. Ad esempio, specificare quali tipi di componenti interrogare e quali attributi filtrare fornisce una risposta su misura per l'utente.
Esempio di Query
Ecco un semplice esempio di una query AIQL:
MODEL "system.model";
VERSION LAST;
LIST TechnicalComponent serverComponent RESTRICTIONS:
(Name 'server');
OUTPUT serverComponent;
Questa query recupera l'ultima versione del modello, cercando specificamente un componente tecnico chiamato “server.”
Studio Utente
Per valutare l'usabilità e l'efficacia dell'AIQL, è stato condotto uno studio utente. I partecipanti includevano una gamma diversificata di parti interessate, come architetti e sviluppatori, che hanno fornito feedback preziosi sulle loro esperienze con il linguaggio.
I partecipanti hanno trovato l'AIQL facile da comprendere e intuitivo rispetto ad altri linguaggi di query. Tuttavia, alcuni hanno espresso preoccupazioni riguardo alla ricchezza del formato di output, sottolineando che, mentre il JSON è utile per l'automazione, potrebbe non essere user-friendly per tutti.
Valutazione dell'AIQL
Un'evaluazione empirica ha esaminato l'applicazione dell'AIQL in scenari reali, valutando la sua usabilità e scalabilità. I risultati hanno mostrato che l'AIQL supporta efficacemente gli scenari di applicazione definiti e genera output utili per le parti interessate.
Conclusione
In sintesi, l'AIQL funge da strumento necessario per accedere alle informazioni architettoniche da modelli di dati estesi come il DArT. È progettato per essere user-friendly mentre supporta query complesse, permettendo alle parti interessate di prendere decisioni informate basate su dati architettonici accurati e attuali.
I futuri miglioramenti potrebbero concentrarsi su potenziare i formati di output e incorporare ulteriori funzionalità di linguaggio per supportare ulteriormente gli utenti nelle loro esigenze di architettura software. Man mano che l'AIQL continua a svilupparsi, promette di giocare un ruolo cruciale negli sforzi moderni di manutenzione software e recupero dell'architettura.
Titolo: A Query Language for Software Architecture Information (Extended version)
Estratto: Software maintenance is an important part of a software system's life cycle. Maintenance tasks of existing software systems suffer from architecture information that is diverging over time (architectural drift). The Digital Architecture Twin (DArT) can support software maintenance by providing up-to-date architecture information. For this, the DArT gathers such information and co-evolves with a software system, enabling continuous reverse engineering. But the crucial link for stakeholders to retrieve this information is missing. To fill this gap, we contribute the Architecture Information Query Language (AIQL), which enables stakeholders to access up-to-date and tailored architecture information. We derived four application scenarios in the context of continuous reverse engineering. We showed that the AIQL provides the required functionality to formulate queries for the application scenarios and that the language scales for use with real-world software systems. In a user study, stakeholders agreed that the language is easy to understand and assessed its value to the specific stakeholder for the application scenarios.
Autori: Joshua Ammermann, Sven Jordan, Lukas Linsbauer, Ina Schaefer
Ultimo aggiornamento: 2023-07-04 00:00:00
Lingua: English
URL di origine: https://arxiv.org/abs/2306.16829
Fonte PDF: https://arxiv.org/pdf/2306.16829
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.