ASIGNATURA: CALIDAD DEL SOFTWARE
2.1 Relación de la Ingeniería del software con SQA. GARANTIA Y CONTROL DE CALIDAD DEL SOFTWARE La concordancia con los requerimientos funcionales y de rendimiento explícitamente establecidos, con los estándares de desarrollo explícitamente documentados y con las características implícitas que se espera de todo software se define como: •
•
•
Los requerimientos del software son los fundamentos desde los que se mide la calidad. La falta de concordancia con los requerimientos es una falta de calidad. Los estándares especificados definen un conjunto de criterios de desarrollo que guía la forma en se aplica la ingeniería del software; si no se siguen ciertos criterios, casi siempre se dará una falta de calidad. Existe un conjunto de requerimiento implícitos (el deseo de buen mantenimiento). Si el software se ajusta a sus requerimientos requerimientos pero falla en alcanzar los requerimientos requerimientos implícitos del software queda en entre dicho.
La calidad del software es una compleja mezcla de ciertos f actores que varían para las diferentes aplicaciones aplicaciones y los clientes que las solicitan. La garantía de calidad es una actividad esencial en cualquier empresa que produce productos que van a ser usados por otros. Antes del siglo veinte, la garantía de calidad era responsabilidad única de la persona que construía el producto. La primera función de control y de garantía de calidad formal fue introducida por los laboratorios Bell en 1916 y se extendió rápidamente por todo el mundo de las manufacturas. Hoy en día, cada compañía tiene un mecanismo que asegura la calidad de sus productos de hecho, durante la pasada década, se han usado ampliamente como tácticas de mercado la declaración explícita de mensajes que ponían de manifiesto la calidad ofrecida por las compañías. La historia de la garantía de calidad en el desarrollo de software ha sido paralela a la historia en la fabricación de hardware. Durante los primeros años de información (los 50 y los 60), la calidad era responsabilidad responsabilidad únicamente del programador. Durante los años 70 se introdujeron estándares de garantía de calidad para el software en los contratos militares de desarrollo de software y sean extendido rápidamente rápidamente en los desarrollos de software del mundo comercial. El papel de la garantía del software (SQA) se ilustra esquemáticamente en la siguiente figura:
La SQA forma parte de una función más amplia de garantía de calidad y engloba actividades que desbordan muchas disciplinas técnicas. El alcance de la responsabilidad de la garantía de calidad se puede garantizar de la mejor forma parafraseando un popular anuncio de automóviles " la calidad es el trabajo # 1". Lo que esto implica en el desarrollo de software es que la responsabilidad de la garantía de calidad del software corresponde a muchos constituyentes de una organización – Ingenieros de software, gestores del proyecto, clientes, comerciales y las personas que trabajan dentro del grupo de SQA. El grupo de SQA sirve como representación del cliente dentro de la casa. O sea, la gente que lleva a cabo la SQA deba mirar el software desde el punto de vista del cliente ¿satisfacer de forma adecuada el software los factores de calidad?. La garantía de calidad del software es la guía de preceptos de gestión y de las disciplinas de diseño de la garantía de calidad para el espacio tecnológico y la aplicación de la ingenieria de software. La capacidad de garantizar la calidad es la medida de la madurez de la disciplina de ingenieria . Al finalizar de seguir esa guía antes mencionada, lo que se obtiene es la madurez de la ingenieria de software. Los factores que afectan la calidad del software se clasifica en dos grupos : • •
Factores que pueden ser medidos directamente(como errores, unidad de tiempo,etc). Factores que solo pueden ser medidos indirectamente(como la facilidad de uso de mantenimiento, etc).
Los factores de calidad del software se centran en tres aspectos importantes de un producto de software: sus características operativas, su capacidad de soportar los cambios y su adaptabilidad a nuevos entornos; y estos factores son los siguientes : Corrección. El grado en que un programa satisface sus especificaciones y consigue los objetivos de la misión encomendada por el cliente. Fiabilidad. El grado en que se puede esperar que un programa lleve a cabo sus funciones esperadas con la precisión requerida. Esta puede ser medidad o estimada por datos históricos o estadísticos. Eficiencia. La cantidad de recursos de computadora y de código requeridos por un programa para llevar a cabo sus funciones. Integridad. El grado en que puede controlarse el acceso al software o a los datos, por personal no autorizado. Facilidad de uso. El esfuerzo requerido para aprender un programa, trabajar con él, preparar su entrada e interpretar su salida. Facilidad de Mantenimiento. El esfuerzo requerido para localizar y arreglar un error de un programa. Flexibilidad. El esfuerzo requerido para modificar un programa operativo.
Facilidad de prueba. El esfuerzo requerido para probar un programa de manera que se asegure que realiza su función requerida. Portabilidad. El esfuerzo requerido para transferir el programa desde un hardware y/o un entorno de sistemas de software a otro. Reusabilidad. El grado en que un programa ( o partes de un programa ) se puede reusar en otras aplicaciones. Esto va relacionado con el empaquetamiento y el alcance de las funciones que realiza el programa. Facilidad de interoperación. El esfuerzo requerido para acoplar un sistema a otro. Es difícil desarrollar medidas directas de los anteriores factores de calidad. Por lo cual, se define un conjunto de métricas usadas para desarrollar expresiones para cada uno de los factores de acuerdo a un factor de calidad del software, coeficientes de regresión y métricas que afectan el factor de calidad. Los factores de calidad descritos anteriormente pueden representar una "lista de comprobación" que se han sugerido para la calidad del software. Hewlett-Packard ha desarrollado un conjunto de factores de calidad del software , sus siglas son FURPS – por funcionalidad, facilidad de uso, fiabilidad, rendimiento y capacidad de soporte. Se definen los principales atributos para cada uno de los cinco factores principales : •
•
• •
•
La funcionalidad se obtiene mediante la evaluación del conjunto de características y de posibilidades del programa. La facilidad de uso se calcula considerando los factores humanos,consistencia y la documentación. La Fiabilidad se calcula mediendo la frecuencia de fallos y su importancia . El Rendimiento se mide mediante la evaluación de la velocidad del proceso, el tiempo de respuesta , etc. La Capacidad de Soporte combina la posibilidad de ampliar el programa, la daptabilidad y la utilidad.
Actividades de la Garantia de Calidad del Software. La garantía de calidad del software comprende una variedad de tareas, asociadas con las sgtes actividades principales : Aplicación de métodos técnicos; Realización de revisiones técnicas formales; Prueba del software; Ajuste a los estandares; Control de cambios; Mediciones; Registro y reliazación de informes. La garantía de calidad del software comienza con un conjunto de herramientas y métodos técnicos que ayudan al analista a conseguir una especificación de alta calidad y un diseño de alta calidad. La actividad central que permite garantizar la calidad es la Revisión técnica formal. Esta es una especie de reunión del personal técnico con el único propósito de descubrir problemas de calidad . La prueba del software usa una serie de métodos de diseño de casos de prueba que ayudan a asegurar una efectiva detección de errores. Muchos grupos de desarrollo de software usan la prueba del software como una "red de seguridad" para la garantía de calidad. El grado de aplicación de procedimientos y estándares, se debe establecer esta actividad para garantizar que se sigan estos.
Una de las principales amenazas para la calidad del software viene de los cambios. Cada cambio realizado sobre el software en potencia puede introducir errores o crear efectos laterales que propaguen errores. El proceso de control de cambios contribuye directamente con la calidad del software, al formalizar las peticiones de cambio, evaluar la naturaleza de cambio y controlar la naturaleza de cambio. Un objetivo importante de la garantía de calidad del software es seguir la pista a la calidad del software y evaluar el impacto de los cambios de metodología y de procedimiento que intentan mejorar la calidad del software. Para conseguir esto, se deben recolectar métricas del software. El registro de información y la generación de informes para la garantía de calidad del software(SQA), dan procedimientos para la recolección y divulgación de información de SQA. La Revisión Técnica Formal. Es una actividad de garantía de calidad del software y es una reunión específica de revisión que se ha mostrado efectiva en el descubrimiento de defectos. Los objetivos de la reunión técnica formal son : • • • • •
Descubrir errores en la función, la lógica o la implementación de cualquier software. Verificar que el software bajo revisión alcance sus requisitos. Garantizar que el software ha sido representado con ciertos estándares predefinidos. Conseguir un software desarrollado de forma uniforme. Hacer que los proyectos sean más manejables.
Se deben establecer directrices para conducir las revisiones técnicas formales, distribuyendolas entre los revisores, para ser consensuadas y seguidas. A continuación se muestra un conjunto de directrices para las revisiónes técnicas formales: • • • •
• • • •
Revisar el producto, no al productor. Fijar una agenda y mantenerla. Limitar el debate y las impugnaciones. Enunciar áreas de problemas, pero no intentar resolver cualquier problema que se ponga de manifiesto (la resolución de problemas debe ser pospuesta para despues de la reunión de revisión). Limitar el número de participantes e insistir en la preparación anticipada. Desarrollar una lista de comprobaciones para cada producto que haya de ser revisado. Disponer recursos y una agenda para las reuniones técnicas formales. Llevar a cabo un buen entrenamiento de todos los revisores (todos los participantes en la reunión deben recibir algun entrenamiento formal ).
Métricas de Calidad del Software. Las métricas representan medidas indirectas, es decir, nunca se mide realmente la calidad, sino algunas de sus manifestaciones. El factor que lo complica es la relación precisa entre la variable que es medida y la calidad del software. No se puede medir directamente la calidad del software por la naturaleza subjetiva de esta actividad. El US Air Force Systems Command utiliza información obtenida a partir del diseño arquitectonico y de datos, para obtener un indice de calidad de la estructura del diseño. Para ello, se debe de averiguar lo siguiente: Módulos definidos en la arquitectura del programa , módulos cuya función depende de la fuente de los datos de entrada o que produce datos que se usan en cualquier parte en general, módulos cuya función dependen del procesamiento previo, elementos de una base de datos, elementos de base de datos únicos, segmentos de base de datos, módulos con una sola entrada y una sola salida.
Seguridad del Software. Es una actividad de garantía de calidad del software que se centra en la identificación y evaluación de los riesgos potenciales que pueden producir un impacto negativo en el software y hacer que falle por completo. Como parte de la seguridad del software, se dirige un proceso de análisis y modelización. Primero se identifican los riesgos y se clasifican por su importancia y grado de riesgo. Después de haber identificado estos riesgos del sistema, se utilizan técnicas de análisis para asignar su gravedad y probabilidad de ocurrencia. Se tiene que analizar el software en el contexto del sistema completo, para que sea efectivo. Cuando se han identificado y analizado los riesgos, se pueden especificar los requisitos del software relacionado con la seguridad. La seguridad del software examina los modos según los cuales los fallos producen condiciones que pueden llevar a accidentes. Los fallos se evalúan en el contexto de un completo sistema basado en computadora.
2.2 Definición y propósito del SQA.
Definición: SQA es un set de actividades sistemáticas que aseguran que el proceso del software y productos conformados por requerimientos, estándares, y procedimientos. Los procesos incluyen todas las actividades involucradas en el diseño, codificación, pruebas y mantenimiento; Los productos incluyen software, datos asociados, documentación, y toda la documentación para soporte y reportes. El Rol: El rol para SQA es brindar a la administración
la a seguranza de que procesos oficialmente establecidos están siendo implementados. Y asegura que: 1.-Una metodología de desarrollo apropiada este establecida 2.-Que los proyectos utilicen estándares y procedimientos en su trabajo 3.-Que la documentación sea creada para mantenimiento y mejoramiento 4.-La administración de configuración de software este adecuada para controlar cambios 5.-Se realizan pruebas y que se aprueben 6.-Cualquier deficiencia y desviaciones sean identificadas y llevadas con atención a la administración. Propósito: Proporcionar visibilidad sobre los procesos utilizados por el proyecto de software y sobre los productos que genera.