La Ingeniería de Software Sostenible es una disciplina emergente que sirve como el encuentro entre Ciencia Climática, Software, Hardware, Ingeniería Eléctrica y Diseño de Data Centers (edificios dedicados a almacenamiento, distribución y procesamiento de data).

Imagina la posibilidad de crear aplicaciones poderosas que, no solo contribuyan a mejorar la calidad de vida de las personas, sino que también ayuden a disminuir su huella de carbono en el planeta y que potencien el crecimiento de tu negocio con el uso inteligente de recursos.

A continuación descubre los pilares de esta disciplina y cómo pueden ser aplicados al desarrollo de software hecho a medida, manteniendo siempre en mente la experiencia de tus usuarios (UX design).

8 principios de la Ingeniería de Software Sostenible o Green Software

1) Carbono: energía eficiente para un futuro verde:

La clave aquí es tratar de construir aplicaciones que sean eficientes en el uso de energía y que requieran de menores recursos tecnológicos. Si bien las aplicaciones digitales pueden parecer intangibles, consumen electricidad, y gran parte de esa electricidad proviene de combustibles fósiles. Con esto no solo reducimos las emisiones de carbono, sino que también contribuimos a disminuir los costos del proyecto y a un mejor aprovechamiento de nuestro capital.

Computadora dentro de un cuarto, con contaminación afuera.
Computadora dentro de un cuarto, con contaminación afuera.

Existe algo llamado “Efecto Invernadero”, que evita que el calor deje la atmósfera rápidamente, y aunque esto es algo natural que sucede en nuestro planeta, debido a la cantidad masiva de emisiones de carbono al ambiente de forma artificial, este fenómeno se ha agudizado, causando el incremento de la temperatura a cifras nunca antes vistas. Por este motivo es muy importante que intentemos disminuir todos los consumos que liberen grandes cantidades de carbono al ambiente.

2) Electricidad: energía responsable para un futuro brillante:

La electricidad es el corazón de nuestras aplicaciones; no podrían existir sin ella. Como mencionamos anteriormente, la mayor parte de la electricidad actual proviene de fuentes no renovables y contaminantes. Al diseñar aplicaciones necesitamos pensar en reducir la cantidad de energía que estas requieren consumir.

Podemos crear software que consuma menos batería de nuestros dispositivos y que usen procesamiento eficiente. Esto no solo es bueno para el medio ambiente debido a un menor consumo de energía, sino que también es más beneficioso para la experiencia de nuestros usuarios, ya que al tener un programa más eficiente, este también será más rápido.

Consumo energético
Consumo energético

3) Intensidad de carbono: calidad y conciencia energética:

No todas las fuentes de electricidad son iguales en términos de liberación de carbono. Por eso, existe una medida llamada “intensidad de carbono”, que nos permita saber cuántas emisiones de carbono se generan por cada kilovatio-hora de electricidad consumida.

La forma en la que consumimos electricidad afecta nuestra intensidad de carbono. Imagina que tu computadora estuviese directamente conectada a una planta hidroeléctrica; la electricidad consumida tendría una intensidad de carbono “cero”, ya que una planta hidroeléctrica no emite carbono. Sin embargo, la mayoría de las personas no se conectan directamente a plantas hidroeléctricas, sino a redes eléctricas que utilizan una mezcla de fuentes de energía con diferentes niveles de emisión de carbono.

La intensidad de carbono cambia según la ubicación, ya que algunas regiones tienen energía más limpia que otras. También varía a lo largo del tiempo debido a la naturaleza de las fuentes de energía renovable. Por ejemplo, cuando está nublado o el viento no sopla, la intensidad de carbono aumenta debido a que más electricidad proviene de fuentes que emiten carbono. También puede influir estar en verano o invierno.

Eficiencia Energética tomando en cuenta el horario
Eficiencia Energética tomando en cuenta el horario

¿Cómo afecta la demanda de electricidad?

Esta puede variar durante el día, y la oferta debe cumplir con esa demanda. Algunas fuentes pueden controlar fácilmente la energía que producen, mientras que otras no. Por ejemplo, una planta de energía a carbón (termoelectrica) puede reducir su consumo de carbón, pero una granja eólica no puede controlar cuándo o cuánto viento sopla, pudiéndose reducir la electricidad generada.

Al comprender cómo y cuándo se produce la electricidad en tu región, o dónde está localizada la nube que esté usando el programa para almacenar los datos, puedes ajustar las operaciones de tu aplicación para aprovechar momentos de menor intensidad de carbono. Una vez más, aquí es donde la ingeniería de software sostenible toma la delantera, combinando tecnología con conciencia ambiental.

4) Carbono embebido: extiende la vida útil, reduce la huella:

Tus dispositivos no solo consumen electricidad durante su uso diario, sino también durante su fabricación. A esto se le conoce como “carbono embebido”. Todo dispositivo nuevo que compres, ya emitió una gran cantidad de carbono al ser producido, ya sea un teléfono celular, una PC gamer o una cámara.

