Sono passati molti anni da quando ho iniziato a lavorare con UML (Unified Modelling Language), ma nonostante sia passato tutto questo tempo, ricordo ancora molto bene quante difficoltà ho avuto a comprendere nell’intimo il significato dei casi d’uso. Docenti e libri mi parlavano in una lingua che io non riuscivo proprio a capire. Ho dovuto “fare da solo” e ci ho impiegato un po’ di tempo…
Oggi, per puro caso, mi è capitato di leggere, su un sito molto noto, un articolo su questo argomento e sono rimasto colpito nel leggere le stesse frasi, le stesse parole di quando io studiavo questi concetti e non ci capivo nulla. Eppure è tutto davvero banale! Mi sono incuriosito e ho fatto un piccolo scouting sulla rete per vedere come viene trattato questo argomento sui tanti siti che se ne occupano. Beh, da non crederci! Parlano tutti nello stesso modo! Quel modo che ho conosciuto a mio tempo e che, a mio modestissimo parere, non entra nell’intimo dei casi d’uso e non consente al lettore di comprendere fino in fondo cosa è un caso d’uso!
Vista tale situazione ho deciso di scrivere queste poche parole per trasmettere la mia personale esperienza con questo argomento. Magari ci sarà qualcuno a cui potrà essere utile…
Se una persona studia i casi d’uso lo fa, nella stragrande maggioranza dei casi, perché ha a che fare da vicino con il mondo della programmazione… Questo è un problema. Se uno arriva a studiare l’UML e i casi d’uso dopo aver già programmato e magari per molto tempo, diventa paradossalmente più difficile comprendere il concetto che sta dietro al caso d’uso. Il motivo è presto detto: un programmatore (per deformazione professionale) guarda un software dall’interno, un caso d’uso invece guarda lo stesso software dall’esterno. Quindi, programmatori che leggete queste parole, spegnete il cervello da programmatori e smettete immediatamante di pensare a classi, procedure e tutto ciò che ha a che fare con il codice. Se non lo farete non capirete mai un tubo sull’UML e sui casi d’uso in particolare 😀
Spento?
Ok.
Cosa è un caso d’uso?
Lo conosciamo tutti un videoregistratore, vero? Si, lo so, lo conosciamo tutti. Inutile dire di no! Quindi, se non lo abbiamo di fronte, possiamo comunque immaginarlo. Ci siamo? Lo sitamo guardando (anche solo nella nostra mente)? Bene.
Rispondiamo ora a questa domanda chiave: “come si usa il videoregistratore?”.
Tutti, ma proprio tutti noi diremmo qualcosa del tipo: premi il tasto con la freccia singola che punta verso destra per vedere il filmato; premi le doppie freccie a sinistra per mandare il filmato indietro; premi le doppie freccie a destra per mandare il filmato avanti veloce; premi il tasto con il tondino rosso per registrare.
All’incirca è così che si “usa” un vidoregistratore, giusto?
Abbiamo appena risposto alla nostra domanda.
Il videoregistratore è il nostro software, i casi d’uso indicano il modo in cui si “usa” il nostro software.
Ecco perché i programmatori fanno fatica a capire cosa è un caso d’uso: loro sono naturalmente predisposti a guardare dentro il videoregistratore per capire come funziona l’aggeggio all’interno. I casi d’uso invece se ne fregano di come può mai essere che, premendo un pulsante, si riesca magicamente a vedere il video.
Spero di aver evitato a qualcuno di perdere ore e ore del proprio tempo nel tentativo di comprendere una cosa così banale…
Il caso d’uso è appunto come viene usato l’oggetto che si sta creando. Che sia un videoregistrato o un programma. è la vista più esterna, quello che deve essere fatto dall utonto 🙂 Caso d’uso 1: utente vuole vedere un film: inserire la cassetta, preme play. A lui non interessa altro…il programmatore penserà a fare tutto il resto 🙂 Ma è meglio cercare di fare tutti i casi d’uso per evitare di riscrivere pezzi di software semplicemente perchè non si era pensato al caso in cui l’utente inserisce la cassetta al contrario 🙂
Semplice ma efficace! Grazie.