INTRODUCCIÓN
Las tendencias actuales consideran a la calidad como un factor estratégico. Romero y otros plantean: ‘‘(…) ya no se trata de una actividad inspectora sino preventiva: planificar, diseñar, fijar objetivos, educar e implementar un proceso de mejora continua, la gestión estratégica de la calidad hace de esta una fuente de ventajas competitivas que requiere del esfuerzo colectivo de todas las áreas y miembros de la organización’’(Alonso and Blanco, 1992, Ismaray Socarras Ramírez, 2018, Navarro Silva, Ferrer Reyes et al., 2018, Socarrás Ramírez, 2018, Marin Diaz, Trujillo Casañola et al., 2019, Jiménez Bibián, 2020). Las actividades de control y aseguramiento de calidad de los procesos y productos durante todo el ciclo de vida de software como parte de la Ingeniería de Software, permiten mayor utilidad con el propósito de ofrecer optimización, eficiencia y satisfacción de necesidades de los clientes. (Callejas-Cuervo, Alarcón-Aldana et al., 2017, Carrizo and Alfaro, 2018, De Vincenzi, 2018)
Dos aspectos de calidad fundamentales para reducir riesgos en la puesta en producción de un sistema son la funcionalidad y la eficiencia en el desempeño (Toledo, 2014). En la actualidad los sistemas son cada vez más complejos, por eso se hace muy difícil coordinar que todos los implicados estén disponibles y estables, puesto que cada uno de los subsistemas que contiene es gestionado. La calidad de la eficiencia en el desempeño se ve notablemente reducida, incurriendo en la seguridad y el aumento de fallos que puedan ocurrir. Además, es subjetiva pues se basa principalmente en sus características no funcionales que son complejas para medir. La eficiencia del desempeño como atributo de calidad del producto es considerada como significativa, ya que los usuarios rechazarán un software que sea demasiado lento. (Estayno, Dapozo et al., 2009, Pressman, 2010, Roger, 2010, Sommerville, 2011, Escobar, 2017, De Vincenzi, 2018)
La eficiencia del desempeño del sistema está relacionada con el rendimiento de un dispositivo en función de su comportamiento temporal, el uso de recursos y la capacidad o límites máximos de funcionamiento. Para medir la eficiencia en el desempeño hay que conocer los tiempos de respuesta y procesamiento, las tasas de rendimiento, los límites máximos de un producto o parámetro del sistema, las cantidades y los tipos de recursos utilizados, todo ello debe cumplir con los requisitos al realizar sus funciones (25010, 2011, Rodríguez, Reina et al., 2013, Fierro, Manosalvas et al., 2019). El desconocimiento del comportamiento del software en una situación de estrés, al límite del uso de recursos y el tiempo de respuesta afectado, propicia descontento e insatisfacción para las partes interesadas(Globe, 2017). La eficiencia en el desempeño es una medida desde la perspectiva del usuario, pues según la percepción y tolerancia del usuario es el nivel de aceptación de la eficiencia del desempeño del software. Es sumamente complicado establecer límites estandarizados para esta característica, por ello se establecen umbrales y/o criterios de aceptación definidos por los usuarios finales o clientes para el de tiempo, el uso de recurso y la capacidad del sistema.
En la presente investigación se realiza un análisis de las normas, estándares, modelos, metodologías y autores reconocidos en la materia referenciados a nivel nacional e internacional, con el objetivo de identificar actividades de calidad que se consideran necesarias y relevantes para conocer el comportamiento de la eficiencia del desempeño en el software. Se proponen objetivos, precondiciones, frecuencia de uso, productos de trabajo y los resultados esperados de las actividades de calidad propuestas asociadas a la eficiencia del desempeño.
MÉTODOS O METODOLOGÍA COMPUTACIONAL
Para la obtención de información de la investigación se emplearon varios métodos científicos. Dentro de los métodos teóricos se emplearon: analítico - sintético para el análisis de los elementos comunes que brinda la bibliografía sobre la eficiencia del desempeño para identificar las actividades de calidad que se proponen y son relevantes para conocer el comportamiento asociado a esta característica; el inductivo - deductivo utilizado en el diagnóstico de la tendencia del uso de las actividades de calidad asociadas a la eficiencia del desempeño a nivel nacional e internacional; y el análisis histórico - lógico para el estudio la trayectoria histórica sobre la característica eficiencia del desempeño que han sido plasmadas por diferentes autores, modelos, normas y estándares, de forma tal que se proporcionen una base de conocimiento a partir de lo histórico incorporar el empleo de actividades que garanticen una correcta eficiencia del desempeño en el software. Dentro de los métodos empíricos se emplearon la entrevista formales e informales y la encuesta para obtener datos e informaciones para argumentar la situación problemática y selección de las actividades de calidad asociadas a la eficiencia del desempeño según experiencias en la evaluación de la característica en el ciclo de desarrollo del software.
En la literatura sobre calidad de software y eficiencia del desempeño se encuentran varios autores, modelos, metodologías, normas y estándares que guían el proceso para ejecutar prácticas y actividades para conocer el comportamiento de la eficiencia del desempeño en el ciclo de vida del producto. Luego de un análisis realizado sobre la eficiencia del desempeño de autores (Roger, 2002, Pressman, 2005, Roger, 2010, Sommerville, 2011, Toledo, 2014, Sommerville, 2016, Sommerville, 2020), estándares (Van Veenendaal and Graham, 2008, Roman, ROMAN. et al., 2018, International Software Testing Qualifications Board, 2020), normas(Al-Qutaish, Abran et al., 2005, 25010, 2011, Alain Abran, 2016, ISO/IEC, 2016, Nakai, Tsuda et al., 2016, Fierro, Manosalvas et al., 2019), modelos(Acuña-Gómez, 2015) y metodologías (Ortiz, 2016, Cubas Fernández, 2019) se puede concretar que todos ofrecen un concepto que incluyen subcaracterísticas. Proponen revisiones y diferentes tipos de pruebas como actividades de calidad para el control y seguimiento de la eficiencia del desempeño. Tabla 1
A partir de la comparación anterior, se evidencia que las actividades que se destacan son: revisiones formales e informales y las pruebas de software, destacando; las pruebas de unidad, integración, sistema, validación, rendimiento, carga, estrés, resistencia, pico, escalabilidad, concurrencia y aceptación. A continuación, se muestra una breve descripción de las pruebas abordadas en la literatura asociadas a la eficiencia del desempeño (Pruebas , Roger, 2010, Sommerville, 2011, Perez and Paumier, 2014, Toledo, 2014, Ortiz, 2016, Verona-Marcos, Pérez-Díaz et al., 2016, Globe, 2017, Roman, ROMAN. et al., 2018, Giraldo and Terán, 2019, Maila-Maila, Intriago-Pazmiño et al., 2019, Jiménez Bibián, 2020, Marin Diaz, Trujillo Casañola et al., 2020)
Prueba de rendimiento: según el ISTQB la prueba de rendimiento es un término genérico que incluye cualquier tipo de prueba centrada en el rendimiento (capacidad de respuesta) del sistema o componente bajo diferentes volúmenes de carga.
Prueba de carga: se centra en la capacidad de un sistema para tratar niveles crecientes de carga realistas anticipadas como resultado de solicitudes generadas por un número contralado de usuarios o procesos concurrentes.
Pruebas de resistencia: están diseñadas para confrontar los programas con situaciones anormales, verifica que no hay problemas de capacidad de recursos que puedan eventualmente degradar el rendimiento del sistema, como: las fugas de memoria, conexiones en base datos, grupos de hilos, entre otros.
Prueba de estrés o pruebas de esfuerzo: se centra en la capacidad de un sistema o componente para tratar cargas máximas que están más allá de los límites de su carga de trabajo prevista o especificada, además, se utiliza para evaluar la capacidad de procesamiento accesible, el ancho de banda disponible y la memoria.
Prueba de pico: son pruebas de variación de carga (o pruebas de picos de carga) que tiene por objetivo exponer al sistema a unas condiciones de carga varias veces superiores a las habituales, posibilitando conocer la capacidad para responder correctamente a estallidos repentinos de cargas máximas y volver, a continuación, a su estado estable.
Prueba de escalabilidad: permite determinar la capacidad del crecimiento de un sistema para cumplir con los requisitos eficiencia futuros, que pueden ser mayores que los actuales, una vez que se conocen los límites de escalabilidad, se pueden establecer y supervisar los valores del umbral en la producción para advertir problemas que puedan surgir.
Prueba de concurrencia: posibilita conocer el impacto de situaciones en las que las acciones se realicen simultáneamente.
Prueba de capacidad: posibilita conocer el número usuarios y /o transacciones que soporta el sistema sin dejar de cumplir con los requisitos y objetivos del rendimiento.
Pruebas de aceptación: comparan el comportamiento del sistema con los requisitos definidos por el cliente. Se valida que cumpla con las necesidades del usuario, entre ellas que el rendimiento del sistema sea aceptable.
RESULTADOS Y DISCUSIÓN
Para la selección de las actividades de calidad se basó en el análisis de la revisión bibliográfica de los estándares, normas, modelos, metodologías y autores que abarcan sobre la materia. Además, se tomaron criterios de especialistas de las organizaciones nacionales con experiencias y conocimiento sobre el tema en cuestión. Para ello, se efectuó la consulta de expertos que a través del método grupo focal y cuestionarios permitió conocer sus criterios y llegar a un consenso sobre las actividades de calidad a realizar para la conocer el comportamiento de la eficiencia del desempeño en el software. Un paso muy importante fue la selección de los expertos, pues de esto depende la fiabilidad y validez del resultado. La selección de los expertos se realizó a través del análisis de la síntesis curricular, ya que el objetivo principal es obtener expertos con la experiencia práctica en el objeto de investigación. Los criterios de selección de los expertos fueron:
Experiencia laboral en la industria de software de 6 años en adelante.
Experiencia práctica de 3 años en adelante asociada al objeto a evaluar en la investigación.
Producción científica enfocada al objeto a evaluar en la investigación.
Al tener en cuenta estos criterios se seleccionaron un total de 15 expertos de organizaciones a nivel nacional. Se realizó un taller en la Universidad de las Ciencias Informáticas utilizando el método de grupo focal, donde participaron 5 de los expertos seleccionados con experiencia en la evaluación de calidad del software. La reunión arrojó que el 100% de los expertos coincidieron en que deben realizarse pruebas de software: afirman que las pruebas asociadas al rendimiento del software, de sistema y validación son relevantes, además el 60% afirmó que las revisiones son necesarias también. Luego se realizó un cuestionario para conocer los juicios de los demás expertos y el 100 % coincidió en que deben realizarse las pruebas de software asociadas al rendimiento y el 70% que las revisiones técnicas tanto formales como informales son actividades de calidad importantes para evaluar la eficiencia del desempeño en el software. Basado en los resultados arrojados se definen como las actividades de calidad a proponer para conocer el comportamiento de la eficiencia del desempeño desde etapas iniciales que permitan la detección temprana de los defectos: las pruebas de software, revisiones técnicas formales e informales y revisiones entre pares como revisión informal. A continuación, se definen los objetivos, precondiciones, frecuencia de ejecución, productos de trabajo y resultados esperados de las actividades de calidad propuestas asociadas a la eficiencia del desempeño del software:Tabla 2
Dentro de las pruebas asociadas a la eficiencia del desempeño o rendimiento del software, se proponen: las pruebas de carga, de estrés, de resistencia, de pico, de escalabilidad, de concurrencia y de capacidad. La práctica de pruebas de caja negra aplicando las técnicas: partición equivalente y análisis de valores fronteras permitirá identificar la compatibilidad del comportamiento del funcionamiento y el desempeño del sistema. Las actividades de calidad propuestas se pueden ejecutar en todos los niveles de la institución, por tanto, todos los involucrados deben estar altamente comprometidos. Se propone que estas actividades inicien desde el proyecto, que constituye la unidad básica del desarrollo de software. Luego, si existe una administración entre el proyecto y la institución se propone un nivel intermedio para comprobar la eficiencia del desempeño del software. Por último, el nivel institucional constituye el último filtro antes de la entrega al cliente. Para las organizaciones pequeñas se propone realizar el nivel proyecto, utilizando de igual forma el proceso para llevar a cabo todas las actividades de calidad (Ver Figura 1).
Elaboración propia.
Para adecuada realización de las actividades de calidad en software hay que conocer que para cada actividad de desarrollo hay asociada una actividad de prueba. Cada nivel de prueba tiene sus objetivos específicos. Las actividades deben realizarse desde etapas iniciales del ciclo de vida del software para detectar el defecto en el nivel correspondiente y no pase a niveles superiores. Las pruebas asociadas a la eficiencia del desempeño es una actividad continua que se realizan en todos los niveles de prueba. La selección de los tipos de pruebas depende del requisito que debe cumplir el objeto a evaluar por el proyecto, estas permiten obtener los datos y resultados asociados a las medidas a conocer para los criterios de aceptación de la eficiencia del desempeño en el software.
Se considera la ejecución de estas actividades como parte del proceso de control y aseguramiento de la calidad en las instituciones y empresas desarrolladoras de software. Se propone la incorporación de las actividades desde inicio del desarrollo, además de realizarlas de forma transversal a las actividades de análisis, diseño e implementación del software, posibilitando detectar los errores en el momento en que se introducen para evitar que influya en etapas superiores y repercuta negativamente en la explotación y aceptación del sistema.
Validación de la propuesta
Para la valoración de la propuesta dada, fue necesario realizar una encuesta que permitiera obtener criterios de expertos. Para la selección de estos se aplicó la técnica de análisis curricular. Al seleccionar los expertos, se consideraron como los criterios de selección iniciales: los conocimientos relacionados con la calidad y las actividades asociadas a la eficiencia del desempeño en proyectos de software, experiencia laboral en la industria de software de 6 años en adelante y experiencia práctica en la evaluación de la eficiencia del desempeño como característica de calidad de software como el principal factor. Al tener en cuenta estos criterios se realizó un cuestionario para el conocimiento curricular y como resultado fueron elegidos 10 expertos con más de 8 años en la industria del software y de diferentes organizaciones desarrolladoras de software a nivel nacional de las instituciones: Segurmática, DESOFT, XETID, UCI, CUJAE y CALISOFT.
Luego de seleccionados los expertos, teniendo en cuenta los conocimientos sobre las características de calidad del producto y la experiencia práctica que poseen sobre el valor del cumplimiento de las mismas, se aplicó el método Delphi para aprovechar los elementos comunes en el grupo de expertos. Se preservó el anonimato mediante el uso de flujos de comunicación que permite la participación de los expertos, aunque se encuentren geográficamente dispersos (Casañola, Estrada et al., 2014). Se realizaron 3 rondas para combinar y concretar los resultados emitidos. Se arrojaron resultados satisfactorios a partir del análisis de las respuestas dadas, pues todas las categorías fueron evaluadas de Muy altas o Altas, validando la contribución de las propuestas de actividades de calidad asociadas a la eficiencia del desempeño. Además, se reafirmó como característica necesaria a incorporar al inicio del desarrollo del software y fundamental para la satisfacción y aceptación del producto por los usuarios finales. Se obtuvo una moda de Alta o Muy Alta y los expertos no emitieron votos en la escala de Baja o Ninguna. A partir de los votos emitidos por los expertos se obtienen los siguientes resultados:Tabla 3
A partir de los estos resultados anteriores se puede asegurar que los expertos consideran que la práctica iterativa y continua de las actividades de calidad propuestas permite conocer el comportamiento de la eficiencia del desempeño desde etapas temprana en el desarrollo del software, inciden positivamente en la prevención y control de los riesgos y posibilita detectar el error lo antes posible para que no influya en etapas superiores y no repercuta negativamente en la explotación del sistema y aceptación del mismo. Se reconoce que es una característica fundamental para la satisfacción de los usuarios finales.
CONCLUSIONES
En la presente investigación se concluye que el estudio de estándares, metodologías, normas y modelos más referenciados a nivel internacional y las tendencias nacionales permitió determinar que las pruebas asociadas a la eficiencia del desempeño, las revisiones técnicas formales e informales y las revisiones entre pares, son las actividades de calidad relevantes a tener en cuenta para la detección de defectos y no conformidades asociadas a la eficiencia del desempeño. Posibilitó determinar los objetivos, precondiciones, frecuencia de ejecución, productos de trabajo y resultados asociados a las actividades de calidad propuestas para evaluar la eficiencia del desempeño. Las actividades de calidad propuestas para conocer el comportamiento de la eficiencia del desempeño en el software permiten identificar los defectos asociados a esta característica lo antes posible al realizarse desde etapas tempranas del desarrollo del software, prevenir defectos, riesgos, mejorar la calidad del producto y la satisfacción de los usuarios finales al ejecutarse de forma iterativa, continua y transversal a las actividades de análisis, diseño e implementación del software como parte de las actividades de control y aseguramiento de la calidad en las empresas e instituciones.