Subscribe:

Mejoramiento de la Calidad de Software


Según la norma ISO 9000:2000, la mejora de la calidad es la parte de la gestión de la calidad orientada a aumentar la capacidad de cumplir con los requisitos de la calidad. Los requisitos pueden estar relacionados con cualquier aspecto tal como la eficacia, la eficiencia o la trazabilidad.

La Mejora de la Calidad del Software es la parte de la Gestión de la Calidad que contribuye, a través de las mediciones, a los análisis de los datos, auditorías, y a efectuar mejoras en la calidad del software.

Una Auditoría 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.


Las razones para realizar una auditoría son:

  1. Establecer el estado del proyecto.
  2. Verificar la capacidad de realizar o continuar un trabajo específico.
  3. Verificar qué elementos aplicables del programa o Plan de Aseguramiento de la Calidad han sido desarrollados y documentados.
  4. Verificar la adherencia de esos elementos con el programa o Plan de Aseguramiento de la Calidad.

Se agrega también que la auditoría recoge, examina y analiza la información necesaria para tomar las decisiones de aprobación. La auditoría es realizada de acuerdo con los planes y procedimientos documentados. El plan de auditoría establece un procedimiento para dirigirla y para las acciones de seguimiento sobre las recomendaciones de la auditoría. Al realizar dicho procedimiento, el personal de la misma evalúa los elementos del software y los procesos para contrastarlos con los objetivos y criterios de las auditorías, tales como contratos, requerimientos, planes, especificaciones o procedimientos, guías y estándares.

Los resultados de la auditoría son documentados y remitidos al director de la organización auditada, a la entidad auditora, y cualquier organización externa identificada en el plan de auditoría. El informe incluye la lista de elementos no conformes u otros aspectos para las posteriores revisiones y acciones. Cuando se realiza el plan de auditoría, las recomendaciones son informadas e incluidas en los resultados de la auditoria.

La auditoria puede traer como consecuencia la certificación. Dicho proceso de certificación comienza con la emisión de una solicitud de certificación y culmina con la concesión del certificado. Un sistema de certificación de calidad permite una valoración independiente que debe demostrar que la organización es capaz de desarrollar productos y servicios de calidad.

En un software se tienen las siguientes visiones de la calidad:

  • Necesaria o Requerida: La que quiere el cliente.
  • Programada o Especificada: La que se ha especificado explícitamente y se intenta conseguir.
  • Realizada: La que se ha conseguido.
El objetivo es conseguir que las tres visiones coincidan. A la intersección entre la calidad Requerida y la calidad Realizada se la llama Calidad Percibida, y es la única que el cliente valora. Toda aquella calidad que se realiza pero no se necesita es un gasto inútil de tiempo y dinero.

La calidad, como sistema de gestión de una organización, necesita definir estos procesos y medirlos, para poder gestionarlos, es decir, para tener la capacidad de proponer mejoras y reconocerlas.

Para implementar un programa de mejoras es necesario definir procesos, decidir qué se quiere mejorar, definir qué medidas serán necesarias recoger, cómo y dónde tomarlas, gestionarlas mediante herramientas, utilizarlas para la toma de decisiones y reconocer las mejoras. Cuando el proceso a mejorar es el de desarrollo del software, es importante definir qué objetivos se quieren alcanzar, para reducir el número de medidas y, en consecuencia, el coste de recopilarlas y el impacto sobre la actividad de producción de software.

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 generen 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. Deberemos tener en cuenta la evolución tecnológica del entorno de producción de nuestros productos 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.

La Calidad de Software es resultado del movimiento global dentro del proceso de mejoramiento continuo de los modelos y/o estándares de producción en todos los sectores industriales, en particular, cuando éste se concentra en la producción de sistemas de información y software especializado.


Aseguramiento de la Calidad de Software


Según la norma ISO 9000:2000, el aseguramiento de la calidad es la parte de la gestión de la calidad orientada a proporcionar confianza en que se cumplirán los requisitos de calidad.

