Michele SciabarràCorsoJava
testi corsi mailing
Symbian Java  Linux

Humor
-Psicopatologia Utenti Linux
-Documentario: Sistemista Linux
-Il Grande Mago Informatico
-Se le distro fossero ragazze
-La Calata Dei Barbari
-Programmatori al supermercato
-Clienti di ieri e di oggi
-Colloqui di Lavoro
-Il vero informatico 2005
-Regolamento per Software House
-Diario di un Open Source
-Non usate quel linguaggio
-Decifrare Offerta Lavoro
-Il lavoro in Italia
-I fantastici 4 degli SmartPhones
-Dalla Teoria Alla Pratica
-Cosa Vuole il Cliente
-Colloqui con gli utenti
-La Visione degli Esperti
-Di che pasta è il tuo codice
-Una Email Dal 2143

Tecnica
-JSF ClassLoader -Programmazione Cellulari Symbian
-L'invasione degli SmartPhone
-Intro Eclipse Video!
-ReadLine FrontEnd
-JspWiki

Opinioni
-C'era una volta il cellulare
-Business dell'OpenSource
-Le scuse del Linux World Expo
-Linux non è Comunismo
-Java e l'Open Source
-Chi ha scritto Linux
-Chi ha paura di XAML -Lavorare con Tanenbaum

Informazioni
-Questo sito
-L'autore








Scarica Omaggio
il Capitolo 2




Leggi Online
il Capitolo 6

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... ;)

Contatto: michele at sciabarra dot com