Newsgroup: it.scienza.informatica
Titolo: Software bug, perche' li accettiamo?

Sto scrivendo un articolo sui bug del software. Fondamentalmente mi chiedo
come mai accettiamo dai programmi cose che non saremmo minimamente disposti
ad accettare da una automobile o da un frigorifero!
Se qualcuno ha un suo parere mi piacerebbe conoscerlo ed eventualmente
citarlo.
In particolare mi interessa sapere se qualcuno ha vissuto qualche bug in
modo eclatante, se ne ha avuto danno e se vi fidate ad affidare i vostri
dati alle prime release di un programma.
Qualche bug di cui siete venuti a conoscenza vi ha particolarmente colpito?
Grazie a tutti!
Roberto Dadda
Rob...@dadda.it
http://roberto.dadda.it
ps potete rispondere qui o utilizzare a vostra scelta il mio indirizzo di
posta

 Qualche bug di cui siete venuti a conoscenza vi ha particolarmente colpito?
Ho notato che la cosa e' anche peggiore, nel senso
che l'idea che i bug siano accettabili si va diffondendo
(si noti per esempio l'infinita' di bug, sia tecnici che
di progetto, presenti nei cellulari motorola) e passa dal
mondo informatico a tutto il resto. Poi e' ancora piu' 
strano che per semplici compiti quali comporre una e-mail
la stessa gente che non si affida a prodotti free per
paura di malfunzionamenti poi usa prodotti commerciali
che, pur essendo stati pagati una fortuna per quello che
fanno, sono pieni di "difetti".
C'e' un'altra cosa che mi stupisce: e' possibile
che applicazioni semplicissime quali l'editor per windows
del borland pascal 7.0 (su win95 il suo utilizzo spesso
cambiava... l'impostazione di sistema della velocita' di
lampeggiamento del cursore!) contengano tonnellate di bug,
mentre videogiochi dalla complessita' paragonabile a quella
di un sistema operativo spesso funzionano alla perfezione
(spesso, non sempre) ?
I bug che mi colpiscono di piu', perche' sono gravi se fatti da
programmatori seri, sono quelli legati al mancato controllo sulla
effettiva assegnazione di una risorsa dopo averla richiesta, che 
spesso lasciano certi sistemi operativi un po' scemotti in uno 
stato inutilizzabile. Ad esempio, i mancati controlli dopo le 
chiamate malloc(). 
Il bug di questo tipo piu' diffuso era, quando le DirectX erano 
uscite da poco, quello di rovinare l'inizio di una promettente 
pausa gioco in tre passi:
1. Cambiare la risoluzione della scheda video.
2. Tentare di acquisire una qualunque risorsa.
3. Senza controllare di averla ottenuta tentare di usarla
E cosi' windows ti da' una finestra di dialogo grande quanto
una casa con un oscuro messaggio, che spesso fa pensare a
una "malloc violation", e se hai win95 prima versione non solo
devi riavviare per poter riavere la tua risoluzione preferita,
ma (altro incomprensibile bug) le icone sono state tutte 
spostate. Notare che anche sotto win98 la risoluzione resta
"sballata" e la devi rimettere a posto a mano.
I bug in questione sono 2: quello del gioco (quake 1 e' un ottimo 
esempio) che e' andato in crash, ed anche uno "di concetto" :
perche' il cambio di risoluzione video sotto windows non e' 
considerato una risorsa? Cosi' quando il programma esegue la 
famigerata operazione non valida e viene ucciso, il sistema
gli toglie tutte le risorse che gli ha assegnato e la risoluzione
torna magicamente a posto!
Eppure proprio win e' il sistema operativo piu' diffuso del 
pianeta!
Se riuscite a leggere questo, vuol dire che avete avuto un bel 
coraggio ad arrivare in fondo! 
Spiacente per aver deluso la vostra fiducia sulla possibilita'
che questo post fosse interessante, vi saluto
Vincenzo Ciancia

ad accettare da una automobile o da un frigorifero!
Mi sembra semplicemente una domanda malposta.
Gli errori di progettazione ed esecuzione si "accettano" in tutti gli
ambiti: infatti, gli aerei cascano, le motherboards vengono ritirate dal
mercato perche' difettose e 100.000 altri esempi del genere.
Il software e' semplicemente, in media, piu' complesso di altri tipi di
"manufatti", e quindi piu' difficile da testare a fondo.
                                       Ciao
                                        A.
