RESUMEN : Las empresas gastan entre sesenta y setenta por ciento de los recursos para corregir, adoptar y mantener el software existente. La inadecuada atención a la mantenibilidad, desde etapas tempranas, podría provocar que la mayor parte del tiempo que dedican los programadores al desarrollo, sea invertido en el mantenimiento. Un nivel adecuado de mantenibilidad aporta beneficios como: simplificación de la complejidad, reducción de los tiempos y los costos de mantenimiento. La mantenibilidad tiene un impacto significativo en la calidad general de una aplicación y en el éxito económico del producto de software. A partir de la importancia de esta característica en la gestión de software, se presenta un proceso que incluye las actividades a realizar en las disciplinas ingenieriles de desarrollo, así como los roles y artefactos de entradas y salida. Se define una lista de requisitos de mantenibilidad, para facilitar su identificación en los proyectos de software, asociados a los factores que influyen en las sub-características mantenibilidad, planteadas en la Norma Cubana ISO/IEC 25010.
Palabras clave: softwaresoftware,mantenibilidadmantenibilidad,sub-característicassub-características,procesoproceso,factoresfactores.
ABSTRACT : Companies spend between sixty and seventy percent of their resources to correct, adopt and maintain existing software. Inadequate attention to maintainability, from early stages, could cause most of the time programmers spend on development to be spent on maintenance. An adequate level of maintainability brings benefits such as: simplification of complexity, reduction of maintenance time and costs. Maintainability has a significant impact on the overall quality of an application and on the economic success of the software product. Based on the importance of this feature in software management, a process is presented that includes the activities to be performed in the engineering disciplines of development, as well as the roles and artifacts of inputs and outputs. It is defined a list of maintainability requirements, to facilitate their identification in software projects, associated to the factors that influence the maintainability sub-characteristics, raised in the Cuban Norm ISO/IEC 25010.
Keywords: software, maintainability, sub-characteristic, process, factors.
Artículo original
Gestión de la mantenibilidad desde etapas tempranas en el desarrollo de software
Management of maintainability from early stages in software development
Recepción: 11 Octubre 2020
Aprobación: 27 Diciembre 2020
La calidad de software en una empresa constituye un elemento diferenciador de competitividad y de imagen frente a sus clientes (Piattini, y otros, 2008; Irrazábal, 2015). Tanto la calidad del producto como la del proceso, son los aspectos más importantes actualmente en el desarrollo de software (Ebert, 2009; Irrazábal, 2015; Mendoza, 2018). Por este motivo los proyectos centran esfuerzos en gestionar la calidad del software usando modelos, normas, métricas, herramientas y estándares de referencia. La Norma Cubana ISO/IEC 25010: 2016 propone el modelo de calidad del producto con ocho características: adecuación funcional, eficiencia de desempeño, compatibilidad, usabilidad, fiabilidad, seguridad, mantenibilidad y portabilidad (NC ISO/ IEC 25010, 2016). La mantenibilidad se define como: la facilidad con la que un sistema o componente de software puede ser trasformado para corregir fallos, obtener un mejor rendimiento o adaptarse a un entorno cambiante (IEEE, 1990; Arya, 2014; Soni, 2015; Abdullah, 2015; Dohmen, y otros, 2016; Pardo, 2018).
La mantenibilidad es el grado de efectividad, eficacia o eficiencia con la que un producto puede ser modificado (NC ISO/ IEC 25010, 2016; Calabrese, 2018; Pardo, 2018). Se considera un atributo de calidad particularmente interesante, ya que las actividades de mantenimiento representan el mayor costo en el desarrollo del software (Sommerville, 2001; Erazo, y otros, 2015; NC ISO/ IEC 25010, 2016). Realizar más esfuerzo durante el ciclo de vida para hacer que el software sea mantenible, puede reducir significativamente el total de los costos (Erazo, y otros, 2016). Por tanto, se puede afirmar que el aumento de la mantenibilidad es un requisito económico importante para las empresas con grandes sistemas de información (English, y otros, 2016). La falta de mantenibilidad del producto, está identificada por la escasa atención a los principales factores: complejidad, malas prácticas en la codificación, estructura no estandarizada y documentación no disponible (I. Gonzalez, y otros, 2019).
Para obtener evidencias empíricas sobre el impacto de la mantenibilidad, se realizó una encuesta en dos entidades desarrolladoras de software. Los resultados obtenidos mostraron que el 37% reconoce que en los proyectos en los que ha trabajado, no se definen los requisitos de mantenibilidad. El 60% afirma que la mantenibilidad debe gestionarse desde etapas tempranas en el ciclo de vida del software, para evitar consecuencias negativas. Un 50% de los encuestados asegura que si no se gestiona aumenta la dificultad para encontrar los fallos en el software, mientras que el 43% reconoce costos elevados de mantención y software poco reusable. Los problemas observados durante la investigación se deben en gran medida a la falta de buenas prácticas, por ejemplo: el 70% de los encuestados expresó la necesidad de capacitar a los equipos de desarrollo en temas de mantenibilidad, un 60% planteó que se debe incluir esta característica durante todo el ciclo de desarrollo y para realizar las tareas, disponer de la persona que creó originalmente el software.
Los problemas constatados a partir de la revisión de la literatura, así como evidencias empíricas, llevaron a elaborar un proceso para la gestión de la mantenibilidad desde etapas tempranas en el ciclo de vida de desarrollo de software. Describiendo las actividades que se deben realizar en las disciplinas ingenieriles: Modelado de negocio, Requisitos, Análisis y diseño, Implementación y Pruebas. Estas actividades están asociadas a los factores que influyen en cada una de las sub-características de mantenibilidad planteadas por la Norma Cubana ISO/IEC 25010: 2016 (NC ISO/ IEC 25010, 2016).
Luego de realizada la encuesta para la evaluación del comportamiento de la mantenibilidad, se continuó la investigación con una revisión de la literatura. La bibliografía analizada abordaba los temas referentes a la gestión de la mantenibilidad, con el objetivo de identificar cómo diferentes investigadores trabajan la temática. El análisis bibliográfico confirmó que varios autores abordaban el aseguramiento y control de la mantenibilidad, lo que se pudo constatar por la abundante bibliografía encontrada, evidenciando la relevancia de la temática tratada en el presente artículo. Se identificaron 46 publicaciones cuyos temas especificaban la mantenibilidad, de ellas se consideraron relevantes para la presente investigación 15. De los trabajos seleccionados siete son publicaciones en revistas referenciadas, dos son libros pertenecientes a la literatura clásica relacionada con la materia y seis son tesis.
De la revisión bibliográfica resaltaron cinco artículos de los autores Irrazábal, Erazo y Rodríguez, que presentaban diferentes propuestas para evaluar, certificar y gestionar la mantenibilidad. En estas publicaciones se examinaban las sub-características de mantenibilidad planteadas por la ISO/IEC 25010: 2011, los factores y las buenas prácticas para el proceso de desarrollo de software, teniendo en cuenta el aumento de la mantenibilidad. Después de identificados los factores que influyen en las sub-características, se procedió a clasificarlos por disciplinas ingenieriles, teniendo en cuenta las propuestas por la metodología de desarrollo AUP-UCI (Informáticas, 2015). Esta metodología es la encargada de estandarizar las actividades de desarrollo en la Universidad de las Ciencias Informáticas.
Reconociendo el impacto que tienen los factores de mantenibilidad sobre la calidad del producto de software. Se realizó una clasificación de estos, teniendo como referencia los modelos presentados por los autores (Rodríguez, 2015; Erazo, 2015; Irrazábal, 2015; Erazo, 2016). Primeramente, los factores se relacionaron de acuerdo a su influencia en las sub-características de mantenibilidad planteadas por la Norma Cubana ISO/IEC 25010: 2016 (NC ISO/ IEC 25010, 2016). Tomando como referencia las definiciones tanto de los factores como de las sub-características a las que afectan. La segunda parte de la clasificación se efectuó vinculando los factores con las disciplinas ingenieriles: Modelado de negocio, Requisitos, Análisis y diseño, Implementación y Pruebas, como se puede observar en la Tabla 1.

