Luca Dan Șerbănați all'esame di maturità, 1961
Luca Dan Șerbănați nei primi anni Settanta
Luca Dan Șerbănați all'ultima lezione del quinto anno, aprile 1989

Luca Dan Șerbănați

Professore emerito alla Politehnica di Bucarest

Ricerca, insegnamento, industria e memorie

RO | EN | IT
Luca Dan Șerbănați a Venezia, 1990
Luca Dan Șerbănați a New York, 2005
Luca Dan Șerbănați

Capitolo 1 – il nuovo nucleo concettuale della tesi

Il capitolo è l’“anomalia fertile” della tesi: utilizzando l’esperienza della progettazione di un compilatore, sono passato a una visione generale dello sviluppo software. Esso apre la tesi proponendo un cambiamento di paradigma: parte dalla constatazione — ricorrente in quegli anni — che, a causa della complessità del software, spesso superiore ai limiti umani di comprensione, la produzione di programmi doveva diventare oggetto di una vera e propria ingegneria. In questo percorso, l’esistenza di metodi ingegneristici all’interno del corpus dell’informatica era assolutamente necessaria.

Partendo dall’esperienza dello sviluppo del compilatore ALGOL-60 conversazionale, nella tesi viene proposto un metodo di progettazione dei sistemi complessi di programmi centrato sul concetto di macchina astratta (MA) — modello matematico tratto dalla teoria degli automi [MA = (Q, Σ, Q₀)] — che, attraverso raffinamenti successivi vincolati da relazioni comportamentali o strutturali tra macchine, si avvicini progressivamente al prodotto finale. Nel capitolo si formalizzano le relazioni tra MA (omomorfismi, evoluzioni), programmi e realizzazioni, offrendo un quadro necessario per la verifica e l’ottimizzazione.

Il metodo proposto obbliga il progettista a descrivere le elaborazioni mediante macchine astratte (modelli vicini all’architettura dei calcolatori e ai linguaggi di programmazione), a raffinare le interfacce e a conservare per quanto possibile la “struttura orizzontale” (modulare) lungo la “struttura verticale” (le fasi della progettazione fino all’implementazione). Secondo questo metodo, la progettazione può essere vista come una gerarchia verticale (livelli di astrazione) di reti di MA (moduli orizzontali), armonizzando il sincronico con il diacronico, l’astratto con il concreto — dalla specifica all’implementazione. Il metodo può diventare un processo rigoroso, modulare, verificabile, anticipando così il Model-Driven Development.

Struttura del capitolo


Tesi di dottorato — Contesto del Cap. I: una sintesi dei Capp. 2–7

La sintesi seguente condensa i contributi dei Capitoli II–VII (SICAL) e colloca il Capitolo I come fondamento metodologico. Per i dettagli tecnici completi si veda la sintesi estesa (PDF).

Cap. II — SICAL dalla prospettiva dell’utente

Formalizzazione della sessione interattiva (dialogo riga per riga), della struttura dei file (sorgente ALGOL-60, LIN, tabelle dei simboli versionate), del protocollo dei comandi (EDIT, LIST, RUN, SAVE) e della pedagogia del feedback sotto il secondo. Vengono stabiliti i requisiti funzionali e di prestazione per l’ambiente multi-console.

Cap. III — Architettura interna

Scomposizione in processi (DEFJOB, JOB, istanze per console), integrazione con SIRIS-2, condivisione statica della memoria (tabelle LALR mappate in sola lettura), coordinamento della compilazione incrementale con risposta in tempo reale.

Cap. IV — Compilazione incrementale: analisi sintattica

Grammatica ALGOL-60 adattata per l’analisi a livello di riga, generatore di tabelle LALR(1), traduzioni orientate alla sintassi mediante grammatiche di attributi (tipo L) verso codice intermedio LIN; ne risulta FI₁: albero decorato + LIN parziale.

Cap. V — Compilazione incrementale: analisi semantica

Restrizioni semantiche statiche, struttura FI-II (FSII, FTSII, FTNII), “dirty propagation” sul grafo delle dipendenze dopo ogni modifica; valutazione incrementale con costo proporzionale all’area modificata.

Cap. VI — Macchina astratta ALGOL-60 e interprete incrementale

Definizione del linguaggio intermedio LIN, effetti operativi su stack e heap, cache di blocchi LIN e riallocazioni locali dopo ricompilazione; traduttore TCE verso CALI per eseguibili reali.

Cap. VII — Integrazione su FELIX C-256 e prestazioni

Residenti assembler per la multiplexazione delle console, limiti di memoria (~64 KB), tempi di risposta: <200 ms (1 console), ~550 ms (3), <1 s (6) per 200–300 righe — dimostrazione che incrementalità e multiutenza possono coesistere su hardware modesto.

Valore aggiunto e legame con il Capitolo I

Il Capitolo I propone la modellazione della progettazione mediante macchine astratte e forme intermedie, mentre i Capitoli II–VII ne mostrano la concretizzazione in un sistema conversazionale completo. Questo ponte teoria→sistema fonda in seguito INTERFORM (1985–1989): orchestrato formalmente, con dati, attività, strumenti e stati che “parlano la stessa lingua”.

📄 Scarica la sintesi estesa (Capp. II–VII)

Materiali disponibili

Il testo integrale del capitolo è disponibile in un’edizione digitale completa e pulita in rumeno e in inglese. Metto inoltre a disposizione una descrizione estesa (12 pagine), che presenta la struttura, le idee e i contributi all’ingegneria del software, oltre a una copia scannerizzata del capitolo.


Indietro