Introducción a la Calidad del Software
La calidad se considera como la capacidad del software que ayuda a los usuarios a satisfacer sus requisitos de efectividad, seguridad, productividad y satisfacción.
Antecedentes Históricos y la Norma ISO/IEC 9126
La calidad del producto se ha venido tratando desde hace varios años, siendo los primeros modelos desarrollados por McCall [18] y Boehm [4]. Lamentablemente, para cada proyecto se adoptaban modelos de calidad diferentes, haciendo difícil la comparación. Con la publicación de la primera edición del estándar internacional ISO/IEC 9126 en 1991, se pudo aspirar a tener un modelo base que puede ser utilizado como referencia para todos los trabajos que se realicen.
En el año 1994 se inicia la revisión de la norma internacional y se publican entre 1998 y el 2004 la serie de normas ISO/IEC 9126 (4 partes) referida al modelo de calidad de producto que incluye las métricas:
Estructura de la Serie ISO/IEC 9126 (1998-2004)
- ISO/IEC 9126-1:2001: Modelo de Calidad
- Clasifica la calidad del software, según un conjunto de factores.
- ISO/IEC 9126-2:2003: Métricas Externas
- Describe un conjunto de medidas a realizar durante la ejecución del software.
- ISO/IEC 9126-3:2003: Métricas Internas
- Describe un conjunto de medidas estáticas.
- ISO/IEC 9126-4:2004: Métricas de Calidad en Uso
- Describe las métricas aplicables para el sistema final en condiciones reales.
Además de la serie de normas ISO/IEC 14598 (6 partes) referida a la evaluación de la calidad del producto.
El modelo ISO/IEC 9126 presenta el concepto de calidad del producto descompuesto en la calidad interna, externa y en uso. En la siguiente figura, se puede apreciar que las necesidades de calidad del usuario sobre el producto software, contribuyen a especificar (definir) los requerimientos de calidad externa y estos a su vez los requerimientos de calidad interna.
El cumplimiento de los requerimientos de calidad interna, externa y en uso se debe comprobar en un proceso que permita evaluar la calidad a través de las métricas. Este enfoque de tres niveles cubre las perspectivas del usuario, desarrollador y el producto mismo.
Conceptos Fundamentales del Modelo de Calidad
Definición de Calidad del Producto Software
La calidad del producto software es una preocupación cada vez mayor en el ámbito informático y cuyos resultados inmediatos se aprecian en todas las actividades en donde se utilicen computadoras.
La serie de normas ISO/IEC 9126 (*Tecnologías de la Información – Calidad de los productos software*) establece un modelo de calidad de producto y, a manera de ejemplo, en el anexo, muestra la identificación de los requerimientos de calidad como un paso necesario para la calidad del producto.
El objetivo no es necesariamente alcanzar una calidad perfecta, sino la necesaria y suficiente para cada contexto de uso a la hora de la entrega y del uso por parte de los usuarios. Es necesario comprender las necesidades reales de los usuarios con tanto detalle como sea posible.
Enfoque de Tres Niveles de Calidad
Existen diversos aspectos que marca la Norma, como la calidad interna, externa y en uso del producto del software, la cual se integra con la calidad del proceso, basada en otras Normas de ISO/IEC. A continuación, se describe un marco del modelo de la calidad que explica la relación entre diversos acercamientos a la calidad:
Calidad Interna
- Medible a partir de las características intrínsecas, como el código fuente.
- Se mide por las propiedades estáticas del código, utilizando técnicas de inspección.
Calidad Externa
- Medible en el comportamiento del producto, como en una prueba.
- Se mide por las propiedades dinámicas del código cuando este se ejecuta.
Calidad en Uso
- Durante la utilización efectiva por parte del usuario.
- Se mide por el grado por el cual el software está realizado en función de las necesidades del usuario en el entorno de trabajo para el que fue construido.
Características y Métricas del Modelo 9126
Aspectos Generales del Modelo
En una de las cláusulas de la Norma, en su apartado 1, se define el modelo de la calidad para la calidad externa e interna. Categoriza cualidades de la calidad del software en seis características principales (funcionalidad, confiabilidad, usabilidad, eficiencia, capacidad de mantenimiento y portabilidad), que se subdividen más a fondo en subcaracterísticas, las cuales se pueden medir por métrica interna o externa.
Las definiciones se dan para cada característica y subcaracterística de la calidad del software. Para cada una, la capacidad del software es determinada por un sistema de cualidades internas que pueden ser medidas. Los ejemplos de métricas internas se dan en ISO/IEC 9126-3. Las características y subcaracterísticas se pueden medir externamente por el nivel de capacidad que es proporcionado por el sistema que contiene el software. Los ejemplos de métricas externas se dan en ISO/IEC 9126-2.
Aplicación del Estándar
La norma ISO/IEC 9126 puede ser utilizada para:
- Validar la definición de requisitos.
- Identificar requisitos software.
- Identificar objetivos para el diseño software.
- Identificar requisitos para las pruebas del software.
- Identificar requisitos para el aseguramiento de la calidad.
- Identificar criterios de aceptación para un producto software terminado.
La norma 9126 puede ser usada conjuntamente con las normas 15504, 12207 y 9001 para proporcionar un marco para la calidad del producto software y una evaluación cuantitativa de la calidad.
Requisitos y Calidad Interna
Requisitos de Calidad Internos
Especifican el nivel de la calidad requerida desde el punto de vista interno del producto. Se utilizan para especificar características de los productos en su interior. Estos pueden incluir modelos estáticos y dinámicos, otros documentos y código fuente.
Se pueden utilizar como blancos para la validación en las diferentes etapas del desarrollo; pueden también ser utilizados para definir estrategias de desarrollo y criterios de evaluación y verificación durante esta etapa. Esto puede incluir el uso de métrica adicional (la *reutilidad*) que se encuentra fuera del alcance de ISO/IEC 9126. Los requisitos de calidad internos específicos deben ser cuantitativos usando métrica interna.
Calidad Interna
Es la totalidad de características del producto de software desde una visión interna. Se mide y se evalúa contra los requisitos de calidad internos. Los detalles de la calidad del producto de software se pueden mejorar durante la puesta en práctica del código, repasando y probando; sin embargo, la naturaleza fundamental de la calidad del producto de software está representada por no existir cambios en el código a menos que sean reajustados.
Características de la Calidad Interna
- Aplican a un producto de software no ejecutable.
- Aplican durante las etapas de su desarrollo.
- Permiten medir la calidad de los entregables intermedios.
- Permiten predecir la calidad del producto final.
- Permiten al usuario iniciar acciones correctivas temprano en el ciclo de desarrollo.
Estructura de las Métricas
La numeración que a continuación se presenta hace referencia a los puntos de la Norma en mención, contenidas en el documento. Es importante señalar que en cada apartado, se presenta un ejemplo de aplicación real, descritos en tablas de métricas.
Las tablas de métricas se encuentran organizadas por característica y subcaracterística. Cada métrica contiene:
- Nombre.
- Propósito.
- Método de aplicación.
- Medida, fórmula y cómputo de datos.
- Interpretación del valor medido.
- Tipo de escala.
- Tipo de medida.
- Fuente de medición.
- Referencia a ISO/IEC 12207 SLCP.
- Audiencia.
A continuación, se detallan las métricas internas:
Métricas de Funcionalidad
Se utilizan para predecir el grado de satisfacción de las necesidades del usuario, prescritas en los requisitos funcionales.
Adecuación
Capacidad del producto software para proporcionar un conjunto apropiado de funciones para tareas y objetivos de usuario especificados. A continuación, se presenta un ejemplo de este tipo de métrica.
Exactitud
Capacidad del producto software para proporcionar los resultados o efectos correctos o acordados, con el grado necesario de precisión.
Interoperabilidad
Capacidad del producto software para interactuar con uno o más sistemas especificados.
Seguridad
Capacidad del producto software para proteger información y datos de manera que las personas o sistemas no autorizados no puedan leerlos o modificarlos, al tiempo que no se deniega el acceso a las personas o sistemas autorizados.
Conformidad de la funcionalidad
Capacidad del producto software para adherirse a normas, convenciones o regulaciones en leyes y prescripciones similares relacionadas con funcionalidad.
Métricas de Fiabilidad (Confiabilidad)
Cantidad de tiempo que el software está disponible para su uso.
Madurez
Capacidad del producto software para evitar fallar como resultado de fallos en el software. A continuación, se presenta un ejemplo de este tipo de métrica.
Tolerancia a fallos
Capacidad del software para mantener un nivel especificado de prestaciones en caso de fallos software o de infringir sus interfaces especificados.
Recuperabilidad
Capacidad del producto software para restablecer un nivel de prestaciones especificado y de recuperar los datos directamente afectados en caso de fallo.
Conformidad de la fiabilidad
Capacidad del producto software para adherirse a normas, convenciones o regulaciones relacionadas con la fiabilidad.
Métricas de Usabilidad
Grado en que el software es fácil de usar.
Entendibilidad
Capacidad del producto software que permite al usuario entender si el software es adecuado y cómo puede ser usado para unas tareas o condiciones de uso particulares. A continuación, se presenta un ejemplo de este tipo de métrica.
Aprendibilidad
Capacidad del producto software que permite al usuario aprender sobre su aplicación.
Operatibilidad
Capacidad del producto software que permite al usuario operarlo y controlarlo.
Atractivo
Capacidad del producto software para ser interesante y agradable al usuario.
Conformidad de la usabilidad
Capacidad del producto software para adherirse a normas, convenciones, guías de estilo o regulaciones relacionadas con la usabilidad.
Métricas de Eficiencia
Grado en que el software optimiza el uso de los recursos del sistema.
Comportamiento en el tiempo
Capacidad del producto software para proporcionar tiempos de respuesta, tiempos de proceso y potencia apropiados, bajo condiciones determinadas.
Utilización de recursos
Capacidad del producto software para usar las cantidades y tipos de recursos adecuados cuando el software lleva a cabo su función bajo condiciones determinadas.
Conformidad de la eficiencia
Capacidad del producto software para adherirse a normas o convenciones relacionadas con la eficiencia.
Métricas de Mantenibilidad
La facilidad con que una modificación puede ser realizada.
Analizabilidad
Es la capacidad del producto software para diagnosticar deficiencias o causas de los fallos en el software, o para identificar las partes que han de ser modificadas.
Cambiabilidad
Capacidad del producto software que permite que una determinada modificación sea implementada. A continuación, se presenta un ejemplo de este tipo de métrica.
Estabilidad
Capacidad del producto software para evitar efectos inesperados debidos a modificaciones del software.
Examinabilidad
Capacidad del producto software que permite que el software modificado sea validado.
Conformidad de la mantenibilidad
Capacidad del producto software para adherirse a normas o convenciones relacionadas con la mantenibilidad.
Métricas de Portabilidad
La facilidad en que el software puede ser llevado de un entorno a otro.
Adaptabilidad
Capacidad del producto software para ser adaptado a diferentes entornos especificados, sin aplicar acciones o mecanismos distintos de aquellos proporcionados para este propósito por el propio software considerado.
Instalabilidad
Capacidad del producto software para ser instalado en un entorno especificado.
Coexistencia
Capacidad del producto software para coexistir con otro software independiente, en un entorno común, compartiendo recursos comunes.
Reemplazabilidad
Capacidad del producto software para ser usado en lugar de otro producto software, para el mismo propósito, en el mismo entorno.
Conformidad de la portabilidad
Capacidad del producto software para adherirse a normas o convenciones relacionadas con la portabilidad. A continuación, se presenta un ejemplo de este tipo de métrica.
