Contexto


El dueño de la empresa de desarrollo de software MySoft desea mejorar el proceso que siguen empleados en la construcción de sistemas para otras empresas, pues ha notado que los resultados obtenidos en proyectos recientes han sido inconstantes. Algunos proyectos los terminan antes de lo previsto, pero tienen altos costos de mantenimiento; mientras que en otros casos no se cumple con el tiempo de entrega, lo que aumenta el costo de construcción. Ante estas variaciones ha decidido reunir a sus gerentes de proyecto con el objetivo de revisar opciones que les permitan mejorar su proceso. Sus gerentes proponen algunas alternativas como revisar el proceso de reclutamiento y aumentar la cantidad de programadores que se encuentren certificados con el fin de mejorar la calidad del software que desarrollen. Otros han propuesto intensificar la capacitación del equipo de desarrolladores en técnicas de código limpio, incluso establecer un proceso de desarrollo por parejas.

El dueño no está seguro de que sean estrategias que le permitan mejorar realmente el proceso de desarrollo, ya que ninguno de sus gerentes ofrece datos estadísticos que respalden sus propuestas. Ante este panorama el dueño decide implantar Six Sigma para empezar a medir el proceso de una manera ordenada y metodológica, que arroje datos duros sobre los cuales pueda realizar una toma de decisiones basada en hechos y no en corazonadas y que le permitan entrar en un proceso de mejora continua.

¿Qué es Six Sigma y cómo se puede utilizar en la industria del software? ¿Qué metodología pudiera aplicar para llevar un proceso de desarrollo de software que aumente la productividad y genere una ventaja competitiva? ¿Es posible combinar PSP/TSP con Six Sigma?

Explicación


La demanda de los clientes es cada vez más exigente, el cliente desea que funcione bien desde la primera vez, y así se mantenga al transcurrir el tiempo. Esto también sucede con productos de software. Puedes considerar como ejemplo el uso que le das al software de la computadora que utilizas para leer este curso. Cada vez entras a la plataformalo que esperas es que tu navegador de Internet te muestre la información correcta y rápido, siempre. Si has tenido problemas con el navegador, seguro decidirás cambiarlo. Si una empresa desea mantener su actividad desarrollando software, debe enfocar sus esfuerzos por fabricar productos con estándares de calidad muy altos, de lo contrario los clientes optarán por otras organizaciones con mejores productos. Esto orilla a las empresas buscar alternativas que les permitan construir software con cero defectos desde la primera vez y con el mínimo de pruebas, a través de una constante capacitación, enfoque al proceso de desarrollo y creando una estrecha relación con sus clientes y proveedores.

10.1 Six Sigma

Es aquí donde entra Six Sigma. Es una metodología que busca evitar la variación de un proceso. Su nombre proviene de la letra griega ( σ ) que es utilizada para expresar la desviación estándar en estadística, que es la distancia que existe al valor de la media.

Una manera de interpretar la desviación estándar es que entre mayor sea el valor de sigma menos variación tiene el proceso. Así que un valor de sigma igual a 6 significa que existen menos de 3.4 defectos por cada millón de eventos, también conocido como DPMO por sus siglas en inglés (Defect per million of opportunities), que equivale a tener una tasa de error de 0.0003%, prácticamente sería un proceso libre de errores. Tener una tasa tan baja de errores permite que el proceso se mantenga constante, la productividad incrementaría, los costos estarían al mínimo, los precios serían competitivos y finalmente los clientes se mantendrían satisfechos.

Sigma

DPMO

% de eficiencia

1 691,462 30.9
2 308,538 69.1
3 66,807 93.3
4 6210 99.4
5 233 99.9999966
6 3.4 99.9999966

El-Haik, B. y Shaout, A. (2010). Software Design for Six Sigma: A Roadmap for Excellence. USA: John Wiley & Sons.


Six Sigma ha sido implementada con éxito en la industria manufacturera o de transformación, debido a que es posible llevar a controlar todo el ciclo de producción, desde la entrada de materia prima hasta el producto terminado. En la industria del software implementar six sigma ha sido bastante difícil, debido a que es un proceso en el que interviene información de la cual se tiene poco control.

Imagina que te encuentras en un proyecto de desarrollo de software y, como parte de la ingeniería de requerimientos, el cliente te ofrece información incompleta o inclusive errónea de sus necesidades. Esto sin duda provocará retrabajo, que conduce a obtener baja productividad y aumentar costos.

