La calidad y la Ingeniería de software

El concepto de calidad en los productos de software debe formularse de forma particular. Primero es conveniente indicar sus características diferenciadoras frente a otros productos: el software se desarrolla, no se fabrica en el sentido clásico; es inmaterial y no se deteriora con el uso o el tiempo (aunque tiene un ciclo de vida); su fiabilidad es difícil de comprobar; la mayoría del software se construye a medida y necesita de actualización permanente; es dependiente del entorno donde se ejecuta.

El concepto de calidad en los productos de software debe formularse de forma particular. Primero es conveniente indicar sus características diferenciadoras frente a otros productos: el software se desarrolla, no se fabrica en el sentido clásico; es inmaterial y no se deteriora con el uso o el tiempo (aunque tiene un ciclo de vida); su fiabilidad es difícil de comprobar; la mayoría del software se construye a medida y necesita de actualización permanente; es dependiente del entorno donde se ejecuta.

La ingeniería de software es una disciplina cuyo horizonte de madurez está aun lejos, y que se caracteriza por la proliferación de normas, métodos y herramientas incompatibles entre si.

La calidad en la ingeniería del software, que depende en gran medida de la pericia del equipo que lo desarrolla, puede definirse como un conjunto de características o cualidades, tales como: eficiencia, fiabilidad, usabilidad, funcionalidad, mantenibilidad, portabilidad, etc., variando la importancia de cada una de ellas de un producto a otro. Dicho de otra manera, es el cumplimiento de los requerimientos contractuales por parte del producto software desarrollado, así como durante el proceso de desarrollo.

En las empresas de Ingeniería de software, la calidad se obtiene mejorando día a día el proceso de producción, mantenimiento y gestión del software. Para optimizar la calidad de los productos y/o servicios es preciso conocer al cliente y sus necesidades, conocer a la competencia y poseer un modelo de calidad. Esto último permitirá incrementar la fiabilidad, reducir el mantenimiento, aumentar la satisfacción del cliente, mejorar la dirección del proyecto, detectar errores pronto / rápido e incrementar el beneficio. Pero también la madurez de los procesos de desarrollo y las técnicas adecuadas para mejorarlos y tener una gestión adecuada de las mejoras de dichos procesos.

Hay que saber en qué nivel de madurez, en cuanto a la calidad, se encuentra la organización, para poder determinar qué tipo de acciones son las más adecuadas en cada momento. Una organización inmadura se caracteriza por:

- Realizar procesos improvisados; incluso procesos especificados no son seguidos ni se exige su cumplimiento.

- Son organizaciones que "reaccionan"; los directivos "apagafuegos" se centran en resolver las crisis momentáneas.

- Sobrepasan presupuestos y calendarios, pues no se basan en estimaciones reales.

- Suelen disminuir la calidad y la funcionalidad para cumplir fechas.

- Carecen de bases objetivas para juzgar la calidad o para resolver problemas.

- Reducen o eliminan actividades de mejora de la calidad (revisiones, pruebas, etc.) cuando los proyectos se retrasan.

Crosby propone un modelo de 5 etapas de madurez de la gestión de calidad en la empresa:

1 Incertidumbre: realidad confusa y sin compromiso.

2 Despertar: reconocimiento de la importancia de la gestión de la calidad pero sin un compromiso de invertir en ella.

3 Ilustración: compromiso de mejora, enfrentando los problemas sin desviar la acción a otros.

4 Sabiduría: participación, medición precisa e intentos de hacer permanentes las mejoras logradas.

5 Certeza: gestión de la calidad como parte esencial de los sistemas de la empresa.

El "Software Engineering Intitute" de la Universidad de Carnegie - Mellon, se basó en el modelo de "madurez" de Phillip Crosby para crear un método para valorar el proceso de desarrollo de software: Modelo de Madurez de la Capacidad para Crear Software, CMM (Capability Maturity Model)

El CMM: Es un método. Por una partes se centra en el estudio de los procesos de software, en contraposición al interés por los productos software. Ejemplo: definición y desarrollo de los requisitos del software; generación de datos de prueba; planificación de la instalación del software. Por otra, se fundamenta en que la "madurez" del proceso es un indicador para construir software de calidad.

El método tiene 5 niveles de "madurez" y 18 áreas clave, cada una de éstas incluyen prácticas clave, que a su vez encierran preguntas concretas.

El modelo, basado en sondeos, permite que las empresas puedan conocer en qué nivel se encuentra actualmente su proceso de producción de software, qué tipo de mejoras prioritarias se deben realizar y en qué aspectos o actividades críticas del proceso de desarrollo pueden intervenir con cierta garantía de éxito (estrategia de mejora del proceso)

Finalmente es recomendable tener en cuenta las siguientes "medidas" a aplicar para asegurar la calidad de los productos software:

- En el contrato de software: formular claramente y de forma precisa las responsabilidades, productos a entregar, etc. del proveedor; usar cláusulas estándar y listas de comprobación; revisar los borradores del contrato (comprador económico, auditor, abogado, etc.); negociar el borrador del contrato con el proveedor; obtener la orden del contrato firmada; modificar el contrato en caso de "problemas" serios.

- En el producto software: definir los requerimientos de calidad del producto; utilizar herramientas apropiadas para describir los requerimientos; evaluar la viabilidad; guías de programación; guías de documentación; documentación técnica consistente; gestión de la configuración; revisión de la documentación técnica; revisión de código; pasos de test; predicción del rendimiento; formación técnica de los miembro del equipo

- En el proceso de software: proveer con antelación suficiente los recursos necesarios: personas, hardware, software, herramientas, etc.; estructurar el proceso de software por fases; descripción clara del trabajo de cada miembro del equipo; reuniones del proyecto planificadas; reuniones de decisión de fase planificadas; control periódico de las tendencias y costes de los hitos; control de resultados e información de los hitos; monitorización periódica del riesgo y su prevención; información y motivación de los miembros del equipo; formación de los miembros del equipo.

- En la documentación de software: estándares de contenido: estructura, sumario, glosario, índice, etc.; estándar de presentación: formato de la hoja, identificación, clasificación, paginación, estado, etc.; instrucciones al equipo: guías de estilo de formulación, visualización, ejemplos; suministro de herramientas; administración de los documentos de forma profesional; revisiones / versiones.

La calidad es hoy una de las mayores ventajas competitivas para las empresas desarrolladoras de software

La calidad es un concepto vacío si no se tienen en cuenta las necesidades reales de los clientes. Así pues, algunas definiciones de calidad serían: calidad es el cumplimiento de los requisitos del cliente; calidad es satisfacer al cliente; o calidad es lo que el cliente dice o piensa que debe ser.

Estas definiciones necesitan desarrollar los siguientes aspectos básicos: las expectativas del cliente deben ser traducidas en requisitos; desarrollar un sistema para cumplir con dichos requisitos de forma previsible, a la primera; establecer una metodología de actuación para llegar a "cero defectos" en el trabajo; disponer de un procedimiento de medida para el control de la satisfacción del cliente. Previamente a ello, será preciso conocer perfectamente y a fondo las capacida

Viñeta publicada el 20 de febrero de 1870 en La Flaca n.º 35 Tendencias

ny2 ACTUALIDAD

ny2 Sociedad de la información

Día de la Movilidad y el BYOD Coffee Break