Persona trabajando frente a una computadora
18/01/2023

La Ingeniería de Software Sostenible se centra en un cambio de prioridades y de enfoque

Montevideo, 18 de enero de 2023.

La sostenibilidad es una de las prioridades en las actividades humanas en general. Desde el sector tecnológico se puede aportar para construir y ejecutar aplicaciones de software sostenibles, que permitan minimizar la huella de carbono. Esto puede ser posible a través de la utilización de diferentes métodos y herramientas aplicados en el ciclo de vida del software.

La Ingeniería de Software Sostenible surge con la finalidad de establecer estándares y aplicar las mejores prácticas para crear software o aplicaciones sostenibles y lograr de esta manera, un aporte para la conservación de los recursos naturales. A través de este enfoque se puede reducir el consumo de energía y producir menos emisiones de carbono.

Esta disciplina se basa en la aplicación de ocho principios que dan una pauta para la construcción de sistemas más amigables con el medio ambiente. Sus enfoques están centrados desde crear aplicaciones más eficientes en su uso, hasta cambios en los protocolos utilizados para la transmisión de datos. 

Para conocer más de esta disciplina, en la siguiente entrevista Martín Miguez, desarrollador de Sofis Solutions comparte la importancia de generar soluciones que contribuyan a la reducción de la huella de carbono de cada aspecto de la aplicación y brinda algunos algunos consejos para incorporar buenas prácticas en el desarrollo de software.

¿Cómo surge la práctica de Ingeniería de Software Sostenible?

La sostenibilidad es un concepto que está abarcando casi todos los aspectos de nuestra vida.  Esto es a causa del uso indiscriminado que hemos hecho de los recursos, y que de cierta forma vemos sus consecuencias. Entre ellos,  la Ingeniería de Software no escapa a ser parte del problema. 

Partiendo de esto, comienzan a surgir soluciones sostenibles para optimizar los recursos desde el punto de vista de la Ingeniería de Software.

¿Qué papel juega la Ingeniería de Software en el Desarrollo Sostenible?

La Ingeniería de Software puede cumplir papeles muy importantes en este aspecto, cada vez es más visible el impacto que tienen las tecnologías en la huella de CO2. Esto se puede ver principalmente por el consumo de energía, aunque en este punto se podría hablar más de las fuentes generadoras de esa energía, que es la causa principal de dicha huella.

Algo que está claro, es que se pueden implementar tecnologías sostenibles a largo plazo con una buena conciencia ambiental, desde su creación e implementación, donde tiene un papel importante la Ingeniería de Software, hasta su mantenimiento y actualización.

¿Por qué es importante implementar prácticas de sostenibilidad en el ciclo de vida del Software?

Las prácticas de sostenibilidad ayudan en muchos sentidos, el principal es la disminución en la huella de CO2, y esto lo hacemos con ayuda de herramientas tecnológicas, procesos y prácticas. Pero también ayuda a generar conciencia ambiental a quienes lo implementan y comprenden.

Otro factor que impacta directamente es la calidad del Software, ya que estás prácticas principalmente intentan minimizar el consumo de energía, y esto se traduce en optimizar el uso de procesadores, el manejo de datos, interacciones cliente-servidor, etc. Lo anterior se deriva en sistemas más óptimos, con mayor velocidad y más escalables.

¿Cuáles son los beneficios que tiene desarrollar un producto y/o servicio desde una perspectiva sostenible?

Los beneficios son muchos, si hablamos desde un punto de vista de la sostenibilidad el beneficio directo es la reducción de la huella de CO2. 

Pero existen otros beneficios indirectos que no son menores, desde lo mencionado en la pregunta anterior con respecto a la calidad del producto, hasta beneficios empresariales. Esto significa la aceptación que tienen los productos y servicios de este tipo, por la creciente conciencia ambiental de la población en general, lo que puede traducirse en perder clientes o usuarios por no cumplir con determinadas normas de calidad ambiental. 

¿Cómo la sostenibilidad puede incorporarse en la práctica diaria del desarrollo de software?

Lo primero es crear un plan a nivel empresa, y a partir de ahí ir generando prácticas y procesos dentro de las posibilidades para ir creando una cultura de desarrollo de software sostenible. Las prácticas y procesos se pueden traducir a políticas, herramientas, metodologías, estándares, entre otros. 

Y menciono “dentro de las posibilidades”, porque la realidad  marca que muchas de estas prácticas requieren de una inversión de tiempo y dinero. Otro caso es que depende de clientes que pueden no estar de acuerdo en determinados cambios o formas de trabajar porque tienen metodologías y procesos establecidos. Pero cabe destacar que existen muchas maneras de poder incorporar estas buenas prácticas.

¿Qué tipo de buenas prácticas de software se pueden realizar orientadas al Desarrollo Sostenible?

Hoy en día se puede observar en algunas empresas el uso indiscriminado de servidores o PC (varios ambientes de desarrollo, test, pruebas, bases de datos de prueba, aplicaciones X, mocks, etc.) los cuales por lo general están conectados y encendidos 24/7. Esto puede tener diferentes soluciones desde máquinas virtuales, contenedores, o el uso de la nube. Cada una de ellas, explota sus capacidades de optimización. 

Otra práctica que se puede aplicar en el desarrollo es optimizar nuestros entornos de trabajo, dependiendo de cuál sea existen configuraciones que podemos mejorar para minimizar el uso de procedimientos (proyectos abiertos que no utilizamos, plugins agregados que comienzan a generar procesamiento, peticiones y actualizaciones constantes, build automáticos constantes, entre otras cosas). Y otro punto importante dentro del desarrollo es el manejo del lenguaje que tiene cada uno, muchas veces acostumbramos a utilizar métodos o funciones que sabemos que funcionan correctamente, pero desconocemos que existen otros que hacen lo mismo de una forma más eficiente.

Si bien existen herramientas que nos ayudan con esto como puede ser SonarQube entre otras, aquí es importante la capacitación, investigación o retroalimentación de los propios desarrolladores además de generar algunas prácticas o reglas generales que vayan en ese sentido.