ISO 25010 / GREEN IT

Green IT en el desarrollo de software

A pesar del auge y la evolución de las tecnologías de la información (TIC) hay numerosos estudios que dicen que el uso de esta tecnología no es tan limpio como debería. Las TIC suponen el 2% de las emisiones de gases con efecto invernadero y de CO2 que sé despiden a la atmósfera de forma diaria.

Por ello es importante que los modelos de calidad de software impulsen categóricamente distintos atributos y características que garanticen la sostenibilidad sin sacrificar la calidad del producto software para ello es necesario que tanto los desarrolladores como los ingenieros de software prioricen la aplicabilidad de estas características.

La calidad del software, su eficiencia y su relación con Green IT

Es cierto que la calidad del software depende de que tan acertado sea el producto final con los requisitos del cliente, sin embargo, la eficiencia es una medida que garantiza la calidad en gran medida debido a que esta se encarga de llevar a cabo las funcionalidades del software de una forma óptima o amena tanto para el usuario final como para el equipo de cómputo. En el modelo ISO/IEC 25010 se plantea la adecuación funcional y la eficiencia de desempeño cuyas características aplicadas al desarrollo e implementación del software sirven como eje articulador entre las tecnologías de información y la sostenibilidad, ello es posible principalmente gracias a la óptima utilización de recursos por parte del software lo cual se consigue en todas las etapas del ciclo de vida del mismo.

ISO 25010 Y RECURSOS

De acuerdo al estudio de la norma ISO/IEC 25010 se considera que una de las formas más óptimas para garantizar la sostenibilidad estipulada por la ISO es la optimización en la utilización de recursos (Requisitos no funcionales).

Código verde

Básicamente es la optimización del código fuente del producto software con el objetivo de ahorrar significativamente la compilación, interpretación y procesamiento del mismo permitiendo además cumplir con los requisitos no funcionales de eficiencia y ligereza en el producto final.

Cloud computing

Consiste en utilizar servicios de computación en la nube para alojar los servicios proporcionados o solicitados por el producto software, esto con el fin de gestionar recursos energéticos como medida principal de impacto ambiental y económico

Virtualización

La virtualización crea un entorno informático simulado, o virtual, en lugar de un entorno físico. A menudo, incluye versiones de hardware, sistemas operativos, dispositivos de almacenamiento, etc., generadas por un equipo.

ISO 25010 & GREEN IT

Representa la capacidad del producto software para proporcionar funciones que satisfacen las necesidades explícitas e implícitas, cuando el producto se usa en las condiciones especificadas. Esta característica se divide en las siguientes subcaracterísticas:

  • Completitud funcional. Grado en el cual el conjunto de funcionalidades cubre todas las tareas y los objetivos del usuario especificados.
  • Corrección funcional. Capacidad del producto o sistema para proveer resultados correctos con el nivel de precisión requerido.
  • Pertinencia funcional. Capacidad del producto software para proporcionar un conjunto apropiado de funciones para tareas y objetivos de usuario especificados.

Green IT & Adecuación Funcional

En relación con la capacidad de brindar las anteriores garantías al software mientras el desarrollo esté bajo el concepto del Green IT, se propone utilizar herramientas y técnicas que se enfoquen en el rendimiento de todos los ámbitos del software, del tal manera que no solo se busca que el software sea amigable con el medio ambiente, sino que también se busca que las herramientas utilizadas en el desarrollo sean igualmente amigables con este, como por ejemplo: el desarrollo en lenguajes de programación como NIM, que son altamente valorados, ya que su enorme eficiencia en el procesamiento, su rápida gestión en la memoria, sus características modernas con las cuales puede competir con lenguajes en tendencia y  su capacidad de ejecución sin necesidad de una máquina virtual en los distintos sistemas operativos, tiene como consecuencia que su alto rendimiento ocupe en menos tiempo la máquina y finalmente se obtenga un menor consumo energético tanto en el desarrollo como en el software final.

Asimismo se proponen también el uso de las máquinas virtuales y la Cloud Compute que proporciona una infraestructura con menos equipos de hardware necesarios y a su vez un menor consumo energético, sin arriesgar la finalidad y las garantías del software desarrollado.

