Presso i grandi laboratori del Cern di Ginevra non ci sono solo cacciatori di particelle esotiche. C’è anche chi, come Alberto Di Meglio, si occupa di sviluppo del software e studia tutti i modi possibili per automatizzare la produzione dei programmi per computer. Di Meglio è un ingegnere aerospaziale, con un Ph.D. in Ingegneria Elettrica ed Elettronica presso l’Università di Birmingham ed è entrato al Cern nel 1998 nella divisione informatica. Dopo esserne uscito per fondare una software house, è stato riassunto ed ha avviato il progetto ETICS, di cui è attualmente Direttore: una infrastruttura internazionale co-finanziata dal settimo programma quadro della Commissione Europea dedicato alla gestione e test di software per il sistema grid. Gli abbiamo chiesto di spiegarci scopi e vantaggi di questo progetto.



Perché è necessario cercare di automatizzare la produzione del software?

Lo sviluppo di software efficiente e affidabile è un’attività complessa e lo è in particolare quando il software deve essere usato in ambienti cosiddetti “distribuiti” come Internet o come la sua evoluzione per applicazioni scientifiche detta grid (griglia). In questo caso le applicazioni software devono essere installate contemporaneamente su migliaia di computer diversi, in decine di istituti di ricerca o università in tutto il mondo e collaborare per eseguire complessi calcoli scientifici e trasferire informazioni e risultati da un posto all’altro. La verifica che il software funzioni come previsto deve necessariamente essere fatta il più possibile con strumenti automatici che eseguano test in continuazione simulando vari tipi di comportamenti, sia quelli normali, sia quelli in cui il software incontra problemi, come interruzioni di collegamento di rete, sovraccarichi, errori di configurazione. È importante che il software sappia reagire a tali problemi e che il sistema nel suo complesso non smetta mai di funzionare anche se alcune sue parti non funzionano.



Fino a che punto è possibile automatizzare un processo del genere? In quali fasi è più facile? In quali passaggi è più difficile o forse impossibile?

Anche se in teoria gran parte del processo può essere automatizzato, dalla scrittura del codice all’installazione finale delle applicazioni, in realtà l’automatizzazione delle fasi precedenti alla compilazione del codice è estremamente difficile da realizzare. Il codice viene sempre scritto a mano da ingegneri del software o scienziati. Le fasi che vengono automatizzate sono essenzialmente la fase di compilazione e integrazione del codice e alcune delle fasi principali di test, in particolare i test unitari, i test di installazione e i test di funzionalità e regressione. La fase di compilazione e integrazione viene automatizzata per mezzo di strumenti che leggono il codice prodotto dagli sviluppatori e lo trasformano in programmi eseguibili dai computer. Questo avviene normalmente più volte al giorno e produce decine o centinaia di programmi eseguibili a seconda della complessità del sistema. L’esecuzione dei test funzionali e di regression è sicuramente la parte più difficile, poiché è necessario automatizzare la creazione di griglie di test, delle vere e proprie grid in scala ridotta, ma realistiche, e simulare vari tipi di situazioni.



Quali sono gli obiettivi del programma Etics e cosa si è fatto finora?

Il progetto ETICS si occupa proprio di automatizzare le fasi di integrazione e di test del software distribuito. Il sistema ETICS consiste di una base di dati, di un “motore di esecuzione” e di interfacce web e command-line. La base di dati contiene tutte le informazioni sul software da verificare: dove si trova, di cosa ha bisogno per funzionare, su quali sistemi operativi può essere installato e così via. Il motore di esecuzione permette di spezzare i test da eseguire in varie parti più piccole e distribuirle sui vari computer che compongono la grid di test. Le interfacce web e command-line permettono l’interazione tra gli utilizzatori e il sistema. Al momento ETICS permette di automatizzare tutte le fasi prima descritte. Il problema maggiore da risolvere è la sincronizzazione dell’esecuzione dei singoli test che compongono un test distribuito completo. Per fare un esempio concreto, se un test deve verificare che un’applicazione installata sul computer A sia in grado di accedere ai dati presenti sulla macchina B, è necessario prima installare B, poi installare A, comunicare ad A che B è pronto e dove si trova, eseguire il test, raccogliere i risultati e poi rimuovere tutto in modo che i computer siano pronti per il test successivo. Sincronizzare pochi computer è facile, ma se ce ne sono decine da gestire diventa sempre più complicato e si rischia di creare situazioni in cui A aspetta B e B aspetta A, bloccando il test. ETICS analizza i dati a disposizione e cerca di assicurarsi che la sequenza di sincronizzazione sia corretta e non si blocchi.

Quali saranno destinatari dei risultati? Anche le software house?

Il progetto ETICS è stato concepito per assistere lo sviluppo software di altri progetti scientifici europei e internazionali. I principali utilizzatori sono progetti di ricerca come EGEE (Enabling Grids for E-sciencE), la più grande grid europea per estensione e utilizzo, o D4Science, una delle principali e-Infrastrutture di ricerca europee. Tuttavia la tecnologia sviluppata da ETICS è open source e può essere utilizzata da chiunque, incluse software house commerciali. Tra i partner di ETICS ci sono effettivamente tre società commerciali che oltre a contribuire allo sviluppo del sistema ETICS, ne stanno analizzando le potenzialità in campo commerciale.

Quali sono i partner di Etics e come mai proprio al Cern va il ruolo di coordinamento?

Il progetto ETICS è gestito da otto partner. Il Cern, coordinatore del progetto, le italiane INFN (Istituto nazionale di Fisica Nucleare) e Engineering Ingegneria Informatica, le ungheresi 4D Soft e MTA SZTAKI, rispettivamente una società commerciale esperta di software testing e il maggiore centro di ricerca ungherese, il Dipartimento di Computer Science dell’Università del Wisconsin, la società tedesca VEGA IT, attiva nel campo aerospaziale e infine il centro di ricerca scientifica Forschungzentrum Juelich in Germania. Il Cern è il coordinatore del progetto per due motive principali: in primo luogo per l’esperienza che il Centro ha nel campo del software distribuito (il Web è stato inventato al Cern) e perché la tecnologia originale è stata iniziata al Cern cinque anni fa; in secondo luogo perché il Cern ha come missione quella di promuovere la collaborazione internazionale tra centri di ricerca allo scopo di avanzare lo stato della ricerca scientifica nel campo della fisica delle particelle, ma anche in altre discipline.