Antonio Frangioni                      Research Associate  |  I have gained ...
Dip. di Informatica - Corso Italia 40 - 56125 Pisa, Italy  |  the colour of the
Ph +039-50-887216                
www.di.unipi.it/~frangio
  |  corn.   [Exupery]

 citarlo.
Il problema e' alle radici dell'informatica.
Mentre l'ingegneria e' una materia basata sulla matematica dei continui
(ovvero con una equazione riusciamo a descrivere un fenomeno)
l'informatica e' basata sulla matematica discreta.
Mi spiego con un esempio: un ingegnere che deve progettare un ponte sa,
attraverso formule matematiche, che anche un errore di tot percentuale non
fara' cadere il ponte. Esso ha a sostegno la fisica e sa che un ponte
costruito in certo modo non crollera' a meno di venti superiori a 4000
km/h o ad un peso di 50000 kg.
Invece un informatico che deve progettare un sistema informatico deve
ragionare su una matematica discreta. Un errore di un solo bit in su byte
genera uno stato totalmente diverso e distante. In pratica la curva degli
stati possibili da quello aspettato e' esponenziale. E' impossibile
controllare e governare tutti gli stati.
E' per questo che in termini di "Ingegneria del Software" si dice che "non
esiste il silver bullet".
E' per questo che i bug del software sono sempre presenti. E' per questo
che SI accettano.
Oltre a tutto questo, i frigoriferi e le automobili sono macchine a stati
finiti mentre certi programmi sono riconducibili soltanto alle macchine di
Turing!!
Per spiegare questo ultimo passo (fondamentale anche esso) dovrei
spiegarti (se non la conosci) tutta la teoria di "Informatica Teorica"...
Cmq, a grandi linee: una macchina a stati finiti e' una macchina senza
memoria, le cui transazioni passano obbligatoriamente da uno stato ad un
altro, per cui si riesce a fare un diagramma "lineare" di tutti gli stati,
si riesce a descrivere passo-passo tutte le possibili azioni che possono
fare: e' per questo che i frigoriferi non contengono bug!!
Invece un computer e' riconducibile ad una macchina di Turing, ovvero, una
macchina NON ha stati finiti ma ad una macchina con un dispositivo di
lettura-scrittura ed una memoria infinita, molto piu' potente ed
espressiva di qualsiasi macchina a stati finiti....
Insomma e' un discorso molto ampio e vasto, ed e' alla base della Scienza
Informatica... 
Non so se ti sono stato d'aiuto e se sono stato abbastanza chiaro. Ma e'
un discorso NON semplice...
Buon lavoro,
				Omar.
--
Omar Frenquelli
Studente Informatica, Universita' di Bologna
e-mail:		
fren...@cs.unibo.it
url:		
www.cs.unibo.it/~frenquel/
software:	
www.cs.unibo.it/~frenquel/fantacalcio/
--



Sono perfettamente in accordo con quanto detto da Omar circa la difficolta'
di scovare i bug in un programma per un elaboratore avente la stessa
"potenza" di una macchina di Turing; teorema di Rice docet!!!. Devo pero'
dire due cose:
-Esistono dei sistemi formali (come la Logica di Hoare) che permettono di
dimostrare (con certi limiti) che un programma e' corretto rispetto a certe
specifiche. Tali sistemi sono di difficile utilizzo per programmi di grosse
dimensioni. Si potrebbe pero' utilizzarli nelle applicazioni MISSION
CRITICAL (come nell'avionica degli aerei, che oggi come oggi non e' una
macchina a stati finiti bensě un potente sistema distribuito...)
-Le cause dei bug possono essere distrazioni del programmatore oppure
difetti strutturali; i primi sono disposto ad accettarli, i secondi no... In
altre parole, i bug di Windows '95 non li accetto, i bug di Solaris forse
si'...
Ugo Dal Lago
Universita' di Udine.

 
La maggior parte delle persone che usano un pc, me compreso anche se
cerco di rimediare usando anche Linux, installano di loro propria
volonta' il piu' grande baco mai riscontrato in un sw: Windows ...
-- 
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it

 un discorso NON semplice...
In genere diffido di chi comincia con "non è semplice...". Nel tuo caso,
però ti dò ragione, anche perchè l'hai scritto in fondo alla lettera :-)
--
Alessandro Monti
P.S.
Ma perchè questo thread è stato ripostato anche qui?
Non bastava it.(...).software-eng ?

 Studente Informatica, Universita' di Bologna
