jueves, 8 de noviembre de 2018

#Aseguramiento de la Calidad (ACS).

Image result for calidad

Que es el aseguramiento de la calidad de Software (ASC)?

El Aseguramiento de la Calidad del Software es un conjunto de actividades planificadas y sistemáticas necesarias, que cumplen la función de cerciorarse que el producto sea construido de acuerdo a los estándares y normas establecidas, tanto en términos de gestión, como de funcionamiento, desde una perspectiva como cliente.

Este proceso de la ingeniería del software se diseña y planea para cada aplicación antes de comenzar a desarrollarla y no después. El proceso de calidad considera los siguientes aspectos:
  • Un enfoque de gestión de calidad.
  • Métodos y herramientas de Ingeniería del Software.
  • Revisiones técnicas formales en el proceso del software.
  • Detección y documentación de errores y defectos.
  • Una estrategia de prueba multi-escala.
  • El control de la documentación del software y de los cambios realizados.
  • Procedimientos para ajustarse a los estándares de desarrollo del software.
  • Aplicar mecanismos de medición.
  • Generación de informes de resultados y documentación.
El proceso es considerado como una actividad "sombrilla" dentro de un plan de trabajo por lo que todas las personas involucradas de alguna manera participan en el aseguramiento de la calidad del producto, sin embargo existen dos grupos principales involucrados en este proceso que son:
  1. Los Ingenieros de Software que desarrollan el trabajo técnico. 
  2. Un grupo de SQA (Software Quality Assurance) que se responsabiliza en la planificación de aseguramiento de la calidad, supervisión, mantenimiento de registros, análisis e informes.

Elementos principales para la ASC.

El proceso de aseguramiento de calidad comprende la mayor parte de el proceso general de desarrollo del sistema por lo que las actividades se definen para aplicarse a diferentes aspectos de la visión general del sistema como producto final con la certificación que todos los procesos y componentes construidos fueron evaluados y probados. 


Los elementos que intervienen en el aseguramiento de calidad se pueden resumir en los siguientes:


Estándares: Los estándares definen un conjunto de criterios que guían la forma en que se aplican procedimientos y metodologías al software desarrollado, la certificación de calidad permite una valoración independiente de la organización, donde se demuestra la capacidad de desarrollar productos y servicios de calidad.

El IEEE, ISO y otras organizaciones que establecen estándares han producido una amplia variedad de ellos para ingeniería de software y documentos relacionados, los estándares los adopta de manera voluntaria una organización de software o los impone el cliente u otros participantes, ejemplos: El IEEE, ISO 9126

Revisiones y auditorias: Las revisiones técnicas son una actividad del control de calidad que realizan ingenieros de software para otros ingenieros de software, su objetivo es detectar errores ejemplo: Realizar una auditoria del proceso de revisión, se realiza con el fin de asegurar que las revisiones se lleven a cabo de manera que tengan la máxima probabilidad de descubrir errores.

Pruebas: Son una función del control de calidad que tiene un objetivo principal: detectar errores ejemplo: realizar pruebas de funcionamiento, de usabilidad, de fiabilidad, de rendimiento y para la capacidad de soporte. 

Colección y análisis de los errores: El ACS reúne y analiza errores y datos acerca de los defectos para entender mejor cómo se cometen los errores y qué actividades de la ingeniería de software son más apropiadas para eliminarlos.

Administración del cambio: Si no se administra de forma adecuada lleva a la confusión y esta a su vez genera mal calidad.

Educación: Toda organización de software quiere mejorar sus prácticas de ingeniería de software, un contribuyente clave de la mejora es la educación de los ingenieros de software, de sus gerentes y de otros participantes

Administración de proveedores: Son tres las categorías de software que se adquieren a proveedores externos: paquetes contenidos en una caja (por ejemplo, Office, de Microsoft) que da una estructura básica, tipo esqueleto, que se adapta de manera única a las necesidades del comprador; y software contratado, que se diseña y construye especialmente a partir de especificaciones provistas por la organización cliente.

Administración de seguridad: Con el aumento de los delitos cibernéticos, toda organización de software debe instituir políticas para proteger los datos en todos los niveles

