¿Cómo medir la calidad en software?

El concepto de calidad encuentra muchas definiciones posibles. La más tradicional se refiere al «conjunto de cualidades de una persona o cosa». Sin embargo, las definiciones vinculadas a las actividades industriales hablan de la medida en que un producto o servicio satisface los requerimientos de una función dada. De todas formas, el concepto es subjetivo. Por ejemplo, un producto que cumple con las expectativas de un usuario puede haber sido elaborado sin conformidad con ciertas normas de fabricación. Por eso, la calidad siempre depende del punto de vista, pero, en general, involucra el cumplimiento de un conjunto de exigencias. Otros aspectos a tener cuenta pueden ser la adecuación al uso y la ausencia de deficiencias.

Entonces, ¿qué es la calidad de un producto software? Existen dos enfoques posibles:

  • Calidad funcional. Refleja en qué medida el software cumple con o se ajusta a un determinado diseño, basado en requerimientos funcionales. Éstos abarcan las actividades del software que involucran procesamiento de datos de entrada.
  • Calidad estructural. Refleja en qué medida el software cumple con los requerimientos no funcionales, como rendimiento, capacidad de mantenimiento o escalabilidad.

El estándar ISO/IEC 9126 presenta la calidad del software como un conjunto de seis características globales:

  • Funcionalidad. Las funciones del software son aquellas que buscan satisfacer las necesidades del usuario.
  • Confiabilidad. La capacidad del software de mantener su rendimiento bajo ciertas condiciones durante cierto período de tiempo.
  • Usabilidad. Basada en el esfuerzo necesario para utilizar el software por parte de un grupo de usuarios.
  • Eficiencia. Basada en la relación entre el nivel de rendimiento del software y el volumen de recursos utilizado, bajo ciertas condiciones.
  • Capacidad de mantenimiento. Basada en el esfuerzo necesario para realizar modificaciones específicas.
  • Portabilidad. Basada en la capacidad del software para ser transferido de un entorno a otro.

El cuidado de estos aspectos durante todo el ciclo de vida del software redundará en productos que no sólo satisfarán las exigencias del usuario, sino que además serán más fáciles de mantener y modificar una vez realizada la entrega al cliente.