Contexto
Elías es un ingeniero encargado del aseguramiento de la calidad en una empresa dedicada al desarrollo de software a la medida de sus clientes. Una de sus autoridades es establecer un proceso de mejora que ayuda a construir programas y sistemas de cómputo de acuerdo a las exigencias de los clientes y los servidores de la industria. A los pocos días de cubrir este puesto en la empresa, Elías se dio cuenta que la prioridad de la mayoría de los proyectos de desarrollo es cumplir con las fechas de entrega, por lo que todo el proceso de construcción debe cumplir con el plan establecido sin ninguna clase de retraso. Esto ha provocado un gran costo para la empresa en el mantenimiento del software ya entregado, debido a las innumerables solicitudes de los clientes de solucionar defectos que detectan al momento de utilizarlo. Este problema ha orillado a la compañía a establecer un área específica para el mantenimiento de sus productos, superando, en número, al equipo de desarrollo de proyectos.
El principal problema que Elías detectó es que en el proceso de desarrollo sólo se tienen algunos datos que arroja el equipo de testing sobre la cantidad de defectos encontrados y solucionados, sin embargo no hay un análisis de trazabilidad sobre la causa raíz de estos errores. Una de las excusas más frecuentes de los gerentes operativos es que el calendario de fechas de cada proyecto es cada vez más corto y no les queda tiempo para establecer otro tipo de indicadores. Consideran que cualquier esfuerzo relacionado con realizar mediciones al proceso será una actividad que les consume tiempo valioso para entregar a tiempo sus proyectos.
Explicación
14.1 Métricas del software
El grado de la calidad del software se establece a través de una evaluación numérica de sus atributos. Para estar seguros de que se ha construido un software de mejor calidad que la versión anterior, es necesario determinar medidas que permitan su comparación, evitando así que juicios subjetivos en relación a la calidad del producto. El software no puede establecer una sola métrica para determinar si la calidad es mejor o peor, es necesario formular un grupo de medidas desde la planeación. De acuerdo con Pressman (2010), medir al software tiene dos principales objetivos: entender mejor el proceso de diseño y la construcción del software, y segundo, enfocarse en los atributos que dan valor al software.
“La medición es esencial si debe lograrse la calidad” (Pressman, 2010).
Establecer métricas de producto permite lo siguiente:
El principal reto que tiene la industria del software al establecer cualquier métrica, es que las medidas no absolutas utilizadas como las que existen en otras industrias, por ejemplo, la velocidad, el voltaje y la temperatura, sino que tienen un cierto grado de subjetividad que puede prestarse al debate. Sommervile (2011) y Pressman (2010) coinciden en los siguientes pasos que conforman el proceso de medición:
Principios asociados con las métricas:
Atributos de las métricas efectivas:
Al establecer las métricas del software es importante que consideres los siguientes atributos que evitan confusiones o ambigüedades.
De acuerdo con Pressman (2010), una métrica efectiva debe tener las siguientes características:
14.2 Tipos de métricas del software
De acuerdo con Sommerville (2011), existen dos tipos de métricas, las de control y las de predicción.
Imagen tomada del libro de Sommerville, I. (2011). Ingeniería de Software (9ª ed.). México: Pearson Educación.
Métricas del producto de software
Sommerville (2011) propone dos clases esencialmente de métricas del producto de software.
Métricas dinámicas: son las que se pueden realizar cuando el producto del software se está ejecutando, por ejemplo, el número de reportes de defectos o el tiempo requerido para completar un cálculo.
Métricas estáticas: esta clase precisa de mediciones a elementos que representan el software, por ejemplo, al diseño, a la documentación o a los programas. Permiten valorar la complejidad, comprensibilidad y mantenibilidad. Entre las mediciones estáticas se encuentran el tamaño del código y la longitud de los identificadores que se utilizaron.
Recuperado de de Sommerville, I. (2011). Ingeniería de Software (9ª ed.). México: Pearson Educación.
Ambigüedad del software
El análisis de las métricas e indicadores de un software requiere la consideración del contexto en donde se generan, ya que podrían conducir a conclusiones erróneas si no se toman en cuenta. Por ejemplo, considerar que la cantidad de cambios solicitados por el cliente a una versión del software entregada es una medida de la usabilidad del software, puede ser un error, ya que no todos los cambios están relacionados a defectos de usabilidad, sino también incluyen cambios en las necesidades del cliente o cambios que se tienen que realizar para cumplir con una norma externa; en ambos escenarios, los cambios no tienen que ver con la usabilidad que percibe el cliente. De igual manera, el hecho de que no se registren cambios a un software entregado puede deberse a que el usuario sigue utilizando herramientas antiguas en lugar de una nueva versión.
14.3 Técnicas de optimización
La optimización del software es el proceso de modificar aspectos del software con el fin de mejorar su eficiencia, ya sea a nivel del diseño, del código fuente o a nivel del tiempo de ejecución. Según El-Haik y Shaout (2010), en este mismo proceso de optimización se debe tener en cuenta que existirá la posibilidad de afectar algún otro atributo. Por ejemplo, enfocar el esfuerzo por optimizar la seguridad del software podría afectar el tiempo de respuesta del software.
El paradigma GQM (Goal-Question-Metric)
Para mejorar un proceso es posible hacer uso del paradigma GQM o Meta-Pregunta-Métrica, propuesto por Basili y Rombach en 1988 y ha sido ampliamente utilizado en procesos de mejora en la NASA.
Según Sommerville (2011), la ventaja de seguir este enfoque de mejora es la separación que existe entre las preocupaciones de la organización (expresadas en las metas) con las preocupaciones específicas del proceso, además busca obtener datos que ayuden a mejorar un aspecto particular del proceso y no sólo generar la métrica para medir algo.
El paradigma es utilizado para ayudar a responder a las siguientes preguntas:
Metas: es un objetivo al que se desea llegar. Es posible que la organización desee terminar sus proyectos de desarrollo en menos tiempo, aumentar la confiabilidad del software, mejorar la seguridad de la información.
Preguntas: para cada una de las metas se proponen algunas preguntas a resolver. ¿Cómo se reduce el tiempo dedicado a la documentación de requerimientos? ¿Cuántos casos de prueba deben diseñarse como parte del aseguramiento de la calidad? ¿En qué parte del proceso existe mayor consumo de tiempo?
Métricas: se establecen las métricas que responderán a cada una de las preguntas. Estas métricas pueden confirmar si el desempeño de un proceso ha mejorado.
En el siguiente diagrama puedes observar cómo una meta genera varias preguntas y algunas métricas pueden responder a una o varias preguntas.
El paradigma GQM.
Recuperado de Sommerville, I. (2011). Ingeniería de Software (9ª ed.). México: Pearson Educación.
Ejemplos de métricas según las metas
Pressman (2010) ofrece el siguiente listado de métricas para poder alcanzar metas que permitan mejorar la calidad del software:
Recuperado de Pressman, R. (2010). Ingeniería de Software. Un enfoque práctico. (7a. Ed). México: McGraw Hill
Proceso de cambios al proceso
Cuando se determina que un proceso debe cambiar, ya sea introduciendo nuevas herramientas, alterar la secuencia de tareas, introducir nuevas tareas, eliminar pasos redundantes o incorporar nuevos roles o responsabilidades, el mejor camino para establecer el cambio es a través de los siguientes pasos, según Sommerville (2011).
Haz clic para conocer más detalle
El equipo técnico de desarrollo debe buscar áreas de oportunidad para mejorar el proceso de construcción del software, esto implica analizar métricas e indicadores de forma periódica y tratar de encontrar las causas relacionadas a un pobre desempeño y que seguramente están afectando el costo del proyecto y a la calidad del producto.
De la lista de posibles mejoras que se pueden implementar se deben elegir las que generen mejores resultados en relación al costo-beneficio de implementarlas. Es muy importante evitar introducir demasiados cambios a la vez, ya que el esfuerzo estará disperso y habrá confusión sobre cuál de ellos ha producido mejores resultados.
Cada cambio debe realizarse de forma planeada, deben existir los procedimientos documentados, métodos, herramientas, métricas e indicadores. Considera que cada cambio requiere tiempo de implementación.
El cambio en un proceso de software debe ser implementado por los miembros del equipo de desarrollo. Si se desea que el cambio genere los resultados esperados será necesario que quienes lo ejecuten entiendan la razón del cambio. Es muy probable que se requieran varias revisiones para asegurar que se ha aplicado el cambio.
“Los cambios del proceso propuesto nunca serán complemente efectivos al momento de introducirlos” (Sommerville, 2011). Es muy probable que durante la implementación de un cambio puedan aparecer problemas menores que impliquen realizar ajustes al cambio propuesto. El equipo de desarrollo debe determinar si los ajustes sugeridos pertenecen al cambio o son cambios mayores que deben analizarse en otro momento.
Es muy frecuente que durante este proceso de introducir nuevos cambios existan otras sugerencias de cambios, estas sugerencias deben ser analizadas y priorizadas antes de implementarlas. Considera, además, que la introducción de cualquier cambio provoca una respuesta de los involucrados, por lo que es necesario que consideres estrategias para administrar la resistencia al cambio.
Cierre
Las métricas son una buena fuente de información cuando han pasado por un proceso de definición cauteloso. No se trata únicamente de establecer un listado interminable de métricas que no ayudan a generar valor para el cliente. Cada métrica debe establecerse para controlar el proceso y mejorarlo. Si ha pasado mucho tiempo en el que no se han implementado cambios al proceso del desarrollo significa que la métrica no está logrando su objetivo o que el grupo técnico de desarrollo se ha conformado con lo ya logrado. Ambos problemas deben erradicarse si la organización desea permanecer en el mercado ofreciendo productos de calidad.
Del análisis de las métricas se pueden generar planes de mejora de las tareas de los procesos que intervienen en la elaboración del software. Ten en cuenta que cualquier persona del equipo de desarrollo puede sugerir mejoras, por lo que no debes rechazar ni la sugerencia ni su procedencia. Cada sugerencia debe ser analizada para determinar si será factible su implementación y encontrar el momento más oportuno para introducirla al proceso.
Ten en cuenta que un factor determinante en la mejora de procesos es el personal que implementa los cambios. Las personas deben reconocer el beneficio esperado del cambio. Cualquier imposición de algún cambio, por simple que sea, puede no ser tomado en serio por el personal, incluso lo que puede sabotear, lo que puede provocar que nunca se obtienen los resultados esperados. La respuesta a un cambio dependerá de qué tanto se involucre y se comprometa el personal por aplicarlo.
Checkpoint
Asegúrate de poder:
Referencias
Glosario
Indicador: “Es una métrica o combinación de métricas que proporcionan comprensión acerca del proceso de software, el proyecto de software o el producto en sí” (Pressman, 2010).
Medición: “Es el acto de determinar una medida” (Pressman, 2010).
Medida: “Proporciona un indicio cuantitativo de la extensión, cantidad, dimensión, capacidad o tamaño de algún atributo de un producto o proceso” (Pressman, 2010).
Métrica: “Es una medida cuantitativa del grado en el que un sistema componente o proceso posee un atributo determinado” (Pressman, 2010).