Sviluppo Software: dalla teoria alla pratica
(humor, ma sfortunatamente con solide radici nella realtà)
Teoria: Requisiti
5% #
Il committente fornisce le specifiche, colloquiando con degli
specialisti che traducono le sue necessità in un documento di
specifica che raccoglie i requisiti. Il documento dice cosa il cliente
vuole.
Pratica: Requisiti
1%
"Sono andato 4 volte, ma il sig. Rossi, il responsabile EDP non c'era
mai; la quinta volta l'ho trovato, ma mi ha detto che lui doveva fare
assistenza all'amminstratore delegato che ha preso un virus per
email. Allora mi ha indirizzato alla sua segretaria, che mi ha detto
'conosce i dettagli del problema meglio di me'. Allora ho parlato con
lei e ho appuntato questi requisiti:
Il programma deve avere queste caratteristiche:
- deve essere bello perché l'amministratore ci tiene all'immagine
- deve essere facile da usare
- deve memorizzare i dati sul disco rigido
- deve gestire il magazzino.
"Ma non gli hai fatto altre domande?"
"Si, una tonnellata, ma mi ha risposto che non lo sapeva. Questo è
tutto quello che ho pututo ottenere. Che facciamo?"
"Procediamo all'analisi, che altro vuoi fare?"
Teoria: Analisi:
15% ###
L'analista, esperto sia del dominio del problema che delle tecniche di
programmazione, traduce i requisiti in un documento tecnico che spiega
come verranno soddisfatti tutti i requisiti del committente,
defininedo i dati e l'interfaccia utente.
Pratica: Analisi
2% #
"Quali conti deve fare questo programma?"
"Non lo so, non ce l'hanno detto. Nel contratto c'è un contatto per
chiarimenti ma il numero che hano scritto è sempre occupato. Questi
qui fanno tubature, e hanno un magazzino, vediamo un po' cosa fanno
le altre ditte di tubature e scriviamolo"
"Quali dati ci vogliono?"
"Non ne ho idea. Non si riesce a sapere. Se chiedi ti dicono che
hanno un magazzino, e che le merci hanno un costo, e una
quantità... Scriviamo questo.
"Okkei, ma per quanto riguarda la facilità d'uso e la bellezza?"
"Beh scriviamo nell'analisi che deve essere bello e facile da
usare... è una analisi! Ci penseranno i programmatori.
"Va bene, procediamo".
Teoria: Progetto:
30% ######
L'analisi viene tradotta in un modello software, realizzato con
notazioni formali, che strutturano il sofware in modo che sia agevole
tradurlo nel linguaggio di programmazione target.
Pratica: Progetto:
5% #
"Come va?"
"Senti io con questo coso, cioè CASE, non ci capisco niente. Se io provo a
collegare questo diagramma da qui a qui, vedi che non si attacca
all'altro diagramma"
"E se lo attacchi qui?"
"Uhmm oh si, lo tiene. Ma cosa è questo simbolo?"
"Non ho idea, però sembra che ci stia bene nel diagramma".
"Va bene, lasciamolo qui. E tu, hai provato a compilare il codice generato?"
"Si ma non va. Dà una tonnellata di errori. Il manuale dice che si
deve modificare il 'template' ma io non so un accidente di Java. Che
facciamo?"
"Il capo ha fretta e dice che non dobbiamo perdere troppo tempo con
questi diagrammi. L'amministratore urla sempre che 'lui la carta non
la paga', ma dobbiamo seguire la metodologia sennò non siamo nella
procedure della qualità."
"Allora consegniamo i diagrammi, non diciamo ai programmatori che il CASE
dovrebbe produre codice (tanto non lo guarderebbero neanche) e domani li
facciamo cominciare a programmare."
Teoria: Codifica
30% ######
I programmatori implementano il progetto, seguendo gli algoritmi e le
soluzioni indicate nell'analisi, e la struttura e l'architettura
definita nel progetto.
Pratica: Codifica
94% ###################
"A che punto siete?"
"Stiamo ammattendo con le chiavi primarie, ogni volta che provi a
cancellare un record dà eccezione. Il fatto è che è tutto generato
dall'application server e quindi non abbiamo idea dove mettere le
mani."
"Guarda che siete in ritardo. Parecchio"
"Guarda che non ci hanno passato il corso, e quindi ci siamo dovuti
pure imparare il linguaggio da soli. E la licenza dell'application
server è arrivata la settimana scorsa e sono tre mesi che andiamo
avanti con il tomcat?
"Va bene, l'analisi è rispettata?"
"Nell'analisi ci hanno scritto che erano tubature, e invece erano
laminati metallici, e lo abbiamo scoperto 'per caso' andando nel
magazzino a vedere cosa c'era dentro. Hanno scritto che
l'interfaccia doveva essere bella ed ergonomica, e hanno messo degli
snapshot di Access come esempio, ma l'applicazione era web e non ci
entrava nulla! Quell'analisi andrebbe bene per chiunque, sia che
vogliate un gestionale che il software per guidare un robot su marte."
"Come è l'aderenza al progetto?"
"Nel progetto hanno scritto che un utente (vero) era una istanza
della classe User, mescolando diagrammi delle classi e use case. C'è
uno schema di database per un magazzino che comprende tabelle come
"Notizie" e "WorkflowRedazione". C'è uno schema di deployment che
collega un palmare a una scheda di rete fissa, e manca il router, ma
ci sono tre server, due dei quali non sappiamo a cosa servono."
"Beh l'analisi l'ha fatta il cognato dell'amministratore delegato
(che ha studiato giurisprudenza); il progetto l'ha fatto il figlio,
che è 'laureando' in ingegneria informatica con 2 esami su 36? Dice
sempre che Bill Gates non ha avuto tempo di laurearsi perché doveva
lavorare?"
"Che altro potevamo o dovevamo fare?"
"Quello che avete fatto."
Teoria: Test:
20% ####
Il prodotto software realizzato, ben strutturato, con algoritmi
già definiti, viene sottoposto a un test per correggere eventuali difetti di
codifica. Il software viene infine collaudato dal committente.
Pratica: Test
5% #
"Cosa è successo al collaudo?"
"Appena l'amministratore ha visto le fotografie dei prodotti si è
messo a urlare. Ha detto che avevamo sbagliato la tipologia di
prodotto. Loro non fanno più laminati da due anni. Fanno
rubinetti. Mi sa che abbiamo visto le giacenze di magazzino inventute. Per questo hanno voluto il programma! Perchè non sapevano che quello che producevano non corrispondeva a ciò che vendevano."
"E quindi, cosa cambia?"
"Cambia che i rubinetti hanno parecchi parametri in più, lo
stoccaggio è completamente diverso, per non parlare della logistica
che non ci azzecca per niente con quella fatta. I laminati li accatasti,
i rubinetti no, e hanno anche l'imballaggio da gestire, oltre a cose che nemmeno
ti immagini... E poi ha detto che è brutto da morire,
che i colori non si intonano con l'immagine aziendale, che non è
per niente facile da usare, e che voleva anche una animazione
elegante quando si apre il programma così l'operatore si ricorda che
lavora per una bella azienda."
"E il collaudo è finito così?"
"No, prima di cacciarci ci ha fatto annotare 12 pagine di richieste di modifiche. Ha detto che per lunedì devono essere pronte.".
Pratica: Modifiche (non previste dalla teoria):
60% #############
"Scusa, ma se qui cambio questa variabile qui, che succede?"
"Non ho idea."
"Ma non l'hai fatto tu il codice"
"Si ma l'ho cambiato 3 volte, a pagina 2 delle modiche diceva di
fare una cosa, a pagina 7 un'altra cosa, e all'ultima pagina
allullava la modifica di pagina due. Non mi ricordo più cosa ho
fatto".
"Provo a cambiare qui e vediamo che succede?"
"Prova pure, tanto qui non ci si capisce più nulla. Peggio di così non può andare può solo migliorare...".
Pratica: Debug (non previsto dalla teoria)
170% ###################################
"E' successo di nuovo?"
"Si, appena ho corretto il baco della giacenza, non mi riportavano
più i totali di magazzino, quindi forse quella variabile che hai
aggiustato NON era quella che influiva"
"Il problema è che appena cambi una virgola, tutti i conti sballano"
"Suddai riproviamo con il debugger, sono solo le 4 del mattino..."
Pratica: Assistenza (non prevista dalla teoria)
6 mesi ####################################################################... etc etc
"E' sicura che ha messo il quantitativo giusto? Si? Lo ha messo tre volte? E ogni volta viene un numero diverso nella giacenza di magazzino?"
"No guardi, non è possibile che quando clicca su quel bottone compaia NullPointerException"
"Ok, proviamo insieme. Scelga la voce di menù 'Nuovo Articolo'. Come dice? Non compare la voce di menù? Compare la scritta 'translation missing'?"
"La stampante ha emesso 753 pagine con scritto solo ghirigori?"
Pratica: Causa in tribunale (non previsto dalla teoria):
5 anni
(senza barre per limiti dispazio)
"E il fornitore ha quindi caricato il mio cliente il 300% dei costi
iniziali, fallendo completamente l'obiettivo della gestione del
magazzino, e causando al mio cliente un danno incalcolabile al suo
business. Infatti è stato incapace di ottimizzare le giacenze di
magazzino (che hanno ancora laminati di parecchi anni fa), di
smaltirle per tempo in modo da trasformare la sua produzine dalla
rubinetteria e cogliere l'opportunità della riconversione al
fiorente mercato della produzione di cornamuse..."
Commenti(aggiungi il tuo):| Jasmine: Nella mia ditta, il figlio del proprietario non ci lavorerebbe MAI! GLi piace troppo andarsene in giro con la macchina di papà... | | dinogen: Come sarebbe a dire debug non previsto dalla teoria? :-) | | Michele: Beh se ci rifacciamo a certi "spassosi" testi sul software engineering che ho visto all'università, confermo: il debug nel modello classico "waterfall" non è previsto, è previsto "il test" e basta. Che non è esattamente la stessa cosa... Qui invece parliamo del debug conseguente alle modifiche senza analisi e progetti introdotte a causa del software sviluppato senza aderenza alla realtà... | | AkiRoss: Eh, piu' o meno questo e' quello che e' accaduto nella mia area di progetto in 5a superiore ahahah Bhe, senza cliente e senza causa, ma stesse imprecazioni :)
Compliments! | | Antonio: Si ma il modello waterfall e' un suicidio: esistono altri modelli molto piu' conformi alla realta'. Comunque, non e' vero che nel waterfall non e' previsto debug: dopo l'integrazione e il test di sistema viene la fase di consegna, messa in atto e MANUTENZIONE.
Per approfondimenti consultare il testo "Ghezzi, Jazayeri, Mandrioli: Fundamentals of Software Engeneering". | | Michele: D'accordo. Ma non credo sia il caso di tirar fuori malloppi polverosi in un ambito in cui si vuole scherzare un po'. Io ho sempre considerato certe teorie della ingegneria del sw delle vere scemenze (sono per meno uml e più unit testing/xp) e volevo scherzosamente dimostrare come dalla teoria alla pratica... c'è di mezzo un cliente inafferrabile, specifiche vaghe, modifiche con tempi impossibili, e anche, putroppo, nepotismo e persone incompetenti messe in ruoli chiave. | | Linucs: la metodologia del maestro zhao prevede innanzitutto di procurarsi foto compromettenti del figlio dell'amministratore delegato in modo da mitigare il peso dell'ultimo punto ecco perche' durante i primi due giorni di corso si impara ad usare il teleobiettivo | | xlaudio: In tutto questo, ci manca la figura del capoprogetto che vuol farsi bello agli occhi del cliente ( magari per farsi assumere), e dice che tutto ciò che riescono fare i suoi programmatori è merito suo, perchè lui è esperto di "java" fin dai primi anni "ottanta" ( anche se non esisteva java ). Ovviamente se qualcosa non va e perchè i programmatori non sanno nulla e non seguono ciò che lui ha detto. | | bonits: Dove lavoro io, funziona tutto cosi solo che alla fine invece di andare in causa il cliente paga lo stesso ed il progetto viene accantonato... Sapete le tangenti servono !!! | | ZioMimmo: ingegneri del sw, programmatori e clienti parlano 3 lingue diverse. Se parlano la stessa lingua allora sono 3 dialetti che stanno tra loro come il sardo sta al veneziano. Se almeno in due riescono a comunicare prima o poi finiscono con il litigare... (che fa anche rima!) | | Bosi: Si va bene, ma hai provato a restartare?
| | aenigma: Ma quale scherzoso e scherzoso, qui si descrive la pura realta dei fatti. O almeno di come mi tocca lavorare a me. | | Pad: Ultimamente mi hanno commissionato un software a distanza, mandandomi come "analisi" un pdf pubblicitario di cui avevano dotato i commerciali della loro azienda. Volete sapere com'è finita? Sono andato a mie spese nel loro ufficio, mi sono piazzato lì 3 giorni e ho visto quello di cui realmente avevano bisogno: naturalmente non c'entravano un [beep - autocensura] col pdf che mi avevano mandato... | | Luca: siamo nel 2005, dal 1970 sono stati inventati altri modelli oltre il waterfall... | | The Sentry: Non ce la faccio più. Ho le lacrime agli occhi e crampi addominali lancinanti da quanto ho riso. E' vero. Tutto vero. Verissimo. SACROSANTA VERITA'. E sia sempre ringraziata *ahem* una certa bevanda gassata al caramello, compagna fedele delle sessioni di debug alle 4 del mattino... ah, vita vissuta... ;) |
|