8.10.03

Alla ricerca del software perfetto

Dopo le ultime ondate di virus � diventato prioritario eliminare i punti deboli dei programmi
Molti dei bachi derivano da procedure errate o dall'esigenza di garantire la compatibilit� con i sistemi precedenti - Microsoft ora punta di pi� sulla qualit� del lavoro dei suoi sviluppatori - In campo anche i ricercatori del Mit e diverse universit�

di Antonio Dini

Lo scorso agosto l'ondata di e-mail con virus giunte alle imprese e ai cittadini � costata, nel mondo, secondo TruSecure, circa 3,5 miliardi di dollari. I worm che hanno imperversato per tutta l'estate arrivando via mail, penetrano nelle falle dei software. Come risolvere questi problemi?

L'industria sta mostrando una maggiore sensibilit� su questi temi, come dimostra il lancio dell'iniziativa "Trustworthy computing" di Microsoft: il nuovo diktat di Bill Gates � produrre un software pi� degno di fiducia e per raggiungere questo obiettivo la societ� si � rifocalizzata sulla qualit� dei codici scritti dai suoi programmatori.

Il software perfetto non esiste, certamente. Ma non � una buona scusa per non cercare di migliorare quello esistente.

Che il computer ogni tanto si blocchi senza nessun motivo apparente, infatti, non � una novit�. Succede a tutti, e generalmente basta riavviare. Ma oggi i "bug", gli errori dei programmatori nella progettazione delle applicazioni, costano sempre pi� cari alle aziende e alla societ�.

Infatti, non solo le imprese basano sempre pi� i loro asset sull'affidabilit� dei computer, ma anche gli utenti sono pi� legati che mai nella loro produttivit� quotidiana, e anche nel tempo libero, alla fiducia che l'informatica faccia il suo lavoro. O, perlomeno, che non causi troppi danni.

Perfino il Dipartimento Usa della Difesa ha incaricato il Software engineering institute dell'universit� di Carnegie Mellon di dedicarsi al miglioramento del software, perch� la qualit� dei programmi si rivela cruciale per il sistema di difesa americano.

Il nome stesso, bug, che in inglese vuol dire cimice, non descrive pi� il cuore del problema: fu effettivamente una cimice a mandare in tilt uno dei primi, enormi mainframe, rosicchiando i cavi di connessione all'interno della macchina. Ma oggi il problema non � quasi mai nell'hardware, bens� nel software.

Anche i virus e i worm basano la loro capacit� di produrre danni su errori materiali o concettuali dei programmatori: debolezze delle applicazioni oppure impostazioni sbagliate nella loro implementazione. Eliminare questi problemi non � semplice, ma c'� chi ci sta provando. Ad esempio, due scienziati del Mit di Boston, Nancy Lynch e Stephen Garland, studiano metodi per aiutare i programmatori a realizzare software a prova di bomba.

Una questione complicata, perch� non basta lavorare sul prodotto, il codice realizzato dai programmatori, ma bisogna intervenire anche sulle modalit� stesse con cui viene realizzato e - prima ancora - progettato.
Una delle differenze tra gli ingegneri di Microsoft, Ibm, Sun e Oracle, per esempio, e gli ingegneri civili che realizzano strutture come ponti e autostrade, risiede nel livello di astrazione precedente al lavoro esecutivo.
Per costruire un ponte, dopo aver stabilito gli obiettivi del progetto, viene realizzato un modello. Alla posa della prima pietra si arriva dopo molto tempo, quando si � veramente sicuri che la struttura regger�.

Gli ingegneri software, invece, passano direttamente, secondo i due ricercatori, dalla fase di ideazione alla realizzazione concreta. Senza tappe intermedie. L'idea dei due scienziati del Mit � di passare attraverso livelli di astrazione successiva, programmando modelli virtuali del software (che oggi ha sempre spiccate caratteristiche di complessit�) per evidenziare, strada facendo, i problemi di progettazione. Secondo i due ricercatori, infatti, � possibile migliorare alla sorgente la qualit� del lavoro degli ingegneri.

Nei Bells Laboratories, invece, Gerard Holzmann parte da un altro presupposto: migliorare al massimo i software che scoprono automaticamente i bug pi� semplici, i quali spesso derivano da errori di scrittura o di inserimento del codice, soprattutto per quanto riguarda i network computers.

L'obiettivo del software perfetto, che assicuri un alto livello di qualit�, si scontra per� con un altro problema legato al mondo reale: l'eredit� dei sistemi precedenti.

Il costo dell'innovazione e, soprattutto, l'esigenza di mantenere una compatibilit� con le versioni precedenti, spinge le softwarehouse a incorporare nelle versioni pi� recenti dei loro prodotti anche il codice che deriva dalle precedenti. Che per�, oltre un certo livello di complessit�, diventano gestibili solo con alti costi di sviluppo.

Prendiamo, ad esempio, Windows Xp, l'ultima versione del sistema operativo di Microsoft. Al suo interno si possono trovare routines pensate per la prima versione di Windows Nt, che risale a quasi 15 anni fa. Il primo progetto � infatti del novembre del 1988.

Rispetto ad allora, sono tuttavia aumentate le righe di codice che compongono il programma: da poche migliaia a quasi dieci milioni. Gestire gli effetti che la modifica di una parte del codice pu� provocare sull'insieme diviene un esercizio estremamente complesso e costoso da gestire.

In questo modo diviene anche facile per chi scopre una "debolezza" realizzare un virus difficile da neutralizzare: per scrivere la modifica a una vulnerabilit� del software non basta preoccuparsi del singolo problema, ma bisogna tener conto anche della stabilit� di tutto il quadro complessivo.

Per questo c'� anche chi lavora alla realizzazione di software gestito non pi� da programmatori ma direttamente dalle macchine: progettare in modo automatico un nuovo software sulla base di pochi ordini sugli obiettivi da raggiungere - secondo Douglas Smith del Kerstel Institute - permetter� di eliminare le debolezze intrinseche nell'attivit� umana quando un team numeroso deve lavorare in modo coordinato su un progetto molto complesso.

A condizione, per�, che il software delle macchine che produrranno altro software non contenga errori. Altrimenti la qualit� non potr� mai essere garantita e il software perfetto si dimostrer� solo un miraggio irraggiungibile.
ANTONIO DINI

IN COPPIA PER SCRIVERE CODICI
Per avere un software perfetto forse ci vogliono "programmatori estremi". Si chiama cos�, infatti, l'ultima rivoluzione tra gli addetti ai lavori dello sviluppo di applicazioni. L'idea � che due teste pensano meglio di una e che quattro occhi vedono meglio di due. Quindi, secondo Kent Beck, star nel mondo degli sviluppatori Usa, l'ideale �: due programmatori sempre insieme davanti a un unico computer, a condividere la stessa tastiera e ad affrontare gli stessi problemi per realizzare la "programmazione estrema". L'idea di Beck � basata su una serie di regole, la pi� rivoluzionaria delle quali per il modello di lavoro esistente � il "pair programming", la coppia di programmatori.

Seppure non largamente adottato, il metodo � applicato anche in alcune divisioni delle grandi softwarehouse: Hp, Ibm, Symantech, Sabre. Perch� una coppia? "Il lavoro pratico di scrivere codice � irto di problemi - spiega Beck - come guidare di notte su una strada di montagna senza sapere precisamente la direzione mentre, perdipi�, sta piovendo a dirotto. Non � meglio, allora, avere accanto qualcuno che guardi la cartina e che ci aiuti a trovare la direzione giusta?".

IL FUTURO
* I programmatori del futuro saranno, secondo gli esperti, le macchine stesse. Software che crea altro software. All'uomo spetter� solo il compito di stabilire i pochi obiettivi di base che dovranno essere raggiunti.
I sistemi operativi di oggi hanno infatti raggiunto un livello di complessit� tale da non poter essere gestiti e successivamente modificati dall'uomo in maniera efficiente. Con il programmatore elettronico si potranno invece evitare gli errori e le vulnerabilit� attuali. A meno che, naturalmente, non sia esso stesso a contenerne.

IL PRESENTE
* Si chiama Trustworthy computing il nuovo approccio della Microsoft di Bill Gates nello sviluppo dei suoi software. Si tratta di una serie di iniziative messe in campo per garantire la sicurezza dei dati, la tutela della privacy, l'affidabilit� e l'integrit� dei sistemi operativi e delle applicazioni. Per ridurre le vulnerabilit�, la Microsoft sta investendo molto. Il 40% del budget della ricerca � oggi destinato al problema sicurezza. Anche perch� il mercato � diventato pi� consapevole dei rischi che si corrono con sistemi che spesso si sono dimostrati vulnerabili.

IL PASSATO
* Il primo computer moderno fu L'Edvac del 1952, ideato da von Neumann che introdusse per il concetto di software memorizzato. Fu l'inizio della piena programmabilit� dei calcolatori e segn� l'inizio di una rivoluzione che sfoci� nei sistemi operativi moderni come Unix del 1971 concepito da Ken Thompson e Dennis Ritchie e dei linguaggi di programmazione come il C. I software divennero pi� complessi da scrivere e da verificare. Nella corsa verso la qualit� del software, la progammazione object oriented e Java, il linguaggio indipendente dall'hardware, sono state le pietre miliari.

Nessun commento: