Copy Link
Add to Bookmark
Report

BFi numero 13 file 06

eZine's profile picture
Published in 
Butchered From Inside
 · 5 years ago

  

================================================================================
---------------------[ 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 <ElfQrin@ElfQrin.com> 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 ]-------------------------------------
================================================================================

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT