La ISO adopta 3 nuevas normas sobre ingeniería de software y sistemas

El SC7 Ingeniería de software y sistemas perteneciente al ISO/IEC JTC 1 (Comité Técnico Conjunto ISO/IEC No 1 – Tecnología de la Información) actualizó la norma “ISO/IEC/IEEE 15289 Ingeniería de software y sistemas – Contenido de los elementos de información del ciclo de vida (documentación)”, publicada anteriormente en el 2015. Además adoptaron las siguientes:

  • ISO/IEC 20741:2017 Ingeniería de Software y Sistemas – Guía para la evaluación y selección de herramientas de ingeniería de software;
  • ISO/IEC 25011:2017 Tecnología de la información (TI) – Requisitos de la calidad y evaluación de software y sistemas (SQuaRE) – Modelo de la calidad de servicio.

La lista de normas sobre la temática de ingeniería de software y sistemas asciende a 173, donde 7 han sido adoptadas en el 2017 (ver Figura 1).

Figura 1: Periodos de publicación de las normas sobre ingeniería de software y sistema adoptadas en el SC7.

Propuesta de mantenimiento en el proceso de desarrollo de software

Ing. Dunia Chao Figueras (dunia.chao@datazucar.cu)

RESUMEN

El mantenimiento de software es un eslabón fundamental para lograr la calidad y la mejora continua del producto final; se fundamenta en modificar un producto o software después de la entrega con el fin de corregir errores, mejorar el rendimiento u otros atributos y constituye una de las actividades más comunes en la ingeniería de software. Sin embargo, por lo costoso en tiempo y esfuerzo de esta fase y la complejidad de este proceso no es muy aceptado en las organizaciones, dado que en todas existen varios productos de software heredados a los cuales se les hace complejo mantener el código fuente por ser, en muchos casos, lenguajes de programación obsoletos. Por esta situación se plantean distintos tipos de mantenimientos a ejecutar en dependencia de las necesidades ya que ninguna empresa productora de software queda exenta de esta problemática. El presente trabajo aborda la teoría del mantenimiento basado en los estándares de calidad del software debido a que los factores de calidad inciden de forma directa sobre el esfuerzo y costos de mantenimiento, proponiéndose una solución y su aplicación en DATAZUCAR.

Palabras clave: software, desarrollo de software, mantenimiento de software.

ABSTRACT

Software maintenance is a fundamental action to achieve the quality and continuous improvement of the final product; it is based on modifying a product or software after delivery, in order to correct malfunctions, improve performance or other attributes and constitutes one of the most common activities in software engineering. However, because of the costly time and effort of this phase and the complexity of this process, it is not very accepted in organizations since there are several inherited software products to which it is complex to maintain the source code, written, in many cases, with outdated programming languages. This situation requires different types of maintenance to be executed depending on the needs since no software production company is exempt from this problem. The present paper deals with the theory of maintenance based on the quality standards of the software because the quality factors have a direct impact on the effort and maintenance costs, proposing a solution and its application in DATAZUCAR.

Keywords: software, software development, software maintenance

INTRODUCCIÓN

La industria de desarrollo de software mantiene una evolución constante. Hace algún tiempo se podía ver que ingenieros en sistemas computacionales, electrónica o incluso de otra especialidad contaban con todos los conocimientos necesarios para desarrollar y entregar un software. En la actualidad, la creciente complejidad del software, las tecnologías y procesos necesarios para su desarrollo y mantenimiento han provocado que los profesionales tengan que especializarse. Dentro de estas especializaciones encontramos algunas como la programación, el levantamiento y análisis de requerimientos, el diseño de aplicaciones, el diseño de base de datos, las pruebas de software y, recientemente, una actividad que es una de las más importantes y menos valoradas de la industria: el mantenimiento de software.

El mantenimiento de software es, según la terminología ANSI-IEEE, “la modificación de un producto software después de su entrega al cliente o usuario para corregir defectos, para mejorar el rendimiento u otras propiedades deseables o para adaptarlo a un cambio de entorno”.

Tomando en consideración la velocidad con que se ha desarrollado la ingeniería de hardware, el desarrollo del software ha sufrido un retraso histórico en cuanto a la elaboración y disposición de tecnologías (metodologías y herramientas). Esto evidentemente merma la calidad de los sistemas liberados y corriendo en ambientes de producción. Por lo que toma mayor relevancia la etapa de mantenimiento en el ciclo de vida del software (figura 1).

Figura 1: Ciclo de vida del software.

DESARROLLO

Las tareas de mantenimiento son las últimas en realizarse en el ciclo de vida clásico del software. Sin embargo, considerando el total de la duración del ciclo de vida, la etapa de mantenimiento dura un tiempo considerable ya que elaborar un sistema mediano lleva de cuatro a seis meses y, posteriormente, el sistema en producción podrá correr durante varios años durante los cuales este debe ser soportado y mantenido.

