Aseguramiento de la calidad de software

30.01.2013 16:33

 

ASEGURAMIENTO DE LA CALIDAD DEL SOFTWARE

 

Introducción

El aseguramiento de calidad del software es el conjunto de actividades planificadas y sistemáticas necesarias para aportar la confianza adecuada en que el producto (software) satisfacerá los requisitos dados de calidad. El Aseguramiento pretende dar confianza en que el producto tiene calidad.

 

Aseguramiento de calidad se enfoca en identificar y evaluar los defectos que puedan afectar al software. Si los errores se pueden identificar de forma temprana en el proceso de software, las características del diseño de software se pueden especificar de modo que eliminarán o controlarán los peligros potenciales, al corregir los errores mucho antes en cada etapa es decir durante el proceso, ahorrando esfuerzos, tiempo y recursos.

 

Sridharan (Sridharan, 2000) indica que mientras el software que se está desarrollando reúne los requerimientos y su desempeño sea el esperado, es preciso que se supervisen las actividades de desarrollo del software y su rendimiento, en distintas oportunidades durante cada fase del ciclo de vida. Este es el papel del aseguramiento de la calidad del software.

 

Hay tres aspectos muy importantes con relación al aseguramiento de la calidad del software: (Wiegers, 1990)

 

·         La calidad no se puede probar, se construye.

·         El aseguramiento de la calidad del software no es una tarea que se realiza en una fase particular del ciclo de vida de desarrollo.

·         Las actividades asociadas con el aseguramiento de la calidad del software deben ser realizadas por personas que no estén directamente involucradas en el esfuerzo de desarrollo.

 

Factores Que Determinan La Calidad Del Software

 

El aseguramiento de la calidad de software comprende una gran variedad de tareas:

·         Participar en descripción del proyecto de software.

·         Auditar el producto de software para verificar el cumplimiento del proceso de software definido.

·         Asegurar que las divergencias en el trabajo de software sean documentadas de acuerdo a los estándares definidos.

·         Almacenar cualquier inconformidad y reportarla a la gerencia media.

·         Revisiones del software que se aplican durante cada paso del desarrollo del mismo. Las revisiones del software se aplican en varios momentos del desarrollo, tanto en el análisis como en el diseño y la codificación, de manera que puedan ser eliminados cuanto antes.

·         Gestión de configuraciones de software (control de la documentación del software y de los cambios realizados). El proceso de control de cambios contribuye directamente a la calidad del software.

El control de cambios se aplica durante el desarrollo del software y, posteriormente, durante su mantenimiento. Ya que un cambio se puede producir en cualquier momento, las actividades de la gestión de configuraciones del software sirven para:

 

1.     identificar el cambio;

2.     controlar el cambio;

3.     garantizar que el cambio se implementa adecuadamente;

4.     informar del cambio a todos aquéllos a los que afecte.

 

Para lograr y asegurar la calidad al usuario o cliente, es necesario controlar la calidad en cada una de las etapas de desarrollo, desde el diseño del producto o sistema hasta el mantenimiento. Estas etapas se constituyen como el ciclo de la calidad, habiendo interdependencia y retroalimentación en cada una de ellas.

 

Para satisfacer las necesidades o requerimientos del usuario o consumidor, debe existir calidad en:

 

·         El análisis y diseño del producto informático.

·         Abastecimientos de herramientas propias para desarrollo del sistema.

·         Producción.

·         Entrega del sistema terminado.

·         Venta o servicio.

·         Administración general.

 

El grupo de aseguramiento de calidad participa en la revisión de los productos seleccionados para determinar si se conforman o no a los procedimientos, normas o criterios especificados, siendo totalmente independiente del equipo de desarrollo.

Las actividades a realizar por el grupo de aseguramiento de calidad vienen gobernadas por el plan. Sus funciones están dirigidas a:

 

·         Identificar las posibles desviaciones en los estándares aplicados, así como en los requisitos y procedimientos especificados.

·         Comprobar que se han llevado a cabo las medidas preventivas o correctivas necesarias.

·         Las revisiones son una de las actividades más importantes del aseguramiento de la calidad, debido a que permiten eliminar defectos lo más pronto posible, cuando son menos costosos de corregir.

 

Además existen procedimientos extraordinarios, como las auditorías, aplicables en desarrollos singulares y en el transcurso de las cuales se revisarán tanto las actividades de desarrollo como las propias de aseguramiento de calidad. La detección anticipada de errores evita el que se propaguen a los restantes procesos de desarrollo, reduciendo substancialmente el esfuerzo invertido en los mismos. En este sentido es importante destacar que el establecimiento del plan de aseguramiento de calidad comienza en el Estudio de Viabilidad del Sistema y se aplica a lo largo de todo el desarrollo, en los procesos de Análisis, Diseño, Construcción, Implantación y Aceptación del Sistema y en su posterior Mantenimiento.

 

