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.

GreenIT & 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.

GreenIT & 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.

La usabilidad es la medida en la cual un producto puede ser usado por usuarios específicos para conseguir objetivos específicos con efectividad, eficiencia y satisfacción en un contexto de uso especificado.

En la medida que un producto se dice que aplica usabilidad permite que su interfaz y la forma como se utiliza sea bastante 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 de forma que el usuario consuma la menor cantidad de recursos computacionales.

Capacidad de un sistema o componente para desempeñar  las funciones especificadas, cuando se usa bajo unas condiciones y periodo de tiempo determinados. 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 reestablecer el estado deseado del sistema en caso de interrupción o fallo.

 

GreenIT & 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 sino 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.

     

    GreenIT & Seguridad

    Usar algoritmos que sean optimos 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.

GreenIT & 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.

GreenIT & 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.