¿Cómo evaluar la calidad de un software?
Un post escrito con ayuda de ChatGPT
Hace algunas semanas en mi equipo de trabajo se planteó la idea de hacer una revisión general de la calidad de nuestras apps. Y aunque en la actualidad nosotros realizamos prácticas y tenemos procesos para evaluar y hacer seguimiento de las aplicaciones de nuestra área, no hay un documento formal que lo defina o que sirva de guía para hacer una evaluación de este tipo. Así fue como nació la idea de escribir este artículo y ya que por estos días está tan de moda ChatGPT quise ayudarme de esta inteligencia artificial para hacer una investigación sobre el tema.
La calidad del software es un factor crucial en el éxito de un proyecto de desarrollo de software. Un software de alta calidad es fiable, fácil de usar y sostenible a lo largo del tiempo, mientras que un software de baja calidad puede tener problemas de confiabilidad, usabilidad y sostenibilidad, lo que puede llevar a retrasos y costos adicionales en el proyecto. Por lo tanto, es importante evaluar la calidad del software de manera adecuada para garantizar que cumpla con los requisitos del usuario y sea de alta calidad.
Existen diferentes maneras de evaluar la calidad de un software. Algunos de los factores que se pueden considerar al evaluar la calidad de un software incluyen:
- Fiabilidad: ¿El software es confiable y se ejecuta sin errores?
- Usabilidad: ¿Es fácil de usar el software para los usuarios? ¿Es intuitivo?
- Rendimiento: ¿El software se ejecuta de manera rápida y eficiente?
- Mantenibilidad: ¿Es fácil de mantener y mejorar el software a lo largo del tiempo?
- Seguridad: ¿El software está protegido contra vulnerabilidades y ataques de seguridad?
- Escalabilidad: ¿El software puede manejar una carga de trabajo aumentada sin interrupciones o fallos?
- Portabilidad: ¿El software puede ejecutarse en diferentes plataformas y entornos?
Como lo vemos en el anterior listado, los factores a evaluar en un software son diversos, ahora la pregunta es ¿cómo hacemos esa evaluación? Detengamonos un momento a revisar cómo hacerlo para cada uno de ellos.
¿Cómo evaluar fiabilidad en un software?
- Pruebas de resistencia: Es una técnica que se utiliza para evaluar la fiabilidad del software mediante la ejecución de pruebas que someten al software a condiciones extremas o a un uso prolongado. Estas pruebas pueden incluir pruebas de duración, pruebas de stress y pruebas de carga.
- Análisis de fallos: Es una técnica que se utiliza para evaluar la fiabilidad del software mediante la identificación y análisis de fallos o errores en el software. Esto se puede realizar mediante la ejecución de pruebas de software o mediante la revisión del código fuente.
- Pruebas de recuperación: Es una técnica que se utiliza para evaluar la fiabilidad del software mediante la evaluación de la capacidad del software para recuperarse de errores o fallos. Esto se puede realizar mediante la ejecución de pruebas que simulan situaciones de error y evaluan la capacidad del software para recuperarse de ellas.
¿Cómo evaluar usabilidad en un software?
- Pruebas de usabilidad: Es una técnica que se utiliza para evaluar la usabilidad del software mediante la ejecución de pruebas con usuarios reales. Estas pruebas pueden incluir: pruebas de usabilidad participativas, pruebas de usabilidad individuales y pruebas de usabilidad grupales.
- Evaluación de expertos: Es una técnica que se utiliza para evaluar la usabilidad del software mediante la evaluación del software por parte de expertos en usabilidad. Estos expertos pueden utilizar un conjunto de heurísticas o principios de usabilidad para evaluar el software y proporcionar recomendaciones para mejorarlo.
- Observación de usuarios: Es una técnica que se utiliza para evaluar la usabilidad del software mediante la observación de usuarios mientras utilizan el software. Esto puede proporcionar información valiosa sobre problemas de usabilidad que pueden no ser evidentes mediante otras técnicas de evaluación.
- Encuestas y grupos focales: Son técnicas que se utilizan para evaluar la usabilidad del software mediante la recopilación de comentarios y opiniones de los usuarios a través de encuestas o grupos focales. Esto puede proporcionar información valiosa sobre la usabilidad del software desde el punto de vista del usuario.
¿Cómo evaluar rendimiento en un software?
- Pruebas de rendimiento: Es una técnica que se utiliza para evaluar el rendimiento del software mediante la ejecución de pruebas que someten al software a cargas o condiciones de uso extremas. Estas pruebas pueden incluir: pruebas de carga, pruebas de stress y pruebas de rendimiento en condiciones de uso real.
- Análisis de rendimiento: Es una técnica que se utiliza para evaluar el rendimiento del software mediante el análisis de los tiempos de respuesta y la utilización de los recursos del sistema durante la ejecución del software. Esto se puede realizar mediante el uso de herramientas de análisis de rendimiento o mediante el análisis manual de los registros del sistema.
- Pruebas de escala: Son una técnica que se utiliza para evaluar el rendimiento del software mediante la evaluación de la capacidad del software para manejar una mayor carga o un mayor número de usuarios. Esto se puede realizar mediante la ejecución de pruebas que aumentan progresivamente la carga o el número de usuarios y evaluando el rendimiento del software a medida que aumenta la carga.
¿Cómo evaluar mantenibilidad en un software?
- Revisión de código: Es una técnica que se utiliza para evaluar la mantenibilidad del software mediante la revisión del código fuente por parte de un experto o equipo de revisores. Esta revisión puede incluir la evaluación de la calidad del código, la claridad del código y la facilidad de mantenimiento del código.
- Análisis de estructura del código: Es una técnica que se utiliza para evaluar la mantenibilidad del software mediante el análisis de la estructura del código y la identificación de posibles problemas de mantenibilidad. Esto se puede realizar mediante el uso de herramientas de análisis de estructura del código o mediante el análisis manual del código.
- Pruebas de mantenibilidad: Es técnica que se utiliza para evaluar la mantenibilidad del software mediante la ejecución de pruebas que evalúan la facilidad de modificar y mantener el software. Estas pruebas pueden incluir pruebas de modificación, pruebas de integración y pruebas de regresión.
- Análisis de la documentación del código: Es una técnica que se utiliza para evaluar la mantenibilidad del software mediante la evaluación de la calidad y completitud de la documentación del código. Esto puede incluir la evaluación de la claridad y precisión de la documentación, así como de la facilidad de acceso y uso de la documentación.
¿Cómo evaluar seguridad en un software?
- Pruebas de penetración: Las pruebas de penetración son una técnica que se utiliza para evaluar la seguridad del software mediante la simulación de ataques reales al software. Esto se puede realizar mediante el uso de herramientas automatizadas de pruebas de penetración o mediante el uso de expertos en seguridad que manualmente evalúen la seguridad del software.
- Análisis de seguridad del código: El análisis de seguridad del código es una técnica que se utiliza para evaluar la seguridad del software mediante el análisis del código fuente en busca de vulnerabilidades de seguridad. Esto se puede realizar mediante el uso de herramientas de análisis de seguridad del código o mediante el análisis manual del código.
- Evaluación de la seguridad del sistema: La evaluación de la seguridad del sistema es una técnica que se utiliza para evaluar la seguridad del software mediante la evaluación de la seguridad del sistema completo en el que se ejecuta el software. Esto incluye la evaluación de la seguridad de los sistemas operativos, la red y otros componentes del sistema que puedan afectar la seguridad del software.
- Análisis de vulnerabilidades: El análisis de vulnerabilidades es una técnica que se utiliza para evaluar la seguridad del software mediante la identificación de vulnerabilidades conocidas en el software y la evaluación del riesgo que estas vulnerabilidades representan para la seguridad del software.
¿Cómo evaluar escalabilidad en un software?
- Pruebas de escala: Es una técnica que se utiliza para evaluar la escalabilidad del software mediante la evaluación de la capacidad del software para manejar una mayor carga o un mayor número de usuarios. Esto se puede realizar mediante la ejecución de pruebas que aumentan progresivamente la carga o el número de usuarios y evaluando el rendimiento del software a medida que aumenta la carga.
- Análisis de rendimiento: Es una técnica que se utiliza para evaluar la escalabilidad del software mediante el análisis de los tiempos de respuesta y la utilización de los recursos del sistema durante la ejecución del software. Esto se puede realizar mediante el uso de herramientas de análisis de rendimiento o mediante el análisis manual de los registros del sistema.
- Evaluación de la arquitectura del software: Es una técnica que se utiliza para evaluar la escalabilidad del software mediante la evaluación de la arquitectura del software y la identificación de posibles problemas de escalabilidad. Esto se puede realizar mediante el análisis de la arquitectura del software y la evaluación de la facilidad de añadir nuevas funcionalidades o soportar un mayor número de usuarios.
- Análisis de requisitos: Es una técnica que se utiliza para evaluar la escalabilidad del software mediante la identificación de los requisitos de escalabilidad del software y la evaluación de la capacidad del software para satisfacer estos requisitos. Esto incluye la evaluación de la capacidad del software para soportar un mayor número de usuarios, un mayor volumen de datos y un mayor número de transacciones.
¿Cómo evaluar portabilidad en un software?
- Pruebas de portabilidad: Es una técnica que se utiliza para evaluar la portabilidad del software mediante la ejecución de pruebas que evalúan la capacidad del software para funcionar en diferentes entornos o plataformas. Esto puede incluir la evaluación de la capacidad del software para funcionar en diferentes sistemas operativos, navegadores o dispositivos.
- Análisis de la arquitectura del software: Es una técnica que se utiliza para evaluar la portabilidad del software mediante el análisis de la arquitectura del software y la identificación de posibles problemas de portabilidad. Esto se puede realizar mediante el análisis de la arquitectura del software y la evaluación de la facilidad de adaptar el software a diferentes plataformas o entornos.
- Análisis de dependencias: Es una técnica que se utiliza para evaluar la portabilidad del software mediante la identificación de las dependencias del software y la evaluación de la capacidad del software para funcionar sin estas dependencias o con versiones alternativas de las mismas.
- Análisis de la documentación del software: Es una técnica que se utiliza para evaluar la portabilidad del software mediante la evaluación de la calidad y completitud de la documentación del software. Esto puede incluir la evaluación de la claridad y precisión de la documentación, así como de la facilidad de acceso y uso de la documentación.
Marcos de referencia
- ISO 9126: Este marco de referencia se centra en la calidad del software y se divide en seis características de calidad: funcionalidad, confiabilidad, usabilidad, eficiencia, mantenibilidad y portabilidad.
- CMMI (Capability Maturity Model Integration): Este marco de referencia se centra en la gestión del proceso de desarrollo del software y se divide en cinco niveles de madurez: iniciado, definido, gestionado, medido y optimizado.
- ISO 25010: Este marco de referencia se centra en la calidad del software y se divide en ocho características de calidad: funcionalidad, confiabilidad, usabilidad, eficiencia, mantenibilidad, portabilidad, seguridad y cumplimiento.
- ISO 25020: Este marco de referencia se centra en la evaluación de la calidad del software y proporciona un conjunto de principios y directrices para evaluar la calidad del software.
- ISO 25040: Este marco de referencia se centra en la evaluación de la calidad del software y proporciona un conjunto de principios y directrices para evaluar la calidad del software utilizando métricas de calidad.
ISO 9126
El ISO 9126 es un marco de referencia para la evaluación de la calidad del software. Fue desarrollado por la Organización Internacional de Normalización (ISO) y se centra en la calidad del software. Se divide en seis características de calidad: funcionalidad, confiabilidad, usabilidad, eficiencia, mantenibilidad y portabilidad. Cada una de estas características se divide a su vez en subcaracterísticas más específicas.
Además de las seis características de calidad mencionadas anteriormente, el ISO 9126 también proporciona un conjunto de principios y directrices para la evaluación de la calidad del software. Estos principios y directrices incluyen:
- La evaluación de la calidad del software debe ser un proceso continuo que se realice a lo largo del ciclo de vida del software.
- La evaluación de la calidad del software debe ser objetiva y basada en criterios de calidad establecidos.
- La evaluación de la calidad del software debe ser realizada por un equipo de evaluación de calidad formado por expertos en el campo.
- La evaluación de la calidad del software debe proporcionar resultados que sean útiles para mejorar la calidad del software.
- La evaluación de la calidad del software debe ser realizada en un entorno controlado y en condiciones que sean lo más similares posibles al entorno de uso real del software.
Procedimientos para evaluar la calidad de un software
- Pruebas de software: Las pruebas de software son una forma efectiva de evaluar la calidad de un software. Se pueden utilizar diferentes tipos de pruebas, como pruebas de unidad, pruebas de integración, pruebas de sistema y pruebas de aceptación, para evaluar diferentes aspectos del software.
- Revisión de código: La revisión de código es otra forma de evaluar la calidad de un software. Durante la revisión de código, uno o más programadores examinan el código del software para buscar errores y mejoras potenciales.
- Análisis estático de código: El análisis estático de código es un proceso en el que se utiliza una herramienta de análisis de código para examinar el código del software en busca de problemas de calidad.
- Evaluación de usuario: Involucra a los usuarios del software en la evaluación de la calidad. Los usuarios pueden proporcionar comentarios y opiniones sobre la usabilidad, la fiabilidad y otras características clave del software.
- Análisis de requisitos: El análisis de requisitos es un proceso en el que se examinan los requisitos del software para asegurarse de que están completos, correctos y coherentes. Esto puede ayudar a identificar problemas de calidad potenciales antes de que ocurran.
Metodologías para evaluar la calidad de un software
Cuantitativas
Análisis de métricas de calidad del software
Se utilizan métricas específicas para medir diferentes aspectos de la calidad del software. Algunas métricas comunes incluyen:
- Número de errores por línea de código: Esta métrica mide la cantidad de errores presentes en el código del software. Un valor bajo indica una mayor calidad del software.
- Tasa de fallos por prueba: Esta métrica mide la cantidad de errores encontrados durante las pruebas del software. Un valor bajo indica una mayor calidad del software.
- Tiempo de respuesta del software: Esta métrica mide el tiempo que tarda el software en responder a una solicitud. Un valor bajo indica una mayor calidad del software.
- Número de cambios en el código: Esta métrica mide la cantidad de cambios realizados en el código del software. Un valor bajo indica una mayor calidad del software.
El análisis de métricas de calidad del software puede ser útil para identificar problemas de calidad y para medir el progreso en la mejora de la calidad del software a lo largo del tiempo.
Análisis de defectos
Se lleva un registro de los errores o defectos que se encuentran durante el desarrollo o la prueba del software, y luego se utilizan estos datos para medir la calidad del software.
El análisis de defectos de calidad del software se puede realizar de varias maneras, tales como:
- Pruebas: Las pruebas son una forma de identificar defectos en el software. Las pruebas pueden incluir pruebas unitarias, pruebas de integración y pruebas de aceptación.
- Revisión de código: La revisión de código es una técnica que se utiliza para examinar el código del software y buscar errores o problemas. La revisión de código se puede realizar de forma manual o utilizando herramientas de análisis de código.
- Análisis de fallos: El análisis de fallos es una técnica que se utiliza para evaluar la calidad del software examinando el historial de fallos del software y determinando las causas de los fallos.
- Monitoreo de la calidad del software: El monitoreo de la calidad del software es una técnica que se utiliza para evaluar la calidad del software mediante el seguimiento del rendimiento y el comportamiento del software durante su ejecución.
- Análisis de la calidad del software: El análisis de la calidad del software es una técnica que se utiliza para evaluar la calidad del software mediante el análisis de la documentación y el código del software y la aplicación de técnicas y herramientas específicas para evaluar la calidad del software.
Análisis de costo-beneficio
Se evalúa el costo de mejorar la calidad del software en comparación con los beneficios que se esperan obtener, y se toma una decisión sobre si la mejora de la calidad del software es rentable.
Esta técnica se utiliza para determinar si es rentable invertir en mejoras de calidad del software y para identificar qué cambios en la calidad del software son más importantes para implementar.
Para realizar un análisis de costo-beneficio de calidad del software, es necesario identificar y evaluar los costos y beneficios asociados con las mejoras de calidad del software. Los costos pueden incluir los costos de desarrollo y mantenimiento adicionales necesarios para implementar las mejoras de calidad, mientras que los beneficios pueden incluir una reducción en el número de errores y fallos, una mayor satisfacción del usuario y una mayor eficiencia en la ejecución del software.
Una vez que se han identificado y evaluado los costos y beneficios, se puede calcular el costo-beneficio de cada mejora de calidad propuesta y comparar los resultados para determinar cuáles son las mejoras más rentables.
Cualitativas
Evaluación de usuario
La evaluación de usuario involucra a los usuarios del software en la evaluación de la calidad del software. Los usuarios pueden proporcionar comentarios y opiniones sobre la usabilidad, la fiabilidad y otras características clave del software.
La evaluación de usuario se puede realizar de varias maneras, tales como:
- Pruebas de usuario: Las pruebas de usuario son pruebas que se realizan para evaluar la calidad del software desde el punto de vista del usuario. Estas pruebas pueden incluir la observación de usuarios mientras utilizan el software y la recopilación de comentarios y sugerencias de los usuarios sobre la usabilidad y la satisfacción con el software.
- Encuestas de usuario: Las encuestas de usuario son una forma de evaluar la calidad del software desde el punto de vista del usuario mediante la recopilación de comentarios y opiniones de los usuarios sobre la usabilidad y la satisfacción con el software.
- La evaluación heurística es una técnica que se utiliza para evaluar la calidad del software desde el punto de vista del usuario mediante el análisis del software en relación con un conjunto de principios de usabilidad conocidos como heurísticas. Las heurísticas son reglas generales o guías que se utilizan para evaluar la usabilidad y la experiencia del usuario con el software.
- Evaluación de expertos: La evaluación de expertos es una técnica que se utiliza para evaluar la calidad del software desde el punto de vista del usuario mediante la utilización de expertos en diseño de software y usabilidad para evaluar el software y proporcionar recomendaciones para mejorar la usabilidad y la satisfacción del usuario.
- Análisis de métricas de usuario: Las métricas de usuario son medidas cuantitativas que se pueden utilizar para evaluar la calidad del software desde el punto de vista del usuario. Algunas métricas comunes incluyen el tiempo de respuesta del software, el porcentaje de tareas completadas con éxito y la tasa de abandono del software.
Revisión de código
La revisión de código es una forma de evaluar la calidad del software en la que uno o más programadores examinan el código del software para buscar errores y mejoras potenciales.
La revisión de código es una metodología de calidad de software que se centra en examinar el código del software para identificar errores o problemas. Esta metodología se utiliza para mejorar la calidad del software y para asegurar que el código cumpla con los estándares de calidad y se adhiera a las buenas prácticas de programación.
La revisión de código se puede realizar de forma manual o utilizando herramientas de análisis de código. En la revisión de código manual, uno o más revisores examinan el código y buscan errores o problemas. En la revisión de código utilizando herramientas de análisis de código, se utiliza una herramienta de software para analizar automáticamente el código y buscar problemas.
La revisión de código se puede realizar en cualquier momento durante el ciclo de vida del desarrollo del software, pero se suele realizar antes o durante la prueba del software. La revisión de código es una técnica útil para mejorar la calidad del software y para asegurar que el código cumpla con los estándares de calidad y se adhiera a las buenas prácticas de programación.
Análisis de requisitos
El análisis de requisitos es un proceso en el que se examinan los requisitos del software para asegurarse de que están completos, correctos y coherentes. Esto puede ayudar a identificar problemas de calidad potenciales antes de que ocurran.
El análisis de requisitos se puede realizar de varias maneras, tales como:
- Revisión de requisitos: La revisión de requisitos es una técnica que se utiliza para evaluar la calidad de los requisitos del software mediante la revisión de los requisitos para asegurar que sean completos, consistentes y correctos.
- Análisis de ambigüedad: El análisis de ambigüedad es una técnica que se utiliza para evaluar la calidad de los requisitos del software mediante la identificación de ambigüedades o problemas de interpretación en los requisitos.
- Análisis de viabilidad: El análisis de viabilidad es una técnica que se utiliza para evaluar la calidad de los requisitos del software mediante la evaluación de la viabilidad técnica y el impacto en el proyecto de cumplir con los requisitos. Esta técnica se utiliza para asegurar que los requisitos del software sean realistas y factibles de implementar.
Pruebas de usuario
Las pruebas de usuario son una forma de evaluar la calidad del software en la que se involucra a los usuarios en el proceso de prueba para obtener una perspectiva realista de la calidad del software desde el punto de vista del usuario.
Estas pruebas se realizan para evaluar la usabilidad y la satisfacción del usuario con el software y proporcionar recomendaciones para mejorar estos aspectos.
Las pruebas de usuario se pueden realizar de varias maneras, tales como:
- Observación de usuarios: La observación de usuarios es una técnica que se utiliza para evaluar la calidad del software desde el punto de vista del usuario mediante la observación de usuarios mientras utilizan el software. Esta técnica se utiliza para identificar problemas de usabilidad y proporcionar recomendaciones para mejorar la experiencia del usuario con el software.
- Encuestas de usuario: Las encuestas de usuario son una forma de evaluar la calidad del software desde el punto de vista del usuario mediante la recopilación de comentarios y opiniones de los usuarios sobre la usabilidad y la satisfacción con el software.
- Grupos focales: Los grupos focales son reuniones en las que se reunen un pequeño grupo de usuarios para discutir y evaluar el software. Esta técnica se utiliza para recopilar comentarios y opiniones de los usuarios sobre la usabilidad y la satisfacción con el software.
Referencias
- Respuestas de ChatGPT https://openai.com/blog/chatgpt/