Ho seguito alcuni corsi di progettazione software negli ultimi semestri, e mentre vedo il vantaggio in gran parte del formalismo, sento che non mi dice nulla del programma stesso:
- Non puoi dire come il programma funzionerà dalla specifica Use Case, anche se discute di cosa può fare il programma.
- Non puoi 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 molto parziale del sistema complessivo.
- I diagrammi delle classi sono ottimi per descrivere come è costruito il sistema, ma sono del tutto inutili nell'aiutarti a capire che cosa deve essere il software.
Dove in tutto questo formalismo è la linea di fondo: come appare il programma, funziona e che esperienza dà? Non ha più senso progettare al di fuori di questo? Non è meglio capire come il programma dovrebbe funzionare tramite un prototipo e sforzarsi di implementarlo per davvero?
So che probabilmente sto soffrendo di insegnamenti di ingegneria da parte di teorici, ma ho bisogno di chiedere, fanno questo nel settore? Come fanno le persone a capire che cosa sia effettivamente il programma, non a cosa dovrebbe conformarsi? Le persone prototipano molto, o usano principalmente strumenti formali come UML e io non ho ancora imparato a usarli?