Che cos'è la visualizzazione software?
La visualizzazione del software è l'atto di utilizzare programmi o plug-in IDE (Integrated Development Environment) durante lo sviluppo e il test di applicazioni software; questo consente la creazione di una rappresentazione grafica di alcuni aspetti del software allo scopo di determinare se ci sono problemi o inefficienze all'interno del programma. Esistono diversi tipi di tecniche di visualizzazione del software, ma più comunemente vengono utilizzate per visualizzare dettagli sul codice sorgente del programma, per esaminare le relazioni tra i componenti del software o per guardare una visione astratta di come viene eseguito un programma, comprese le informazioni su come è interagendo con i processi circostanti. In generale, la visualizzazione del software viene utilizzata su sistemi complessi per aiutare a scoprire comportamenti o usi delle risorse fuori dall'ordinario o per vedere aree di un progetto che non sono necessarie o non funzionano correttamente. L'attuale rappresentazione visiva utilizzata varia notevolmente da blocchi di testo interconnessi a grafici a barre bidimensionali (2D) per elaborare oggetti tridimensionali (3D) che cambiano forma durante l'esecuzione di un programma.
In alcuni casi, può essere utile utilizzare la visualizzazione del software per esaminare il codice sorgente di un programma. Attraverso l'uso della colorazione e dell'astrazione, è possibile visualizzare contemporaneamente enormi quantità di codice scritto. L'intenzione potrebbe essere quella di determinare la quantità di codice utilizzata per quale scopo o, in alternativa, il display potrebbe essere associato a un profiler o debugger che evidenzia blocchi di codice che richiedono molto tempo per l'esecuzione o che vengono eseguiti frequentemente.
I linguaggi di programmazione orientati agli oggetti possono utilizzare la visualizzazione software per determinare le relazioni tra le diverse librerie, classi e metodi in un programma. Questo aiuta a determinare le dipendenze tra le diverse aree di un programma, alcune delle quali potrebbero non essere intenzionali. Può anche mostrare classi o metodi in un programma che non vengono mai chiamati o che la logica del programma rende irraggiungibili. Visivamente, un diagramma di dipendenza o relazione può apparire come una rete di ragnatele e linee, sfere sovrapposte di dimensioni diverse o persino i rami di un albero.
Una volta che un programma è in esecuzione, la visualizzazione del software in tempo reale può mostrare una rappresentazione astratta di come viene eseguito il programma, come vengono gestite le diverse code e come scorre l'input e l'output. Questo può aiutare gli sviluppatori a vedere picchi o lacune nelle prestazioni e nelle aree che stanno ricevendo attività eccezionalmente elevate. Questi tipi di visualizzazioni possono assomigliare a qualsiasi cosa, dallo spostamento di blocchi colorati e forme d'onda alla modifica di mappe topografiche che rappresentano segmenti di codice in esecuzione. In generale, tuttavia, la visualizzazione è mantenuta piuttosto basilare, quindi gli eventi anomali possono essere chiaramente visti e osservati senza eccessivo disordine grafico.
Esistono altre applicazioni per la visualizzazione di software, una delle quali è il reverse engineering di un'applicazione. Osservando il modo in cui un programma interagisce e funziona, è possibile concentrarsi su diversi segmenti del codice senza richiedere una curva di apprendimento iniziale ripida. Un altro uso specifico è nel campo della sicurezza informatica per osservare quali aree di un programma interagiscono con processi esterni o quali aree sono aperte agli attacchi.