A esto también podemos añadir el uso de hardware con un consumo energético eficiente certificado, y dar una combinación de hardware y software que no solo logre reducir su consumo energético sin dejar de lado la calidad, sino que además logre reducir las emisiones de gas de efecto invernadero causadas por el alto consumo en las centrales eléctricas.

Esta característica representa el desempeño relativo a la cantidad de recursos utilizados bajo determinadas condiciones. Esta característica se subdivide a su vez en las siguientes subcaracterísticas:

  • Comportamiento temporal. Los tiempos de respuesta y procesamiento y los ratios de throughput de un sistema cuando lleva a cabo sus funciones bajo condiciones determinadas en relación con un banco de pruebas (benchmark) establecido.
  • Utilización de recursos. Las cantidades y tipos de recursos utilizados cuando el software lleva a cabo su función bajo condiciones determinadas.
  • Capacidad. Grado en que los límites máximos de un parámetro de un producto o sistema software cumplen con los requisitos.

Green IT & Rendimiento

En relación con el Green IT se debe procurar utilizar pocos recursos y controlarlos. Se deben adoptar tecnologías limpias. Implementar como por ejemplo la virtualización tanto de servidores como de escritorios, código verde, almacenamiento en la nube y la optimización de los centros de datos. No se trata de limitar los recursos o la tecnología en la empresa, sino de usarla de un modo que proteja los recursos naturales.

Capacidad de dos o más sistemas o componentes para intercambiar información y/o llevar a cabo sus funciones requeridas cuando comparten el mismo entorno hardware o software. Esta característica se subdivide a su vez en las siguientes subcaracterísticas:

  • Coexistencia. Capacidad del producto para coexistir con otro software independiente, en un entorno común, compartiendo recursos comunes sin detrimento.
  • Interoperabilidad. Capacidad de dos o más sistemas o componentes para intercambiar información y utilizar la información intercambiada.

En este caso un sistema distribuido podría ser la herramienta correcta, para el apoyo de Green IT, ya que con ello solo se utilizará lo necesario para una organización y todo estaría funcionando con buena compatibilidad y bajo acoplamiento.

Computing Edge

Las nuevas tecnologías como Edge y la niebla de computación son una solución para reducir el consumo de energía. Estas tecnologías permiten la redistribución de cómputo cerca del uso, reduciendo así los costos de energía en la red. Además, que tienen centros de datos más pequeños, la energía utilizada en operaciones tales como la refrigeración y el mantenimiento se reduce en gran medida.

Datos relevantes

  • Según Research Nester, «El mercado mundial de la Internet de las cosas(IoT) alcanzó los 598.200 millones de dólares en 2015 y se espera que el mercado alcance los 724.200 millones de dólares en 2023″.
  • Según Cisco, es probable que el tráfico en la nube se multiplique por 3,7 para 2020, aumentando 3,9 zettabytes (ZB) por año en 2015 (el último año completo para el que se dispone de datos) a 14,1 ZB por año para 2020.
  • Según Cisco, el volumen total de datos generado por la IoT alcanzará los 600 ZB al año en 2020.

Uno de los grandes problemas en los sistemas distribuidos es la latencia. Esto se mejora con la implementación de tecnologías como redes 5G.

Capacidad del producto software para ser entendido, aprendido, usado y resultar atractivo para el usuario, cuando se usa bajo determinadas condiciones. Esta característica se subdivide a su vez en las siguientes subcaracterísticas:

  • Capacidad para reconocer su adecuación. Capacidad del producto que permite al usuario entender si el software es adecuado para sus necesidades.
  • Capacidad de aprendizaje. Capacidad del producto que permite al usuario aprender su aplicación.
  • Capacidad para ser usado. Capacidad del producto que permite al usuario operarlo y controlarlo con facilidad.
  • Protección contra errores de usuario. Capacidad del sistema para proteger a los usuarios de hacer errores.
  • Estética de la interfaz de usuario. Capacidad de la interfaz de usuario de agradar y satisfacer la interacción con el usuario.
  • Accesibilidad. Capacidad del producto que permite que sea utilizado por usuarios con determinadas características y discapacidades.

Green IT & Usabilidad