El Aseguramiento de la Calidad del Software es el conjunto de actividades planificadas y sistemáticas necesarias para aportar la confianza que el software satisfará los requisitos dados de calidad. Este aseguramiento se diseña para cada aplicación antes de comenzar a desarrollarla y no después. El Aseguramiento de la Calidad del Software engloba:

  • Un enfoque de gestión de calidad.
  • Métodos y herramientas de Ingeniería del Software.
  • Revisiones técnicas formales en el proceso del software.
  • Una estrategia de prueba multiescala.
  • El control de la documentación del software y de los cambios realizados.
  • Procedimientos para ajustarse a los estándares de desarrollo del software.
  • Mecanismos de medición y de generación de informes.


Las revisiones del software son un "filtro" para el proceso de Ingeniería del Software. Esto es, las revisiones se aplican a varios momentos del desarrollo del software y sirven para detectar errores y defectos que pueden ser eliminados. La revisión técnica formal (RTF), a veces llamada inspección, es el filtro más efectivo desde el punto de viste del aseguramiento de la calidad y es un medio efectivo para mejorar la calidad del software.


El defecto se define como una anomalía del producto. Dentro del contexto del proceso del software, los términos defecto y fallo son sinónimos. Ambos implican un problema de calidad que es descubierto después de entregar el software a los usuarios finales. El objetivo principal de las RTF es encontrar errores durante el proceso, de forma que se conviertan en defectos después de la entrega del software. El beneficio de la inspección es el descubrimiento de errores al principio para que no se propaguen al paso siguiente del proceso de software.


Las actividades de diseño introducen entre el 50 y 65% de todos los errores durante el proceso de software. Sin embargo, se ha demostrado que las RTF son efectivas en un 75% a la hora de detectar errores. Con la detección y la eliminación de un gran porcentaje de errores, el proceso de revisión reduce substancialmente el coste de los pasos siguientes en las fases de desarrollo y mantenimiento.

Los objetivos de la Revisión Técnica Formal son:

  • Descubrir errores en la función, la lógica o la implementación de cualquier representación del software.
  • Verificar que el software bajo revisión alcance sus requisitos.
  • Garantizar que el software ha sido representado de acuerdo con ciertos estándares predefinidos.
  • Conseguir un software desarrollado en forma uniforme
  • Hacer que los proyectos sean más manejables.

La RTF promueve la seguridad y la continuidad, ya que varias personas se familiarizarán con partes del software que, de una forma u otra, no hubieran visto nunca. Es una clase de revisión que incluye recorridos, inspecciones, revisiones cíclicas y otro pequeño grupo de evaualciones técnicas del software. Cada RTF se lleva a cabo mediante una reunión y sólo tendrá éxito si es bien planificada, controlada y atendida.

El aseguramiento de calidad se refiere a validar los procesos usados para crear los productos. Es una herramienta especialmente útil para administradores y patrocinadores, ya que permite discutir los procesos usados para determinar si los productos creados son razonables. Este aseguramiento tiene asociado 2 constitutivos diferentes:

  1. Los ingenieros del Software que realizan el trabajo técnico. 
  2. Un grupo de SQA (Software Quality Assurance) que se responsabiliza en la planificación de aseguramiento de la calidad, supervisión, mantenimiento de registros, análisis e informes.