La clasificación constituyó un aporte significativo para la creación de las actividades correspondientes al proceso para la gestión de la mantenibilidad. También se utilizó como base para la elaboración de la propuesta de requisitos no funcionales de mantenibilidad que seguidamente se presenta.
Para facilitar la identificación de los requisitos no funcionales de mantenibilidad (RNFM), se tuvo como premisa la clasificación realizada y los umbrales propuestos por la herramienta SonarQube. Esta herramienta se usa para medir la mantenibilidad del código fuente (SonarQube, 2019). Los resultados de otras investigaciones muestran que al incorporar SonarQube al desarrollo se mejora la mantenibilidad (González-Carvajal, y otros, 2019). Los requistos propuestos se agrupan de acuerdo a las sub-características:
Modularidad
Reusabilidad
Analizabilidad
Modificabilidad
Testabilidad
Después de identificados los requisitos surgieron las actividades encaminadas al cumplimiento de estos. Las actividades junto a los roles, los artefactos de entrada y salida, forman en su conjunto el proceso para la gestión de la mantenibilidad que se describen a continuación.
El proceso para gestionar la mantenibilidad desde etapas tempranas incluye los factores que influyen en las sub-características planteadas por la Norma Cubana ISO/IEC 25010: 2016. Describe las actividades en las fases: Inicio, Ejecución y Cierre; y las disciplinas ingenieriles propuestas por la metodología AUP-UCI (Informáticas, 2015). En las Figura 1 y Figura 2 se presentan las actividades correspondientes a la Fase de Inicio y a las disciplinas: Modelado de negocio, Análisis y diseño e Implementación, pertenecientes a la fase de Ejecución.