El mantenimiento es requerido por distintas necesidades de los clientes y de las aplicaciones como se muestra en la figura 2 y puede clasificarse en varios tipos:

  • Adaptativo: Modificación de un producto software, después de su entrega, para conseguir que sea utilizable en un nuevo entorno.
  • Correctivo: Modificación reactiva de un producto software, después de su entrega, para corregir defectos detectados. Errores actuales detectados.
  • Perfectivo: Modificación de un producto software, después de su entrega, para mejorar su rendimiento o su mantenibilidad.
  • Preventivo: Modificación de un producto software, después de su entrega, para detectar y corregir defectos latentes antes de que produzcan fallos efectivos.

Figura 2: Mantenimiento de software.

Estos procedimientos de gestión del mantenimiento deben incluir:

  • Las reglas básicas usadas para determinar cuándo el software debe ser corregido o cuándo hace falta una nueva línea temporal (es decir, el error es muy complejo); en este caso deberá usarse el Proceso de Desarrollo.
  • Descripciones de los tipos de versiones dependiendo de la frecuencia con que se hacen o de los efectos en el software. Formas de informar al adquiriente sobre el estado del proyecto.
  • Métodos para confirmar que un cambio no provocará un nuevo error.
  • Clasificación de los tipos de cambio, urgencia y su interrelación.

También es importante tener en cuenta que existen diversos estándares de calidad de software que tienen una relación directa o indirecta con el mantenimiento del software:

  • Para los procesos del ciclo de vida del software: IEEE 1074 e ISO 12207.
  • Para la calidad del software y sus métricas: IEEE 1061 e ISO 9126.
  • Para el mantenimiento del software: IEEE 1219 e ISO/IEC 14764.

Los estándares de calidad del software tienen gran importancia para el mantenimiento del mismo, debido a que los factores de calidad (especialmente la complejidad y la mantenibilidad) inciden de forma directa sobre el esfuerzo de mantenimiento necesario.

El estándar ISO 14764 es el estándar específico sobre mantenimiento del software publicado por la ISO en 1998. El estándar internacional ISO 14764 presenta los requerimientos para el proceso de mantenimiento del software; contiene las actividades y tareas de quien realizará el mantenimiento, proporciona una guía que explica cómo llevar a cabo este proceso y establece definiciones para los distintos tipos de mantenimiento existentes.

La guía es aplicable a la planificación, ejecución y control, mantenimiento, revisión y evaluación de este proceso.

La norma propone un plan que forma parte de la estrategia de mantenimiento; este plan es usado para guiar a los que ejecutan el mantenimiento de software, explica la necesidad de realizar el mantenimiento, refiriéndose a quién efectúa ese trabajo y cómo se hace, contiene la documentación y responsabilidades de todos los involucrados. Además, debe incluir qué recursos hay disponibles para el ejecutarlo, dónde se hace y cuándo comienza. Una vez definido dicho plan, el estándar propone establecer una guía para desarrollarlo. Los requisitos que debe contener esta guía para este estándar son:

  • La descripción del sistema al que se le brinda soporte; aquí se especifican todos los detalles del sistema a mantener.
  • Identificación del estado inicial del software para saber cuáles son los nuevos cambios realizados.
  • Descripción del soporte para facilitar el comienzo del desarrollo del mantenimiento del software.
  • Identificación de la organización que debe hacer el soporte o mantenimiento para contemplar el objetivo de este en el proceso de desarrollo del software.
  • Descripción de cualquier acuerdo entre cliente y vendedor. Deberá tenerse definido y escrito lo que desea el cliente, de este modo el vendedor sabrá lo que tiene que hacer para satisfacerlo.

Las actividades que comprende el proceso de mantenimiento, según el estándar, son:

  • Implementación del proceso.
  • Análisis de modificaciones y problemas.
  • Implementación de modificaciones.
  • Revisión y aceptación del mantenimiento.
  • Migración.

Básicamente, este es el enfoque que brinda la norma ISO 14764 para realizar la actividad de mantenimiento de software. Esta norma identifica adecuadamente qué hacer en las actividades y tareas a desarrollar en el proceso.

La problemática de DATAZUCAR

El mantenimiento de software consiste en realizar este de forma tan rigurosa y controlada que no se deteriore la calidad del sistema como resultado del proceso. Por la naturaleza del software, existen problemas relacionados con el mantenimiento de software que están claramente identificados.

