================================================================================ ---------------------[ BFi13-dev - file 06 - 20/08/2004 ]----------------------- ================================================================================ -[ DiSCLAiMER ]----------------------------------------------------------------- Tutto il materiale contenuto in BFi ha fini esclusivamente informativi ed educativi. Gli autori di BFi non si riterranno in alcun modo responsabili per danni perpetrati a cose o persone causati dall'uso di codice, programmi, informazioni, tecniche contenuti all'interno della rivista. BFi e' libero e autonomo mezzo di espressione; come noi autori siamo liberi di scrivere BFi, tu sei libero di continuare a leggere oppure di fermarti qui. Pertanto, se ti ritieni offeso dai temi trattati e/o dal modo in cui lo sono, * interrompi immediatamente la lettura e cancella questi file dal tuo computer * . Proseguendo tu, lettore, ti assumi ogni genere di responsabilita` per l'uso che farai delle informazioni contenute in BFi. Si vieta il posting di BFi in newsgroup e la diffusione di *parti* della rivista: distribuite BFi nella sua forma integrale ed originale. -------------------------------------------------------------------------------- -[ C0LUMNS ]-------------------------------------------------------------------- ---[ CRiTERi PER VALUTARE LA QUALiTA' Di UN S0FTWARE ]-------------------------- -----[ ElfQrin http://www.ElfQrin.com ]------------------- Criteri per valutare la qualita' di un software di Valerio Capello aka Elf Qrin (www.ElfQrin.com) Sara' capitato a tutti di discutere su quale fosse l'applicazione migliore per svolgere un determinato compito (web server, client FTP, browser Internet, word processor, masterizzazione di CD, player multimediale, e cosi' via). Vi sarete probabilmente resi conto di quanto sia difficile stabilire criteri obiettivi che possano aiutare a definire la qualita' di un software, ed eventualmente fare confronti tra applicazioni simili, al di la' dei gusti personali, delle "guerre di religione", e della propaganda delle case produttrici. Lo scopo di questo articolo e' quindi di proporre una classificazione e dei criteri per quanto possibile oggettivi per valutare la qualita' di un'applicazione software, in modo generico (non vincolato cioe' ad applicazioni per funzioni specifiche). Ritengo l'argomento interessante e degno di ulteriore sviluppo. Credo che sarebbe interessante sviluppare ulteriormente il sistema proposto e desidererei ricevere idee e contributi, che riguardino per esempio ulteriori parametri ed eventualmente un sistema di punteggio generico, che potrebbe essere affiancato da ulteriori criteri specifici per le varie tipologie di applicazioni (per esempio un word processor dovra' essere dotato di certe funzionalita' e tali funzionalita' dovranno essere configurabili in un certo modo e fornire certe prestazioni). * Definizione dei Criteri Questa e' la lista dei criteri proposti per la valutazione della qualita' di un'applicazione software: piu' un'applicazione risponde a questi requisiti, tanto piu' alta sara' la qualita' del prodotto. - Free / Gratuito La gratuita' del software e' un discorso complesso. A parte l'indubbio risparmio immediato per l'utente, vi sono ulteriori vantaggi di grande importanza: in particolare, il non dover pagare un costo di licenza elimina il rischio che associazioni di produttori -- affiancati dalle forze dell'ordine, che spesso diventano una sorta di braccio armato di aziende ed enti private, per di piu' a spese del contribuente -- possano procurare dei fastidi, magari per copie dimenticate installate su qualche vecchio computer. Inoltre e' possibile installare una copia su ogni computer che si possiede senza dover tenere conto di un costo fisso per ogni macchina. Le grosse corporazioni multinazionali obiettano che il risparmio sia solo apparente, perche' a fronte del risparmio immediato vi e' -- a loro dire -- un costo maggiore per convertire il personale gia' abituato ad usare un altro software e un'eventuale incompatibilita' dei dati generati con applicazioni usate in precedenza. Queste obiezioni sono confutabili, a parte il fatto che non si tratta di un problema collegato alla gratuita' del software in se', ma e' in realta' un problema di migrazione da un'applicazione ad un'altra. Comunque, a meno che non siano effettivamente necessari corsi specifici con lunghe ore di apprendimento, l'addestramento del personale non rappresenta un costo che eccede quello delle licenze, spesso in un'ottica a medio-lungo termine. Del resto, per fare un esempio pratico, Microsoft grazie alla sua posizione dominante e' riuscita a imporre Internet Explorer in un mercato precedentemente dominato da Netscape, e questo non ha comportato nessun costo di addestramento dell'utenza Netscape. Per quanto riguarda la compatibilita' dei dati, questo dipende in gran parte dall'esportabilita' dei dati generati dall'applicazione originaria. Spesso e' possibile reimportare o convertire dati generati da altre applicazioni velocemente e senza troppi sforzi (ne' costi). In altri casi la conversione potrebbe effettivamente rappresentare un problema. Questi due problemi (e in particolare il secondo) sono dovuti proprio al software utilizzato in origine, evidentemente studiato proprio per rendere difficile la migrazione ad un altro software. Va rimarcato che vi sono possibilita' di guadagno anche con il software gratuito. Innanzitutto, il cliente puo' avere necessita' di un intervento tecnico per l'installazione e la configurazione del prodotto (per esempio, per attivare un webserver sono necessarie alcune competenze tecniche, al di la' del fatto che tutto il software sia disponibile gratuitamente), oppure possono essere richieste delle personalizzazioni, o interventi di assistenza. - Open Source / Codice aperto La disponibilita' del codice sorgente presenta numerosi vantaggi impliciti, al quale vanno aggiunti altri vantaggi solitamente presenti in questo tipo di distribuzione. E' un discorso che merita di essere approfondito a parte, e pertanto verra' trattato separatamente piu' avanti. - Nag free / Privo di seccature Il software dovrebbe essere privo di funzioni progettate per infastidire l'utente per attirare l'attenzione verso informazioni che interessano al produttore, in particolare finestre pop-up che "ricordano" all'utente di fare alcune operazioni (registrazione in linea o altro), a meno che non sia l'utente stesso a richiederlo. Tutte le funzionalita' che possono causare fastidio (come gli assistenti virtuali) dovrebbero essere facilmente disabilitate. - Privacy / Riservatezza Le applicazioni devono essere prive di funzioni che comunicano alla casa produttrice o a terzi (incluse agenzie governative e forze dell'ordine) informazioni relative all'utente o all'uso del prodotto. In generale, niente deve accadere alle "spalle dell'utente", che deve essere informato e cosciente di ogni operazione compiuta dal software, in particolare quando vengono inviate informazioni (specie se si tratta di dati personali). - Comprehensive / Completo L'applicazione puo' anche essere concepita per effettuare una singola operazione, ma dovrebbe coprirne tutti gli aspetti e tutte le caratteristiche dello scopo per cui e' stata progettata. Ed e' comunque preferibile un'applicazione che faccia una sola cosa ma la faccia bene, ad una che raccolga varie funzioni, senza poter fornire il massimo per ognuna. Per fare un esempio pratico e volutamente esagerato (ma neanche troppo), se avete bisogno di un editor di testi, probabilmente non sarete interessati ad un editor di testi con lettore di musica incorporato. - Robust / Robusto L'applicazione non deve bloccarsi, o fornire risultati strani quando accade un evento imprevisto (in particolare un dato in ingresso fuori dai limiti o dai parametri consentiti o previsti). - Recoverable / Recuperabile In caso di un blocco dell'applicazione o del sistema, i dati non vanno persi e possibilmente il lavoro puo' essere recuperato dal punto in cui si e' interrotto. - Secure / Sicuro Le informazioni (specie quelle piu' sensibili) possono essere criptate con un algoritmo forte e non vi sono backdoor che consentano l'accesso ai dati criptati a chi non sia in possesso della chiave stabilita dall'utente. - Safe / Sicuro Il software non deve danneggiare i dati (generati da lui o altre applicazioni), il sistema, l'hardware, o l'utente stesso. - User friendly / Amichevole L'applicazione dovrebbe essere di immediata comprensione e facile da usare. L'interfaccia utente funzionale e liberamente configurabile alle esigneze dell'utente, prevedendo la presenza di "toolbar" nelle quali inserire solo le funzionalita' che interessano nell'ordine preferito. - Fully customizable and configurable / Completamente personalizzabile e configurabile Non vi devono essere scelte imposte dal produttore, ma ogni funzione del programma deve essere configurabile secondole esigenze dell'utente. - Skinnable / Grafica dell'interfaccia personalizzata La grafica dell'interfaccia puo' essere modificate per riflettere il gusto e la personalita' del cliente (o l'immagine corporativa di un'azienda). - Accessible / Accessibile L'applicazione deve essere facilmente accessibile ai portatori di handicap; non deve quindi essere progettata in un modo che renda difficoltoso l'inserimento o la resa dei dati su dispositivi particolari. - Zero-One-Infinity Rule / La Regola Zero-Uno-Infinito Ogni opzione dovrebbe seguire la regola "Zero-Uno-Infinito": una delle buone regole della progettazione del software vuole che non vi siano limiti arbitrari per il numero di una data entita' (per esempio: numero di utenti memorizzabili in un elenco telefonico, numero di finestre visualizzabili in un'interfaccia grafica a finestre, ecc.) In particolare, o non e' permesso l'uso di tale entita' (0), o ne e' permessa soltanto una (1), oppure ne sono permesse tante quante l'utente desidera (infinite, in teoria, in realta' limitate dalla memoria a disposizione). - Compact / Compatto Sia il file di installazione che l'eseguibile dovrebbero essere il piu' compatti possibile, cosi' da poter essere piu' veloce da scaricare (o da occupare poco spazio sul supporto di installazione), ed essere veloce da installare, e da eseguire. - Optimized for speed / Ottimizzato per la velocita' Il software dovrebbe utilizzare algoritmi e sfruttare l'hardware a disposizione per garantire la maggiore rapidita' di esecuzione possibile. - Optimized for resources / Ottimizzato per le risorse Il software deve utilizzare la minor quantita' possibile di risorse (tempo processore, spazio su RAM e su disco, accessi al disco...) - Easy to update / Facilmente aggiornabile Il software deve essere aggiornabile, e tale aggiornamento deve essere semplificato al massimo, e deve essere possibile farlo sia online che offline. - Backward compatibility / Compatibilita' col passato L'applicazione deve riuscire a leggere i dati generati da versioni precedenti, eventualmente convertendo i dati secondo il nuovo formato se un'interpretazione diretta non fosse possibile. - Compatible / Compatibile Il software deve essere fedele agli standard, e condividere i dati con altre applicazioni, eventualmente offrendo funzioni di importazione ed esportazione dei dati in un formato comune. - Easy migration / Migrazione semplice L'applicazione deve rendere semplice (e soprattutto non ostacolare) la migrazione da (o verso) applicazioni dello stesso tipo, eventualmente convertendo i dati generati. - Documented / Documentato Un buon software andrebbe affiancato da una buona documentazione, che descriva accuratamente e con vari esempi ogni singola funzione. Eventualmente vi possono essere spiegazioni differenti o maggiormente approfondite per i diversi tipi di utenza (utente finale, sviluppatore, ecc.) - Supported / Assistenza Il discorso del supporto tecnico, e' un altro discorso delicato e complesso. Anche qui, cosi' come per il costo della licenza, l'utente preferirebbe delle soluzioni gratuite, per lo meno attraverso un forum di discussione. Tuttavia questo rappresenta una voce importante sia per chi fornisce software a pagamento, e a maggior ragione per chi lo fornisce gratuitamente. Per cui e' piu' che naturale e accettabile che chi abbia necessita' paghi per ottenere l'assistenza di cui ha bisogno, purche' il costo sia ragionevole, e soprattutto non vengano create ad arte situazioni che richiedano il ricorso all'assistenza o addirittura l'intervento di un tecnico in loco. Sono inoltre fortemente raccomandati un sistema di comunicazione e di tracking dei bug, e una "cassetta dei suggerimenti" per suggerire nuove funzionalita' o il miglioramento di quelle gia' esistenti. * Uno sguardo alle caratteristiche del software open source Ecco perche' dovreste preferire il software Open Source per uso personale o commerciale. Questo tipo di distribuzione offre molte delle caratteristiche richieste da un buon software (cioe' quelle precedentemente individuate), in particolare se abbinate a licenze di tipo GPL o LGPL: a) Nella maggior parte dei casi e' gratuito: non ci sono licenze da pagare, e nessun rischio che associazioni di produttori o forze dell'ordine vi importunino per copie che avete dimenticato su qualche vecchio computer; b) Lo sviluppatore non ha obiettivi nascosti: il software fara' esattamente cio' che vi aspettate che faccia, e non vi saranno caratteristiche volte ad assicurarsi la fedelta' dell'utente e dei suoi colleghi o amici, ne' a rivelare le abitudini o il profilo dell'utente al produttore, e neanche il programma tentera' di "telefonare a casa"; c) Lo sviluppo del software non verra' interrotto o riconvertito qualora il produttore non riesca a perseguire i suoi fini economici o di posizione sul mercato o altro. Qualora lo sviluppatore originale non possa o non intenda proseguire lo sviluppo del software, altri sviluppatori potranno sostituirlo; d) Non ci sono "ingressi secondari" nascosti per permettere al governo o alla concorrenza di avere accesso ai vostri dati riservati, perche' chiunque ha accesso al codice e se ne accorgerebbe; e) Chiunque puo' segnalare bug e possibili soluzioni, o migliorie, e assicurarsi che non ci siano problemi di sicurezza nel codice, che e' pertanto piu' robusto, sicuro, e affidabile; f) La sicurezza del software e' basata sulla forza dei suoi algoritmi piuttosto che sull'ignoranza riguardo agli stessi, il che significa anche che algoritmi inefficienti possono essere migliorati; g) Molti sviluppatori offrono un servizio di supporto a pagamento, nel caso ne abbiate bisogno, e ci sono un vasto numero (a seconda della popolarita' del progetto) di siti web gratuiti e forum di discussione ai quali contribuiscono professionisti appassionati. ================================================================================ ------------------------------------[ EOF ]------------------------------------- ================================================================================