Seguridad: Debido a que el software casi siempre es un componente crucial de los sistemas humanos, la consecuencia de defectos ocultos puede ser catastrófica ejemplo: como en aplicaciones automotrices o aeronáuticas

Administración de riesgos: El análisis y la mitigación de riesgos es asunto de los ingenieros de software, la organización del ACS garantiza que las actividades de administración de riesgos se efectúen en forma apropiada y que se establezcan
planes de contingencia relacionados con los riesgos.


Principales tareas del ASC

El objetivo del equipo de ACS es auxiliar al equipo del software para lograr un producto final de alta calidad.

  1. Prepara el plan de ACS para un proyecto.
  2. Participa en el desarrollo de la descripción del software del proyecto.
  3. Revisa las actividades de la ingeniería de software a fin de verificar el cumplimiento mediante el proceso definidos para el software.
  4. Audita los productos del trabajo de software designados para verificar que se cumpla con aquellos definidos como parte del proceso de software.
  5. Asegura que las desviaciones en el trabajo de software y sus productos se documenten y manejen de acuerdo con un procedimiento documentado.
  6. Registra toda falta de cumplimiento y la reporta a la alta dirección
  7. Las desviaciones detectadas en las actividades del software y en los productos del trabajo de software son documentadas y manejadas de acuerdo a procedimientos previamente documentados.
  8. El grupo de ACS conduce periódicamente revisiones de sus actividades y reuniones con el personal de ACS del cliente, según sea necesario.

Métricas del ASC del  Software

Las métricas del Software comprenden un amplio rango de actividades diversas, estas son algunas:

‣ Aseguramiento y control de calidad.
‣ Modelos de fiabilidad.
‣ Modelos y evaluación de ejecución.
‣ Modelos y medidas de productividad.

Según Juran (1992), la calidad, para poder ser entendida de una mejor manera y posteriormente ser medida con eficacia, debe ser expresada por medio de otros términos que tengan más sentido para el usuario. En el caso del software. Estos factores son el medio por el cual se traduce el término “calidad” al lenguaje de las personas que manejan la tecnología.

Los factores de calidad que afectan a la calidad del software se dividen en dos grandes grupos:
  • Los que miden directamente (defectos descubiertos en las pruebas).
  • Los que se miden directamente (facilidad de uso o de mantenimiento).
En cada caso debe presentarse una medición. Se debe comparar el software con algún conjunto de datos y obtener así algún indicio sobre la calidad. 

McCall, Richards & Walters (1977), propusieron una clasificación de los factores que afectan directamente a la calidad del software. Estos factores se muestran en la figura 2.30 En ella se concentran tres aspectos importantes de un software:
  • Características operativas.
  • Capacidad para experimentar cambios.
  • Capacidad para adaptarse a nuevos entornos.
A continuación se describen los factores que propone McCall, Richards & Walters.

CorrecciónEl grado en que el programa cumple con su especificación y satisfacer los objetivos que propuso el cliente.

Confiabilidad. El grado en que se esperaría que un programa desempeña su función con la precisión requerida.

Eficiencia. La cantidad de código y de recursos de cómputo necesarios para que un programa realice su función.

Integridad. El grado de control sobre el acceso al software o los datos por parte de las personas no autorizadas.

Facilidad de uso. El esfuerzo necesario para aprender, operar y preparar los datos de entrada de un programa interpretan la salida.

Facilidad de mantenimiento. El esfuerzo necesario para localizar y corregir un error en un programa.

Flexibilidad. El esfuerzo que demanda probar un programa con el fin de asegurar que realiza su función.

Portabilidad. El esfuerzo necesario para transferir el programa de un entorno de hardware o software a otro.

Facilidad de reutilización. El grado en que un programa o partes de él pueden reutilizarse en otras aplicaciones(en relación con el empaquetamiento y el alcance de las funciones que realiza el programa).

Interoperabilidad. El esfuerzo necesario para acoplar un sistema con otro.