Las Actividades del grupo de SQA son: 
    • Establecimiento de un plan de SQA para un proyecto.
    • Participación en el desarrollo de la descripción del proceso de software del proyecto.
    • Revisión de las actividades de Ingeniería del Software para verificar su ajuste al proceso de software definido
    • Auditoria de los productos de software designados para verificar el ajuste con los definidos como parte del proceso del software.
    • Asegurar que las desviaciones del trabajo y los productos del software se documentan y se manejan de acuerdo con un procedimiento establecido. 
    • Registrar lo que no se ajuste a los requisitos e informar a sus superiores.
    Además de estas actividades, el grupo de SQA coordina el control y la gestión de cambios y; ayuda a recopilar y analizar las métricas del software.

    Las métricas son escalas de unidades sobre las cuales puede medirse un atributo cuantificable. Cuando se habla de software nos referimos a la disciplina de recopilar y analizar datos basándonos en mediciones reales de software, así como a las escalas de medición. Los atributos son características observables del producto o del proceso de software, que proporciona alguna información útil sobre el estado del producto o sobre el progreso del proyecto. El término producto se utiliza para referirse a las especificaciones, a los diseños y a los listados del código. Los valores de las métricas no se obtienen sólo por mediciones. Algunos valores de métricas se derivan de los requisitos del cliente o de los usuarios y, por lo tanto, actúan como restricciones dentro del proyecto.










     

    Control de la Calidad de Software


    Según la norma ISO 9000:2000, el control de la calidad es la parte de la gestión de la calidad orientada al cumplimiento de los requisitos de la calidad.

    El Control de la Calidad de Software son las técnicas y actividades de carácter operativo, utilizadas para satisfacer los requisitos relativos a la calidad, centradas en 2 objetivos fundamentales:

    1. Mantener bajo control un proceso.
    2. Eliminar las causas de los defectos en las diferentes fases del ciclo de vida.
    El Control de la Calidad de Software está formado por actividades que permiten evaluar la calidad de los productos de los software desarrollados. El aspecto que considera este control es la "Prueba de Software".

    Las "Pruebas de Software" presenta una interesante anomalía para el Ingeniero del Software. Durante las fases de definición y desarrollo, el Ingeniero intenta construir el Software partiendo de un concepto abstracto y llegando a una interpretación tangible. Luego el Ingeniero intenta "demoler" el software construido a través de una serie de cases de pruebas. De hecho, las pruebas son uno de los pasos que el Ingeniero de Software los ve tanto destructivo como constructivo para el proyecto.

    La prueba demuestra hasta que punto las funciones del software parecen funcionar de acuerdo con las especificaciones y alcancen los requisitos de rendimiento. Además, los datos que se van recogiendo a medida que se lleva a cabo la prueba proporcionan una buena indicación, tanto de la confiabilidad del software como su calidad. Pero, la prueba no puede asegurar la ausencia de defectos; sólo puede demostrar que existen defectos en el software.

    La prueba del software es un concepto más amplio, a menudo, es conocido como verificación y validación .

    La verificación se basa en el conjunto de actividades que aseguran que el software implementa correctamente una función especifica, en otras palabras, se cercioran si están construyendo el producto correctamente.

    La validación se refiere a un conjunto diferente de actividades que aseguran al software construido ajustarse a los requisitos de cliente, en otras palabras, se cercioran si están construyendo el producto correcto. Un plan de prueba traza las clases de pruebas que se han de llevar a cabo, y un procedimiento que define los casos de prueba específicos en un intento por descubrir errores de acuerdo con los requisitos.

    Una estrategia de prueba de software integra las técnicas de diseño de casos de prueba en una serie de pasos bien panificados que dan como resultado una correcta construcción del software. La estrategia proporciona un mapa que describe los pasos que hay que llevar a cabo como parte de la prueba, cuando se deben planificar y realizar esos pasos, y cuánto esfuerzo, tiempo y recursos se van a requerir. Cualquier estrategia de prueba debe incorporar su planificación, el diseño de los casos de prueba, la ejecución de la prueba y la agrupación y evaluación de los datos resultantes.

    Las características generales de las estrategias de prueba de software son las siguientes:
    1. La prueba comienza en el nivel módulo y trabaja "hacia afuera", hacia la integración de todo el sistema basado en computadora.
    2. Diferentes técnicas de prueba son apropiadas en diferente momentos.
    3. La prueba la realiza el que desarrolla el software y un grupo de prueba independiente.
    4. La prueba y la depuración son actividades, pero la depuración se puede incluir en cualquier estrategia de prueba.

    Para implementar con éxito una estrategia de prueba de software, se debe:
    1. Especificar los requisitos del producto de manera cuantificable antes que comiencen las pruebas.
    2. Especificar los objetivos de prueba de manera explicita.
    3. Desarrollar un plan de prueba que haga hincapié en la prueba de ciclo rapido.
    4. Construir un software robusto diseñado para probarse a si mismo.
    5. Usar revisiones de técnicas formales efectivas como filtro antes de la prueba al igual como para evaluar su estructura y los propios casos de prueba.
    6. Desarrollar un enfoque de mejora continua al proceso de prueba.