Il processo di sviluppo software attraverso la chiave degli Obiettivi di Sviluppo Sostenibile
Il software è un elemento sempre più centrale per organizzazioni pubbliche e private, così come nella vita e nella società. Il codice da cui è composto e gli algoritmi che ne regolano il funzionamento, impattando su scelte, comportamenti e decisioni, hanno un peso crescente per singoli individui, istituzioni ed aziende nel determinare le condizioni di sostenibilità sia ambientale che economica e sociale.
Per quanto riguarda la sostenibilità ambientale, il software – che pure può essere un importante strumento a supporto della sostenibilità ambientale – è esso stesso, naturalmente, fonte di emissioni di CO2 da parte degli elaboratori che lo eseguono. Emissioni che, quanto più il software è ottimizzato e sviluppato secondo specifici criteri, tanto più possono essere ridotte ed ottimizzate. È fondamentale quindi progettare programmi che siano pensati per non impattare troppo pesantemente sui consumi energetici, così da contenerne l’impatto ambientale.
Allo stesso tempo, per quanto riguarda la sostenibilità economica e sociale, essendo una parte sempre più amplia delle decisioni prese da aziende, organizzazioni ed individui a partire da o con il supporto di software, le modalità con le quali viene sviluppato tale software, ed in particolare le regole sulla base delle quali sono sviluppati gli algoritmi che lo gestiscono, sono determinanti per definire il suo impatto sociale ed economico. Ciò vale sia per chi lo sviluppa (in relazione ad esempio alle condizioni del lavoro dei team di sviluppo) che per chi lo utilizza (in relazione ad esempio agli impatti concreti delle scelte fatte a partire da algoritmi): in entrambi i casi, quindi, il software va sviluppato con grande attenzione ai principi di sostenibilità, perché sia “sostenibile by default” ed induca – con il suo funzionamento – processi anch’essi sostenibili.
Per cogliere le sfide di Agenda 2030 è quindi indispensabile che il software assuma il ruolo di motore di sviluppo sostenibile, da una parte rispettando i criteri di sostenibilità in tutte le fasi del suo ciclo di sviluppo e di vita, dall’altra prevedendo processi di adozione da parte degli utenti che siano orientati anch’essi a supportare comportamenti sostenibili.
Quella che segue è una rilettura degli Obiettivi di Sviluppo Sostenibile di Agenda2030 sviluppata per supportare la community IT nello sviluppo di software coerenti con detti obiettivi.
SDG 1 – Sconfiggere la povertà
“Combattere il digital divide culturale attraverso una adeguata progettazione del software e relativa formazione al suo utilizzo”
È necessario ripensare i tradizionali modelli di sviluppo del software. Un modello basato esclusivamente su logiche di costo genera inevitabilmente delle esternalità negative e dei comportamenti non virtuosi e sostenibili come le pratiche di sfruttamento intensivo del lavoro.
Va ripensato il modello, considerando logiche che includano anche il valore generato dal software rispetto alle ricadute sulle comunità locali in termini di arricchimento o impoverimento.
Target 1.1: Eliminare lo sfruttamento intensivo nello sviluppo del software
Per assicurare salute e benessere globale è importante che nella fase di sviluppo del software siano evitate se non proibite pratiche di sfruttamento intensivo del lavoro secondo un modello di sviluppo economico non sostenibile che ragioni esclusivamente secondo la logica del profitto.
Target 1.2: Sviluppare il software in modo sostenibile in termini di accessibilità tecnologica ed infrastrutturale
Occorre abbattere le barriere tecnologie e culturali nell’accesso alle tecnologie (digital divide), così che il software possa fare da volano anche allo sviluppo infrastrutturale, economico e sociale nelle comunità e nei paesi coinvolti.
SDG 3 – Salute e Benessere
“Tutelare la salute sia degli sviluppatori che degli utilizzatori del software”
È necessario tener conto degli impatti sulla salute e sul benessere in tutte le fasi del ciclo di vita del software. Sia rispetto alle condizioni di chi contribuisce alla sua realizzazione che degli utenti che ne fanno uso.
Target 3.1 Implementare funzionalità di salvaguardia della salute
È importante che il software sia progettato e sviluppato includendo funzionalità a tutela del benessere digitale (tempo di connessione, salvaguardia della vista, attenzione per la piena accessibilità per le persone con disabilità).
Target 3.2 Salute degli operatori
La sostenibilità di un software non riguarda esclusivamente il suo diretto ciclo di vita, ma anche il ciclo di vita delle unità produttive e logistiche che concorrono alla sua realizzazione ed impiego. Occorre promuovere il rispetto delle normative in tema di sicurezza sul lavoro e di welfare aziendale con l’obiettivo di garantire una tutela effettiva di tutti i lavoratori e lavoratrici.
Target 3.3: Prevedere un controllo di qualità dei contenuti per difendere le categorie sensibili
Per software rivolto a fasce di popolazione non adulta o in categorie sensibili occorre prevedere funzionalità che garantiscano funzioni e modalità di controllo del loro utilizzo.
SDG 4 – Istruzione di qualità
“Combattere il digital divide culturale attraverso una adeguata progettazione del software e relativa formazione al suo utilizzo”
Occorre garantire che nello sviluppo di soluzioni software di qualsiasi tipo si presti particolare attenzione al fatto che siano implementate funzioni orientate a supportare processi di apprendimento atti a minimizzare il rischio di esclusione digitale e facilitare l’inclusione di ogni utente.
Target 4.1: Avvicinare allo sviluppo software le persone con disabilità
Supportare programmi di formazione e progetti che abbiano come obiettivo lo sviluppo di software in cui sia prevista la collaborazione e l’inclusione di persone disabili e categorie protette.
SDG 5 – Parità di genere
“Adottare l’inclusività come parametro di progettazione del software”
Un software porta in dote la capacità di trasmettere agli utenti che ne fanno utilizzo, direttamente o indirettamente, importanti messaggi in termini di uguaglianza e non discriminazione. È necessario garantire nella fase di design di un nuovo software l’attenzione verso soluzioni (GUI, contenuti ed algoritmi) che rispettino il principio di uguaglianza e di parità di genere.
Target 5.1: Assicurare parità di genere nei team di sviluppo
A partire dalla definizione dei team di sviluppo che lavorano alla creazione del software è importante garantire la equality a tutti i livelli.
Target 5.2: Garantire l’assenza di bias di genere nei modelli di intelligenza artificiale
È importante porre attenzione al tema dello sviluppo di sistemi di AI e software automatici e semi-automatici che garantiscano tanto negli algoritmi quanto nelle modalità di addestramento degli stessi la gender neutrality ed evitino fenomeni di bias legati al gender e/o ad altri fattori potenzialmente discriminanti.
Target 5.3: Evitare interfacce, immagini e testi discriminanti
L’attenzione all’uguaglianza deve riguardare anche la creazione di interfacce, manuali di istruzioni, documentazione, tutorial, video e in generale di tutta la documentazione d’uso rivolta all’end user, nella quale deve essere garantita gender equality e piena rappresentatività di tutte le diversità esistenti.
SDG 7 – Energia pulita ed accessibile
“Progettare sistemi e soluzioni efficienti e a basso impatto energetico, ottimizzate, condivise e riusabili”
La disponibilità di risorse computazionali (CPU, RAM, HD,…..) a costi via via più accessibili ha sviluppato una tendenza crescente alla costruzione di sistemi e soluzioni software senza preoccuparsi dell’efficienza e del conseguente impatto energetico. Occorre prestare grande attenzione agli impatti energetici del software prodotto al fine di ottimizzare i consumi e ridurre le emissioni di CO2 da essi indotte.
Target 7.1: Criteri di progettazione
Si raccomanda l’adozione di criteri di progettazione e tecniche che favoriscano lo sviluppo di codice che ottimizzi le risorse a disposizione e si basino su criteri atti a favorire la riusabilità delle sue singole componenti in una logica di microservizi.
Target 7.2: Valutazione impatto energetico
Si propone l’adozione, tra i criteri di validazione del software, di parametri che aiutino a valutarne l’impatto dal punto di vista energetico, ponendo attenzione anche alla fase di test, spesso fonte di ricicli evitabili.
Target 7.3: Classe energetica dei sistemi Software
Si propone l’introduzione di una categorizzazione dei software sulla base di una classe energetica, con l’obiettivo di certificarne l’impatto ambientale.
Target 7.4: Raccomandazioni all’utente per un uso sostenibile
Si propone l’introduzione di regole / best-practice che guidino l’approntamento di raccomandazioni necessarie ad un utilizzo migliore, dal punto di vista energetico, del software sviluppato.
Target 7.5: Continuous improvement energetico del parco SW
Si propone la definizione ed esecuzione di opportuni piani di verifica periodica (audit) tesi a favorire attività di revisione, reingegnerizzazione e decommissioning del parco SW.
SDG 8 – Lavoro dignitoso e crescita economica
“Sviluppare software assicurando un’occupazione piena, produttiva ed un lavoro dignitoso”
È fondamentale orientare la progettazione, lo sviluppo ed il collaudo del software verso un’adeguata valorizzazione del compenso della prestazione lavorativa e verso la distribuzione di un equilibrato carico di lavoro, promuovendo ambienti di lavoro confortevoli che favoriscano la creatività.
Target 8.1: retribuzione adeguata
Si propone di attivare un osservatorio permanente che analizzi le tariffe applicate alle prestazioni di sviluppo software in relazione a target di riferimento e benchmark e monitorare nel tempo le retribuzione e le politiche di adeguamento.
Target 8.2: carico di lavoro equilibrato
Si evidenzia la necessità di un monitoraggio dell’overworking attraverso l’utilizzo di strumenti informatici, al fine di garantire il diritto alla disconnessione ed incentivando l’adozione di un lavoro per obiettivi. Si propone l’adozione di pratiche e metodologie di verifica delle condizioni lavorative in relazione all’intera filiera dello sviluppo software.
Target 8.3: inclusività nella creazione dei team
Si evidenzia come l’inclusione di tutti (senza discriminazioni di genere, di età o di condizioni) rappresenti, oltre che un elemento di equità, anche un modo per sviluppare software che sia inclusivo by design: si propone quindi la realizzazione di team di sviluppo inclusivi.
Target 8.4: formazione continua
Si raccomanda di prevedere strumenti, momenti e pratiche di formazione continua per il personale di sviluppo: condizione irrinunciabile per sviluppare software di qualità garantendo nel contempo la crescita professionale delle risorse coinvolte nei team di sviluppo.
SDG 9 – Imprese, innovazione ed infrastrutture
“Innovare le metodologie di sviluppo software riducendo gli sprechi, favorendo le potenzialità umane e realizzando infrastrutture digitali robuste e resilienti”
In considerazione della sempre maggiore pervasività del software nella vita di ognuno, è indispensabile realizzare infrastrutture digitali robuste, sicure e resilienti.
Target 9.1: microservizi
È fondamentale orientare la progettazione, lo sviluppo ed il collaudo considerando metodologie avanzate, ad esempio basate su microservizi, con il fine di efficientare sia il processo di sviluppo che la fase di esercizio e manutenzione e favorire il riutilizzo di singole componenti.
Target 9.2: valutazione di impatto sulle infrastrutture
Si sottolinea la necessità di attivare una certificazione di qualità del software dal punto di vista dell’impatto prodotto sulle infrastrutture ospitanti.
Target 9.3: realizzazione di infrastrutture digitali robuste e resilienti
Si evidenzia l’importanza di progettare e implementare infrastrutture digitali che garantiscano un utilizzo del software efficiente a livello worldwide, con particolare attenzione alle condizioni locali.
SDG 10 – Ridurre le diseguaglianze
“Implementare software con attenzione alle condizioni di utilizzo favorendo la crescita sociale ed economica”
Nel ciclo di generazione di valore di un software raramente vengono considerati ed inclusi gli impatti sulla collettività, intesa come insieme di comunità che si trovano a condividere nello spazio e nel tempo le fasi del ciclo di vita del software: è necessario valutare le retroazioni sul contesto economico e sociale della delocalizzazione di pratiche di sviluppo software.
Target 10.1: Sviluppare software in grado di essere eseguito anche su dispositivi low cost
Avere l’obiettivo di sviluppare software ‘inclusivo’ rispetto alle risorse tecnologiche disponibili, vuol dire mettere in campo tutte le azioni necessarie (anche durante le fasi di progettazione e di realizzazione del software) a ridurre il gap di accesso ai servizi offerti da parte dei paesi più arretrati e svantaggiati.
Target 10.2: Sviluppo software come leva di crescita sociale ed economica
Occorre porre attenzione alle possibilità di crescita sociale a livello locale indotte dalle pratiche di delocalizzazione dello sviluppo software utilizzandole come leva per il miglioramento della qualità della vita nelle popolazioni locali.
SDG 11 – Città e comunità sostenibili
“Progettare software che generino un impatto positivo sulla collettività”
Il benessere dei singoli cittadini passa anche attraverso la disponibilità di servizi adeguati ed efficienti all’interno della comunità locale. Informazioni, dati e servizi veicolati dal software possono contribuire in maniera determinante al livello di vita delle singole comunità. Nello sviluppo del software occorre sempre tenere presente l’impatto indotto sulla comunità.
Target 11.1: Impatti sulla comunità
Nella fase di sviluppo e di adozione del software occorre porre attenzione alle condizioni infrastrutturali nelle quali verrà utilizzato al fine di ottimizzare l’esperienza e l’inclusione del cittadino nell’utilizzo dei servizi disponibili per la sua comunità.
Target 11.2: Retroazione del valore sulla comunità
Nello sviluppo di modelli economici e di servizio collegati alle applicazioni software si raccomanda di considerare sempre le retroazioni effettive in termini di valore prodotto per la comunità di riferimento e per il gestore della piattaforma, evitando modelli basati esclusivamente su principi finalizzati alla creazione di valore per il gestore del sistema e non per la comunità nella quale tale sistema viene implementato.
Target 11.3: valorizzazione proattiva degli asset secondari
Nello sviluppo di software che possono avere impatti sulla comunità si raccomanda di mettere a disposizione della comunità stessa i dati, le informazioni ed il valore indotto da questi a beneficio della collettività in un’ottica proattiva di apertura e condivisione.
SDG 12 – Consumo e produzione responsabili
“Sviluppare software in accordo ai principi dell’economia circolare”
Il software è da intendersi come un prodotto/servizio, in quanto tale va progettato, per favorire il suo riuso sia durante la sua vita utile (extension life) sia in fase di dismissione (new life).
Target 12.1: strategia delle 5R
Il software va considerato come una risorsa, perciò va gestito applicando la strategia delle 5R (Riduzione, Riuso, Riciclo, Raccolta, Recupero).
Target 12.2: Riduzione delle componenti software relative a funzionalità poco utilizzate
Si auspica la promozione ed implementazione di modalità e di certificazioni dell’impatto energetico del software, nonché l’adozione di policy atte a rimuovere le componenti software non più utilizzate (“Cleaning”).
Target 12.3: Riuso del software già sviluppato
Si ipotizza l’introduzione di una certificazione di “reusable software” e di “recyclable module” implementando una modalità di misurazione del riuso del software, ipotizzando fin dalla fase di design, la progettazione di moduli/componenti riusabili.
SDG 13 – Lotta contro il cambiamento climatico
“Sviluppare software che tenga conto dei livelli di emissione carbonica indotta dal suo utilizzo”
L’assenza di regolamentazione sulla realizzazione/produzione dei sistemi software ha permesso la diffusione di soluzioni che non tengono in considerazione l’impatto di queste sulle risorse energetiche: si auspica quindi particolare attenzione all’impatto energetico prodotto dal software in quanto alla base della produzione delle emissioni di CO2.
Target 13.1: Introduzione Classe energetica dei sistemi Software
Si propone l’introduzione di una classe energetica con l’obiettivo di certificare dal punto di vista energetico l’impatto che il singolo sistema ha sull’ambiente.
Target 13.2: Policy a supporto del Continuous improvement energetico
Si propone di favorire l’introduzione di incentivi per l’implementazione di azioni di efficientamento e miglioramento energetico dei propri sistemi (es. rottamazione di sistemi poco sostenibili).