Ciao bolognese... come ve la passate da quelle parti?
--
-----------------------------------------------------------------
  Gionata Aladino Canova
  Computer Science, University of Pisa
-----------------------------------------------------------------

Scusami, ma se tu vieni a postare in questo NG, vuol dire che di
programmazione comunque te ne intendi.
E non riesci a darti una risposta da solo??
Secondo me, il più grosso "guaio" che un programmatore deve risolvere è
quello di dover pensare a tutte le scempiaggini che un utente sprovveduto
può fare sulla sua macchina. D'accordo sul fatto che quando si alloca una
risorsa si dovrebbe controllare se veramente è stata allocata dal sistema,
ma non si può proprio pensare a tutto!!!! Io per esperienza personale ne ho
viste di tutti i colori (driver video per la scheda X montati su una Y, e
l'utente che si lamenta che il PC funziona solo a 640x480x16, cavi paralleli
infilati a forza nella porta joystick....). Sono convinto che solo il
Padreterno riuscirebbe a prevedere tutti i possibili "eventi" a cui è
soggetto un computer. E la maggior parte dei bug che si incontrano sono
dovuti proprio a cincostanze non previste. Detto questo non giustifico
errori come quello di Internet Explorer che diventa sempre più lento man
mano che si vanno ad aprire file o cartelle (lo avete mai notato?!?).
Succede con TUTTE le macchine dove lavoro, e quindi non è una particolare
configurazione a mettere in crisi il programma: è proprio IE che è scritto
male!!!!
E poi, non facciamo di tutta l'erba un fascio!!!! Un qualsiasi errore su un
sistema Win, e la colpa è sempre del sistema operativo. Ma hanno scritto
male solo Windows e poi sono diventati tutti bravi con gli altri
programmi?!? Windows (con tutta la sua parte a 16bit), appena installato
funziona alla perfezione (o quasi!!). Inizia a scricchiolare quando ci si
installano su decine di programma totalmente inutili.
Per concludere: i bug li accettiamo perchè non ne possiamo fare a meno, e
perchè sono convinto che sia diventato ormai impossibile gestire milioni di
linee di codice senza commettere qualche errore. Certo i programmi
potrebbero essere di qualche centinaia di linee anziche qualche milione....
ma poi chi li comprerebbe?!? Senza le finestre 3D e i menu animati l'utenza
media non ne vorrebbe sapere niente. Provate a vendere una macchina da corsa
a qualcuno: all'inizio sarebbe antusiasmato dalle prestazioni, ma poi,
venendo a sapere che non c'è l'aria condizionata, che si deve revisionare il
motore ogni volta che si usa la macchina, che la posizione di guida è
scomoda, ecc. NON comprerebbe l'auto e si rivolgerebbe presso qualcun'altro
che costruisce macchine meno perfette ma più comode.
DaRiO

espressiva di qualsiasi macchina a stati finiti....
Il discorso degli stati tra un fisico ed un informatico sulla differenza di
stati mi sembra sensato.
Una cosa sola:
ancora nessuno è riuscito ad immaginare e controllare (dal punto di vista
teorico) una macchina di Turing a stati NON FINITI. Un programma è
sicuramente riconducibile ad una macchina di Turing a stati finiti, ma non
ti credere che i possibili stati di un'automobile siano così pochi. Secondo
me sono l'equivalente di un sistema operativo, se consideriamo le più
recenti automobili dotate di apparecchiature all'avanguardia.
Poi certo, se prendi un tostapane ed un videogioco, le differenze ci stanno
(e come!).
ByezZz
Fabyo

risorsa si dovrebbe controllare se veramente è stata allocata dal sistema,
Dal post iniziale sembra più un teorico che un pratico....
e tutti sappiamo che la teoria è bella, ci possiamo fare tante cose....
"x appartiene a Wx" è indecidibile. Ahhhhh
Il problema del castoro indaffarato non e computabile! Ahhhhhh
.............
.............
Ma poi sappiamo che spesso tali affascinanti nozioni si discostano parecchio
dalla pratica, e fin quando non incappi di prima persona in determinate
circostanze non hai mai un'idea chiara della situazione!
Certi matematici litigano fra loro per decidere se lo zero appartiene o no
ai naturali, questo pone dei difetti d'instabilità all'affermazione "la
matematica è una scienza esatta".
Se non lo è la matematica figuriamoci l'informatica!!!!! Favole per bambini
sarebbero!!!
Fabyo

 
Il "dovere" di un O.S. e' non inchiodarsi e salvaguardare la correttezza
dei dati trattati, quello di un frigorifero e' conservare il cibo; il
fatto e' che entrambi, se usati in modo non corretto hanno il "diritto"
di non funzionare come dovrebbero. Solo che il frigorifero funziona male
solo se lasci la porta aperta o manca la corrente, Win funziona male se
apri troppe finestre, fai troppe cose contemporaneamente (alla faccia
del multitasking), stampi qualcosa di grosso, ecc...