Dentro de la fase mantenimiento de software se encuentran los llamados “legacy code” (código heredado) y la división DATAZUCAR no está exenta a esto. Con el paso de los años, la organización ha producido un volumen muy grande de software. En la actualidad, la mayor parte de este software está formado por código antiguo “heredado”; es decir, código de aplicaciones desarrolladas hace algún tiempo, con técnicas y herramientas en desuso y, en muchos casos, desarrollados por personas que ya no pertenecen a la empresa ni al grupo responsable en este momento del mantenimiento del software. La situación se complica porque el código heredado ha sido objeto de múltiples actividades de mantenimiento. La opción de desechar este software y reescribirlo para adaptarlo a las nuevas necesidades tecnológicas o a los cambios en la especificación no es viable en la mayoría de las ocasiones debido a la gran carga financiera que supuso el desarrollo del software original y la necesidad económica de su amortización.

Otro problema inherente al mantenimiento del software es que a pesar de toda la estandarización y modelos de procesos que se busquen adoptar, el desarrollo de software es, en el fondo, un proceso creativo. Es así que en el software siempre encontraremos patrones no uniformes de programación ya que dependiendo de su habilidad, creatividad y experiencia, los programadores generan código de maneras innumerables. Así mismo, es muy común encontrarse con aplicaciones de software desarrolladas sin seguimiento a metodologías, procesos, ni lineamientos, que se reflejan en código mal escrito, mal documentado y, por lo tanto, difícil de mantener.

Por otra parte, pueden existir efectos secundarios o laterales no previstos ni deseados. Estos efectos se muestran como consecuencias de las modificaciones no controladas a las aplicaciones de software que, a su vez, representan problemas para el mantenimiento posterior del software. Existen tres tipos de efectos secundarios y se definen por su impacto en las diferentes áreas de una aplicación, estos son:

  • Efectos secundarios en el código: ocurren cuando el código sufre modificaciones como rediseños, eliminación de procedimientos o subprogramas, modificación de macros o dll’s, cambios para mejorar el desempeño, etc.
  • Efectos secundarios en los datos debidos al impacto de los cambios en los identificadores de las aplicaciones, tales como modificaciones en catálogos, formularios, cambios en los parámetros de los programas, etc.
  • Efectos secundarios en la documentación: ocurren cuando después de un cambio en la aplicación, la documentación no es actualizada y esto genera problemas en la “mantenibilidad” del software.

Propuesta de solución a los problemas de mantenimiento de software.

Existen diversas estrategias y acciones que se pueden llevar a cabo para resolver o mitigar los diferentes problemas descritos anteriormente y sirvan de guía para poder enfrentar el mantenimiento de software. Entre las principales estrategias que se proponen se encuentran:

  • Código mantenible.

La manera de estructurar un programa depende de la creatividad y habilidad de los programadores; sin embargo, existen prácticas que contribuyen a mejorar la facilidad de mantenimiento del código. Estas son:

  • Código documentado: los diferentes segmentos de código que se escriben deben contener comentarios objetivos que expliquen de forma adecuada el funcionamiento de estos. Cada programa, clase y método debe incluir documentación sobre su propósito, funcionamiento, entradas y salidas esperadas. Hoy, ello se realiza en DATAZUCAR pero no se efectúa descriptivamente.
  • Banderas de cambio: es una práctica poco utilizada en la industria; se refiere a la habilidad de establecer un mecanismo de identificación de cambios a lo largo de la vida de una aplicación. Es decir, si debido a una modificación en el día de hoy se cambian un par de líneas de código, es importante marcar esas líneas con alguna bandera que nos permita identificar en el futuro la razón por la que se modificó el código. Ello permite tener una visión de las versiones y justificaciones que pudieron haber inyectado un error a la aplicación.
  • Documentación actualizada: esta práctica es poco ejecutada debido a que el tiempo y la forma de la documentación no es suficiente en los proyectos de desarrollo. Sin embargo, se deben tener las especificaciones de las aplicaciones actualizadas y no el manual de usuario que, en ocasiones, es de mucha ayuda pero resulta de mayor utilidad tener la documentación técnica actualizada, tal como diseños, diagramas, diccionarios de datos, etc. Ello se debe retomar pues se ha perdido en DATAZUCAR.
  • Hoy se cuenta con la herramienta Agilepro, aplicación utilizada para registrar las historias de usuarios y otros artefactos y que tiene bien definido dónde adjuntar y salvar todo documento de apoyo en el proceso.
  • Personal dedicado al mantenimiento de software según el producto que necesite la atención.

A pesar de la importancia que tiene el mantenimiento de software, muchas organizaciones no justifican la asignación de un equipo dedicado exclusivamente al mantenimiento de software y ello es comprensible pues este personal tardaría más tiempo en entender el código que escribió otro desarrollador de las distintas aplicaciones.

