Intel ha presentato ControlFlag – un sistema di ricerca per il machine programming in grado di rilevare autonomamente gli errori di codice. Seppure appena lanciato, questo nuovo sistema auto-supervisionato si dimostra promettente come potente strumento di produttività per assistere gli sviluppatori di software nell’impegnativo compito del debugging. Nei test preliminari, ControlFlag ha istruito e appreso nuovi difetti su oltre 1 miliardo di linee di codice non categorizzato simili a quelle di un codice di produzione.
“Pensiamo che ControlFlag sia un potente nuovo strumento in grado di ridurre drasticamente il tempo e il denaro necessari per valutare e ed effettuare il debugging dei codici. Secondo gli studi, gli sviluppatori di software spendono circa il 50% del loro tempo per le attività di debugging. Con ControlFlag, e sistemi simili a questo, ci auguriamo che i programmatori risparmino tempo per il debugging e abbiano più tempo per esprimere idee nuove e creative per le macchine”.
— Justin Gottschlich, principal scientist and director/founder of Machine Programming Research di Intel Labs
Perché è importante: In un mondo sempre più gestito dal software, gli sviluppatori continuano a trascorrere una quantità sproporzionata di tempo nel risolvere i bug piuttosto che nel creare codice. Si stima infatti che il 50% di 1.250 miliardi di dollari che lo sviluppo di software costa ogni anno all’industria IT, venga speso in azioni di debugging.
Sembra che il debugging abbia un impatto ancora più grande sugli sviluppatori e sull’industria in generale. Man mano che si entra in un’era di architetture eterogenee – definite da un mix di processori costruiti ad hoc per coordinare la grande quantità di dati oggi disponibili – il software necessario per gestire questi sistemi diventa sempre più complesso, creando una maggiore probabilità di bug. Inoltre, sta diventando difficile trovare programmatori software che abbiano la competenza necessaria per programmare in modo corretto, efficiente e sicuro su diversi hardware, il che determina maggiori occasioni di nuovi e più complessi errori di codice.
Una volta completato, ControlFlag potrebbe automatizzare le parti noiose dello sviluppo del software, come i test, il monitoraggio e il debugging. Questo non solo permetterebbe agli sviluppatori di fare il loro lavoro in modo più efficiente, destinando più tempo alla creatività, ma consentirebbe di ridurre anche una delle voci di costo più elevate nello sviluppo del software.
Come funziona ControlFlag: Le capacità di rilevamento dei bug di ControlFlag sono abilitate dal machine programming, fusione di machine learning, metodi formali, linguaggi di programmazione, sistemi compilatori e informatici.
ControlFlag opera specificamente attraverso una capacità nota come rilevamento delle anomalie. Come gli esseri umani imparano a considerare “normali” alcuni modelli attraverso l’osservazione, così ControlFlag impara a rilevare i normali schemi di coding partendo da esempi verificati, identificando le anomalie nel codice che possono causare un bug. Inoltre, ControlFlag è in grado di rilevare queste anomalie indipendentemente dal linguaggio di programmazione.
Un vantaggio importante dell’approccio non supervisionato di ControlFlagnel riconoscimento dei modelli, è che può imparare ad adattarsi allo stile di uno sviluppatore. Con input limitati agli strumenti di controllo che il programma dovrebbe valutare, ControlFlag è in grado di identificare le variazioni stilistiche nel linguaggio di programmazione, così come un lettore riconosce la differenza tra una parola completa e la versione abbreviata nella sua lingua nativa.
Lo strumento impara a identificare ed etichettare queste scelte stilistiche e può personalizzare l’identificazione degli errori e suggerire una soluzione sulla base delle sue intuizioni, il che riduce al minimo le caratterizzazioni di ControlFlagdel codice in errore che possono essere semplicemente una differenza stilistica tra due team di sviluppo.
Prossimi sviluppi: ControlFlag ha già dimostrato la capacità di identificare i bug latenti che esistono nel codice di qualità di produzione ampiamente utilizzato che è stato precedentemente rivisto dagli sviluppatori di software. Ad esempio, quando ControlFlag ha analizzato cURL– una riga di comando disponibile in open source e ampiamente adottata dai programmatori per consentire il download da Internet – ha identificato un’anomalia che non era stata precedentemente riconosciuta, spingendo gli sviluppatori di cURL a proporre una soluzione migliore. Intel ha anche iniziato a valutare internamente l’uso di ControlFlag per identificare i bug nella propria produzione di software e firmware. Si tratta di un elemento chiave del progetto di Intel “Rapid Analysis for Developers” che mira ad accelerare la velocità fornendo un’assistenza esperta.