Salve
scuasate se metto "i piedi nel piatto" ma il quesito di partenza era
non perche' ci sono i bug nel software (da cui gli sfoggi di cultura
"alta" sulla complessita' e quanto altro) ma perche' l'utente finale
accetta prodotti con bug lasciandosi abbindolare dalla prossima 
release che fissera' tale bug e tal'altro magari introducendone altri
a costi non banali e non si limiti a mandare a cagare un produttore e
passi ad altro (magari a costi inferiori..). Io non ho una risposta ma 
penso che il problema suia legato sia alla posizione di dominanza di
certi produttori sia alle caratteristiche dell'ambiente in cui un utente
si trova a lavorare. Ad esempio io ho due PC con Win98 su cui ho messo 
anche linux SuSe che uso solo io mentre i miei utenti vogliono Win anche 
se non e' proprio il max, idem per  altre cose. Un prodotto viene usato
perche' altri con cui si lavora lo usano o perche' il suo ambiente e' 
piu' familiare all'utente o altro e chi sviluppa se ne frega, pressato da
ragioni di mercato e altro, se il prodotto ha dei bug tanto gli utenti
che ha difficilmente sono disposti a passare ad altro.....
Cheers
Yuri
PS Chi l'ha detto che i bug non ci sono in altri settori dell'ingegneria
o della produzione? solo che li si chiama difetti.... Chi produce merci
sa che ci sono sempre degli esemplari di quella merce che difetteranno
prima di altri, che senzo avrebbe parlare di vita media, altrimenti?

 che costruisce macchine meno perfette ma più comode.
Questo e' un altro punto: stavolta sono d'accordo.
Tutti noi quando compriamo qualcosa siamo attratti molto piu' dall'aspetto
esteriore che da quello funzionale.
Quanti di noi hanno guardato il software del proprio cellulare prima di
comperarlo? Scommetto che tutti noi abbiamo guardato solo (o quasi) quanto
era piccolo, come era il display... Ma nessuno ha guardato se era facile
da usare!
Lo stesso discorso per la lavatrice ed il videoregistratore....
Ti consiglio un libro serio, divertentissimo e stupendo da leggere (a me
"ha cambiato la vita"): 
"La caffettiera del masochista"
Lo trovi in qualsiasi libreria... Leggilo e ti rimarra' impresso a vita...
Saluti,
				Omar.
--
Omar Frenquelli
Studente Informatica, Universita' di Bologna
e-mail:		
fren...@cs.unibo.it


 si'...
Certamente. Anche se, nostro malgrado, la M$ sta imponendo uno "standard
de facto" (dovuto agli accordi commerciali...) e cio' non e' un bene per
l'Informatica... ma e' un fatto...


 Ciao bolognese... come ve la passate da quelle parti?
Bene! Ma non sono bolognese. Studio a Bologna da 5 anni ma sono
marchigiano.
Tu studi alla Normale di Pisa?


 Non bastava it.(...).software-eng ?
Non ho idea... Non sono iscritto al newgrp it.comp.software-eng....


 che ha difficilmente sono disposti a passare ad altro.....