Es difícil y en algunos casos imposible, desarrollar medidas directas de estos factores de la calidad, sólo se miden de forma subjetiva ya que es común que las métricas adquieran la forma de una lista de comprobación que se emplea para “asignar una graduación” a atributos específicos del software. 


Proceso de recopilación de métricas de Software



Clasificación de las métricas de Software

Según los criterios:

De complejidad. Métricas que definen la medición de la complejidad: volumen, tamaño, anidaciones, y configuración.


De calidad. Métricas que definen la calidad del software: exactitud, estructuración o modularidad, pruebas, mantenimiento.


De competencia. Métricas que intentan valorar o medir las actividades de productividad de los programadores con respecto a su certeza, rapidez, eficiencia y competencia

de desempeño: Métricas que miden la conducta de módulos y sistemas de un software, bajo la supervisión del SO o hardware.


Estilizadas. Métricas de experimentación y de preferencia: estilo de código, convenciones, limitaciones, etc.


Ejemplos de principales Estándares.

ISO 12207 – Modelos de Ciclos de Vida del Software.

Estándar para los procesos de ciclo de vida del software de la organización, Este estándar se concibió para aquellos interesados en adquisición de software, así como desarrolladores y proveedores. El estándar indica una serie de procesos desde la recopilación de requisitos hasta la culminación del software.

El estándar comprende 17 procesos lo cuales son agrupados en tres categorías:

·         Principales
·         De apoyo
·         De organización

Este estándar agrupa las actividades que se pueden llevar a cabo durante el ciclo de vida del software en cinco procesos principales, ocho procesos de apoyo y cuatro procesos organizativos

ISO/IEC - 14598.

El estándar ISO/IEC 14598 es actualmente usado como base metodológica para la evaluación del producto software. En sus diferentes etapas, establece un marco de trabajo para evaluar la calidad de los productos de software proporcionando, además, métricas y requisitos para los procesos de evaluación de los mismos.

La norma define las principales características del proceso de evaluación:

·  Repetitividad.
·  Reproducibilidad.
·  Imparcialidad.
·  Objetividad.

Para estas características se describen las medidas concretas que participan: 

·  Análisis de los requisitos de evaluación.
·  Evaluación de las especificaciones.
·  Evaluación del diseño y definición del plan de evaluación.
·  Ejecución del plan de evaluación.
·  Evaluación de la conclusión.


Normas ISO 9000 - ISO/IEC 9126


ISO/IEC 14598-2 Planeamiento y Gestión. 

Contiene requisitos y guías para las funciones de soporte tales como la planificación y gestión de la evaluación del producto del software.

ISO/IEC 14598-3 Proceso para desenvolvedores.

Provee los requisitos y guías para la evaluación del producto software cuando la evaluación es llevada a cabo en paralelo con el desarrollo por parte del desarrollador.

ISO/IEC 14598-4 Proceso para adquirientes.

Provee los requisitos y guías para que la evaluación del producto software sea llevada a cabo en función a los compradores que planean adquirir o reutilizar un producto de software existente o pre-desarrollado.

ISO/IEC 14598-5 Proceso para avaladores.

Provee los requisitos y guías para la evaluación del producto software cuando la evaluación es llevada a cabo por evaluadores independientes.

ISO/IEC 14598-6 Documentación de Módulos.

Provee las guías para la documentación del módulo de evaluación. Los servicios relacionados con la evaluación de software de productos son generalmente adaptados a las necesidades de los usuarios finales individuales o proveedores, en función de por qué se pidió la evaluación.

ISO/IEC 2500n. División de gestión de calidad.

Los estándares que forman esta división definen todos los modelos comunes, términos y referencias a los que se alude en las demás divisiones de SQuaRE.

ISO/IEC 2501n. División del modelo de calidad.

El estándar que conforma esta división presenta un modelo de calidad detallado, incluyendo características para la calidad interna, externa y en uso.

ISO/IEC 2502n. División de mediciones de calidad. 

Los estándares pertenecientes a esta división incluyen un modelo de referencia de calidad del producto software, definiciones matemáticas de las métricas de calidad y una guía práctica para su aplicación. Presenta aplicaciones de métricas para la calidad de software interna, externa y en uso.