También es importante señalar que la calidad de un producto software no se puede referir únicamente a obtener un producto sin errores. La especificación de la calidad del software debe ser más detallada y exacta, y el camino para ello es la formalización de la calidad mediante un modelo de calidad.

 

Un modelo de calidad es un conjunto de buenas prácticas para el desarrollo del software, enfocado en los procesos de gestión y desarrollo de proyectos, cuyo objetivo es el desarrollo de productos de calidad de manera consistente y predecible.

 

Existen distintos marcos de trabajo que nos ayudan a mejorar los procesos de calidad de software. La finalidad de estos modelos es la de mejorar los procesos de software, brindar pautas para efectuar evaluaciones de la unidad informática, determinar la potencialidad y la efectividad de sus procesos, así como la madurez de la empresa. Se busca mejorar los procesos de software, aumentar la productividad la calidad reduciendo su costo.

 

Garantía De Calidad De Software

 

Es una disciplina de la ingeniería de software se especializa en la aplicación de procesos de calidad a lo largo del proyecto de software.

Su misión no se limita a actividades de verificación, sino que además asume un rol de liderazgo en la gestión de la calidad durante el proceso de creación y diseño del producto. La garantía de calidad no debe confundirse con la técnica específica de control de calidad, cuyo objetivo es verificar el producto.

Una concepción errónea que aún persiste en la industria, es limitar su acción al aseguramiento de la calidad del producto y a constatar adherencia a estándares.

La garantía de calidad toma responsabilidad por los siguientes procesos:

·         gestión de los procesos de ingeniería de software

·         iniciativas de mejoramiento de procesos a lo largo de la organización,

·         integración de los procesos de calidad de ingeniería y servicios a la clientela

El liderazgo de la garantía de calidad puede ser asumida en organizaciones pequeñas o muy jóvenes por el jefe del proyecto, siendo el grupo de desarrollo el responsable de su ejecución. Estos individuos pueden provenir de organizaciones más maduras donde hayan adquirido el "know-how" en procesos de calidad, o pueden hacerse asesorar por consultores externos que los ayuden a definir sus sistema de calidad.

El beneficio principal de un programa de garantía de calidad de software es asegurar a la gerencia del proyecto que los procesos establecidos se han ejecutado cabalmente. Esta evaluación es hecha por un grupo independiente, especializado en métodos de calidad, con un criterio objetivo y con visión de contexto.

 

Revisiones Del Software

 

Una revisión es una forma de aprovechar la diversidad de un grupo de personas para:

·         Señalar la necesidad de mejoras en el producto de una sola persona o de un equipo

·         Confirmar las partes del producto en las que no es necesaria o no es deseable una mejora.

·         Conseguir un trabajo de mayor calidad maximizando los criterios de Correctitud  y Completitud principalmente.

 

Existen muchos tipos diferentes de revisiones que se pueden llevar adelante como parte de la ingeniería del software.

 

Cada una tiene su lugar. Una reunión informal durante el almuerzo o en un café es una forma de revisión, si se discuten problemas técnicos.

Una presentación formal de un diseño de software a una audiencia de clientes, ejecutivos y personal técnico es una forma de revisión. Sin embargo en éste trabajo nos concentraremos en una revisión técnica formal, que  llamaremos Inspección de Software

 

La inspección consiste en seis pasos [Fagan 1986] :

 

1-Planificación: Cuando el desarrollador  completa su un ""producto de trabajo"", se forma un grupo de inspección y se designa un moderador. El moderador asegura que el ""producto de trabajo"" satisfaga el criterio de inspección. Se le asignan diferentes roles a las personas que integran el grupo de inspección, así como la planificación de tiempos y recursos necesarios

 

2-Overview: Si los inspectores no están familiarizados con el desarrollo del proyecto, un vista general es necesaria en éste momento. Este es un paso opcional, pero no menos importante ya que en esta etapa se dará al grupo de inspección un "background" y el contexto a cubrir por las inspecciones.

 

3-Preparación: Los inspectores se preparan individualmente para la evaluación en la reunión, estudiando los productos de trabajo y el material relacionado. Aquí es aconsejable la utilización de listas de chequeos para ayudar a encontrar defectos comunes, y . El tiempo que pueda llevar esta etapa va a depender de cuan familiarizado esté el inspector con el trabajo que debe analizar

 

4-Examen: En esta etapa, los inspectores se reune para analizar su trabajo individual en forma conjunta. El moderador deberá asegurarse que todos los inspectores están suficientemente preparados. La persona designada como lector presenta el "producto de trabajo", interpretando o parafraseando el texto, mientras que cada participante observa en busca de defectos. Es recomendable que este examen no dure mas de 2 horas ya que la atención en busca de defectos va disminuyendo con el tiempo. Al terminar con la reunión, el grupo determina si el producto es aceptado o debe ser retrabajado para una posterior inspección.

 

