Chi ha fatto informatica all’università, o anche alcuni indirizzi di ingegneria, non può non essersi imbattuto nel “Testo Sacro” dell’ingegneria del software, il famoso “Software Engineering” di Roger Pressman nelle sue varie e numerosi edizioni.
La sua sesta edizione, risalente al 2005, è stata – tra l’altro molto bene – tradotta dalla McGraw-Hill Italia nel 2008 (chiamata, in maniera forse un po’ equivoca, “quinta edizione”).
Le traduttrici sono due professoresse dell’università di Genova, come si vede dall’immagine qua sotto.
Già ai tempi in cui lo lessi – in una delle sue primissime edizioni – mi accorsi della sua estrema prolissità. Nulla da ridire in quanto ad autorevolezza, Roger Pressman è e rimane un’autorità della materia, ma il suo modo di esporre la materia rende l’ingegneria del software molto più simile ad una complessa teoria scientifica, piuttosto che proporla in maniera “snella” e facilmente comprensibile agli sviluppatori/programmatori, che dovrebbero essere i veri beneficiari di un manuale di questo tipo.
Sono in tutto 24 corposi capitoli (soprattutto quello su UML, di quasi 100 pagine) che prendono in esame, con tanto di riferimenti bibliografici e alcuni (pochi) esempi, la vita di un progetto software, dall’ideazione alla manutenzione, dismissione compresa. Il tutto senza mai scendere (ovviamente) nei dettagli tecnici dell’effettiva implementazione.
Intendiamoci, la sua lettura è quasi sempre piuttosto interessante ed istruttiva, ma richiede grande tempo e sforzo di concentrazione, dovuto al fatto che l’autore non possiede (o è una scelta) il dono della sintesi, e si spinge a trattare ogni argomento fin nei più reconditi dettagli.
Alcuni argomenti, inoltre, risultano ormai fuori luogo o superati: penso ad esempio alle metriche (complessi algoritmi matematici), che dovrebbero fornire una stima concreta di una soluzione software. Chi le usa più ormai in questi anni?
Non conosco, purtroppo, le ultime edizioni di questo libro, ma spero fortemente che Pressman le abbia tolte, o perlomeno sostituite con altri criteri più moderni.
Il punto cruciale quindi è: conviene ancora leggere e studiare questo libro?
La risposta non è assoluta: “no” se lo si usa come “Bibbia” per imparare e mettere in pratica l’ingegneria del software. Sì se lo si considera una sorta di “romanzo”, la cui lettura, ogni tanto, può dare qualche spunto di riflessione.
A ciò viene in soccorso l’ottima impaginazione offerta dalla McGraw-Hill Italia, come si vede da questa foto.
Ovviamente, come si vede, diagrammi UML e quadri sinottici la fanno da padrone, e possono dare un contributo alla comprensione generale.
Per chi poi volesse farsi del male, alla fine di ogni capitolo è presente una ricca bibliografia dove trovare ulteriori informazioni (se mai ce ne fosse bisogno).
Non solo, vengono anche offerti “problemi e spunti di riflessione” per invogliare il lettore alla pratica (senza soluzioni però) e persino un’ulteriore bibliografia molto più ragionata e commentata della prima (mi sfugge ancora il motivo di questa suddivisione).
È un libro comunque molto ampio, la cui lettura completa richiederà molto tempo.
Basta dare soltanto un’occhiata alla sua massa, qua sotto.
Qua sotto i dettagli di questo libro. Notate il prezzo di copertina piuttosto elevato (sopra i 50 €).
Su Amazon Italia lo si può comunque acquistare a poco più di 40 euro.
Sommario
Prefazione all’edizione italiana
1 – Cap. 1) Il software e l’ingegneria del software
PARTE 1 – IL PROCESSO DI SVILUPPO SOFTWARE
23 – Cap. 2) Panoramica sul processo
51 - Cap. 3) Modelli di processo prescrittivi
87 - Cap. 4) Sviluppo agile
PARTE 2 – LA PRATICA DELL’INGEGNERIA DEL SOFTWARE
117 - Cap. 5) Panoramica sugli aspetti pratici dell’ingegneria del software
145 - Cap. 6) Principi e concetti object-oriented
173 - Cap. 7) UML: una notazione per la modellazione
261 - Cap. 8) Ingegneria dei sistemi informatici
283 - Cap. 9) Ingegneria dei requisiti
319 - Cap. 10) Modellazione analitica
365 - Cap. 11) Ingegneria della progettazione
393 - Cap. 12) La progettazione dell’architettura
417 - Cap. 13) La progettazione a livello dei componenti
449 - Cap. 14) Progettazione della user interface
481 - Cap. 15) Strategie di testing del software
517 - Cap. 16) Tecniche di testing del software
561 - Cap. 17) Metriche di prodotto per il software
PARTE 3 – LA GESTIONE DEI PROGETTI SOFTWARE
603 - Cap. 18) Concetti di gestione dei progetti
625 - Cap. 19) Metriche di processo e di progetto
651 - Cap. 20) Stime per il progetto software
683 - Cap. 21) Scheduling dei progetti software
705 - Cap. 22) Gestione dei rischi
725 - Cap. 23) Gestione della qualità
753 - Cap. 24) Gestione dei cambiamenti
Glossario
Indice analitico