You are on page 1of 40

Aseguramiento de calidad en software

SQA Software quality assurance
Introducción al curso
Datos del profesor
MATI - ISC Raúl Antonio Flores Blanco, PMP
Tel. cel. (614) 115 4405 (cel, whatsApp)
raul.flores.b@gmail.com (correo personal)
rfloresb@uach.mx (correo para otros asuntos)

Plataforma - FCA (tareas y comentarios de la clase)

Puesto y empleo actual: Gerente de desarrollo TGC

Experiencia
• Gerente de desarrollo
• Encargado de la oficina de proyectos
• Miembro en equipos evaluadores CMMI v 1.3 N2 y N3
• Encargado de procesos de mejora CMMI v 1.2 N2
• Líder de proyectos de desarrollo y de consultoría
• Consultor de implementación de aplicaciones ERP
• Desarrollador de software

• Iniciativa privada (manufactura, servicios)
• Sector gobierno (estatal, recaudación)
• Consultoría (implantación de sistemas)
• Desarrollo y mantenimiento de sistemas
• Academia (UACH, ITESM)
Datos para plataforma FCA
• https://fca.aulas.uach.mx/login/index.php
• Curso: Aseguramiento de calidad
• Password: 726201408

• Avisos
• Material de la clase
• Tareas
• Trabajos
Temario

Objetivos del curso
• Proporcionar al alumno las habilidades para:
• Evaluar la calidad de los proyectos de desarrollo de software.
• Tomar decisiones encaminadas a la mejora continua del desarrollo de
software.
• Tomar decisiones encaminadas a implementar acciones correctivas.

• Conocer:
• Introducción a la aseguranza de calidad.
• Rol de la aseguranza de calidad.
• Formalización de actividades de aseguramiento de calidad.
• Seguimiento y aprobación de proyectos.
• Administración de subcontratistas.
• Modelos relacionados de aseguramiento de calidad.
Objeto de estudio 1
• Introducción a la aseguranza de calidad.

• ¿Qué es aseguranza de calidad?
• Importancia de asegurar la calidad en los proyectos de software.
• Objetivos de la aseguranza de calidad.

Objeto de estudio 2
• El rol de aseguranza de calidad.
• Alcance y autoridad de las actividades de aseguranza de calidad.
• Rol del asegurador de calidad en el departamento de TI.
• Participación del asegurador de calidad durante el desarrollo de
proyectos de software.


Objeto de estudio 3
• Formalización de actividades de aseguramiento de calidad

• Definición y seguimiento, de procesos y procedimientos de
aseguranza de calidad
• Reporte de resultados
• Acciones correctivas en caso de desviaciones
Objeto de estudio 4
• Seguimiento y aprobación de proyectos

• Revisiones y evaluaciones.
• Aprobaciones previas a la implantación de proyectos.
• Mediciones.
Objeto de estudio 5
• Administración de subcontratistas

• Diferencia entre contratista y subcontratista.
• Definición de requerimientos de calidad en subcontratistas.
• Reclutamiento, selección y evaluación de subcontratistas.
• Seguimiento a subcontratistas.
Objeto de estudio 6
• Modelos relacionados con la aseguranza de calidad en el
departamento de TI

• CMMi
• ISO (15504, 12207, TL9000)
• MOPROSOFT
• IEEE
Ponderación de la evaluación
• Primer parcial 20%
• Segundo parcial 20%

• Propuesta de arquitectura de un sistema de calidad 10%
• Propuesta de programa de mejora de desarrollo 10%
• Documentación procesos 10%


• Examen final 30%
Objeto de estudio 1


Introducción a la aseguranza de calidad.
¿Qué es el software?
• Programas de computadoras
• Procedimientos (instalación, configuración, operación, actualización,
respaldo)
• Documentación (instalación, configuración, usuario final, técnicos y
de interfaces)
• Datos (configuración, operación)

