02 October 2006

Auditoría de la Calidad del Software

Durante las tres primeras décadas de la Informática el principal desafío consistió en desarrollar el hardware de manera que se redujeran los costos de procesamiento y almacenamiento. Hoy en día el problema es diferente. La principal meta está en reducir el costo, elevar la productividad, y la eficiencia en la Industria del Software y mejorar la calidad para lograr un producto competitivo que se ajuste a los requerimientos de calidad establecidos por el cliente y por el productor. Producir “calidad“ es indispensable no sólo para lograr y conservar un segmento de mercado, contra una competencia cada vez mas aguerrida, sino por que estamos pasando de una concepción de mercado nacional a otra dimensión regional o global. La utilización de métodos y técnicas para incrementar la calidad de los productos de software permite ampliar los propios horizontes comerciales.

Cualquier organización que se dedica a la investigación, producción y comercialización de software debe tener en cuenta el factor del aseguramiento de la calidad, hoy con mas razón, donde existe un mercado en el cual el cliente es cada vez más exigente, no sólo en lo que se refiere al precio, sino sobre todo, en cuanto a los servicios y a la confiabilidad que brindan los productos de software. El aseguramiento de la calidad desempeña un rol determinante para la competitividad de la empresa. Las normas técnicas se ubican como la opción más clara para asegurar la calidad del software. Los productos fabricados bajo normas técnicas tienen mayores oportunidades comerciales en el mercado mundial.

La calidad ha dejado de ser un tópico y es necesario que forme parte de los productos o servicios que comercializamos para nuestros clientes. El cliente es el mejor auditor de la calidad, él exige el nivel que está dispuesto a pagar por ella, pero no más. Por tanto, debemos de cuantificar cuál es el nivel de calidad que nos exige para poder planificar la calidad de los productos que se generan a lo largo de la producción del producto o servicio final.

Al analizar las necesidades de nuestros clientes, deberemos tener en cuenta la previsible evolución de sus necesidades y tendencias en cuanto a características. Debemos tener en cuenta la evolución tecnológica del entorno de producción de nuestros productos de software para suministrarlos con el nivel tecnológico adecuado. No debemos olvidar el nivel de calidad de nuestros competidores, debiendo elaborar productos cuyas características y funcionalidades sean competitivas con las de nuestros competidores.

Al decidir la realización de un producto de software se debe hacer una planificación y un Plan de Calidad. En el centro de producción de software, deberá haber un Plan General de Calidad en el que estarán las especificaciones para poder definir cada uno de los planes específicos de nuestros desarrollos en función de los atributos de Calidad que deseamos implementar en el software. En este Plan se definen las actividades de Calidad que se tienen que realizar, en qué momentos tiene que intervenir la función de Aseguramiento de la Calidad, que a diferencia de Control de Calidad intervendrá proponiendo y supervisando los procesos de calidad a realizar en la fase de generación de los distintos componentes, adherencia a estándares, y la intensidad de aplicación de la misma según la criticidad de los productos y el nivel de riesgos que se haya encontrado en la evaluación del sistema.

Una Auditoria de Calidad tiene como objetivo mostrar la situación real para aportar confianza y destacar las áreas que pueden afectar adversamente esa confianza. Otro objetivo consiste en suministrar una evaluación objetiva de los productos y procesos para corroborar la conformidad con los estándares, las guías, las especificaciones y los procedimientos.

Para realizar la evaluación de la Calidad del Software se puede, entre otros, considerar la Norma ISO 9126-1:2001. Esta Norma define las características de calidad como un conjunto de atributos del producto de software a través de los cuales la calidad es descripta y evaluada. Estas características de calidad del software pueden ser precisadas a través de múltiples niveles de subcaracterísticas.

Esta Norma tiene 4 partes: (a) Modelo de Calidad – ISO 9126-1:2001 (b) Métricas Externas, las cuales miden el software en sí mismo (Calidad Externa) – ISO 9126-2:2003 (c) Métricas Internas, las cuales miden el comportamiento del sistema (Calidad Interna) – ISO 9126-3: 2003 (d) Calidad en Uso, el cual mide el efecto de usar el software en un contexto específico – ISO 9126-4:2004