En las Figura 3 y Figura 4 se observan las actividades de las disciplinas: Pruebas internas, Pruebas de liberación y Pruebas de aceptación, así como la actividad de la fase de Cierre.


En la Tabla 2 se definen los roles, así como los artefactos de entrada y salida para las actividades presentadas anteriormente.








La correcta gestión de la mantenibilidad incrementa las facilidades de modificación, al obtener productos de software con documentación actualizada y suficientes comentarios en el código. Provee beneficios en la reducción de los costos y recursos destinados a los cambios que se producen durante la fase de mantenimiento. El proceso para gestionar la mantenibilidad desde las fases tempranas, aumenta el valor de los proyectos y propicia la adaptación del producto a los cambios propios de la evolución en el desarrollo de software.
Para la realización de las actividades del proceso y como propuesta del estudio de la problemática, surgió la idea de definir un conjunto de roles. Primeramente, se analizaron los definidos en el grupo Ingenieril y se detallaron sus responsabilidades durante el desarrollo de software. Se brindó especial atención a la definición de las tareas correspondientes a la gestión de la mantenibilidad. Algunas de las responsabilidades se modificaron, con el objetivo de garantizar que las actividades planteadas tuvieran un responsable para su ejecución (Blanco, 2013; Informáticas, 2015; UCI, 2017; Benítez, 2018; González, 2019):
Jefe de proyecto:
Analista:
Arquitecto de software:
Administrador de la calidad:
Administrador de la configuración:
Equipo de Desarrollo:
Comité de Control de Cambios (CCC):
La clasificación de los factores por sub-características de mantenibilidad, favoreció la identificación de los requisitos no funcionales y la elaboración del proceso propuesta. Se elaboró un proceso para la gestión de la mantenibilidad desde etapas tempranas, teniendo en cuenta las fases del ciclo de vida del software, con las entradas y salidas para cada una de las actividades definidas por roles. La identificación de las actividades del proceso logró incluir los factores a las fases y disciplinas ingenieriles, así como a las sub-características de mantenibilidad. Se recomienda para trabajos futuros ampliar en el estudio de los factores que influyen en la mantenibilidad, así como identificar técnicas y herramientas para evaluarlos en las disciplinas de requisitos, análisis y diseño del software.
*Autor para la correspondencia. (ltespinosa@uci.cu)