• IEEE
• “Programas de computadoras, procedimientos, documentación y
datos probablemente asociados o relacionados con la operación de
sistemas de computadoras”.
Peculiaridades del desarrollo
• Complejidad del producto
• “las maquinas mas avanzadas, pueden tener miles de variaciones en
modos de operación. Un producto de software típico puede tener
millones de configuraciones de operación.”
• Visibilidad del producto
• “la mayor parte de los defectos de los productos son visibles, pero
muchos defectos de los productos de software son invisibles.”
• Proceso de desarrollo y producción
• “Las fases de producción brindan oportunidades para detectar y
corregir defectos. En la producción del software el beneficio de
detectar y corregir errores se obtiene solo durante el desarrollo (o
mantenimiento)”.
Peculiaridades del ambiente de
trabajo
• Condiciones contractuales
• Presupuesto limitado
• Tiempo limitado
• Listados detallados de requerimientos
• Sujeto a relación cliente – proveedor
• Supervisión del cliente
• Cooperación del desarrollador con el cliente
• Control de cambios
• Requiere trabajo en equipo
• Carga de trabajo alta por mantenimiento
• Personal disponible limitado, a veces poco
capacitado
• Alto nivel de especialización
• Cooperación con otros equipos de proyectos
existentes
• Cambios de miembros del equipo.

• Coordinación con otros equipos de desarrollo
• Múltiples equipos en organizaciones
• Equipos externos
• Interfaces con otros sistemas
• Múltiples interfaces con sistemas preexistentes
• Continuación de proyectos con alta rotación de personal
• Alta movilidad de personal
• Alta especialización
• Duración de los proyectos
• Mantenimiento del sw por periodos largos de
tiempo
Consecuencias de las peculiaridades del software y de su
desarrollo
• Los enfoque tradicionales de calidad aplicados a la producción masiva de artículos FISICOS y
sencillos no funcionan para el desarrollo.
• (por ser intangible y complejo no sirven los enfoques tradicionales de calidad)
• Es imposible probar al 100% todas las combinaciones de posibilidades de operación del SW.
• (es imposible estar seguros que el software no tiene errores y no va a fallar)
• Evaluar la calidad del software al final del proceso, cuando el producto está terminado es poco
efectivo y caro.
• (no sirve solamente probar al final)
• Los modelos estadísticos no pueden contar con muestras grandes para poder inferir
comportamientos.
• (la duración de los proyectos y la variabilidad de los procesos dificulta el control estadístico de
procesos con enfoques tradicionales)

• Los ambientes de trabajo en el desarrollo a veces es caótico y lleno de estrés.
• Hay alta rotación de personal.
• Es muy costoso corregir errores al final del desarrollo o cuando el producto ya fue liberado al
cliente.

Manufactura Vs Desarrollo
• Manufactura
• Intensivas en maquinaria
• Actividades repetitivas
• Producción masiva de productos

• Desarrollo de software
• Intensiva en personal
• Actividad intelectual
• Un solo producto desarrollado (por proyecto, en general)
Errores, defectos y fallas
• Error de software
• Es una incorrección cometida por un desarrollador, al elaborar un elemento de software.
(documentación, código o cualquier otro elemento)
• El error es causado por el desarrollador y “existe” en el software aun y cuando no se detecte.
• Los errores se pueden prevenir capacitando a los desarrolladores y diseñado mejor los productos de
desarrollo.

• Defecto de software
• Un comportamiento no deseado en el software, que dado un error y bajo ciertas condiciones, se
puede disparar.
• Los defectos de software se detectan ANTES de liberar el producto al cliente durante el proceso de
desarrollo, por medio de revisiones personales, verificaciones inspecciones o validaciones con el
cliente.

• Falla de software
• Es un problema o comportamiento indeseado que se presenta a los usuarios cuando usan el
software DESPUES de liberar el producto.
• Las fallas ocurren cuando al usuario se le presentaron las condiciones necesarias para activar el
defecto.

Causas de los errores
• Definición de requerimientos defectuosa.
• Definición incorrecta o incompleta de requerimientos.
• Requerimientos claves no definidos.
• Inclusión de requerimientos no necesarios.

• Fallas de comunicación cliente – desarrollador.
• Interpretación incorrecta de instrucciones dadas por los clientes en los
requerimientos.
• Interpretación incorrecta de cambios solicitados de manera oral o escrita
por el cliente durante el desarrollo.
• Interpretación incorrecta de respuestas del cliente a los problemas de
diseño detectados durante el desarrollo.


Causas de los errores
• Desviación deliberada de los requerimientos
• Mejoras introducidas por el desarrollador sin aprobación del cliente.
• Decisiones del desarrollador por recortar el alcance debido a presiones
de calendario o presupuesto.
• Reutilización de componentes de proyectos anteriores sin un análisis de
impacto adecuado.