En la medida que un producto se dice que aplica usabilidad, su interfaz y la forma como se utiliza debe ser intuitivo y de manera sencilla con el objetivo de que el tiempo de uso sea menor y que cada actividad desarrollada sea más fácil y práctica para que el usuario deba consumir la menor cantidad de recursos computacionales aplicando las siguientes subcaracteristicas.

  • Capacidad para reconocer su adecuación. El producto debe permitir al usuario entender si el software es adecuado para sus necesidades.
  • Capacidad de aprendizaje. Es muy importante que la aplicación permita aprender a usarse de la forma más sencilla posible reduciendo el tiempo de aprendizaje y el consumo de recursos para ello.
  • Capacidad para ser usado. Cuando se permite al usuario operarlo y controlarlo con facilidad, este gastara menos esfuerzo y recursos en sus funciones normales.
  • Protección contra errores de usuario. Evitando las posibles situaciones en que el usuario pueda cometer un error, se evita consumir más recursos solventando estos problemas.
  • Estética de la interfaz de usuario. El producto debe ser gustoso visualmente, pero debe ser claro permitir al usuario encontrar fácilmente lo que busca reduciendo el tiempo de uso de la aplicación.
  • Accesibilidad. El producto debe permitir ser utilizado por usuarios con determinadas características y discapacidades.
Capacidad de un sistema o componente para desempeñar  las funciones especificadas, cuando se usa bajo unas condiciones y periodo de tiempo determinado. Esta característica se subdivide a su vez en las siguientes subcaracterísticas:
  • Madurez. Capacidad del sistema para satisfacer las necesidades de fiabilidad en condiciones normales.
  • Disponibilidad. Capacidad del sistema o componente de estar operativo y accesible para su uso cuando se requiere.
  • Tolerancia a fallos. Capacidad del sistema o componente para operar según lo previsto en presencia de fallos hardware o software.
  • Capacidad de recuperación. Capacidad del producto software para recuperar los datos directamente afectados y restablecer el estado deseado del sistema en caso de interrupción o fallo.

Green IT & Fiabilidad

En el Green IT es importante que la fiabilidad tenga como principal objetivo que el software se encuentre habilitado y disponible en ciertas condiciones, pero que en el momento que no se esté usando consuma la menor cantidad de recursos computacionales y energía posible.

La disponibilidad se pueden usar AWS Lambda es un servicio informático que permite ejecutar código sin aprovisionar ni administrar servidores. Esto quiero decir que solo se hace uso del servidor cuando se hace una petición si no se están haciendo peticiones se entra en un modo de hibernación el cual no genera tantos gastos energéticos.

Tolerancia a fallos son capacidades que ofrecen los sistemas distribuidos y los microservicios los cuales son buenas estrategias para el Green IT.

En esta medida es importante elegir bien las tecnologías a usar un ejemplo de ello puede ser el uso de los protocolos, como TCP y UDP. Donde TCP tiene soporte a fallos y UDP no, puesto que UDP lo usan para transmisión de flujos como video o audio en streaming.

Capacidad de protección de la información y los datos de manera que personas o sistemas no autorizados no puedan leerlos o modificarlos. Esta característica se subdivide a su vez en las siguientes subcaracterísticas:

  • Confidencialidad. Capacidad de protección contra el acceso de datos e información no autorizados, ya sea accidental o deliberadamente.
  • Integridad. Capacidad del sistema o componente para prevenir accesos o modificaciones no autorizados a datos o programas de ordenador.
  • No repudio. Capacidad de demostrar las acciones o eventos que han tenido lugar, de manera que dichas acciones o eventos no puedan ser repudiados posteriormente.
  • Responsabilidad. Capacidad de rastrear de forma inequívoca las acciones de una entidad.
  • Autenticidad. Capacidad de demostrar la identidad de un sujeto o un recurso.

Green IT & Seguridad

Usar algoritmos que sean óptimos y saber que información cifrar y que no para que el servidor solo se use cuando sea necesario. Por ejemplo los atributos que van en el body de una petición HTTPS van cifrados, si se envían como parámetros en la URL, no lo estarían en el caso de un actualizar o eliminar los IDS, no se cifran entonces no irían en el body.