5-Retrabajo: El autor corrige todos los defectos encontrados por los inspectores.

 

6-Seguimiento: El moderador chequea las correcciones del autor. Si el moderador está satisfecho, la inspección está formalmente completa, y el "producto de trabajo" es puesto bajo el control de configuración.

 

A partir de estos seis pasos surge la necesidad de la conformación de: objetivos  participantes de la inspección y con qué roles, productos de trabajo a inspeccionar y cual deberá ser el resultado de las reuniones de inspección.

 

•         Objetivos: El principal objetivo es encontrar defectos en el "producto de trabajo", de esta manera debemos definir cuáles serán las metas a alcanzar para el cumplimiento de éste objetivo. En nuestra opinión el establecimiento de éstas metas están en relación directa con el tipo de proyecto, metodologías y herramientas utilizados

•         Grupos de inspección: Se recomienda formar grupos entre 3 y 6 personas [IEEE STD 1028-1988]. Dentro de éste grupo debe incluirse al autor de los productos de trabajo. Roles: Además del autor se deberá tener en cuenta al moderador quien dirige la inspección y deberá contar con mayor experiencia que el resto, el lector quien presenta los productos de trabajo en las reuniones y el escriba quien documenta la descripción y ubicación de los defectos encontrados.

•         Productos de trabajo: El proceso de inspección puede ser aplicado a diferentes tipos de productos de trabajo que pueden encontrarse en un desarrollo de software incluyendo requerimientos, diseño, código, test, guías de usuario y otro tipo de documentación. El estándar de la IEEE no especifica un tamaño , pero los productos de trabajo tienen un tamaño de 10 a 20 hojas para especificación de requerimientos, 200 o 250 líneas de código. En nuestra opinión también se debe tener en cuenta la división natural que pueda tener cada uno de éstos documentos ya que toda especificación podremos dividirla en partes así como el diseño o el código.

•         Resultado de las reuniones de inspección: Los dos resultados principales debe ser: Una lista de defectos a corregir , y un reporte de inspección que describa que es lo que se inspeccionó, quien inspeccionó qué y el número de defectos encontrados.

 

 

Métricas De Calidad De Software

 

Las métricas de software se refieren a un amplio rango de medidas para el software de computadoras dentro del contexto de la planificación del proyecto de software, las métricas de calidad pueden ser aplicadas a organizaciones, procesos y productos los cuales directamente afectan a la estimación de costos

Las mediciones en el mundo físico pueden ser catalogadas en dos campos: medidas directas (por ej. La longitud de un tornillo), y medidas indirectas (por ej. Calidad de tornillos producidos, medida por la cuenta de los tornillos rechazados). Las métricas de software pueden ser catalogadas de forma parecida

Se pueden clasificar en:

Métricas de productividad, se centran en el rendimiento del proceso de la ingeniería de software

Métricas de Calidad, proporcionan una indicación de cómo se ajusta el software, a los requerimientos implícitos y explícitos del cliente

Métricas Técnicas, se centran en el carácter del software mas que en el proceso, a través del cual el software a sido desarrollado

Métricas Orientadas al tamaño, son utilizadas para obtener medidas directas del resultado y la calidad de la ingeniería del software

Métricas Orientadas a la Función, son medidas indirectas del software y del proceso por el cual se desarrollará; se centran en la funcionalidad o utilidad del programa (Puntos de Función)

Métricas Orientadas a la persona, consiguen información sobre la forma en que la gente desarrolla software de computadora y sobre el punto de vista humano de la efectividad de las herramientas y métodos

 

La Planificación De La Calidad Del Software

 

Es la parte de la Gestión de la Calidad encargada de realizar el proceso administrativo de desarrollar y mantener una relación entre los objetivos y recursos de la organización; y las oportunidades cambiantes del mercado.

El objetivo es modelar y remodelar los negocios y productos de la empresa, de manera que se combinen para producir un desarrollo y utilidades satisfactorias.

Los aspectos a considerar en la Planificación de la Calidad de Software son: Modelos/Estándares de Calidad de Software a utilizar, Costos de la Calidad de Software, Recursos humanos y materiales necesarios, entre otras.

El plan de calidad define los atributos de calidad más importantes del producto a ser desarrollado y define el proceso de evaluación de la calidad.

En la Planificación de la Calidad de Software se debe determinar:

  • Rol de la Planificación.
  • Requerimientos de la Calidad de Software.
  • Preparación de un Plan de Calidad de Software.
  • Implementación de un Plan de Calidad de Software
  • Preparar un Manual de Calidad.