Gestión de Calidad en el Desarrollo de Software
El costo de la calidad se refiere al gasto incurrido por hacer las cosas mal. Incluye desperdicio, reprocesos, servicios postventa, garantías, inspecciones, pruebas y otras actividades necesarias debido a problemas por no cumplir con los requisitos. Robert Glass afirma que una relación más intuitiva es: satisfacción del usuario = producto que funciona + buena calidad + entrega dentro del presupuesto y plazo.
Garantía de Calidad del Software (SQA)
La garantía de calidad del software (SQA, Software Quality Assurance, o GCS, Gestión de calidad del software) es una actividad de protección que se aplica a lo largo de todo el proceso del software.
Philip Crosby, en su libro clásico sobre calidad, plantea: «El problema de la administración de la calidad no es lo que la gente ignora de ella. El problema es lo que piensan que saben… La calidad tiene mucho en común con el sexo. Todo mundo lo busca. Todos creen que lo entienden. Todos piensan que su ejecución sólo consiste en seguir las inclinaciones naturales. Y, la mayoría de la gente siente que los problemas en esta área los causan las demás personas».
Componentes de la Gestión de Calidad
La gestión de calidad abarca:
- Un proceso de garantía de calidad de software (SQA).
- Tareas específicas de aseguramiento y control de la calidad (incluyen Revisiones Técnicas Formales y una estrategia de prueba a varios niveles).
- Prácticas efectivas de ingeniería de software (métodos y herramientas).
- Control de todos los productos de trabajo del software y los cambios que se generan.
- Procedimiento para garantizar la concordancia con los estándares de desarrollo del software (cuando sea posible).
- Mecanismos de medición y generación de informes.
Definición de Calidad en el Software
En el sentido más general, la calidad se define como un proceso eficaz de software que se aplica de manera que crea un producto útil que proporciona valor medible a quienes lo producen y a quienes lo utilizan. Se define como una característica o atributo medible de algo, que se puede comparar con estándares conocidos.
Entre estas propiedades se incluyen cohesión, número de puntos de función, líneas de código, etc.
Puntos Clave de la Calidad del Software
- Un proceso eficaz de software establece la infraestructura que da apoyo a cualquier esfuerzo de elaboración de un producto de software de alta calidad.
- Un producto útil entrega contenido, funciones y características que el usuario final desea.
- Al agregar valor para el productor y para el usuario, el software de alta calidad proporciona beneficios a la organización que lo produce y a la comunidad de usuarios finales.
Tipos de Calidad
- Calidad del diseño: Se refiere a las características que especifican los ingenieros de software para un elemento (materiales, tolerancias, especificaciones de desempeño). En el desarrollo del software, comprende los requisitos, especificaciones y el diseño del sistema.
- Calidad de concordancia (o conformidad): Se centra en el grado en el que la implementación se apega al diseño y en el que el sistema resultante cumple sus metas de requerimientos y desempeño.
El Dilema de la Calidad del Software
Si se produce un sistema de software de mala calidad, nadie lo querrá comprar. Si se invierte demasiado tiempo y dinero en un software perfecto, su finalización tardará tanto y será tan caro que se perderá la ventana de mercado o se agotarán los recursos. La clave está en encontrar un punto medio donde el producto sea suficientemente bueno, sin ser un objeto perfeccionista que requiera demasiado tiempo o dinero.
Control y Garantía de Calidad
- Control de Calidad: Serie de inspecciones, revisiones y pruebas utilizadas a lo largo del proceso del software para asegurar que cada producto cumple con los requisitos asignados.
- Garantía de Calidad: Auditoría e información que evalúan la efectividad y qué tan completas son las actividades de control de calidad.
Costos de Calidad
Incluyen todos los costos incurridos en la búsqueda de la calidad o en actividades relacionadas con la obtención de la calidad. Se dividen en:
- Prevención: Planificación de la calidad, revisiones técnicas formales, equipo de pruebas, formación.
- Evaluación: Visión más profunda de la condición del producto, inspección en el proceso y entre procesos.
- Fallas: Desaparecerían si no surgieran defectos antes del envío de un producto a los clientes.
Puntos Clave de la Garantía de Calidad de Software (SQA)
- Los requisitos del software son la base de las medidas de la calidad.
- Los estándares especificados definen un conjunto de criterios de desarrollo que guían la forma en que se aplica la ingeniería del software.
- Existe un conjunto de requisitos implícitos que a menudo no se mencionan (por ejemplo, facilidad de uso y buen mantenimiento).
Factores que Determinan la Calidad del Software (McCall)
Se centran en tres aspectos importantes de un producto software:
- Características operativas:
- Corrección: ¿Hace lo que quiero?
- Fiabilidad: ¿Lo hace de forma fiable todo el tiempo?
- Eficiencia: ¿Se ejecutará en mi hardware lo mejor que pueda?
- Seguridad (Integridad): ¿Es seguro?
- Facilidad de uso: ¿Está diseñado para ser usado?
- Capacidad de soportar los cambios:
- Facilidad de mantenimiento: ¿Puedo corregirlo?
- Flexibilidad: ¿Puedo cambiarlo?
- Facilidad de prueba: ¿Puedo probarlo?
- Adaptabilidad a nuevos entornos:
- Portabilidad: ¿Podré usarlo en otra máquina?
- Reusabilidad: ¿Podré reutilizar alguna parte del software?
- Interoperabilidad: ¿Podré hacerlo interactuar con otro sistema?