Sin embargo, es primordial tener identificadas, capacitadas y calificadas a las personas que realizarán estas acciones. Por lo que se debe contar dentro de cada equipo con al menos dos que se dediquen al mantenimiento, según la necesidad del producto; es decir, en cada iteración planificada debe existir un 40% del tiempo utilizado en tareas de mantenimiento de las aplicaciones que estén en fase de pilotaje, que son mayormente las que introducen la necesidad de modificación. La justificación para tener este espacio dentro de los equipos es muy sencilla, basta con cuantificar el costo que tiene que un sistema de producción deje de funcionar o que genere problemas en su uso debido a un error.

  • Mantenimiento de software como una actividad planificada.

El área de desarrollo de software en DATAZUCAR es responsable de esta planificación y debe contar con recursos dedicados y capacitados para desempeñarla y quedar explícitamente descrita en el anexo 12 del sistema de trabajo de esta división (plan de desarrollo del área).

CONCLUSIONES

  • El mantenimiento de software es un tema complejo especialmente cuando se considera la cantidad de recursos que se deben destinar a esta actividad.
  • Establecer en el plan de desarrollo los mantenimientos, teniendo en cuenta que cada equipo de trabajo es responsable de realizar las acciones de mantenimiento a todos los proyectos que realice y ello debe dejarse explícito en el plan de desarrollo, haciendo uso del tiempo de pilotaje de cada proyecto en caso del no planificado.

RECOMENDACIONES

  • Realizar una revisión de los estándares de calidad para el mantenimiento en el desarrollo de software y realizar una propuesta que sirva de guía a DATAZUCAR en aras de la realización de ese objetivo.

BIBLIOGRAFÍA

  • Tipos de mantenimiento de software,Mundo Kramers, https://mundokramer.wordpress.com/2011/05/21/tipos-de-mantenimiento-de-software/ consultado enero 2017.
  • Tipos de mantenimiento de software para programas específicos, Samuel Juliá
    http://www.gadae.com/blog/tipos-de-mantenimiento-de-software/ consultado diciembre 2016.
  • Mantenimiento del Software, F Ruiz, http://alarcos.esi.uclm.es/per/fruiz/cur/mso/trans/s1.pdf , consultado diciembre 2016.
  • https://swcb37.files.wordpress.com/2013/08/mantenimiento-de-software.pdf
  • http://informacione13.over-blog.com/article-mantwnimiwnto-preventivo-del-software-88394816.html
  • http://www.4rsoluciones.com/blog/tipos-de-mantenimiento-de-software-2/
  • http://www.sincows.com/sincows/index.php?option=com_content&view=article&id=70&Itemid=68

La familia de normas ISO/IEC 15504 Vs la ISO/IEC 33000

La familia de normas ISO/IEC 15504, conocida como “normas SPICE”, hace varios años está en revisión por la el subcomité 7 – Ingeniería de Software, del Comité Técnico Conjunto de la ISO/IEC No 1, Tecnologías de la Información.

En el año 2015 fueron derogadas las normas:

  • “ISO/IEC 15504-1:2004 Tecnologías de la información (TI) – Evaluación de procesos – Parte 1: Conceptos y vocabulario” y en su lugar entró en vigor la “ISO/IEC 33001:2015 Tecnologías de la información (TI) – Evaluación de procesos – Conceptos y terminologías”;
  • “ISO/IEC 15504-2:2003 Ingeniería de software – Evaluación de procesos – Parte 2: Ejecución de una evaluación” sustituida por las siguientes normas, “ISO/IEC 33002:2015 Tecnologías de la información (TI) – Evaluación de procesos – Requisitos para ejecutar la evaluación de proceso”, “ISO/IEC 33003:2015 Tecnologías de la información (TI) – Evaluación de procesos – Requisitos para los marcos de medición de proceso”, “ISO/IEC 33004:2015 Tecnologías de la información (TI) – Evaluación de procesos – Requisitos para modelos de referencia de proceso, proceso de evaluación y de madurez” y “ISO/IEC 33020:2015 Tecnologías de la información (TI) – Evaluación de procesos – Marco de medición de procesos para la evaluación de la capacidad del proceso“;
  • “ISO/IEC 15504-7:2008 Tecnologías de la información (TI) – Evaluación de procesos – Parte 7: Evaluación de la madurez organizacional” sustituida por la siguientes normas: “ISO/IEC 33002:2015”, “ISO/IEC 33003:2015”, “ISO/IEC 33004:2015” y “ISO/IEC TR 33014:2013 Tecnologías de la información (TI) – Evaluación de procesos – Guía para la mejora de proceso“;

En el año 2017 fue derogada la:

  • “ISO/IEC 15504-3:2004 Tecnologías de la información (TI) – Evaluación de procesos – Parte 3: Guía para ejecutar una evaluación” reemplazada por “ISO/IEC TS 33030:2017 Tecnologías de la información (TI) – Evaluación de procesos – Un ejemplo de evaluación de proceso documentado”.