Anche io uso Win e Linux, e sono costretto a tenere il primo
fondamentalmente per avere compatibilita' con la maggior parte delle
persone con cui scambio programmi e file in genere. Personalmente avrei
gia' eliminato win da un po', ma solo i miei compagni di corso usano
linux (frequento Informatica), tutto il resto del mondo usa Finestre9x,
senza contare che la maggior parte dei programmi che vengono realizzati
e che si trovano in rete (lo so, ce n'e' un sacco anche per linux)
girano su win. Il fatto e' che per uno che col pc scrive qualche doc con
word (che ha il salvataggio automatico, almeno quello), naviga un po' e
fa girare qualche giochino, anche se ad un tratto appare la famosa
scritta "Questo programma ha eseguito.... verra' terminato", il danno e'
minimo: si pigia il reset e tutto riprende come se nulla fosse; non ha
bisogno di un sistema ostico come linux, dove non c'e' il tasto "Avvio"
che ti permettere di lanciare i tuoi programmi preferiti, senza il quale
la totalita' degli utenti MS si troverebbe smarrito e porterebbe subito
il pc dal veterinario :-)
Anche linux ha i suoi bachi, ma la popolazione di quelli di win e' molto
piu' nutrita, solo che avere di fronte linux e non sapere cosa fare e'
peggio che avere win che esplode ogni tanto random, ma che ti prende la
mano e ti chiede "vuoi cancellare questo file?" "Si'" "ma sei sicuro?"
"Sě" "io ti avviso, guarda che poi se sbagli non lo puoi piu'
recuperare. Sei sicuro sicuro?" "Sě" "allora cancello?" "Sě" "sara', ma
per essere sicuro lo metto nel cestino..."


 prima di altri, che senzo avrebbe parlare di vita media, altrimenti?
Il discorso del software e' diverso.
Se produco 50.000 automobili, ho prodotto 50.000 oggetti fisici
diversi, se produco 50.000 copie di un software l'oggetto e' uno
solo, replicato in modo esatto.
Quindi dovrei gia' sapere come si comporta.
LG
-- 
**************************************************************************
Leandro Gelasi
V Year Computer Science Engineering at Siena University
email : 
gela...@lucy.ing.unisi.it
Gilles Villeneuve will live forever
**************************************************************************

>si'...
.. perche' allora usi Outlook Express per spedire i messaggi?
Antonio

Concordo. Una buona specifica formale preserva dalla maggioranza d'errori.
Quante volte ti e` capitato di avere a che fare con persone che sanno
specificare bene le loro richieste? Generalmente per loro tutto e` 
semplice ed ovvio, mentre generalmente la realizzazione del
software richiede conoscenze che non sono specifiche dell'informatica.
Paolo
-----------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------

da usare!
Le cose tangibili sono piu` alla portata di tutti, le cose meno 
tangibili sono assai piu` difficili da verificare. Quante volte
abbiamo acquistato un libro che magari si presenta bene, ma poi
e` ricco di errori ortografici o di traduzione?
Inoltre l'utente medio non ha molta esperienza di software, non sa
cosa e` possibile o impossibile fare. Molte volte mi e` capitato di
persone sorprese da cose che per me sono scontate... 
...persone che si lamentano perche` se salta la corrente
tutto il loro database va in pezzi, e che non sanno che il problema non 
e` tanto lo spegnimento del computer, ma l'assenza di meccanismi
di protezione software.
L'utente medio e` molto ignorante in materia e spesso accetta 
passivamente cio` che gli capita sottomano, oppure (molto piu`
spesso di quanto si creda) preferisce spendere poco e/o non ha
intenzione di aspettare che il software sia testato a fondo.
Un storia vera a proposito di costi e sicurezza:
Tempo fa mi capito` di dover fare un prelievo col bancomat, lo sportello
mi segnalava la disponibilita` della cifra che mi interessava, pero` in
realta` mancava un parte (minima) della cifra. Accortomi dalla cosa,
feci poi un versamento sul conto, ma a distanza di 15 giorni la carta
automaticamente sospesa dalla banca non fu altrettanto automaticamente
riattivata, costringendomi a 1 ora di attesa in banca.
Di questo mi lamentai con il caposala, il quale per nulla turbato mi
disse che era compito mio assicurarmi di quello che faccio
(accettabile fino ad un certo punto). Gli feci notare che il problema
era nel loro software che segnala la disponibilita` della cifra senza
fare un idoneo controllo, se il bancomat mi dice che posso prendere una
certa cifra, non ho motivo di dubitarne. Quindi se era prevista la
possibilita` di un minimo di credito, non vedevo perche` la carta
dovesse venire sospesa pur non superando il limite e soprattutto
non automaticamente riattivata appena rientro nei limiti.
La risposta fu: "ma lo sa cosa significa aggiornare il software?"
Come dire, se un giorno il bancomat mi desse la disponibilita` di 60
miliardi intanto li posso prelevare e poi si vede!!!!!!!
E meno male che si tratta di una grossissima banca!!!!!!!!!!!!!!
Ovviamente poi estinsi il conto!