Las 3 últimas partes tienen métricas asociadas por cada Subcaracterística definida.

ISO 9126-1:2001 plantea las siguientes características de calidad: (1) Funcionalidad, (2) Confiabilidad, (3) Facilidad de Uso, (4) Eficiencia, (5) Facilidad de Mantenimiento y (6) Portabilidad.

La Funcionalidad (1) es el conjunto de atributos que se refieren a la existencia de un conjunto de funciones y sus propiedades específicas. Las funciones cumplen unos requerimientos o satisfacen unas necesidades implícitas. Las subcaracterísticas de la Funcionalidad son: Aptitud, Precisión, Interoperatividad, Conformidad, Seguridad y Trazabilidad.

La Confiabilidad (2) es el conjunto de atributos que se refieren a la capacidad del software de mantener su nivel de rendimiento bajo unas condiciones especificadas durante un período definido. Las subcaracterísticas de la Confiabilidad son: Madurez, Tolerancia a fallas, Facilidad de Recuperación, Disponibilidad y Degradabilidad.

La Facilidad de Uso (3) es el conjunto de atributos que se refieren al esfuerzo necesario para usarlo, y sobre la valoración individual de tal uso, por un conjunto de usuarios definidos e implícitos. Las subcaracterísticas de la Facilidad de Uso son: Comprensibilidad, Facilidad de aprendizaje, Operatividad, Explicitud, Adaptabilidad al usuario, Atractivo, Claridad, Facilidad de ayudas y Amistoso al usuario.

La Eficiencia (4) es el conjunto de atributos que se refieren a las relaciones entre el nivel de rendimiento del software y la cantidad de recursos utilizados bajo unas condiciones predefinidas. Las subcaracterísticas de la Eficiencia son: Respecto al tiempo y Respecto a los recursos.

La Facilidad de Mantenimiento (5) es el conjunto de atributos que se refieren al esfuerzo necesario para hacer modificaciones especificadas. .Las subcaracterísticas de la Facilidad de Mantenimiento son: Facilidad de análisis, Facilidad de cambio, Estabilidad y Facilidad de prueba.

La Portabilidad (6) es el conjunto de atributos que se refieren a la habilidad del software para ser transferido desde un entorno a otro. Las subcaracterísticas de la Portabilidad son: Adaptabilidad, Facilidad de instalación, Conformidad y Facilidad de Reemplazo.

La valoración de estas características es útil para que el usuario pueda definir los requerimientos del producto utilizando solamente las características que emplee en la práctica. Para algunos tipos de productos de software, hay determinadas características que no son significativas y las restantes no garantizan que con ellas comprendan todos los requerimientos de los productos de software, por lo que en cada caso habrá que completarlas con otras definiciones más específicas para esos productos o situaciones. No obstante el modelo tiene el nivel de abstracción suficiente como para que sea adaptable en la mayoría de las situaciones, siendo además, independiente de la tecnología.

ISO 25000:2005 (SQuaRE -Software Quality Requirements and Evaluation) es una nueva serie de normas que se basa en ISO 9126 y en ISO 14598 (Evaluación del software). Uno de los principales objetivos de la serie SQuaRE es la coordinación y harmonización del contenido de ISO 9126 y de ISO 15939:2002 (Measurement Information Model). ISO 15939 tiene un modelo de información que ayuda a determinar que se debe especificar durante la planificación, performance y evaluación de la medición. Para su aplicación, cuenta con los siguientes pasos: (1) Recopilar los datos, (2) Preparación de los datos y (3) Análisis de los datos.