• Errores lógicos en el diseño
• Algoritmos equivocados.
• Errores de secuencias de pasos en procesos.
• Errores de definición en condiciones de límite.
• Omisión de estados de operación necesarios.
• Omisión de validaciones contra operaciones ilegales en el sistema.

Causas de los errores
• Errores de programación.

• Falta de apego con estándares de documentación y codificación
• Errores por dificultad en la comprensión de código desarrollado por otros
integrantes otros equipos.
• Errores por dificultad en la comprensión de código desarrollado por
miembros que ya no forman parte del equipo
• Dificultad para entender el código cuando se hacen verificaciones de
código.
• Dificultad para probar los módulos desarrollados.
• Dificultad para dar mantenimiento cuando se presentan fallas reportadas
por el cliente.




Causas de los errores
• Proceso de pruebas incompleto
• Porciones de código o módulos no probados debido a planes de pruebas
incompletos.
• Errores por no reportar adecuadamente los errores y defectos
encontrados.
• Errores por no corregir adecuadamente los defectos debido a una mala
definición de la causa.
• Corrección incompleta de defectos debido a negligencia o falta de
tiempo.

• Errores de usuario en interfaces o procesos

• Errores de documentación


Enfoques para lograr la calidad en el desarrollo de software
Enfoque ¿Qué busca? Consecuencias
Corregir fallas Corregir lo errores que el usuario reporta cuando usa el producto que ya
fue liberado.

• Implementación de sistemas de atención a llamadas de soporte.
• Implementación de sistemas de registro y seguimiento de fallas
reportadas.
Costoso , mucho trabajo.
Producto inestable y propenso fallar.
Insatisfacción del cliente.

Malos resultados
Corregir defectos Corregir los errores que el equipo de desarrollo y el cliente detectan antes
de que el producto sea liberado. (Los defectos son detectados por
personas o grupos diferentes a quien generó el error).

• Planear e implementar una estrategia de detección y corrección de
defectos.
• Implementar procesos que faciliten la detección y corrección de
defectos.
Se requiere personal y esfuerzo destinado a detectar los
errores.
Costoso por el esfuerzo invertido para detectar y corregir
los errores detectados.

Resultados regulares.
Corregir errores Detectar y corregir los errores antes de que el entregable se de por
terminado. (Los errores son detectados y corregidos por la misma
persona que realiza el trabajo).

• Realizar actividades de auto verificación y corrección de errores.
• Métodos y técnicas apropiadas.
Se requiere capacitar al personal en tánicas adecuadas.

Mejores resultados.
Menos costoso,
Prevenir errores Enfoque sistemático de aseguramiento de calidad.
• Implementar un sistema de calidad.
• Cuidar los procesos.
• Buscar y corregir las causas raíz de los errores.
El mejor enfoque a la larga.
Calidad
• El grado en que un sistema, componente o proceso cumple con los
requerimientos especificados. (Philip B. Crosby)

• El grado en que un sistema, componente o proceso cumple las
necesidades o expectativas de las necesidades de los clientes o
usuarios. (Joseph M. Juran)

• “ La calidad significa conformidad con los requerimientos”.

• “La calidad consiste en esas características del producto que cumplen
las necesidades de los clientes y que por eso proporcionan satisfacción”.

• “La calidad consiste en la libertad de deficiencias”

Calidad de software - Pressman
Cumplimiento de los requerimientos funcionales y de desempeño
explícitamente definidos, procesos documentados y características implícitas
que son esperadas para cualquier software profesionalmente desarrollado.

Los requerimientos del software son la base de las medidas de calidad. La falta de
concordancia del producto con los requerimientos establecidos es una falta de calidad.

Los estándares especificados definen un conjunto de criterios que guían la forma en que
el software se elabora. Si no se siguen es una falta de calidad.

Los criterios implícitos si no se cumplen, se pone en duda la calidad del producto.
Control de calidad
• Actividades encaminadas a evaluar un producto desarrollado
o construido.

• Busca evitar que productos defectuosos sean entregados al
cliente.
Repaso de Gurús de
calidad
Repaso de Gurús de calidad aplicados al desarrollo
En Estados Unidos los tres mas importantes son: Deming, Juran y Crosby.