Esta característica representa la capacidad del producto software para ser modificado efectiva y eficientemente, debido a necesidades evolutivas, correctivas o perfectivas. Esta característica se subdivide a su vez en las siguientes subcaracterísticas:
  • Modularidad. Capacidad de un sistema o programa de ordenador (compuesto de componentes discretos) que permite que un cambio en un componente tenga un impacto mínimo en los demás.
  • Reusabilidad. Capacidad de un activo que permite que sea utilizado en más de un sistema software o en la construcción de otros activos.
  • Analizabilidad. Facilidad con la que se puede evaluar el impacto de un determinado cambio sobre el resto del software, diagnosticar las deficiencias o causas de fallos en el software, o identificar las partes a modificar.
  • Capacidad para ser modificado. Capacidad del producto que permite que sea modificado de forma efectiva y eficiente sin introducir defectos o degradar el desempeño.
  • Capacidad para ser probado. Facilidad con la que se pueden establecer criterios de prueba para un sistema o componente y con la que se pueden llevar a cabo las pruebas para determinar si se cumplen dichos criterios.

Green IT & Mantenibilidad

En el Green IT esta característica es esencial debido a que, al estar verificando constantemente todas las variantes del software tanto en su desarrollo como en la finalidad de este, brinda la capacidad de lograr alcanzar todas las políticas de calidad y los estándares del Green IT a la vez, previniendo que posibles fallos baje el rendimiento  adecuado del software y termine consumiendo más recursos de los necesarios y como consecuencia tome más tiempo de procesamiento y un mayor consumo de energía en general. Por esta razón se debe utilizar tecnologías amigables con el medio ambiente (Ver al final de la página)

Capacidad del producto o componente de ser transferido de forma efectiva y eficiente de un entorno hardware, software, operacional o de utilización a otro. Esta característica se subdivide a su vez en las siguientes subcaracterísticas:
  • Adaptabilidad. Capacidad del producto que le permite ser adaptado de forma efectiva y eficiente a diferentes entornos determinados de hardware, software, operacionales o de uso.
  • Capacidad para ser instalado. Facilidad con la que el producto se puede instalar y/o desinstalar de forma exitosa en un determinado entorno.
  • Capacidad para ser reemplazado. Capacidad del producto para ser utilizado en lugar de otro producto software determinado con el mismo propósito y en el mismo entorno.

Green IT & Portabilidad

En relación con el Green IT el producto de software a pesar de cambiar de ambiente sea de hardware, software, operacionales o de uso, no solo debe preservar su rendimiento en tiempos de proceso de trabajo, sino también que debe preservar su rendimiento en proceso de contaminación de manera íntegra. Se debe procurar manejar buenas prácticas en todo lo que haga referencia a la capacidad de adaptarse a nuevos sistemas de hardware procurando siempre minimizar el consumo energético. Y tener en cuenta la capacidad que tiene el software para ser instalado o actualizado para poder gestionar de manera óptima los recursos y la memoria física.

Tecnologías amigables con el medio ambiente

GRID COMPUTING

La computación en red es un grupo de computadores conectadas físicamente (a través de una red o con internet) para llevar a cabo conjuntamente una serie de tareas dedicadas, como el análisis de datos de comercio electrónico y la solución de un problema complejo. Los Grids son una forma de "computadora súper virtual" que resuelve una aplicación particular.

virtualización

La visualización utiliza el software para imitar las características del hardware y crear un sistema informático virtual. Esto permite a las organizaciones de TI ejecutar mas de un sistema virtual, y múltiples sistemas operativas y aplicaciones, en un solo servidor.

Nim

Nim es un lenguaje de programación de sistemas compilados y estéticamente tipificado. Sus principios son la eficiencia, expresividad y elegancia.


aws lambda

AWS Lambda le permite ejecutar código sin aprovisionar ni administrar servidores. Paga solo por el tiempo de computo que consume. Con Lambda, puede ejecutar código para casi cualquier tipo de aplicación o servicio Backend sin tener que realizar tareas de administración. Solo tiene que cargar el código y Lambda se encargara de todos lo necesario para ejecutar y escalar el código con alta disponibilidad. Puede configurar su código para que active automáticamente desde otros servicios de AWS o puede llamarlo directamente desde cualquier aplicación web o móvil.