Los pecados capitales son una clasificación de los vicios mencionados en las primeras enseñanzas del cristianismo para educar a sus seguidores acerca de la moral cristiana. En este artículo pretendemos crear una clasificación de pecados capitales del desarrollo software con la intención de educar a los desarrolladores de software acerca de la calidad del software.
En la actualidad para la evaluación de la calidad de software nos basamos en la ISO 9126 pero dicha norma está siendo reemplazada por el proyecto SQuaRE con la ISO 25000.
Cada pecado capital fue relacionado con una virtud por la Iglesia católica romana. Por ejemplo, el pecado relacionado con la avaricia nos priva de ser personas generosas con los demás. En nuestro caso encontramos la misma relación, si encontramos líneas de código duplicado o muerto nuestro código deja de ser mantenible.
Los pecados capitales de la calidad del software deben ser definidos para educar a los desarrolladores acerca de la calidad del software. Los pecados capitales de la calidad del software son:
- Incumplir los estándares de codificación y las reglas de buenas prácticas
- Carecer de comentarios en el código fuente, especialmente en APIs públicas
- Encontrar líneas de código duplicado o muerto
- Contar con componentes demasiado complejos
- Tener una cobertura de código baja en las pruebas unitarias
- Detectar ciclos
- Diseñar componentes con baja cohesión y alto acoplamiento
El término “capital” no se refiere a la magnitud del pecado sino a que da origen a muchos otros pecados. El problema es que los pecados de la calidad del software originan problemas graves a la hora de poner en producción un sistema. Por esta razón, es necesario detectarlos en una etapa temprana y arreglarlos.
Para arreglar estos pecados capitales es necesario hablar de calidad. Según la definición, de la propia Real Academia de la Lengua, la calidad es: “La propiedad o conjunto de propiedades inherentes a algo, que permite juzgar su valor”. Hablando en estándares de calidad la ISO 9000 nos define la calidad como: “El grado en el que un conjunto de características inherentes cumple con los requisitos”. Mientras que la ISO 25000 define la calidad como: “El grado en que un producto software satisface las necesidades expresadas o implícitas, cuando es usado bajo condiciones determinadas”.
En la actualidad para la evaluación de la calidad de software nos basamos en la ISO 9126 pero dicha norma está siendo remplazada por el proyecto SQuaRE con la ISO 25000. El proyecto nació por la inconsistencia entre la ISO 9126 y la ISO 14598. La inconsistencia de los dos modelos viene determinada por la independencia de los ciclos de vida de ambos. Su objetivo principal es guiar el desarrollo de los productos de software con dos procesos principales:
- la especificación de requisitos de la calidad software
- la evaluación de la calidad software (con el apoyo de un proceso de medición de la calidad)
SQuaRE está formada por las divisiones siguientes:
Se define un ciclo de vida de calidad del producto software basado en tres fases:
- La fase de un producto en desarrollo define la calidad interna
- La fase de un producto en pruebas define la calidad externa
- La fase de un producto en uso define la calidad en uso
En la ISO 25000 se habla de dos partes diferenciadas: la calidad interna y externa, que pasa a llamarse modelo de calidad del producto, y la calidad en uso. El modelo de calidad del producto se encarga de evaluar la calidad de un producto software, o de un sistema de un ordenador que incluya software. La calidad en uso se encarga de evaluar la calidad de la interacción con un sistema. Las partes se interrelacionan, afectando los valores de la calidad interna a los de la calidad externa y los de la calidad externa a los de la calidad en uso. Por lo tanto, la calidad en uso dependerá de la calidad interna y externa. Esta relación se puede observar en el ciclo de vida del modelo en la siguiente figura:
El modelo de calidad categoriza la calidad del software en características que a su vez son divididas en subcaracterísticas y atributos de calidad. Consiste en dos partes, el modelo para calidad interna y externa y el modelo para calidad en uso.
El modelo de calidad del producto de la ISO 25000 clasifica la calidad del producto en ocho características: funcionalidad, rendimiento, compatibilidad, usabilidad, fiabilidad, seguridad, mantenibilidad y portabilidad. La siguiente figura representa gráficamente dicha clasificación:
El modelo de calidad en uso de la ISO 25000 clasifica la calidad en uso en cinco características: efectividad, productividad, seguridad, satisfacción y contexto de uso. La siguiente figura representa gráficamente dicha clasificación:
Cada pecado capital de la calidad de software está relacionado con alguna de las características de la calidad del producto definidas en la ISO 25000. Por lo tanto, debemos ser capaces de detectar estos problemas con la intención de arreglarlos para cumplir con la calidad de software definida en el estándar. Si un producto software cumple la norma ISO 25000 podemos asegurar que estará libre de pecados capitales de la calidad de software.