Home arrow Calidad
Calidad

La gestión de la calidad reduce los costes de producción de software. Cuanto antes detectemos un error, menor será el coste del producto por el impacto que habremos evitado al no haberse producido.

El aseguramiento de la calidad del software podemos definirlo como el conjunto de actividades que proporcionan evidencia de que un producto software es el que se ajusta a las necesidades de uso esperadas por los usuarios del mismo. Se alcanza mediante el establecimiento, seguimiento y control de directrices que lleven a obtener un producto software íntegro, bien acabado y que tenga una vida prolongada.

Si bien el aseguramiento de la calidad reside en un conjunto de actividades básicas necesarias para asegurar que los procesos de elaboración del software están establecidos y continuamente mejorados para elaborar productos que se adaptan a las especificaciones, debe ser complementada con el Control de la Calidad, mediante el que se compara un producto con los estándares aplicables que desencadenará acciones para tratar las no conformidades que se puedan detectar, y Auditorías de la Calidad, que verifican que se hace un correcto seguimiento de los procedimientos y políticas establecidos.

En definitiva, se trata de un esfuerzo planeado para asegurar que el software cumple esos criterios y otros específicos de cada proyecto como portabilidad, eficiencia, flexibilidad, reusabilidad o escalabilidad, cuyas actividades específicas en el seno del proyecto, monitorizan y controlan el proyecto software para que los objetivos del mismo sean alcanzados con el nivel deseado, siendo necesaria la colaboración y el consenso de todos los implicados en el proyecto, desde los gestores del proyecto, o el equipo de aseguramiento de calidad a los programadores o los usuarios finales del producto software.

Rentabilidad de la Calidad

La gestión de la calidad reduce los costes de producción de software. Cuanto antes detectemos un error en el software, menor será el coste del producto por el impacto que habremos evitado por hecho de no haberse producido. Pensemos que un error cometido en etapas tempranas del ciclo de vida, por ejemplo una mala interpretación de alguna de las especificaciones que sea detectada al final del ciclo, ocasionará gran cantidad de trabajo perdido en las etapas siguientes con el consiguiente coste de resolución y de pérdida de tiempo, de especial impacto en productos cuya valía depende del tiempo de llegada al mercado.

Si analizamos el coste efectivo de la gestión de calidad se debe a cuatro factores:

  • Prevención. Se incurre en este tipo de costes cuando llevamos a cabo acciones para anticiparse a eventos antes de que ocurran. so de herramientas y técnicas avanzadas, empleo del personal cualificado más adecuado, etc.
  • Inspecciones. Se incurre en ellos cuando se mide, evalúa o inspeccionan productos, incluidos los intermedios, para ver el nivel de cumplimiento de especificaciones o seguimiento de normas, etc.
  • Internos. Son aquellos que se originan al subsanar las deficiencias detectadas antes de que el producto se haya entregado
  • Externos. Son aquellos que se originan cuando el defecto se detecta una vez entregado el producto final.

Los últimos pueden originar costes muy superiores a la propia resolución, puesto que pueden afectar a la reputación de la propia organización o producir pérdida de futuras ventas.

La mayor rentabilidad se consigue sin duda con la prevención, que conseguirá minimizar el número de defectos que llegan a nuestros clientes, mejorando así la calidad del producto entregado y reduciendo los costes de producción y mantenimiento.

Marcos y estándares de aseguramiento de la calidad en el software

La comunidad internacional dispone de numerosos organismos, tanto públicos como privados que promueven la estandarización de los procesos de trabajo desarrollados en el seno de las compañías. Esto facilita el entendimiento por terceros del cumplimiento de los procesos a la vez que facilita la cooperación interempresarial en la elaboración de los productos. Los más ampliamente difundidos son los elaborados por la ISO/IEC, pero en determinados sectores, como es el caso de la ingeniería de software, existen marcos privados que proporcionan niveles de aseguramiento de la calidad mayor, siendo el SEI (Software Engineering Institute) uno de los más relevantes, en lo relativo a la estandarización de procesos de desarrollo software. Su modelo CMMi (Capacity Maturity Model Integrated) está ampliamente reconocido por la industria.

Kynetia se encuentra en este momento certificada en ISO 9001:2000, implantada según la ISO 90003:2004 que marca las directrices de aplicación de la ISO 9001:2000 a la industria de Ingeniería del Software.

En nuestra constante preocupación por la calidad, en Kynetia trabajamos de forma continuada en la mejora y adaptación de nuestros procesos para que cumplan estándares cada vez más exigentes desde el punto de vista de la calidad del producto obtenido y entre los que CMMI tiene un lugar destacado como marco para el perfeccionamiento de los procesos de desarrollo que sigue la compañía, encontrándonos actualmente en pleno proceso de certificación CMMI.

Elementos para el aseguramiento de la calidad

Las actividades de aseguramiento de la calidad se pueden categorizar en:

  • Software testing. Donde se recogen tanto pruebas de verificación como de validación y que suponen una de las más populares estrategias de gestión del riesgo. Usadas para comprobar que los documentos de diseño del software, el propio software y la documentación cumplen con todos los requisitos. El plan de pruebas recoge y clasifica todas las pruebas del software, manteniendo la trazabilidad entre las mismas y los requisitos que cubre.
  • Control de la calidad. Consiste en los procesos y procedimientos empleados para monitorizar el trabajo realizado. Se centra en la revisión y subsanación de defectos antes de realizar las entregas al cliente. Típicamente consiste en revisiones de documentos, inspecciones de código y comprobaciones previas a cualquier entrega al usuario. Los criterios de control suelen adaptarse para cada proyecto en el plan de calidad del proyecto software, haciendo al cliente partícipe del mismo para establecer los criterios que mejor respondan a sus necesidades.
  • Gestión de configuración del software. Relacionado con el etiquetado de los elementos de los proyectos software y el seguimiento y el control de cambios que permite monitorizar la evolución de dichos elementos y sus interrelaciones a lo largo del ciclo de vida del producto.

