INGENIERÍA INFORMÁTICA CALIDAD DEL SOFTWARE TEMA: Conceptos Iniciales. Ing. David Sánchez Rivero Concepto: la calidad se ha convertido hoy en día en uno de los principales objetivos estratégicos para las organizaciones debido a que, cada vez más , su supervivencia depende de la calidad de los productos y servicios que ponen a disposición de los usuarios y clientes y de la satisfacción de estos. Definiciones: Según el diccionario de la Real Academia Española, la calidad es: 1. Propiedad o conjunto de propiedades inherentes a algo, que permiten juzgar su valor. 2. Buena calidad, superioridad o excelencia. 3. Adecuación de un producto o servicio a las características especificadas. 4. Carácter, genio, índole. 5. Condición o requisito que se pone en un contrato. Diversos gurús de esta área han dejado su definición de calidad como ser: Joseph Juran: “la palabra calidad tiene múltiples significados. Los dos significados que dominan el uso de la palabra son: 1. La calidad consiste en las características del producto que satisfacen las necesidades del cliente y les proporcionan por tanto satisfacción con el producto. 2. Calidad consiste en ausencia de deficiencias… Es conveniente estandarizar en una corta definición la palabra calidad como adecuación al uso”. W. Edwards Deming: “la dificultad de definir calidad es traducir las necesidades futuras del usuario en características medibles, de manera que un producto pueda ser diseñado y producido para dar satisfacción al usuario al precio que paga…” Armand Feigenbaum: “la calidad de producto o servicio puede ser definida como características totales compuestas de producto y servicio de marketing, ingeniería, fabricación y mantenimiento por medio de las cuales el producto y servicio en uso cumplirá las expectativas del cliente”. Calidad del Software & Testing 2 El término calidad de software se refiere al grado de desempeño de las principales características con las que debe cumplir un sistema computacional durante su ciclo de vida (Fig. 1), dichas características de cierta manera garantizan que el cliente cuente con un sistema confiable, lo cual aumenta su satisfacción frente a la funcionalidad y eficiencia del sistema construido. Figura 1. Ciclo de vida del software El concepto de calidad de software, según R. Pressman se asocia a la "concordancia con los requisitos funcionales y de rendimiento explícitamente establecidos con los estándares de desarrollo plenamente documentados y con las características implícitas que se espera de todo software desarrollado profesionalmente", con base en los requisitos funcionales y no funcionales identificados en la etapa de análisis del sistema, insumo principal para implementar dichos requisitos con los atributos mínimos de calidad, fomentando la aplicación de procesos estandarizados y criterios necesarios en cada una de sus etapas, así se fomenta que el avance en el ciclo de vida del software minimice el riesgo de fracaso del proyecto. Por su parte, el Instituto de Ingenieros Eléctricos y Electrónicos (IEEE) define calidad de software como "el grado con el que un sistema, componente o proceso cumple los requerimientos especificados y las necesidades o expectativas del cliente o usuario", denotando que el énfasis radica en los requisitos específicos del sistema y en la búsqueda de la satisfacción del cliente. Calidad del Software & Testing 3 La calidad puede verse desde varios puntos de vista: • Vista trascendental: la calidad es algo que se reconoce pero no se define. Por lo que se puede concebir la calidad como un ideal al que se intenta llegar, aunque no lo conseguimos debido a deficiencias en la tecnología, en el proceso de fabricación, en la compresión, etc. Esta vista no resulta demasiado útil para la gestión de la calidad. • Vista del usuario: la calidad es adecuación al propósito. Por lo que se puede cuantificar las características de los productos, medirlos y establecer objetivos a alcanzar. • Vista del fabricante: la calidad es conformidad con las especificaciones. Esta concepción de la calidad expande su alcance para examinar la calidad durante la producción y después de la entrega del producto. Se trata de una vista centrada en el proceso. • Vista basada en valor: la calidad depende de la cantidad que el cliente esté dispuesto a pagar. Hay que tener en cuenta que la calidad puede tener varios orígenes: • La calidad realizada: la que es capaz de obtener la persona que realiza el trabajo, gracias a su habilidad en la ejecución de una tarea. Se potencia con la mejora de las habilidades personales y técnicas de los participantes en un proceso. • La calidad planificada: la que se ha pretendido obtener. Es la que aparece descrita en una especificación, en un documento de diseño o en un plano. Es, por tanto, la que se le ha encomendado conseguir al responsable de ejecutar el trabajo. Se potencia con la elaboración de una especificación que sirva de buena referencia a los participantes de un proceso. • La calidad necesaria: la que el cliente exige con mayor o menor grado de concreción o, al menos, la que le gustaría recibir. Se potencia con una adecuada obtención de información de la idea de calidad de los clientes. Calidad del Software & Testing 4 Conceptos relacionados con la calidad Requisito: necesidad o expectativa establecida, generalmente implícita u obligatoria. Satisfacción del cliente: la percepción del cliente (que puede ser externo o interno) sobre el grado en que se han cumplido sus requisitos. Capacidad de una organización, sistema o proceso: es la aptitud para realizar un producto que cumple los requisitos para el mismo. Conceptos relacionados con la gestión de la calidad Política de la calidad: intenciones globales y orientaciones de una organización relativas a la calidad tal como se expresan formalmente por la alta dirección. Sistema de gestión de la calidad: sistema de gestión para dirigir y controlar una organización con respecto a la calidad. Planificación de la calidad: parte de la gestión de la calidad enfocada al establecimiento de los objetivos de la calidad y a la especificación de los procesos operativos necesarios y de los recursos relacionados para cumplir los objetivos de la calidad. Control de la calidad: parte de la gestión de la calidad orientada al cumplimiento de los requisitos de la calidad. Aseguramiento de la calidad: parte de la gestión de la calidad orientada a proporcionar confianza en que se cumplirán los requisitos de la calidad. Mejora de la calidad: parte de la gestión de la calidad orientada a aumentar la capacidad de cumplir con los requisitos de la calidad. Calidad del Software & Testing 5 Desde mediados del siglo pasado hasta la actualidad se han propuesto diversos modelos para la gestión de la calidad y se han aprobado diversas normas, varias de las cuales han sido aplicadas en las organizaciones. Gestión de la Calidad Total La TQM, Total Quality Management, representa una “actitud” o “filosofía” por la cual la organización pretende ofrecer a sus clientes productos y servicios que satisfagan completamente sus necesidades. Para ello se impregna la cultura de calidad en todos los aspectos de la organización, se implementan los procesos correctamente desde el principio y se intenta erradicar los defectos de todo tipo de tareas. La gestión de la calidad total concibe la organización como un conjunto de procesos que se pueden gestionar siguiendo el ciclo Planificar-Hacer-Verificar-Actuar que fue desarrollado por Walter Shewhart y popularizado por W. Edwards Deming, por lo que se lo conoce como Ciclo de Deming: •Planificar: establecer los objetivos y procesos necesarios para conseguir resultados de acuerdo con los requisitos del cliente y las políticas de la organización. •Hacer: implementar los procesos. •Verificar: realizar el seguimiento y la medición de los procesos y los productos respecto a las políticas, los objetivos y los requisitos para el producto, e informar sobre los resultados. •Actuar: tomar acciones para mejorar continuamente el desempeño de los procesos. La gestión de la calidad total se basa, además, en otros principios que persiguen la mejora continua de los procesos incorporando el conocimiento y la experiencia de los trabajadores. Y son: compromiso de la alta gestión con todos los empleados, reducción de los ciclos de desarrollo, producción just in time, reducción de costos de productos y servicios, etc. Calidad del Software & Testing 6 NORMAS ISO 9000 La International Organization for Standarization nació en 1947 con el propósito de facilitar la coordinación internacional de las normas técnicas en los diferentes campos de la industria. Pueden ser miembros de ISO todos los países que lo deseen, representados a través de su organismo nacional de normalización. Por ejemplo, ANSI (American National Standards Institute) por USA. En algunas áreas, ISO colabora con otras organizaciones, por ejemplo, en el campo de las tecnologías de la información forma, junto con la IEC, el Joint Technical Commitee 1(JTC1). El proceso de elaboración de una norma internacional, hasta su publicación definitiva, puede ser bastante largo. Normas sobre Calidad La primera publicación de las normas ISO 9000 se realizó en 1987 y cumpliendo el protocolo de ISO que obliga a que todas las normas sean revisadas por lo menos cada cinco años. Básicamente la norma ISO 9000 está compuesta por cuatro normas: UNE-EN ISO 9000: Sistema de Gestión de la Calidad. Fundamentos y vocabulario. Describe los fundamentos de los sistemas de gestión de calidad y especifica su terminología. UNE-EN ISO 9001: Sistema de Gestión de la Calidad. Requisitos. Esta norma establece los requisitos para un sistema de gestión de calidad que pueden utilizarse para su aplicación interna por las organizaciones, para certificación o con fines contractuales. Se centra en la eficacia. UNE-EN ISO 9004: Gestión para el éxito sostenido de una organización. Enfoque de gestión de la calidad. Persigue una mejora continua de desempeño. UNE-EN ISO 19011: Directrices para la auditoría de sistemas de gestión de la calidad y/o medioambiental. Calidad del Software & Testing 7 La familia ISO 9000 se basa en ocho principios de gestión de la calidad que pueden ser utilizados por la dirección con el fin de conducir a la organización hacia una mejora en el desempeño: • Enfoque al cliente: las organizaciones dependen de sus clientes y por lo tanto deberían comprender las necesidades actuales y futuras de los clientes, satisfacer los requisitos de los mismos y esforzarse en exceder sus expectativas. • Liderazgo: los líderes establecen la unidad de propósito y la orientación de la organización. • Participación del personal: todo el personal es esencial para la organización y su total compromiso posibilita que sus habilidades sean utilizadas en beneficio de la organización. • Enfoque basado en procesos: una ventaja de este enfoque es el control continuo que proporciona sobre los vínculos entre los procesos individuales dentro del sistema de procesos, así como sobre su combinación e interacción. • Enfoque de sistema para la gestión: identificar, entender y gestionar los procesos interrelacionados como un sistema contribuye a la eficiencia y eficacia de la organización en el logro de sus objetivos. • Mejora continua: la mejora continua del desempeño debe ser un objetivo permanente. • Enfoque basado en hechos para la toma de decisiones: las decisiones eficaces se basan en el análisis de los datos y la información. • Relaciones mutuamente beneficiosas con el proveedor: para crear valor entre la organización y los proveedores. Calidad del Software & Testing 8 Norma ISO 9001 Esta norma internacional especifica los requisitos para un sistema de gestión de calidad, cuando una organización: • Necesita demostrar su capacidad para proporcionar regularmente productos que satisfagan los requisitos del cliente y los legales y reglamentarios aplicables. • Aspira a aumentar la satisfacción del cliente a través de la aplicación eficaz del sistema, incluidos los procesos para la mejora continua del sistema y el aseguramiento de la conformidad con los requisitos del cliente y los legales y reglamentarios aplicables. Todos los requisitos de esta norma internacional son genéricos y se pretende que sean aplicables a todas las organizaciones sin importar su tipo, tamaño y producto suministrado. Calidad del Software & Testing 9 Los modelos de calidad de software generalmente están estructurados en factores de calidad que a su vez se componen de criterios que son evaluados desde lo general a lo particular, y permitir la reducción de la subjetividad en la asignación de un valor, ya sea cuantitativo o cualitativo. Así mismo, los modelos de calidad de software se clasifican de acuerdo con el enfoque de evaluación, ya sea a nivel de producto, proceso o calidad en uso. Calidad a nivel de producto La principal finalidad del modelo de calidad de producto es especificar y evaluar el cumplimiento de criterios del producto, para lo cual se aplican medidas internas y/o medidas externas. Por esta razón, algunas normas y estándares han definido la calidad a nivel de producto en tres tipos: interna, externa y en uso. Este enfoque está orientado a verificar el cumplimiento de las características que permitan alcanzar la satisfacción del cliente en cuanto a los requisitos definidos en las etapas iniciales del proceso de desarrollo. Calidad a nivel de proceso La calidad de un sistema software debe ser programada desde el inicio del proyecto, y posteriormente en cada etapa del proceso de desarrollo se debe llevar a cabo el control y seguimiento de los aspectos de calidad, para minimizar los riesgos y ofrecer soporte continuo, se garantiza así un óptimo nivel de cumplimiento de los factores de calidad, teniendo en cuenta que si en alguna de las etapas se deja de lado la verificación de los factores y criterios es posible que se presente deficiencia en alguno de éstos y disminuirá el nivel de calidad no solo del proceso, sino también del producto en desarrollo. Calidad del Software & Testing 10 Calidad en uso Es importante resaltar que aunque en diferentes escenarios se utilizan los términos usabilidad y calidad en uso, con el mismo propósito y de forma intercambiable tienen significados distintos, principalmente porque el concepto de calidad en uso es más amplio y abarca más elementos que la usabilidad, y esta última es una de las características de calidad de un producto software. La calidad en uso se define como el "conjunto de atributos relacionados con la aceptación por parte del usuario final y seguridad", y está basada en la eficacia, productividad, seguridad y satisfacción, según ISO/IEC 9126. Modelos a nivel de producto McCall: Uno de los modelos pioneros en la evaluación de la calidad de software, McCall se basa en once factores de calidad y los mismos están organizados en tres ejes, donde el usuario puede examinar la calidad del producto. • Operación del Producto: se refiere a las características de operación y los factores de calidad que integran este apartado son: • Facilidad de Uso: por parte de los usuarios del sistema. • Integridad: para proteger al programa de accesos que no han sido autorizados. • Eficiencia: en la ejecución del programa y en la utilización de recursos por parte del mismo. • Corrección o exactitud. • Fiabilidad: que el sistema no falle. • Revisión del producto: es la habilidad para ser cambiado e incluye los siguientes factores: • Facilidad de prueba: asegurar que el programa esté libre de errores y conoce las especificaciones del usuario. • Facilidad de Mantenimiento: esfuerzo requerido para encontrar y solucionar errores que se presenten en la operación del sistema. Calidad del Software & Testing 11 • Flexibilidad: facilidad de realizar cambios. • Transición del Producto: describe la adaptación al nuevo ambiente e incluye los siguientes factores de calidad: • Reusabilidad: se puede volver a usar el software. • Portabilidad: capacidad de transferir un programa de un ambiente a otro. • Interoperabilidad: se puede unir a un sistema con otro. Boehm: Es un modelo incremental, dividido en regiones de tareas y estas a su vez en conjuntos de tareas, las cuales se ajustan a la cantidad de iteraciones que el equipo defina, y cada iteración se divide en cuatro sectores: planeación, análisis de riesgo, ingeniería y evaluación. WebQEM: es una metodología de evaluación de calidad de sitios Web (Web-site Quality Evaluation method), diseñada para la evaluación siguiendo seis fases: planificación y programación de la evaluación de calidad, definición y especificación de requerimientos de calidad, definición e implementación de la evaluación elemental, definición e implementación de la evaluación global, análisis de resultados, conclusión y documentación, validación de métricas. ISO 25000: También llamadas como SQuaRE, cuyo propósito es guiar el desarrollo con los requisitos y la evaluación de atributos de calidad, principalmente: la adecuación funcional, eficiencia de desempeño, compatibilidad, capacidad de uso, habilidad, seguridad, mantenibilidad y portabilidad. Calidad del Software & Testing 12 Históricamente se han desarrollado para evaluar la calidad de los productos software diferente modelos que pretenden seguir las directrices de calidad de otros tipos de productos: descomponer la calidad en una categoría de características más sencillas que facilita su estudio. Como ya se vio uno de los modelos clásicos más utilizados es el desarrollado por McCall, en el que la calidad de un producto software se descompone en 11 características o factores de calidad agrupados en tres ejes o categorías. La evolución de estos modelos sobre calidad de producto software lo constituye la familia ISO/IEC 25000, basada especialmente sobre las normas ISO/IEC 9126 e ISO/IEC 14598. Familia ISO/IEC 25000 Esta familia de normas se organiza en cinco apartados: ISO/IEC 2500n: División de Gestión de Calidad. Las normas que forman este apartado definen todos los modelos, términos y definiciones comunes referenciados por todas las otras normas de la familia 25000. ISO/IEC 2501n: División de Modelo de Calidad. La norma de este apartado presenta un modelo de calidad detallada incluyendo características para calidad interna, externa y en uso. ISO/IEC 2502n: División de Medición de Calidad. Estas normas incluyen un modelo de referencia de la medición de la calidad del producto, definiciones de medidas de calidad (interna, externa y en uso) y guías prácticas para su aplicación. ISO/IEC 2503n: División de Requisitos de Calidad. Estas normas ayudan a especificar requisitos de calidad que pueden ser utilizados en el proceso de licitación de requisitos de calidad del producto software a desarrollar o como entrada al proceso de evaluación. ISO/IEC 2504n: División de la Evaluación de Calidad. Este apartado incluye normas que proporcionan requisitos, recomendaciones y guías para la evaluación del producto software. Calidad del Software & Testing 13 Este modelo distingue ocho características de calidad de un producto software. Adecuación Funcional: capacidad del producto software para proporcionar funciones que satisfacen necesidades declaradas e implícitas cuando se usa en las condiciones especificadas. Se subdivide a su vez en: • Completitud funcional: grado en el cual el conjunto de funcionalidades cubre todas las tareas y los objetivos del usuario especificados. • Corrección funcional: capacidad del producto o sistema para proveer resultados correctos con el nivel de precisión requerido. • Adecuación funcional: capacidad del producto software para proporcionar un conjunto apropiado de funciones para tareas y objetivos de usuario especificados. Fiabilidad: capacidad de un sistema o componente para desempeñar las funciones especificadas, cuando se usa bajo las condiciones y el periodo de tiempo especificados. Se subdivide a su vez en: • Madurez: capacidad del sistema para satisfacer las necesidades de fiabilidad en condiciones normales. • Disponibilidad: capacidad del sistema o componente de estar operativo y accesible para su uso cuando se requiere. • Tolerancia a fallos: capacidad del sistema o componente para operar según lo previsto en presencia de fallos hardware o software. • Capacidad de recuperación: capacidad del producto software para recuperar los datos directamente afectados y restablecer el estado deseado del sistema en caso de interrupción o fallo. Eficiencia de Desempeño: esta característica trata del desempeño relativo al total de recursos utilizados bajo determinadas condiciones. Se subdivide a su vez en: Calidad del Software & Testing 14 • Comportamiento temporal: los tiempos de respuesta y procesamiento y los ratios de through de un sistema cuando lleva a cabo sus funciones bajo condiciones determinadas en relación con un banco de pruebas (benchmark) establecido. • Utilización de recursos: las cantidades y tipos de recursos utilizados cuando el software lleva a cabo sus función bajo condiciones determinadas. Capacidad de uso (Usabilidad): capacidad del producto software para ser entendido, aprendido, usado y resultar atractivo para el usuario, cuando se usa bajo determinadas condiciones. Se subdivide a su vez en: • Capacidad para reconocer su adecuación: capacidad del producto que permite al usuario entender si el software es adecuado para sus necesidades. • Capacidad para ser usado: capacidad del producto que permite al usuario operarlo y controlarlo con facilidad. • Protección contra errores de usuario: capacidad del sistema para proteger a los usuarios de hacer errores. • Estética de la interfaz de usuario: capacidad de la interfaz de usuario de agradar y satisfacer la interacción con el usuario. • Capacidad de aprendizaje técnico: capacidad del producto que permite al usuario aprender su aplicación. • Accesibilidad técnica: capacidad del producto que permite que sea utilizado por usuarios con determinadas discapacidades. Calidad del Software & Testing 15