Además, los dispositivos tienen una fecha de caducidad, se vuelven viejos y desfasados con el tiempo, haciendo que ya no puedan funcionar de la manera que esperas con las aplicaciones más modernas. Es justamente aquí donde entra en juego la eficiencia de hardware.

Si queremos ser eficientes como ingenieros de software sostenible, debemos esforzarnos por extender la vida útil de nuestros dispositivos y crear estrategias para reducir el impacto de carbono embebido en nuestros programas y servidores.

Al diseñar aplicaciones, considera la duración del hardware en el que se ejecutarán. La extensión de la vida útil de los dispositivos reduce el carbono embebido y minimiza el impacto ambiental.

Obsolescencia programada

5) Proporcionalidad de energía: eficiencia en cada uso:

Todos los dispositivos electrónicos que usas gastan cierta cantidad de energía eléctrica, incluso si no los estás usando (cuando están en reposo). Normalmente medimos el uso de computo de un dispositivo en porcentajes del 0 al 100. Esto nos permite saber cuántos recursos de los que disponemos están siendo utilizados.

Ejemplo:

  • Utilización del 10%: consumo de 120W
  • Utilización del 85%: consumo de 150W
  • Utilización del 100%: consumo de 170W

La proporcionalidad de energía habla de la relación entre ese uso de computo y la energía que se está consumiendo. Se puede decir que mientras mejor uses tus medios, más eficiente se vuelve esa relación. Si no utilizas dichos recursos, estarás desperdiciándolos, y por consecuencia, desperdiciando energía.

Energia Limpia

Al momento de desarrollar nuestras aplicaciones, tenemos que tomar en consideración cómo usaremos los recursos que disponemos para poder hacer un uso eficiente de ellos, minimizando así el desperdicio energético. Utilizar un 30% de los recursos constantemente, va a ser mucho menos eficiente que usar un 90% programado para una determinada hora (considerando la intensidad de carbono) y luego volver a un estado de suspensión profunda.

6) Networking: conexiones conscientes y eco-amigables:

Las transmisiones a través de internet también tienen un impacto en el medio ambiente; la cantidad de datos transmitidos puede traducirse en emisiones de carbono. Aquí es donde entra en juego el principio de “networking”. Al diseñar aplicaciones, considera la distancia y el tamaño de los datos transmitidos; reducir ambos puede marcar una gran diferencia en términos de sostenibilidad.

Además, al considerar el carbono embebido y la intensidad de carbono, podremos influir sobre cuándo y cómo transmitir estas informaciones. Si planificamos la transmisión de datos durante momentos de menor intensidad de carbono, como cuando la electricidad proviene de fuentes más limpias, reduciremos el impacto ambiental de nuestras acciones.

Mundo interconectado

7) Moldeo de la demanda: alineando la experiencia del usuario con la sostenibilidad:

El principio de moldeo de la demanda en la ingeniería de software sostenible, nos invita a encontrar un equilibrio entre la calidad de la experiencia del usuario y la eficiencia energética. Al ajustar dinámicamente la experiencia en función de la producción de energía limpia, podemos reducir el consumo de recursos y la huella de carbono de nuestras aplicaciones.

Un ejemplo práctico es adaptar la calidad de imagen en videollamadas durante momentos de alta producción de energía renovable, dando prioridad a la eficiencia y la sostenibilidad sin dejar de ofrecer una buena usabilidad y utilidad.

Otra estrategia es el uso de “eco-mode”, algo con lo que ya estamos familiarizados en algunos dispositivos móviles, máquinas de lavar y algunos autos modernos, entre otros. Los “Eco-modes”, cuando se activan, ajustan el rendimiento y el consumo de recursos para realizar la misma tarea de forma más eficiente en términos de recursos (como gasolina o electricidad). Sin embargo, esta eficiencia implica tomar decisiones como comprometer potencia o velocidad.

El uso de “eco-mode” en aplicaciones sostenibles necesita ser informado al usuario, dándole la opción de desactivar este modo en caso de que no quiera. Aunque puede haber automatización de cuándo o no activar este modo, es importante que el usuario tome decisiones de manera consciente.

8) Medición y optimización: un futuro mejor, paso a paso:

En el mundo de la ingeniería de software sostenible, la medición es clave. Aunque no podemos calcular la liberación de carbono al ambiente con total precisión, el consumo eléctrico es un indicador valioso.

Anteriormente hablamos un poco sobre el SCI (Software Carbon Intensity), método que mide las emisiones de carbono asociadas con todo tipo de aplicaciones de software.

Planificación en la Ingeniería de Software

La implementación del principio de medición y optimización se fortalece a través del cálculo de la intensidad de carbono del software. Al abordar componentes como la energía, la intensidad de carbono y el carbono embebido de un dispositivo, podemos cuantificar y comprender mejor el impacto ambiental de nuestras aplicaciones.

Este enfoque permite tomar decisiones inteligentes respaldadas por datos, para reducir de forma más efectiva las emisiones de carbono y trabajar hacia un futuro en el que la sostenibilidad sea una parte integral del desarrollo de software.

Fuentes:
The Principles of Sustainable Software Engineering (Microsoft)