Validación y Verificación

La validación es la comprobación al final del ciclo de vida del desarrollo de que el producto desarrollado satisface correctamente la especificación de requisitos del producto y las expectativas que han depositado en el mismo los usuarios.

Con las necesidades de software altamente fiable en los sistemas de la industria aeroespacial a finales del siglo 20, en la que un fallo detectado al final podía causar el aborto de misiones y la pérdida de grandes cantidades de tiempo y dinero, surgió la necesidad de adelantarse a los errores, surgiendo el concepto de verificación.

La verificación asegura que el producto y todos los subproductos relacionados en su construcción, satisfacen los requisitos especificados en el transcurso de todas las actividades realizadas durante el ciclo de vida del desarrollo, persiguiendo dos criterios fundamentales:

  • El software debe realizar de forma correcta todas las funciones para las que ha sido concebido
  • El software no debe hacer ninguna función que en sí misma o en combinación con otras, pueda degradar el rendimiento de todo el sistema.

Al mismo tiempo, la verificación establece que ha de haber trazabilidad entre elementos software y las especificaciones de requisitos, de modo que todos los requisitos, incluidos nivel de acabado, rendimiento, etc., son adecuadamente cubiertos por pruebas y que los resultados de las pruebas son repetibles aun cuando se hayan producido cambios.

La verificación, supone por lo tanto, un proceso me mejora continuo que debe usarse a lo largo de todo el ciclo de vida del producto, que gracias a la gestión de configuración permite monitorizar en cualquier momento el grado de seguimiento de los procedimientos establecidos para el desarrollo del producto que garantizan su calidad.

El punto crítico de la verificación es el incremento considerable del coste de desarrollo. No obstante, si se considera todo el ciclo de vida del producto software, esto es, desde que se concibe hasta su abandono una vez que ha quedado obsoleto, la verificación reduce el coste general del software. Un plan efectivo de verificación reduce en una proporción de 4 a 1 el número de defectos en el sistema desplegado en producción y dado que el coste de reparación de estos defectos es del orden de 20 a 100 veces superior en operaciones de mantenimiento que los incurridos en las etapas de diseño, se justifica perfectamente la inversión inicial en prevención mediante procedimientos de verificación.

Gestión de Configuración del Software

Una configuración de software es un conjunto de elementos software que forman una función del modelo de negocio. El propósito de la gestión de configuración es identificar todos los elementos del software que componen cada configuración, desde documentación de especificación o diseño al propio código o las pruebas, y controlar su evolución durante las distintas fases del ciclo de vida del producto. Es esencial para la monitorización y seguimiento tanto en el proceso de construcción, en las pruebas y en el mantenimiento de versiones en producción y es de especial importancia en la gestión de cambios y en la reusabilidad de software debido a las interrelaciones definidas entre todos los elementos del software, a la vez que garantiza la integridad de dichos elementos cuando son manipulados por los diferentes integrantes del proceso de construcción del software. Componentes a ser controlados incluyen propuestas, especificaciones de requisitos, plannings, documentos de análisis y diseño, código fuente, utilidades y bibliotecas, ejecutables, planes de pruebas y scripts de pruebas, actas e informes.

En la gestión de cambios permite valorar exactamente el impacto de los mismo siguiendo las relaciones con otros componentes afectados y su documentación, permitiendo la valoración exacta de los mismos antes de tomar la decisión de llevarlos a cabo.

En la reutilización de código, permite identificar todos los elementos necesarios porque cada componente software y sus relaciones con componentes de terceros, como bibliotecas o versiones de sistemas han quedado establecidas.

Las actividades que componen los procesos de gestión de configuración se pueden agrupar en cuatro grandes grupos:

  • Identificación de elementos. Proporciona guía básicas para la identificación y etiquetado de componentes software, configuraciones de software y líneas base de software (software baselines). La fecha y la asignación de un número de versión son elementos de identificación imprescindibles que pueden completarse con otros calificadores.
  • Control de cambios. Proporciona los mecanismos de control mediante los que ante una propuesta de modificación de algún elemento, se evalúa, aprueba o rechaza y se le da seguimiento. Se basa en cuatro elementos:
    • Petición de Cambio.
    • Análisis de impacto del cambio. Basado en las interdependencias con el resto de elementos de la configuración.
    • Modificaciones y creación de nuevos componentes.
    • Creación de nuevas líneas base con las modificaciones.
  • Control de versiones. Es habitual que una misma aplicación coexista en diferentes versiones (Producción, desarrollo, pruebas, etc.) El control de versiones proporciona mecanismos de control de los diferentes estados de evolución del software mediante etiquetas especiales que identifican a una configuración de elementos del resto.
  • Construcción de configuraciones. Proporciona los elementos necesarios para la extracción desde el repositorio de todos los elementos que corresponden a una determinada configuración y permite de manera más o menos automatizada, o asistida por herramientas, la construcción del software desde sus archivos fuente.

Aseguramiento indica que si el proceso es seguido, la calidad está asegurada y los gestores del proyecto pueden confiar en que hay calidad si se sigue el proceso.