ISO/IEC 2503n. División de requisitos de calidad. 

Los estándares que forman parte de esta división ayudan a especificar los requisitos de calidad. Estos requisitos pueden ser usados en el proceso de especificación de requisitos de calidad para un producto software que va a ser desarrollado ó como entrada para un proceso de evaluación. 

ISO/IEC 2504n. División de evaluación de calidad. 

Estos estándares proporcionan requisitos, recomendaciones y guías para la evaluación de un producto software, tanto si la llevan a cabo evaluadores, como clientes o desarrolladores.

ISO/IEC 25050-25099. Estándares de extensión SQuare.

Incluyen requisitos para la calidad de productos de software “Off-The-Self” y para el formato común de la industria (CIF) para informes de usabilidad.


Importancia de un plan de acción para el ACS.

Toda compañía tiene mecanismos para asegurar la calidad en sus productos.

En las últimas décadas, las afirmaciones explicitas del compromiso de una compañía con la calidad se han vuelto una mantra de la mercadotecnia. 

La implicación del software es que muchas entidades diferentes tienen responsabilidad en el aseguramiento de la calidad del software: ingenieros del software, gerentes del proyecto, clientes, vendedores y los individuos que trabajan en el grupo de ACS. 

El grupo de ACS funciona como representante del cliente en el interior de la empresa. Es decir, la gente que realiza el ACS debe ver al software desde el punto de vista del cliente.

Conclusiones sobre la importancia del Aseguramiento de la calidad de Software y desafíos.

El éxito de un producto de software está, básicamente reflejado en la satisfacción de cliente. Esto quiere decir, entregar un producto en el tiempo estimado y que no sobrepase los costos cumpliendo con los requisitos declarados, para lograr aquello. Es necesario tener un plan que trace la ruta para la creación del producto y a su vez tener una estrategia que administre y controle la calidad en el desarrollo de un producto de software.

Como ya lo sabemos los fallos de software afectan a todos los sectores y a todos los países, como puede constatarse en la recopilación de incidentes documentados además el impacto de los errores de software va mucho más allá del coste de su reparación, la pérdida de ingresos, las oportunidades de mercado perdidas, los pedidos tramitados incorrectamente y los errores de facturación, son factores todos ellos que hacen perder dinero a la empresa y  hay que tener en cuenta también el coste de la insatisfacción de los clientes, intangible pero real por ellos este tema es de vital importancia en el día a día de nuestro mundo en pleno siglo XXI y tiene una importancia clave, la calidad del SF no es algo que podemos añadir al final como si se tratará de un punto sin importancia es algo que se debe cuidar desde el inicio y a lo largo del desarrollo de un proyecto de software lo cual es a la vez un verdadero desafió porque no hacerlo como lo hemos mencionado puede tener consecuencias enormes.

El aseguramiento de la calidad del software es importante ya que el propósito es entregar una visibilidad adecuada del proceso utilizado y los productos construidos mediante acciones planificadas que aseguren la calidad de dichos procesos y productos, para ello la ASC revisa, audita e informa sobre los procesos a los estándares y procedimientos establecidos y para conseguir un buen nivel como lo hemos leído es importante utilizar los modelos y métodos apropiados para controlar el proceso del desarrollo del mismo.


Se puede definir como el esfuerzo total para plantear, organizar, dirigir y controlar la calidad del software con el objetivo de dar al cliente productos con la calidad adecuada considerando la implantación de un sistema de calidad del software que este relacionado con la política establecida para su elaboración y que este en correspondencia con la definición internacional ISO de calidad ampliamente aceptada y por los estándares del grupo ISO 9000 como lo hemos mencionado.


Fuentes consultadas.

Pressman, Roger S. (2010). Aseguramiento de la calidad del software. En Ingeniería de software: Un enfoque práctico.(7a. ed). (Pp. 368-380). México: McGraw-Hill.

EcuRed. (2007). Aseguramientos de la Calidad de un Software, de EcuRed Sitio web: https://www.ecured.cu/Aseguramientos_de_la_Calidad_del_Software