The Age of Software Intelligence
Con Software Intelligence si indica l’insieme di dati e le informazioni ai quali un’organizzazione deve attingere per prendere decisioni strategiche e amministrare i rischi relativi al parco software che supporta i propri processi di business. I danni derivanti da fermi in produzione e da perdite o furto di dati, possono arrivare a intaccare non solo il conto economico ma il patrimonio aziendale ed in alcuni casi mettere a rischio la sopravvivenza stessa dell’organizzazione, e questi rischi sono commisurati al livello di digitalizzazione raggiunto dai processi essenziali per il business.
Un rischio particolare che ha un’importanza crescente è quello derivante dalla rigidità delle applicazioni e del parco applicativo: non potere evolvere le proprie applicazioni, in modo da erogare nuove funzionalità rapidamente, oppure in modo da poterle spostare su un determinato ambiente cloud in ottica di piattaforma, diventa un rischio difficilmente sostenibile e difficile da tollerare in un’epoca di trasformazione digitale accelerata e strumento competitivo.
Nonostante questa sia una considerazione apparentemente scontata, ancora troppe organizzazioni rinunciano a priori a cercare l’origine, effettuare la quantificazione e gestire anticipatamente questi rischi. Anzi, molte grandi e medie aziende, prendono decisioni di modernizzazione di interi sistemi, imbarcandosi in progetti da decine o anche centinaia di anni uomo, senza una visibilità adeguata dei rischi insiti nel software e del rapporto con approcci di modernizzazione con cui lo si vuole trasformare.
I dati e le informazioni di riferimento per la software intelligence derivano da un’analisi profonda dei sistemi, al fine di ottenere informazioni sull’ architettura, sui punti deboli, sui rischi, sulla efficienza nella gestione delle risorse, sulla complessità, sulla scalabilità, sulla scalabilità nel cloud, sull’esposizione a rischi delle licenze open source e numerosi altri aspetti critici.
Questa intelligenza ha quindi diversi livelli di uso, per scopo e tipo di utenza, ma complessivamente trova la sua applicazione in maniera trasversale in quelle organizzazioni che abbiano compreso come la tecnologia sia sostanziale e non corollario per i processi di creazione del valore.
Quali sono i tipi di Software Intelligence: il campo della Software Intelligence può essere suddiviso in diversi ambiti a seconda degli scopi e degli utilizzatori che poi si intende fruiranno dei dati. Qui di seguito propongo una catalogazione che è più orientata ai macro ambiti di utilizzo, senza dettagliare i vantaggi per i specifici ruoli aziendali. Così possiamo parlare dei seguenti tipi di Software Intelligence:
Architectural Intelligence
Component Intelligence
Risk Intelligence
Portfolio Intelligence
Comparative Intelligence
Architectural intelligence: permette di visualizzare l’architettura di una applicazione multi-strato e multi-tecnology. Questo tipo di informazione è
essenziale per potere imporre le policy architetturali e assicurare che la manutenzione evolutiva e/o correttiva non permetta la deriva architetturale che caratterizza negativamente il codice legacy e stratificato. Avere a disposizione la possibilità di esplorare e rilevare la struttura applicativa, offre la possibilità di verificare le interazioni tra i componenti, tra i layer, tra tecnologie: il risultato finale sarà quello di ridurre drasticamente i tempi di ricerca e “lettura” del codice durante le fasi di manutenzione e modifica, mostrando inoltre tutte le funzioni che accedono a determinati contenitori di dati, e supportando la compliance al regolamento di protezione dei dati (GDPR).
Consigliati da LinkedIn
Component Intelligence: permette l’analisi del codice dei componenti col fine di assicurarsi che ciascuno di essi sia stato sviluppato seguendo buone pratiche
di codifica. Nel caso in cui l’analisi sia erogata prima del rilascio del codice da parte dello sviluppatore all’interno di strumenti di sviluppo integrati (IDE), è possibile prevenire ed evitare la contaminazione dei successivi punti di analisi strutturale posti lungo il ciclo di sviluppo con il rumore di fondo delle carenze di stile o di igiene del codice. Quando applicata su scala sufficientemente larga l’analisi del codice permette di ottenere indicazioni statisticamente significative di caratteristiche quali la qualità dello sviluppo e la misura della portabilità sul cloud o la misura dell’agilità con cui l’applicazione potrà essere modernizzata. Questo livello di intelligence offre anche informazione sull’origine del codice e librerie, includendo licenze e vulnerabilità che determinati componenti open source possono introdurre nelle aziende.
Risk intelligence: permette l’analisi e l’individuazione dei punti deboli delle applicazioni che le espongono a rischi operativi seri e comportano costi di
manutenzione crescenti. Alcuni di questi rischi possono emergere già a livello di Component Intelligence, ma quelli che comportano le conseguenze più serie, sono quelli che riguardano interazioni tra oggetti diversi, anche apparentemente non correlati, che possono essere individuati solo dopo la fase di integrazione. Se le evidenze riguardo ai potenziali rischi funzionali emergono dal testing comunemente inteso, è solo grazie all’ analisi statica e alle metodologie di Risk intelligence che i difetti a carattere non-funzionale, di natura strutturale possono essere individuati. Se non mitigati, possono essere all’origine di falle di sicurezza, degrado delle performance, corruzione dei dati e altri disastri sia nella conduzione operativa che nella gestione dei costi di manutenzione. Un’analisi completa a livello strutturale di una applicazione offre le misure aggregate sul suo stato di salute e sui rischi complessivi, in modo da valutare, indirizzare e concordare eventuali attività di mitigazione.
Portfolio Intelligence: eroga un ampio spettro di informazione a livello aggregato, per dare contezza dello stato di un determinato parco/portfolio applicativo. Questa
informazione include il dettaglio dei linguaggi applicativi, le proporzioni dei componenti open source, ed altre caratteristiche di dettaglio. L’intelligenza a livello aggregato include altre informazioni come, ad esempio, quali siano (in assoluto e/o relativamente) le applicazioni più pronte per la migrazione al cloud, adatte per un percorso di modernizzazione, ed altri programmi di trasformazione che coinvolgano processi IT e di business. In una prospettiva temporale, questo permette di rilevare trend importanti tra applicazioni, supportando decisioni di allocazione degli investimenti e delle risorse.
Comparative Intelligence: utilizza dati di benchmark per confrontare le applicazioni con quelle di organizzazioni simili per dimensioni e settore
industriale. Questi dati possono includere dimensioni, aspetti tecnologici, quantificazione dei punti deboli e dei KPI relativi. Le informazioni permettono ai responsabili di capire la situazione competitive e aiutano le decisioni di investimento. La Comparative intelligence può anche essere utilizzata per analizzare i trend in modo da monitorare l’evoluzione della/delle applicazioni.
Disclaimer: Michele Slocovich è Solution Design Director per CAST Software per l'italia. Puoi seguirmi su linkedin
CAST Software è l'azienda che organizza il Software Intelligence Forum ed è leader nella Software Intelligence.
Solution Delivery Consultant presso CAST
2 anniBell'articolo descritto in maniera semplice pur nella complessità dell'argomento. Assolutamente consigliato
COO and Co-Founder at RedCarbon
3 anniBravo Miky, ottimo spunto..!
Chiaro e utile, da condividere con tanti cio
| Strategic Advisor for Operations | Senior Executive | Temporary Manager | Sales & Business Development Manager |
3 anniComplimenti, molto interessante
Head of TLC & IT infrastructures presso Fondazione Milano Cortina 2026. MBA, C level, Digital Transformation Expert
3 anniBravo Michele è un vademecum che ci voleva.