Ho seguito alcuni corsi di progettazione del software negli ultimi semestri e mentre vedo i benefici in gran parte del formalismo, sento che non mi dice nulla sul programma stesso:
- Non puoi dire come funzionerà il programma dalle specifiche del caso d'uso, anche se discute cosa può fare il programma.
- Non si può dire nulla sull'esperienza utente dal documento dei requisiti, anche se può includere requisiti di qualità.
- I diagrammi di sequenza sono una buona descrizione di come il software funziona come stack di chiamate, ma sono molto limitati e offrono una visione altamente parziale dell'intero sistema.
- I diagrammi di classe sono ottimi per descrivere come è costruito il sistema, ma sono assolutamente inutili per aiutarti a capire cosa deve essere il software.
Dov'è in tutto questo formalismo la linea di fondo: come appare il programma, come funziona e quale esperienza offre? Non ha più senso progettarlo? Non è meglio capire come il programma dovrebbe funzionare tramite un prototipo e sforzarsi di implementarlo davvero?
So che probabilmente sto soffrendo per l'insegnamento dell'ingegneria da parte dei teorici, ma devo chiederlo, lo fanno nel settore? Come fanno le persone a capire che cos'è effettivamente il programma, non a cosa dovrebbe conformarsi? Le persone prototipano molto o usano principalmente gli strumenti formali come UML e non ho ancora capito come usarli?