El cliente percibe la calidad del software cuando cumple con sus expectativas, en cuanto a la disponibilidad, consistencia, integridad y facilidad de uso. Estos atributos se consiguen a través del control y seguimiento de algunas métricas del proceso de software, que permitan reducir la variabilidad y al mismo tiempo aumentar la capacidad del proceso.

Haz clic en cada atributo para conocer más detalles

Defecto:

En software el defecto no sólo es un bug que aparece en su codificación, sino cualquier elemento que provoque insatisfacción del cliente. Un proceso que sea lento para generar un reporte de información, una interfaz gráfica que provoque errores de captura, o incluso una funcionalidad incompleta, podrían no tener ningún bug en el código, sin embargo, el usuario podría considerarlas como elementos importantes de lo que espera recibir.

Evento u oportunidad:

Una oportunidad se define como cualquier operación que puede introducir un error o un defecto. Para que tengas una idea de lo difícil que puede llegar a ser contabilizar los defectos y oportunidades en el software El-Haik Shaout (2010), lo explican en el siguiente ejemplo: Considera la acción de escribir la especificación de requerimientos.


Un defecto podría ser encontrar errores tipográficos en este documento. Ahora tienes que decidir la unidad de medida de oportunidad que puede ser una página. Si resulta que encuentras 3 errores tipográficos en 10 páginas, se estima entonces que la tasa de defectos sería de 300,000 por cada millón de páginas, es decir, te encuentras a 2 sigmas o un factor de 88,235 más lejos que el valor de six sigma. Eso te da una idea de lo difícil que puede llegar a alcanzar los niveles de defectos esperados en six sigma.

10.2 DMAIC de Six Sigma en software

La metodología de Six Sigma propone el siguiente proceso que permite mejorar los procesos hasta alcanzar cero defectos. Este proceso contiene 5 fases y se le conoce como DMAIC por sus siglas en inglés: Define, Measure, Analyze, Improve, Control.

Fase 1. Definir

El primer paso es crear una definición del proyecto que incluya una declaración del problema, objetivo y beneficios esperados. En esta definición se debe aclarar el alcance del proyecto, las personas que participarán, el tiempo y presupuesto asignado.
En esta definición también se incluyen los requerimientos del cliente y los atributos que medirán la calidad del producto resultado del proyecto.

Una de las herramientas que se recomiendan utilizar es el diagrama de mapeo del proceso SIPOC (Supplier, Inputs, Process, Outputs, Customers) del desarrollo de software. Observa el siguiente diagrama y el orden de las preguntas.

El-Haik, B. y Shaout, A. (2010). Software Design for Six Sigma: A Roadmap for Excellence.USA: John Wiley & Sons.

Fase 2. Medir

En esta fase se recopila toda la información de los procesos actuales, y se establece una línea de base que determina la capacidad del proceso, se determinan las métricas de desempeño del proceso y las metas que se desean alcanzar para mejorar.
En esta fase se pueden utilizar herramientas estadísticas para definir los factores que afectan el desempeño, también llamados factores X.

Fase 3. Analizar

Se identifican formas para reducir la brecha que existe entre el desempeño actual del proceso de desarrollo de software y el desempeño deseado.
Se establece la relación entre los factores de entrada X y las salidas Y.
Es posible realizar un análisis estadístico haciendo uso de pruebas de hipótesis, intervalos de confianza para determinar cuáles son los factores más significativos de variación.

Fase 4. Mejorar

El primer paso será identificar las soluciones potenciales a través de reuniones de equipos de trabajo en las que se realicen lluvias de ideas. Se sugieren algunas acciones para mejorar el proceso y se aplican en una prueba piloto. Si se confirma que existe una mejora se detalla un plan de implementación y un análisis costo beneficio. Finalmente se aplica el plan y se establecen las metas de mejora.

Fase 5. Controlar

El primer paso será determinar la estrategia en la que se fundamente el plan de control. Se realiza el plan en el que se asignan responsabilidades de monitoreo y seguimiento de las métricas del control.

La metodología DMAIC permite establecer mejoras sustanciales que permiten romper paradigmas, ya que se basa en atacar las causas y no los efectos, además, permite que el equipo de trabajo tome decisiones basadas en hechos haciendo uso de estadística, lo que permite aplicar mejoras con las que el cliente se ve beneficiado.

10.3 DFSS de Six Sigma en software

Además de la metodología DMAIC, Six Sigma ofrece otra metodología enfocada en el diseño de los productos y al proceso del software, que se llama DFSS – Design for Six Sigma. Esta metodología pretende garantizar que los nuevos diseños de software cumplan con los requisitos del cliente desde el lanzamiento, mediante un proceso que sea comprendido, aplicado, medido y monitoreado.

Las fases de DFSS las puedes identificar por las siglas ICOV: Identificar, Conceptualizar, Optimizar y Verificar.

Fase 1: se identifican las necesidades del cliente y las necesidades del diseño. Se determinan los factores CTS (Critical To Satisfaction), los parámetros del diseño y sus variables del proceso.

Fase 2: conceptualizar las especificaciones y los riesgos técnicos del proyecto.

Fase 3: optimizar las funciones de transferencia de diseño y mitigar los riesgos.

Fase 4: verificar que el diseño optimizado reúne los requisitos (del cliente, regulatorios, y el despliegue de la función de software).

Estas cuatro fases puedes relacionarlas con etapas del desarrollo del software de la siguiente manera:

Haz clic en cada etapa para conocer más detalles

Diagrama tomado de El-Haik, B. y Shaout, A. (2010). Software Design for Six Sigma: A Roadmap for Excellence. EEUU: John Wiley & Sons.

Relación de Six Sigma y PSP/TSP

En opinión de El-Haik, y Shaout (2010), las metodologías de Six Sigma permiten que los procesos definidos por PSP/TSP puedan alcanzar su máximo potencial. Mientras que los principales objetivos planteados por CMMI/PSP/TSP están enfocados en la mejora del desempeño de los equipos de software en términos de costo, tiempo de ciclo y calidad en la entrega, los objetivos de Six Sigma no especifican una definición particular del proceso para alcanzar la mejora, sino que también Six Sigma se enfoca en alcanzar otros objetivos del negocio, como mejoras al servicio al cliente y en sus niveles de satisfacción.

Otra diferencia es que Six Sigma se enfoca en un proceso específico que haya sido seleccionado, mientras que PSP/TSP incluyen todos los procesos de desarrollo de software.

“Six Sigma aplicado al software se enfoca al proceso y al producto de software, a equilibrar la "voz del cliente" y la "voz del negocio" para maximizar el valor general de la empresa resultante” (El-Haik, y Shaout, 2010).

Cierre


Six Sigma es considerada una de las metodologías de mejora continua con mayor éxito en empresas de manufactura. Ahora la industria del software la está utilizando para el proceso de desarrollo de software con el fin de eliminar los defectos y asegurar la calidad del producto. Es una metodología fuertemente fundamentada en el análisis estadístico, por lo que establecer las métricas del proceso de desarrollo es el primer paso en su implementación. Este fuerte énfasis en medir el proceso actual se da cuando los involucrados tienen la disciplina de registrar sus actividades diarias. Es aquí donde entra la metodología PSP, que propone algunas plantillas en las que el programador registra su trabajo y los defectos encontrados.

Al recuperar todos estos registros, es posible realizar un análisis exhaustivo del proceso, proponer algunas mejoras, implementarlas en una prueba piloto, revisar si arroja los resultados esperados, y finalmente decidir implantarlo en el proceso actual. Los beneficios de Six Sigma se alcanzan mediante el trabajo en equipo, con la guía de un verdadero líder o coach, y para ello es posible hacer uso de la metodología de TSP. Un equipo autodirigido puede encontrar nuevas formas de hacer mejor su trabajo, rompiendo antiguos paradigmas si es necesario, salirse de su zona de confort y buscar alcanzar nuevos objetivos.

Checkpoint


Asegúrate de poder:

  • Reconocer a Six Sigma como una metodología de mejora de procesos que puede ser aplicada en el desarrollo de software.
  • Aplicar la metodología DMAIC y DFSS al proceso de desarrollo de software como estrategia para eliminar los defectos y generar un producto de calidad.

Referencias


  • El-Haik, B. y Shaout, A. (2010). Software Design for Six Sigma: A Roadmap for Excellence. EEUU: John Wiley & Sons.