E’ possibile rileggere l’Agenda 2030 in una nuova chiave? Proporre goal e target ispirati agli SDGs per fare della progettazione dei sistemi software un attivatore di processi di sviluppo sostenibile? Sì, è possibile. Lo ha dimostrato la Fondazione per la Sostenibilità Digitale che in questi giorni ha pubblicato il paper “Sustainable Coding”, proprio allo scopo di supportare la community IT nella realizzazione di un software che sia rispettoso dell’ambiente e garantisca, allo stesso tempo, sostenibilità economica e sociale, in linea con gli Obiettivi di Sviluppo Sostenibile. L’attività è stata sviluppata grazie ad un gruppo interdisciplinare composto da diversi partner della Fondazione: da ENEL a Cisco Italia, da ACI Informatica a EHT e Gruppo Fincons.
“Agenda2030 mette al centro lo sviluppo sostenibile in ogni aspetto della società, dunque, pubblicare un manifesto sul “Sustainable Coding” significa prima di tutto focalizzare una delle tante dimensioni dello sviluppo. Oggi la creazione di valore passa dall’intersezione delle tecnologie digitali con la sostenibilità e il manifesto vuole essere un “avviso ai naviganti” per aiutarli ad orientarsi nei mari dello sviluppo software sostenibile e fare luce sulle zone grigie della tecnologia”, commenta Carlo Bozzoli, Global CIO di Enel e promotore dell’iniziativa.
“Il software è un elemento sempre più centrale per qualunque organizzazione, pubblica o privata e per la società in generale.” – puntualizza Stefano Epifani, Presidente della Fondazione per la Sostenibilità Digitale. “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. È importante quindi progettare programmi che da una parte siano progettati rispettando i criteri di sostenibilità, ma dall’altra siano anche motori di sostenibilità ambientale, economica e sociale”.
Indice degli argomenti
Software come motore di sviluppo sostenibile
Ma quali sono le linee guida suggerite dal paper? 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. Il paper considera quindi fondamentale 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.
Nel documento si parla quindi, ad esempio, del Goal 3: “Salute e Benessere”, che raccomanda di tutelare la salute degli sviluppatori e degli utilizzatori del software sia garantendo che la fase di sviluppo venga effettuata con attenzione alle condizioni dei lavoratori sia assicurandosi che i software prodotti siano pensati per tutelare la salute di chi il software lo utilizzerà. Ma si parla anche del Goal 5: “Parità di genere”, evidenziando come vada assicurata la parità di genere nei team di sviluppo per garantire prodotti di qualità, così come vada fatta grande attenzione nell’evitare bias di genere nei modelli di intelligenza artificiale o interfacce, immagini e testi discriminatori. Naturalmente si parla anche di impatto ambientale con il Goal 7 “Energia pulita ed accessibile” che raccomanda di progettare sistemi e soluzioni efficienti ed a basso impatto energetico, ottimizzate, condivise e riusabili.
Insomma, evidenzia Enrico Mercadante di Cisco Italia, “rileggere lo sviluppo software alla luce degli SDG di Agenda 2030 rappresenta un ottimo modo per ripensare il ciclo di vita del software così che non solo sia sostenibile, ma diventi motore di sostenibilità”.
Rileggere gli SDGs
Ma ecco il dettaglio delle indicazioni suggerite:
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 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).
Sostenibilità a livello sistemico
“La sostenibilità deve essere vista e implementata a livello sistemico tenendo conto dei fattori ambientali, sociali ed economici” – aggiunge Luciano Guglielmi, Coordinatore del Comitato di Indirizzo della Fondazione per la Sostenibilità Digitale. “Una corretta ideazione, un adeguato sviluppo ed una intelligente manutenzione del software comportano controllati impatti sull’utilizzo di energia necessaria a farlo funzionare – e quindi una attenzione all’impronta carbonica indotta nell’ambiente, sull’efficiente ed efficace usabilità da parte dell’utilizzatore finale – e quindi una attenzione alla corretta fruibilità da parte di tutti gli utilizzatori per gli impatti sociali e lavorativi indotti, sulla realizzazione di filiere produttive e manutentive eticamente responsabili, sia a livello geografico che di genere – e quindi una attenzione alla diversity in generale. Per questo motivo il Comitato di Indirizzo della Fondazione ha fortemente voluto analizzare l’aspetto rilevante della sostenibilità della filiera del software”.
Il manifesto per il sustainable coding è il primo passo per lo sviluppo del Digital Sustainability Framework, un framework al quale sta lavorando la Fondazione per la Sostenibilità Digitale nell’ambito di una attività che vede coinvolte ENEL come main partner ed attori come Cisco Italia, DNV e BluDigit – Italgas e che ha l’obiettivo di definire metriche e standard di valutazione dell’impatto della trasformazione digitale per la sostenibilità.