Contexto
La empresa QualitaSoft genera software para operar maquinaria de ensamblaje para empresas que han sido instaladas en la frontera de México con Estados Unidos.
Los gerentes operativos de QualitaSoft están preocupados por la cantidad de defectos que las maquiladoras le han reportado al utilizar su software, lo que ha provocado incluso parar las líneas de ensamble automáticas porque generan defectos en el producto terminado.
Los gerentes no se explican por qué estos errores no aparecieron durante las pruebas, si le dedican casi el 50% del tiempo de desarrollo a las pruebas, utilizando un numeroso equipo de testing. Razón por la cual han decidido contratar los servicios de un consultor en calidad de software, para que realice una auditoría del proceso de desarrollo. Sandra, consultora de calidad, decide analizar todo el proceso de desarrollo, mediante entrevistas con el equipo de desarrollo, observaciones y una revisión de los registros de defectos. En la siguiente reunión con el consejo técnico del QualitaSoft, invitan al consultor para que exponga su reporte de hallazgos y recomendaciones. Sandra explica que existe un enfoque incompleto sobre el aseguramiento de la calidad. Los miembros del equipo de desarrollo confían toda la calidad al área de testing, con la esperanza de que ellos detectarán todos los defectos del sistema antes de que llegue a manos del cliente. La recomendación de Sandra es crear una cultura de calidad en toda la empresa, apoyándose de un área de aseguramiento de la calidad y de una herramienta institucionalizada para registrar defectos.
Explicación
15.1 Gestión de la calidad de software
La gestión o administración de la calidad se encarga del aseguramiento de la calidad o Quality Assurance (QA), que define procesos y estándares que conducirán a obtener un producto de alta calidad.
Según Sommerville (2011), el objetivo de la gestión de la calidad es proporcionar una comprobación independiente sobre el proceso de desarrollo de software. Este autor hace hincapié en dos características fundamentales, la primera es sobre la necesidad tener un equipo de QA que sea independiente de la parte operativa del software, para evitar estar comprometido con el cumplimiento de la fecha de entrega, limitar el número de observaciones o ser tentado a omitir el reporte de errores que pudieran retrasar el proyecto. La segunda característica es crear una cultura de calidad y que no sólo se limite a seguir los estándares y procedimientos. Esta cultura impulsa el comportamiento profesional de los miembros del equipo, haciendo que todos se sientan responsables de la calidad del producto, además que es la mejor forma de incorporar aspectos intangibles de la calidad, como la elegancia y la legibilidad del software, y es el mejor camino para implementar planes de mejora continua.
En el siguiente diagrama, Sommerville (2011) muestra cómo se relaciona el proceso de desarrollo y el proceso de gestión de la calidad.
Gestión de calidad y desarrollo de software.
Recuperado de Sommerville, I. (2011). Ingeniería de Software (9ª ed.). México: Pearson Educación.
Gestión de la calidad según el tamaño del equipo de trabajo
En equipos de desarrollo grandes es necesaria la gestión de la calidad formalizada, enfocada a la documentación de las actividades que cada grupo ha realizado. Esta documentación servirá para mantener un registro histórico y es un medio de comunicación entre los grupos de desarrollo. En la opinión de Sommerville (2011) esto ayuda a comprobar que no se olvidaron tareas importantes o que un grupo no hizo suposiciones incorrectas acerca de lo que hicieron otros grupos. Cuando los equipos de desarrollo son pequeños es posible implementar un enfoque informal de calidad, sin demasiada documentación, ya que la comunicación es más directa. El éxito en estos grupos radica en la implantación de una cultura de calidad.
15.2 Gestión de defectos
Los defectos en el software tienen un impacto directo en el desempeño del software y por consecuencia en la calidad del producto entregado al cliente. El origen de algunos defectos que pasaron por alto durante las pruebas (revisiones, inspecciones y auditorías) es diverso, y en este sentido Chemuturi (2010) nos propone el siguiente listado:
Para darte una idea de la cantidad de defectos que se esconden, Humphrey (2005) propone la siguiente estimación sobre la tasa de defectos según su origen, por puntos de función y por miles de líneas de código.
Los defectos deben ser detectados haciendo uso de una metodología adecuada que los registre y los elimine del producto antes de que lleguen a manos del cliente.
Reporteo de defectos
Los defectos pueden aparecer durante las actividades de verificación y validación del software, y en cualquier etapa del desarrollo del mismo; no necesariamente durante la etapa de pruebas, por lo que es importante establecer un procedimiento de registro y seguimiento hasta su resolución. Cada proyecto de desarrollo debe tener sólo una herramienta de registro que concentre la gestión de defectos, eso facilitará el análisis estadístico posterior. Ten en cuenta que el registro de estos defectos es diferente a los defectos detectados durante la fase de pruebas, ya que su objetivo es registrar defectos que no fueron oportunamente encontrados. El proceso que debe seguir la gestión de defectos se describe en los siguientes pasos:
Paso 1. Se detecta un defecto en alguna actividad de aseguramiento de la calidad.
Paso 2. La persona que detecta el error registra el defecto en un formulario predeterminado.
Paso 3. Se realiza un análisis del defecto en el que se replica el escenario, para confirmar que efectivamente es un error, de lo contrario se cierra el defecto. Se determina su categoría, origen, se estima el esfuerzo, impacto en costo y tiempo para el proyecto. Toda esta información se incorpora al registro del defecto.
Paso 4. Se asigna el reporte a la persona que implementará la solución.
Paso 5. El ingeniero asignado realiza la corrección y reporta los detalles de la solución en el reporte.
Paso 6. Otra persona realiza una revisión para asegurar que el defecto efectivamente haya sido corregido. De lo contrario se regresará a la persona asignada.
Paso 7. Se asigna una persona para realizar pruebas de regresión, que aseguran que no existan más errores al resto del producto del software.
Paso 8. Si el defecto fue detectado durante el proceso de desarrollo, se cierra el reporte. Si el defecto ya fue entregado al cliente se procederá a realizar una prueba de aceptación, para finalmente cerrar el reporte; registrando las acciones realizadas.
Recuperado de Chemuturi, M. (2010). Mastering Software Quality Assurance. EEUU: J. Ross Publishing
La herramienta de registro de defectos debe ofrecer los siguientes campos:
El éxito en la gestión de defectos es la constancia y consistencia. Cualquier defecto que no haya sido oportunamente detectado se debe registrar y solucionar, y se debe seguir un estándar al registrar el defecto. Los registros deben mantenerse como histórico para cualquier análisis posterior o comparativo.
15.3 Cultura de calidad
Seguramente has escuchado la frase “la calidad no sucede por accidente”, y es totalmente cierta cuando se trata del software, la calidad es el resultado del esfuerzo consciente del equipo de desarrollo.
El primer paso para asegurar la calidad de cualquier cosa es reconocer que la propia calidad es la clave de la verdadera satisfacción de los clientes y de la supervivencia de una organización”(Chemuturi, 2010).
Según Chemuturi (2010), para implementar una cultura de calidad en la organización se debe considerar lo siguiente:
Departamento independiente de QA
Es común que las organizaciones dedicadas al desarrollo de software consideren que el departamento de QA sea el encargado de realizar las pruebas al software, limitando su campo de acción a la verificación del código del sistema. El problema de este enfoque es que asegurar la calidad sólo por las pruebas al código no da garantías de poder mejorar el producto. Este departamento debe estar enfocado en dos aspectos fundamentales: la calidad de los procesos y calidad del producto, eso incluye funciones de la verificación, validación, monitoreo, control y mejora continua.
Los beneficios de tener un departamento de QA son los siguientes:
La efectividad de las acciones que emprenda el departamento de QA dependerá de su independencia organizacional de las áreas operativas de desarrollo. Para ello debe reportar directamente al director general de la empresa. Si el departamento de QA depende de la gerencia de sistemas podrían surgir conflictos de interés.
Definición de un proceso de desarrollo y mejora continua
Las organizaciones de software deben establecer una definición inicial del proceso de desarrollo que incluya la identificación de las personas que documentarán los procesos, facilitándoles las herramientas necesarias para crear, pilotear y desplegar artefactos que consideren necesarios.
Este proceso debe ser conocido y utilizado por toda la organización como un estándar, siendo la base sobre la que se realizarán auditorías y evaluaciones de cumplimiento. Al mismo tiempo el proceso debe establecer formas en las que se puedan manejar excepciones con las adecuadas aprobaciones, que servirán de válvula de escape para todas aquellas situaciones que no sean incluidas en la definición del proceso.
En la misma definición del proceso se incluyen las métricas e indicadores de desempeño que servirán para controlar las tareas del proceso y obtener información valiosa para identificar áreas de oportunidad que generen planes de mejora.
Es notorio cuando una organización mantiene una cultura de calidad. El personal que participa en el proceso reconoce su propia aportación a la calidad, los beneficios de seguir el proceso, las métricas que debe vigilar y la apertura que existe para implementar cambios.
Un sistema que reconozca y premie el logro de la excelencia en calidad.
Cualquier empresa tiene el reto de mantener motivado a su personal para lograr un desempeño excepcional de sus miembros. Para hacerlo, Chemuturi (2010) propone un sistema de premios y reconocimientos con las siguientes características:
Compromiso e involucramiento de la alta dirección
El involucramiento y compromiso de la alta dirección por mantener los esfuerzos de la calidad son esenciales en cualquier organización. Los directores y gerentes deben realizar lo siguiente:
Estas acciones ayudan a generar un ambiente propicio para que la organización trabaje a favor de la calidad del producto de software, incremente la productividad, elimine el retrabajo, reduzca costos, mejore la satisfacción de los clientes y sobre todo, incremente las ganancias.
Cierre
Es este tema pudiste reconocer que el aseguramiento de la calidad del software es un trabajo que inicia desde antes de cualquier proyecto, con un plan de calidad y con revisiones a lo largo del proceso de desarrollo. Es importante establecer un área de QA que sea independiente de las áreas operativas y le reporte al director general. La calidad no es una meta, sino un proceso iterativo que las empresas deben estar dispuestas a realizar si no desean quedarse en la obsolescencia, inclusive si eso equivale a tener que reinventar sus procesos y sus productos.
Basta con comparar antiguas versiones de Windows o Mac OS con las más recientes. Es notorio el esfuerzo de sus creadores por ofrecer productos con funciones más poderosas, más confiables y estables. Sin embargo, son productos que no son infalibles, cada nueva actualización corrige algún defecto que no fue detectado a tiempo, y aun así son los productos que se han mantenido en el mercado del software y en la preferencia de millones de usuarios. Las organizaciones tienen el gran reto de crear una cultura de calidad entre sus empleados, porque es el mejor camino para lograr productos con un mínimo de defectos. Cuando cada empleado entiende los beneficios de colocar su mejor esfuerzo por lograr la excelencia en cada una de sus tareas diarias, la productividad aumenta y el software que se le entrega al cliente siempre será mejor.
Checkpoint
Asegúrate de poder:
Referencias
Glosario
Pruebas de regresión del defecto: son pruebas que tienen por objetivo verificar componentes o partes del programa que no están directamente relacionadas con la solución del defecto. Estas pruebas intentan identificar posibles daños colaterales relacionados a la aplicación de una solución.