Méthodes du Développement du Logiciel
Corso tenuto alla FILS, nella sezione francese, come versione francofona del corso Software Development Methods. Cambiava la lingua di insegnamento; l’obiettivo pedagogico restava lo stesso: introdurre gli studenti ai metodi moderni di sviluppo del software, alla modellazione orientata agli oggetti e alla disciplina ingegneristica della costruzione dei prodotti software.
Riferimenti essenziali
- Istituzione: Università POLITEHNICA di Bucarest
- Facoltà: FILS – sezione francese
- Lingua di insegnamento: francese
- Titolo ufficiale: Méthodes du Développement du Logiciel
- Docente responsabile: Luca Dan Șerbănați
- Profilo: ingegneria del software
- Posizione nel piano di studi: equivalente francofono del corso Software Development Methods
- Struttura, anno, semestre, crediti: identici alla versione in lingua inglese
Il posto del corso nella mia attività didattica
Questo corso appartiene al periodo in cui cercai di dare alla formazione della FILS un autentico profilo ingegneristico. Non era sufficiente che lo studente imparasse a programmare; doveva anche comprendere il processo attraverso il quale un sistema software viene analizzato, modellato, progettato, implementato, collaudato e messo in esercizio.
L’insegnamento del corso anche in francese dimostra che non si trattava di una disciplina periferica, ma di una materia sufficientemente consolidata e importante da essere offerta parallelamente in più indirizzi della FILS. Esprime bene il mio orientamento pedagogico degli ultimi anni: formare ingegneri del software capaci di considerare il software non soltanto dall’interno del codice, ma anche dalla prospettiva dei modelli, dell’architettura e del processo di sviluppo.
Obiettivo del corso
Il corso mirava a condurre gli studenti dalla programmazione intesa come attività individuale allo sviluppo sistematico di prodotti software. L’accento cadeva sull’analisi e sulla progettazione orientate agli oggetti, su UML come linguaggio di modellazione, sui processi iterativi e incrementali, sui requisiti e sulle buone pratiche di progettazione.
Al centro vi era l’idea che lo sviluppo del software sia un’attività ingegneristica: richiede metodo, rappresentazioni esplicite, controllo della complessità, attenzione alla qualità e una buona comprensione del ciclo di vita del prodotto.
Struttura del corso
1. Introduzione all’ingegneria del software
La prima parte del corso definisce le nozioni di sistema, sistema informativo, sistema informatico e software, quindi discute le particolarità del software come prodotto ingegneristico: viene sviluppato, non “fabbricato” nel senso classico, non si usura fisicamente, soffre soprattutto a causa dei difetti di progettazione ed è generalmente costruito per contesti specifici.
In quest’area compaiono anche la “crisi del software”, i sintomi classici dei progetti falliti e le loro cause profonde: gestione insufficiente dei requisiti, comunicazione ambigua, complessità opprimente, test insufficienti e scarso controllo dei cambiamenti.
2. Processo software e qualità
Il corso introduce il processo software come struttura imposta allo sviluppo di un prodotto, discute il ruolo delle attività ausiliarie, dei punti di controllo e dell’assicurazione della qualità, per poi affrontare nozioni quali CMM e maturità dei processi software.
È evidente qui l’intenzione di far comprendere agli studenti che lo sviluppo del software non si riduce alla codifica, ma comprende pianificazione, controllo, artefatti intermedi, test, configurazione e misurazione.
3. Modelli del ciclo di vita
Una sezione importante è dedicata ai modelli di processo: modello a cascata, prototipazione, sviluppo iterativo, sviluppo incrementale e modello a spirale. Il corso insiste sui limiti del modello a cascata e sui vantaggi dei processi iterativi e incrementali, in particolare per quanto riguarda il feedback precoce, la riduzione dei rischi e la visibilità del progresso.
4. Unified Process
Un posto centrale è occupato dallo Unified Process, presentato come processo iterativo e incrementale, incentrato sull’architettura, guidato dai rischi e orientato dai casi d’uso. Vengono discusse le fasi di Inception, Elaboration, Construction e Transition, nonché le discipline associate: modellazione aziendale, requisiti, progettazione, implementazione, test e deployment.
L’accento cade non soltanto sui nomi delle fasi, ma anche sulla loro logica: definizione della visione, stabilizzazione dell’architettura, risoluzione dei rischi principali, sviluppo iterativo delle funzionalità e preparazione della consegna effettiva.
5. UML come linguaggio di modellazione
UML viene presentato come il linguaggio standard di rappresentazione grafica dello sviluppo software. Il corso passa in rassegna i principali tipi di diagrammi: use-case, class, object, sequence, collaboration, activity, statechart, component e deployment.
In questa parte compare anche l’idea della modellazione visuale attraverso viste multiple, con attenzione alla precisione della sintassi e della semantica, nonché al ruolo dei diagrammi nella documentazione degli artefatti dello Unified Process.
6. Fondamenti dell’orientamento agli oggetti
La seconda grande sezione del materiale tratta i concetti fondamentali dell’orientamento agli oggetti: concetti e istanze, domini e oggetti, classificazione, generalizzazione, aggregazione, composizione, incapsulamento, coesione e accoppiamento.
Sono discussi anche il modello strutturale degli oggetti, classi e oggetti in UML, relazioni e vincoli di cardinalità, nonché la dinamica degli oggetti: stati, eventi, operazioni, messaggi e comportamento.
7. Modellazione aziendale
Una parte importante del corso è dedicata alla modellazione aziendale. Viene spiegata la differenza tra la modellazione del business e quella del software, il ruolo dei processi, degli oggetti e degli attori aziendali, nonché l’idea che il business debba essere modellato prima di progettare correttamente il sistema informatico che lo sostiene.
Sono trattate nozioni quali processi aziendali, eventi aziendali, oggetti-risorsa, casi d’uso aziendali, business workers, business entities, nonché l’uso dei diagrammi di attività e di classe nella documentazione del modello aziendale.
8. Analisi dei requisiti
Il capitolo dedicato ai requisiti introduce un approccio sistematico alla raccolta, documentazione e tracciabilità dei requisiti in evoluzione. Sono presentati i tipi di requisiti del modello FURPS+, la relazione tra requisiti funzionali e non funzionali e gli artefatti dello Unified Process usati per organizzarli: Vision, Glossary, Use-Case Model, Supplementary Specifications e business rules.
9. Casi d’uso
Il corso attribuisce un posto importante ai casi d’uso: attori principali, di supporto e fuori scena, scenari, formati brief, casual e fully dressed, nonché il ruolo dei casi d’uso come filo conduttore tra analisi dei requisiti, progettazione e test.
Gli esempi discussi — compreso il caso POS — mostrano che la disciplina non era puramente teorica, ma orientata alla modellazione concreta delle applicazioni.
10. Analisi del dominio e modellazione successiva
Dalla continuazione del materiale risulta che, dopo l’analisi dei requisiti, il corso passava alla domain analysis, alle relazioni tra gli artefatti dello Unified Process e alla modellazione logica del sistema, in continuità con l’approccio già noto dalla versione inglese.
Significato del corso
Visto retrospettivamente, questo corso è importante perché esprime un’idea che ho sostenuto costantemente: il software di qualità non si ottiene mediante una codifica improvvisata, ma attraverso metodi, modelli, rappresentazioni adeguate e un processo controllato.
Méthodes du Développement du Logiciel era, in fondo, un corso sull’ordine che deve essere introdotto in un settore incline al disordine: l’ordine dei requisiti, dei modelli, degli artefatti, delle responsabilità e del passaggio controllato dal problema alla soluzione software.





