L'era dell'improvvisazione nello sviluppo del software è destinata a terminare. Nel futuro ci si rivolgerà sempre di più a metodi formali, definiti su basi matematiche rigorose che, lungi dal mortificare la creatività dei progettisti, la porranno al servizio della qualità dei prodotti ed in particolare della loro affidabilità. Questo testo nasce da anni di esperienza nell'insegnamento dell'ingegneria del software, sia in ambito universitario sia in corsi di formazione a livello industriale. Il suo obiettivo è fornire un quadro esauriente dei problemi, della teoria, dei metodi, delle tecniche e degli strumenti che devono essere conosciuti per progettare software di buona qualità, attraverso un processo di produzione efficace ed economico. Il testo si pone dunque sia come strumento didattico nell'insegnamento universitario dei corsi di ingegneria del software, sia come monografia per l'aggiornamento professionale di chi già opera nell'industria del software.