• Hasta que la alta dirección se involucra permanentemente en los esfuerzos por
mejorar la calidad NADA PASARÁ.
• Se requiere un compromiso hacia la calidad de todos los participantes.
• Gerentes
• Desarrolladores
• Enfocarse a arreglar “procesos” y no a corregir personas.
• “Desmenuza“ los procesos para detectar bloqueadores de la calidad y
eliminarlos.
• Identifica al cliente (interno o externo). Satisface los requisitos o requerimientos
de los clientes.
• Elimina los desperdicios.
• Fomenta trabajo en equipo y la pertenencia de los integrantes


W. Edwards Demming
• Métodos estadísticos para lograr control de calidad.
• Modelo “Plan – Do – Check – Act” para implementar programas de
mejora.

• I Initiating
• D Diagnosing
• E Establishing
• A Acting
• L Learning

• 14 puntos para la calidad.


Joseph M. Juran
Tres caminos para lograr el reto de la calidad.
• Mejoras estructuradas anuales.
• Programas masivos orientados a calidad.
• Liderazgo de la alta Dirección.

Recomendaciones para lograr mejoras anuales. Un equipo deberá:
• Estudiar los síntomas de los defectos y las fallas.
• Desarrollar una teoría de la causa de las fallas.
• Probar la teoría de la causa.
• Estimular la corrección por los departamentos apropiados.

Causa de los errores (causados por la administración / el trabajador).
• El trabajador sabe lo que debe hacer.
• El trabajador conoce el resultado de su trabajo.
• El trabajador tiene medios para controlar los resultados
Kaoru Ishikawa
Seis factores para la calidad.
• Calidad en “toda” la organización.
• Auditorias de calidad por los directivos.
• Educación y entrenamiento para todos en la compañía.
• Actividad de círculos de calidad
• Aplicación de métodos estadísticos (7 herramientas)
• Promoción de actividades de calidad
Dr. Yoji Akao y Dr. Tadashi
Yoshizawa
“House of quality” (Quality Function deployment).

• Uso de una matriz para relacionar (mapear) requerimientos con especificaciones del producto.
• Se priorizan y cuantifican los requerimientos.

• Satisfacer todos los requerimientos del cliente.
• Requerimientos que puede expresar.
• Requerimientos que da por hechos.
• Requerimientos que el desarrollador puede anticipar.

• Mejora comunicación con el cliente.
• Identifica factores críticos de éxito.
• Rastreo de requerimientos.
• Prioriza funciones y características.
• Proporciona una base objetiva para reducir calendario si se requiere.

• Se deben implementar métodos mejores para identificar requerimientos.


Genishi Taguchi
Variabilidad reducida en procesos y productos.


Shigeo Shingo
Zero Quality Control (Zero QC)
• Inspección de la fuente.
• Poka-yoke.

• Diagrama de procesos del desarrollo.
• Listas de verificación de actividades.
• Inspecciones.
• Concepto de cliente interno y externo.
Philip Crosby / Watts Humphrey
Conceptos de implementación de programas de calidad y CMMI.
La aseguranza de calidad - IEEE
Conjunto de acciones sistemáticas y planeadas necesarias para proveer
confianza adecuada de que el desarrollo y mantenimiento del software
cumplen con los requerimientos técnicos y funcionales establecidos, así
como con los requerimientos administrativos de cumplimiento de
calendarios y apego a presupuestos.

• SQA se trata de planear y aplicar una variedad de acciones.
• Estas acciones se integran a lo largo del proceso de desarrollo y
mantenimiento.
• Se llevan a cabo para sustentar la confianza de que el producto cumplirá
con los requerimientos técnicos y funcionales
• También da confianza sobre el apego de los procesos a los estándares
establecidos

Programa de calidad
Para lograr que el desarrollo de software se realice con calidad se
requiere un enfoque que tome en cuenta conjuntamente los siguientes
factores:

• Estrategia de negocio.
• Estructura organizacional.
• Personal y talento disponible.
• Técnicas utilizadas.
• Procesos que se siguen.
• Recursos requeridos para desarrollar.
• Producto desarrollado.

Programa de calidad
• Un programa que incorpora 3 elementos:
• Establecer los requerimientos: Establecer y especificar los
requerimientos para la calidad de un producto.
• Establecer y controlar los métodos: Establecer métodos,
procesos y procedimientos para desarrollar, operar, desplegar y
mantener el producto.
• Evaluar la calidad: Establecer y mantener métodos, procesos y
procedimientos para evaluar la calidad del producto y de los sub
productos, documentos, procesos o actividades que impactan la
calidad del producto.
Fin