Codice etico e di pratica professionale dello sviluppo software

Versione 5.2 – Codice Etico Sviluppo Sw (pdf)

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.