La integración de ISO 9126 e ISO 15939 permiten plantear un proceso de 4 pasos: (1) Identificación de los requerimientos relacionados a la calidad del producto, es decir, seleccionar la parte del modelo de calidad (ISO/IEC 9126-n) que resulta relevante para la evaluación de calidad. (2) Identificación del contexto de interpretación. Es decir, selección de los valores de referencia y determinación de los target especificados en un contexto determinado (3) Uso de las medidas derivadas de la etapa de preparación de los datos (4) Comparación y análisis de los resultados obtenidos respecto de un conjunto de valores de referencia.

SQuaRE incluye un estándar de requerimientos de calidad. Está compuesto por 14 documentos agrupados en 5 tópicos: (1) Administración de la Calidad – 2500n, (2) Modelo de Calidad – 2501n, (3) Medidas de Calidad – 2502n, (4) Requerimientos de Calidad – 2503n y (5) Evaluación de la Calidad – 2504n.

Administración de la Calidad (1): abarca: (1) Guía para SquaRE – Overview de la estructura y terminología y (2) Planificación y Administración – Provee una guía para planificar y administrar las evaluaciones del software.

Modelo de Calidad (2): describe el modelo de calidad interno / externo y la calidad en uso. Presenta características y subcaracterísticas.

Medidas de Calidad (3): Medición de primitivas, Medidas para la calidad interna, Medidas para la calidad externa y Medidas para la calidad en uso.

Requerimientos de Calidad (4): permite habilitar la calidad del software a ser especificado en términos de requerimientos de calidad durante todo el ciclo de vida de un proyecto de software o adquisición, mantenimiento y operación.

Evaluación de la Calidad (5): Evaluación de la Calidad, Proceso para desarrolladores, Proceso para compradores, Proceso para evaluadores y Documentación del módulo de evaluación.

Estos 5 tópicos conforman la Arquitectura de SQuaRE.

Los beneficios de utilizar SQuare son: (1) El modelo representa la calidad esperada del producto de software, (2) Planteo del desdoblamiento de las necesidades o expectativas en calidad en uso, calidad externa y calidad interna, (3) Permite una mayor eficacia en la definición del software, (4) Plantea la evaluación de productos intermedios, (5) Propone una calidad final a través de las evaluaciones intermedias, (6) Permite efectuar un rastreo entre las expectativas, requisitos y medidas de evaluación; y (7) Mejora la calidad del producto.

Los pasos para la realización de una Auditoria de la Calidad del Software son: (1) Identificación del Producto de software que se pretende auditar, (2) Determinar los Requisitos aplicables, (3) Relevar la información necesaria para el cálculo de las métricas de los requisitos aplicables, (4) Evaluar la Calidad del Software usando las métricas respecto de los requisitos establecidos en el paso 2 y determinar su cumplimiento, (5) Establecer las acciones correctivas respecto de los requisitos evaluados y (6) Elaborar un Informe Final.

El Informe de Auditoria de la Calidad es un medio formal para comunicar los objetivos de la Auditoria, el cuerpo de las normas de Auditoria, el alcance de la Auditoria, y los hallazgos y conclusiones. Es el documento que refleja los objetivos, alcances, observaciones, recomendaciones y conclusiones del proceso de evaluación relacionados con las áreas de informática. El Informe debe incluir suficiente información para que sea comprendido por los destinatarios esperados y facilitar las acciones correctivas.

Existen esquemas recomendados respecto de los informes de auditoria con los requisitos mínimos aconsejables respecto a estructura y contenido. Los puntos esenciales de un Informe de Auditoria son: (1) Identificación del Informe, (2) Identificación del Cliente, (3) Identificación de la Entidad auditada, (4) Objetivos de la Auditoria Informática, (5) Normativa aplicativa y excepciones, (6) Alcance de la Auditoria, (7) Conclusiones: Informe corto de opinión , (8) Resultado: Informe largo y otros informes, (9) Informe previo, (10) Fecha del Informe, (11) Identificación y firma del Auditor, (12) Distribución del Informe y (13) Conclusiones.

Por último, se puede decir que la Auditoria de la Calidad del Software puede traer aparejado la certificación del software, lo cual permite mejorar el nivel de competitividad de la empresa con sus respectivas consecuencias.