|
Codice
etico e di pratica professionale dello sviluppo software
versione 5.2
Versione
breve: premessa
La versione breve del codice
fornisce una sintesi delle aspirazioni, ad un elevato livello di astrazione.
Le clausole incluse nella versione integrale forniscono esempi e dettagli
di come queste aspirazioni cambiano il modo in cui agiamo come professionisti
dello sviluppo software.
Senza le aspirazioni, i dettagli
possono diventare legalistici e noiosi; senza i dettagli, le aspirazioni
possono diventare belle parole, ma vuote; insieme, aspirazioni e dettagli
formano un codice coeso.
Gli sviluppatori software devono
impegnarsi a rendere l'analisi, la specifica, il disegno, lo sviluppo,
il test e la manutenzione del software una professione rispettata e dagli
effetti benefici. In accordo con il loro impegno alla salute, alla sicurezza
fisica (safety) ed al benessere del pubblico, gli sviluppatori software
devono aderire agli otto principi qui elencati:
1. Pubblico. Gli sviluppatori
software devono agire in linea con l'interesse pubblico.
2. Cliente e datore di
lavoro. Gli sviluppatori software devono agire in un modo conforme
agli interessi del loro cliente e datore di lavoro, restando in accordo
con l'interesse pubblico.
3. Prodotto. Gli sviluppatori
software devono assicurare che i loro prodotti e le modifiche che vi
applicano siano al livello di standard professionale più elevato
possibile.
4. Giudizio.
Gli sviluppatori software devono mantenere integrità ed indipendenza
nel loro giudizio professionale.
5. Management.
Manager e leader degli sviluppatori software devono sottoscrivere e
promuovere un approccio etico al management dello sviluppo e della manutenzione
del software.
6. Professione.
Gli sviluppatori software devono far progredire l'integrità e
la reputazione della professione, restando in accordo con l'interesse
pubblico.
7. Colleghi.
Gli sviluppatori software devono essere leali e di supporto nei confronti
dei loro colleghi.
8. Se stessi. Gli
sviluppatori software devono, per tutta la durata della loro attività
lavorativa, continuare la propria formazione sulla pratica della professione,
e devono promuovere un approccio etico ad essa.
Versione
integrale: premessa
I computer hanno un ruolo centrale
e crescente nel commercio, nell'industria, nella pubblica amministrazione,
nella medicina, nella formazione, nello spettacolo, e nel complesso della
società.
Gli sviluppatori software sono coloro che contribuiscono, partecipando
direttamente o insegnando, all'analisi, alla specifica, al disegno, allo
sviluppo, alla certificazione, alla manutenzione, al test dei sistemi
software. Dato il loro ruolo nello sviluppo dei sistemi software, gli
sviluppatori software hanno opportunità significative di fare del
bene o di causare danni, di mettere in grado altre persone di fare del
bene o di causare danni, o di influenzare altri a fare del bene o a causare
danni. Per assicurare, per quanto possibile, che i loro sforzi verranno
usati a fin di bene, gli sviluppatori software devono impegnarsi a rendere
lo sviluppo software una professione rispettata e dagli effetti benefici
. In accordo con questo impegno, gli sviluppatori software devono aderire
al seguente Codice Etico e di pratica professionale.
Il codice contiene otto Principi
relativi al comportamento ed alle decisioni che vengono prese da sviluppatori
software professionisti: cioè coloro che svolgono ruoli direttamente
legati alla professione, ed inoltre educatori, manager, supervisori, decisori
di alto livello, così come gli apprendisti e gli studenti della
professione. I Principi identificano le relazioni significative dal punto
di vista etico nelle quali possono prendere parte gli individui, i gruppi
e le organizzazioni, e gli obblighi principali nell'ambito di tali relazioni.
Le Clausole di ogni Principio illustrano alcuni degli obblighi compresi
in queste relazioni. Questi obblighi trovano il loro fondamento nella
natura umana degli sviluppatori software, nella speciale attenzione dovuta
alle persone la cui vita viene interessata dal lavoro degli sviluppatori
software, e negli elementi specifici della pratica dello sviluppo software.
Il Codice li prescrive come obblighi per chiunque pretenda di essere,
o aspiri ad essere uno sviluppatore software.
Non è ammissibile che
le singole affermazioni contenute nel Codice siano utilizzate in modo
isolato, per giustificare errori di omissione o di effettuazione. La lista
dei Principi e delle Clausole non è esaustiva. Le Clausole non
devono essere viste come una distinzione rigida tra ciò che è
accettabile nella condotta professionale e ciò che non lo è,
valida in tutte le situazioni pratiche. Il Codice non è un semplice
algoritmo etico, che genera decisioni etiche. In alcune situazioni, le
norme possono essere in conflitto tra loro, o con norme provenienti da
altre fonti. In queste situazioni, ciò che è richiesto allo
sviluppatore software è di usare il proprio giudizio etico, per
agire nel modo più rispettoso dello spirito del Codice Etico e
di pratica professionale, alla luce delle circostanze specifiche.
I conflitti etici possono essere
affrontati nel modo migliore grazie ad una considerazione approfondita
dei principi fondamentali, piuttosto che affidandosi ciecamente a regolamenti
dettagliati. Questi Principi dovrebbero portare gli sviluppatori software
a tenere in considerazione chi subisce le ricadute del loro lavoro; a
esaminare se loro stessi, o i loro colleghi, trattano altri esseri umani
con il dovuto rispetto; a considerare come la pubblica opinione, se informata
in modo corretto e sufficiente, valuterebbe le loro decisioni; ad analizzare
l'impatto delle loro decisioni su coloro che hanno meno potere; e a considerare
se i loro atti verrebbero giudicati degni del professionista ideale che
operi in qualità di sviluppatore software. In tutti questi giudizi,
l'attenzione per la salute, la sicurezza fisica (safety) ed il benessere
del pubblico ha un'importanza primaria; in altri termini, l'"Interesse
Pubblico" è fondamentale per il Codice Etico.
Il contesto dinamico e stimolante
dello sviluppo software richiede un codice adattabile e significativo
anche per le nuove situazioni che potranno verificarsi in futuro. Comunque,
anche se in termini generali, il Codice fornisce un supporto agli sviluppatori
software, ed ai manager degli sviluppatori software, che abbiano bisogno
di prendere una decisione operativa in un caso specifico, documentando
le fondamentali posizioni etiche della professione. Il Codice fornisce
un fondamento etico al quale possono riferirsi gli individui nell'ambito
dei gruppi, ed i gruppi nel loro insieme. Il Codice aiuta a definire quali
siano le azioni che, sotto il profilo etico, sia improprio richiedere
ad uno sviluppatore software o ad un gruppo di sviluppatori software.
Il Codice non è stato
scritto solo per contribuire a giudicare la natura di atti discutibili;
ha anche una importante funzione educativa. Dal momento che il Codice
esprime ciò su cui la professione concorda in merito agli aspetti
etici, esso è anche un mezzo per educare la pubblica opinione e
chi aspira a praticare la professione circa gli obblighi etici di tutti
gli sviluppatori software.
Principi
Principio 1: Pubblico
Gli sviluppatori software devono
agire in linea con l'interesse pubblico. In particolare, gli sviluppatori
software devono, nella misura appropriata:
01. Accettare una responsabilità
completa per il proprio lavoro.
02. Moderare gli interessi
dello sviluppatore software, del datore di lavoro, del cliente e dell'utilizzatore,
in modo che sia comunque rispettato il bene pubblico.
03. Approvare un sistema
software solo se abbiano una convinzione ben fondata che il software
stesso sia sicuro (safe), concordi con le specifiche, abbia passato
test adeguati, e non peggiori la qualità della vita, non diminuisca
la privacy o causi danni all'ambiente. L'effetto ultimo del lavoro dovrebbe
essere positivo per l'interesse pubblico.
04. Rivelare alle persone
o alle autorità appropriate ogni effettivo o potenziale pericolo
per l'utilizzatore, il pubblico interesse, o l'ambiente, che gli sviluppatori
software ritengano ragionevolmente che sia associato al sistema software
o ai documenti correlati.
05. Cooperare negli sforzi
per affrontare materie di grave preoccupazione pubblica causate dal
sistema software, e dalla sua installazione, manutenzione, supporto
e documentazione.
06. Essere leali ed evitare
di nascondere la realtà in tutte le espressioni, ed in particolare
in quelle pubbliche, relative al sistema software, ai relativi documenti,
ai metodi e agli strumenti utilizzati.
07. Considerare gli aspetti
di disabilità fisica, di distribuzione delle risorse, di situazioni
di svantaggio economico, e gli altri fattori che possono ostacolare
l'accesso ai benefici forniti dal sistema software.
08. Sentirsi incoraggiati
ad offrire, su base volontaria, le proprie competenze professionali
per cause giuste, ed a contribuire alla formazione della pubblica opinione
sulla loro disciplina.
Principio 2: Cliente e datore
di lavoro
Gli sviluppatori software devono
agire in un modo conforme agli interessi del loro cliente e datore di
lavoro, restando in accordo con l'interesse pubblico. In particolare,
gli sviluppatori software devono, nella misura appropriata:
01. Fornire servizi nelle
loro aree di competenza, essendo onesti e diretti sui limiti della loro
esperienza e formazione.
02. Non utilizzare coscientemente
software ottenuto o mantenuto in proprio possesso in forma illegale
o contraria all'etica professionale.
03. Utilizzare ciò
che è di proprietà del cliente o del datore di lavoro
solo nelle modalità autorizzate, e con la conoscenza ed il consenso
del cliente o del datore di lavoro.
04. Assicurarsi che ogni
documento su cui basano la propria attività sia stato approvato,
nelle situazioni richieste, da qualcuno che abbia l'autorità
per approvarlo.
05. Mantenere riservata ogni
informazione confidenziale ottenuta nell'ambito della propria attività
professionale, nei casi in cui tale riservatezza sia coerente con l'interesse
pubblico e con la legge.
06. Scoprire, documentare,
raccogliere prove, e farne immediatamente partecipi il cliente o il
datore di lavoro, nei casi in cui, a loro parere, un progetto abbia
forti probabilità di fallire, o di risultare troppo costoso,
o di violare le leggi della proprietà intellettuale, o di risultare
problematico da altri punti di vista.
07. Scoprire, documentare,
e testimoniare al datore di lavoro o al cliente aspetti significativi
di preoccupazione sociale di cui siano a conoscenza, legati al sistema
software o ai documenti associati ad esso.
08. Non accettare lavoro
esterno che vada a detrimento del lavoro che svolgono per il loro datore
di lavoro principale.
09. Non favorire interessi
contrari a quelli del loro datore di lavoro o cliente, a meno che non
risulti compromesso un aspetto etico più importante; in quel
caso, informare il datore di lavoro o un'altra autorità appropriata
della relativa preoccupazione etica.
Principio 3: Prodotto
Gli sviluppatori software devono
assicurare che i loro prodotti e le modifiche che vi applicano siano al
livello di standard professionale più elevato possibile. In particolare,
gli sviluppatori software devono, nella misura appropriata:
01. Impegnarsi per ottenere
una qualità elevata, un costo accettabile e una pianificazione
ragionevole, assicurando che la valutazione dei pro e dei contro delle
diverse soluzioni possibili sia chiara, e accettata dal datore di lavoro
e dal cliente, e che sia disponibile per un esame da parte dell'utilizzatore
e di tutti coloro che possono essere interessati.
02. Assicurarsi che esistano
finalità ed obiettivi appropriati e raggiungibili per ogni progetto
sul quale lavorano o si propongono di lavorare.
03. Identificare, definire
ed affrontare gli aspetti etici, economici, culturali, legali ed ambientali
relativi ai progetti di lavoro.
04. Assicurarsi di essere
qualificati per ogni progetto sul quale lavorano o si propongano di
lavorare, grazie ad un'appropriata combinazione di formazione, addestramento
ed esperienza.
05. Assicurarsi che venga
utilizzato un metodo di lavoro appropriato per ogni progetto sul quale
lavorano o si propongono di lavorare.
06. Lavorare per seguire
gli standard professionali, quando disponibili, più appropriati
per il compito da affrontare, e di allontanarsi da questi solo quando
ciò sia giustificato da un punto di vista etico o tecnico .
07. Impegnarsi per capire
in modo completo le specifiche per il software sul quale lavorano.
08. Assicurarsi che le specifiche
per il software sul quale lavorano siano state ben documentate, che
soddisfino i requisiti utente, e che abbiano le appropriate approvazioni.
09. Assicurare stime quantitative
realistiche di costi, pianificazione, personale, qualità e contenuti
funzionali per ogni progetto sul quale lavorano o si propongano di lavorare,
e fornire una valutazione del grado di incertezza di queste stime.
10. Assicurare un adeguato
livello di test, di rimozione di errori, e di revisione del sistema
software su cui lavorano, e della documentazione ad esso correlata.
11. Assicurare un adeguato
livello di documentazione, compresa quella sui problemi rilevanti emersi
e sulle soluzioni adottate per affrontarli, per ogni progetto sul quale
lavorano.
12. Lavorare per sviluppare
il sistema software e la relativa documentazione in modo che rispettino
la privacy di coloro che saranno coinvolti da quel software.
13. Essere attenti ad usare
solo dati accurati, ottenuti rispettando i principi etici e le norme
legali, ed utilizzarli solo nei modi autorizzati.
14. Mantenere l'integrità
dei dati, facendo attenzione ad occorrenze non più aggiornate
o sbagliate.
15. Trattare ogni forma di
manutenzione del software con la stessa professionalità riservata
allo sviluppo di nuovi sistemi.
Principio 4: Giudizio
Gli sviluppatori software devono
mantenere integrità ed indipendenza nel loro giudizio professionale.
In particolare, gli sviluppatori software devono, nella misura appropriata:
01. Moderare ogni giudizio
tecnico con la necessità di dare sostegno e di mantenere i valori
umani.
02. Approvare unicamente
documenti preparati sotto la propria supervisione, o nell'ambito della
propria area di competenza e sui quali siano d'accordo.
03. Mantenere obiettività
professionale a riguardo di qualunque software, e documentazione associata,
per il quale sia richiesta una loro valutazione.
04. Non partecipare a pratiche
finanziarie ingannevoli quali contributi non dichiarati, doppia fatturazione,
o altre pratiche illegali.
05. Evidenziare a tutte le
parti interessate i conflitti di interesse che non possono ragionevolmente
essere evitati o risolti.
06. Rifiutarsi di partecipare,
come membri o come consiglieri, in organizzazioni private, governative
o professionali che trattino aspetti legati al mondo del software per
i quali loro stessi, i loro datori di lavoro o i loro clienti abbiano
un potenziale conflitto di interessi non evidenziato.
Principio 5: Management
Manager e leader degli sviluppatori
software devono sottoscrivere e promuovere un approccio etico al management
dello sviluppo e della manutenzione del software.
In particolare, i manager e leader degli sviluppatori software devono,
nella misura appropriata:
01. Assicurare un buon management
per ogni progetto sul quale lavorano, comprese procedure efficaci per
promuovere la qualità e per ridurre i rischi.
02. Assicurarsi che gli sviluppatori
software vengano informati per tempo degli standard a cui dovranno conformarsi.
03. Assicurarsi che gli sviluppatori
software conoscano le politiche e le procedure del datore di lavoro
relative alla protezione di password, file e informazioni che siano
riservate per il datore di lavoro o per altri.
04. Assegnare il lavoro da
effettuare solo dopo aver preso in considerazione il livello appropriato
di formazione e di esperienza richiesto; tenere comunque anche conto
dell'obiettivo di migliorare il livello di formazione e di esperienza.
05. Assicurare stime quantitative
realistiche di costi, pianificazione, personale, qualità e contenuti
funzionali per ogni progetto sul quale lavorano o si propongono di lavorare,
e fornire una valutazione del grado di incertezza di queste stime.
06. Attrarre i nuovi potenziali
sviluppatori software nella propria organizzazione solo grazie ad una
completa ed accurata descrizione delle condizioni di impiego.
07. Offrire una onesta e
giusta remunerazione.
08. Non ostacolare ingiustamente
qualcuno dal raggiungere una posizione per la quale tale persona sia
adeguatamente qualificata.
09. Assicurarsi che esista
un accordo leale relativo alla proprietà di qualunque sistema
software, procedura, ricerca, documento, o altra proprietà intellettuale
al quale uno sviluppatore software abbia contribuito.
10. Fornire le necessarie
facoltà di difesa in caso di accuse di violazione di norme del
datore di lavoro, o di violazione di questo Codice.
11. Non richiedere ad uno
sviluppatore software di compiere violazioni a questo Codice.
12. Non punire chi esprima
preoccupazioni etiche relative ad un progetto.
Principio 6: Professione
Gli sviluppatori software devono
far progredire l'integrità e la reputazione della professione,
restando in accordo con l'interesse pubblico. In particolare, gli sviluppatori
software devono, nella misura appropriata:
01. Aiutare a sviluppare
un ambiente organizzativo favorevole ad un comportamento in linea con
i principi etici.
02. Promuovere una conoscenza
pubblica dello sviluppo software.
03. Estendere la conoscenza
relativa allo sviluppo software con un'appropriata partecipazione ad
organizzazioni professionali, incontri e pubblicazioni.
04. Supportare, in qualità
di membri di una comunità professionale, altri sviluppatori software
che tentano di seguire i principi contenuti in questo Codice.
05. Evitare di favorire il
proprio interesse a spese della professione, o del cliente, o del datore
di lavoro.
06. Obbedire a tutte le leggi
riguardanti il loro lavoro, a meno che, in circostanze eccezionali,
ciò sia contrario all'interesse pubblico.
07. Essere accurati nel presentare
le caratteristiche del sistema software su cui lavorano, evitando non
solo le affermazioni false, ma anche affermazioni che possano ragionevolmente
essere interpretate come astratte, vacue, ingannevoli, fuorvianti o
dubbie.
08. Assumersi la responsabilità
di scoprire, correggere e segnalare gli errori presenti nei sistemi
software su cui lavorano, e nella documentazione correlata.
09. Assicurarsi che i clienti,
i datori di lavoro e i supervisori sappiano che lo sviluppatore software
si è impegnato a rispettare questo Codice Etico, e siano a conoscenza
delle conseguenze di tale impegno.
10. Evitare legami con aziende
e organizzazioni che siano in conflitto con questo Codice.
11. Rendersi conto del fatto
che le violazioni a questo Codice sono in conflitto con l'essere uno
sviluppatore software professionista.
12. Esprimere le proprie
preoccupazioni alle persone coinvolte quando si scoprono significative
violazioni di questo Codice, a meno che ciò non sia impossibile,
controproducente o pericoloso.
13. Segnalare significative
violazioni di questo Codice alle autorità appropriate, quando
risulti chiaro che il dialogo con le persone coinvolte in queste violazioni
significative sarebbe impossibile, controproducente o pericoloso.
Principio 7: Colleghi
Gli sviluppatori software devono
essere leali e di supporto nei confronti dei loro colleghi. In particolare,
gli sviluppatori software devono, nella misura appropriata:
01. Incoraggiare i colleghi
ad aderire a questo Codice.
02. Assistere i colleghi
nello sviluppo professionale.
03. Dare pieno credito al
lavoro altrui, ed astenersi dal prendersi meriti non propri.
04. Revisionare il lavoro
altrui in modo obiettivo, privo di malizia e con adeguata preparazione
sull'argomento oggetto della revisione.
05. Ascoltare lealmente le
opinioni, le preoccupazioni e le rimostranze dei colleghi.
06. Fornire assistenza ai
colleghi per far sì che siano al corrente delle pratiche lavorative
e degli standard in vigore, tra cui le politiche e le procedure per
la protezione di password, file ed altre informazioni riservate, ed
in generale di tutte le misure di sicurezza.
07. Non intervenire in modo
sleale nella carriera di un collega; comunque, la preoccupazione per
gli interessi del datore di lavoro, o del cliente, o per l'interesse
pubblico possono spingere gli sviluppatori software, in buona fede,
a mettere in dubbio la competenza di un collega.
08. Di fronte a problemi
al di fuori della propria area di competenza, richiedere l'opinione
di altri professionisti che abbiano competenza in tali aree.
Principio 8: Se stessi
Gli sviluppatori software devono,
per tutta la durata della loro attività lavorativa, prendere parte
attiva all'apprendimento della pratica della loro professione, e devono
promuovere un approccio etico ad essa.
In particolare, gli sviluppatori software devono continuamente impegnarsi
per:
01. Approfondire la propria
conoscenza dei progressi relativi all'analisi, alla specifica, al disegno,
allo sviluppo, alla manutenzione e al test dei sistemi software, e dei
documenti ad essi correlati, e nel campo della gestione del processo
di sviluppo.
02. Migliorare la propria
capacità di creare sistemi software di qualità, sicuri
(safe), affidabili e utili, a costi ragionevoli e in tempi ragionevoli.
03. Migliorare la propria
capacità di produrre documentazione accurata, informativa e ben
scritta.
04. Migliorare la propria
comprensione dei sistemi software sui quali lavorano, dei documenti
ad essi correlati, e degli ambienti in cui tali sistemi software verranno
utilizzati.
05. Migliorare la propria
conoscenza degli standard rilevanti e delle leggi che si applicano ai
sistemi software sui quali lavorano e ai documenti ad essi correlati.
06. Migliorare la propria
conoscenza di questo Codice, del suo significato, e della sua applicazione
al proprio lavoro.
07. Non trattare nessuno
in modo scorretto a causa di pregiudizi irrilevanti.
08. Non influenzare altri
ad intraprendere azioni che portino a violazioni di questo Codice.
09. Rendersi conto del fatto
che le violazioni personali a questo Codice sono in conflitto con l'essere
uno sviluppatore software professionista.
"Traduzione italiana ufficiale
(Adriano Comai e Anna Pegna, 2001), del Software Engineering Code of Ethics
and Professional Practice, approvato dall'ACM e dalla IEEE Computer Society
nel 1999.
Il Codice è stato definito
dal comitato congiunto di IEEE-CS e ACM su Software Engineering Ethics
and Professional Practices (SEEPP).
Comitato esecutivo: Donald Gotterbarn (Chair), Keith Miller e Simon Rogerson;
Membri: Steve Barber, Peter Barnes, Ilene Burnstein, Michael Davis, Amr
El-Kadi, N. Ben Fairweather, Milton Fulghum, N. Jayaram, Tom Jewett, Mark
Kanko, Ernie Kallman, Duncan Langford, Joyce Currie Little, Ed Mechler,
Manuel J. Norman, Douglas Phillips, Peter Ron Prinzivalli, Patrick Sullivan,
John Weckert, Vivian Weil, S. Weisband and Laurie Honour Werth.
Copyright 1999 by the Institute
of Electrical and Electronics Engineers, Inc. and the Association for
Computing Machinery, Inc.
Il Codice può essere
pubblicato senza bisogno di autorizzazioni, purché non venga modificato
in alcun modo e riporti in modo integrale queste indicazioni sul copyright."
Nota alla traduzione.
Il termine "sviluppatore", utilizzato per tradurre "Software
Engineer", ha una connotazione di genere. Non abbiamo certo intenzione
di escludere, in qualità di soggetti del Codice Etico, le numerose
donne che lavorano nel settore. D'altra parte, un utilizzo sistematico
dell'espressione "sviluppatore / trice" sarebbe risultato troppo
pesante. Abbiamo quindi deciso di utilizzare il solo termine maschile,
confidando nella intelligenza dei lettori ed in particolare nella comprensione
delle lettrici.
|