Se gli anni '70 furono per me gli anni dei fondamenti, dei linguaggi, dei compilatori e dei primi tentativi di capire la portabilità del software, gli anni '80 rappresentarono la fase di maturazione di queste preoccupazioni. Fu il decennio in cui il mio interesse si concentrò sempre più chiaramente sulla progettazione sistematica dei prodotti software, sui modelli del processo di sviluppo e sulla possibilità di costruire strumenti in grado di assistere questa attività.
In quegli anni la mia ricerca si svolse all'intersezione tra la riflessione teorica, l'attività didattica e la vita di laboratorio. Da questa tensione nacquero idee che avrebbero strutturato il mio pensiero per molto tempo: la macchina astratta, l'interforma, il modello della progettazione come attività di raffinamento e, più tardi, il progetto INTERFORM.
L'inizio degli anni '80 mi trovò dopo un periodo di intensa accumulazione, in cui avevo lavorato sui linguaggi di programmazione, i compilatori e la portabilità dei programmi. Queste ricerche non rimasero isolate nella zona tecnica dell'implementazione, ma mi spinsero gradualmente verso una domanda più ampia: come può essere compreso e modellato il processo attraverso cui un programma nasce?
Dietro questa domanda si nascondeva, in realtà, un'insoddisfazione più profonda rispetto al carattere artigianale, fragile e spesso improvvisato dello sviluppo software. Man mano che la mia esperienza cresceva, sentivo sempre più pressante il bisogno di una disciplina della progettazione, paragonabile — almeno in parte — al rigore di altri rami ingegneristici.
Da questo punto di vista, gli anni '80 non furono per me solo una continuazione degli anni '70, ma un cambiamento di accento: dalla preoccupazione per la correttezza e la portabilità dei programmi, alla preoccupazione per l'ordine interno del processo software.
Il contesto tecnologico dell'epoca era esso stesso contraddittorio. Da un lato, l'informatica si allargava, si diversificava e cominciava a uscire dallo spazio dei grandi calcolatori centralizzati. Dall'altro, questa diversificazione accentuava la frammentazione del software e rendeva sempre più visibili i limiti di uno sviluppo basato solo su talento individuale, improvvisazione ed esperienza locale.
Per me, la ricerca di questo decennio fu segnata dal desiderio di trovare un principio di coerenza: un modo di descrivere il cammino dalla specifica all'implementazione senza ridurre la progettazione a una semplice esecuzione meccanica. Qui si delineò una delle idee centrali della mia ricerca: la progettazione non è né pura ispirazione, né semplice applicazione di regole, ma una successione di trasformazioni controllate, realizzate su descrizioni intermedie.
In quegli anni il laboratorio, i corsi e la scrittura scientifica funzionarono insieme. Ciò che cercavo di formulare teoricamente si rifletteva nel modo in cui insegnavo, e ciò che osservavo nell'attività didattica e pratica tornava negli articoli come problema concettuale.
Una delle direzioni in cui si sviluppò questa riflessione fu la formulazione del concetto di macchina astratta, come modello di una fase o di un livello di progettazione. Non mi interessava solo il programma finale, ma anche le strutture intermedie attraverso cui esso passa fino ad arrivare a una forma eseguibile.
Da qui nacque l'idea di interforma: una descrizione intermedia, portatrice di senso, che esprime lo stato del progetto in un determinato momento del suo sviluppo. L'interforma non era per me un artificio terminologico, ma la chiave di un approccio ingegneristico alla progettazione del software. Essa permetteva di vedere il prodotto software non solo come oggetto finale, ma come risultato di un divenire strutturabile.
In questo periodo cercai di formulare sempre più chiaramente cosa può essere modellato formalmente in un'attività creativa e dove rimane inevitabilmente il ruolo dell'intuizione, dell'esperienza e del giudizio del progettista. Proprio questa tensione mi sembrò sempre essenziale: la progettazione deve essere supportata da modelli e strumenti, senza essere ridotta ad automatismi ingenui.
Una tappa naturale fu il passaggio dalla riflessione teorica al tentativo di materializzarla in un sistema concreto. Così nacque il progetto INTERFORM, che rappresentò per me molto più di una semplice applicazione: fu il test pratico di una visione sullo sviluppo assistito dei programmi.
INTERFORM mirava a offrire un quadro integrato in cui il prodotto software potesse essere seguito e elaborato attraverso forme intermedie coerenti, con il supporto di strumenti adeguati. In questo senso, rappresentava il tentativo di trasformare una teoria della progettazione in un'architettura di lavoro.
Guardando indietro, mi rendo conto che questa direzione concentrava molti dei temi che mi avevano preoccupato in precedenza: il formalismo, la portabilità, la trasformazione, il ruolo delle strutture intermedie e la necessità di una visione d'insieme del processo software.
Sempre negli anni '80 si affermò più visibilmente anche il mio interesse per l'intelligenza artificiale. Sebbene l'attrazione verso questo dominio fosse più antica, solo ora cominciò a prendere una forma più chiara, sia attraverso riflessioni teoriche, sia attraverso il tentativo di capire in quale misura i processi di progettazione e risoluzione dei problemi possano essere assistiti da modelli della conoscenza.
Per me, il legame tra ingegneria del software e intelligenza artificiale non era esteriore. Si nasceva naturalmente dalla stessa preoccupazione per strutture, rappresentazioni e processi di trasformazione. Se nell'ingegneria del software mi interessava l'ordine della progettazione, nell'intelligenza artificiale mi interessava il modo in cui la conoscenza stessa può essere organizzata, rappresentata e utilizzata.
In questo modo, gli anni '80 furono anche il decennio di un'apertura: senza abbandonare il nucleo delle mie preoccupazioni sulla progettazione software, cominciai a intuire che alcune delle mie domande andavano già oltre il quadro classico della programmazione e richiedevano un dialogo con il dominio più ampio dell'intelligenza artificiale.
La pagina presente ha un ruolo narrativo e cronologico. Per la presentazione per domini, articoli, sintesi e documenti, vedi le pagine tematiche seguenti:
Vedi anche: Ingegneria del software • Ordine nel caos • INTERFORM – l'articolo del 1987
Questa pagina presenta il filo narrativo della ricerca. Per l'organizzazione per domini, articoli e progetti, vedi La ricerca scientifica.