scieee AI-readable full text Open interactive document viewer

Marco dinámico integrado para la mejora de los procesos software

Ruiz Carreira, Mercedes; Ramos Román, Isabel; Toro Bonilla, Miguel

Abstract

Los modelos de procesos actuales como CMM, SPICE y otros recomiendan la aplicación de control estadístico y de guías de métricas para la definición, implementación y posterior evaluación de diferentes mejoras del proceso. Sin embargo, precisamente en este contexto no se ha considerado lo suficiente el modelado cuantitativo, reconocido en otras áreas como un elemento esencial para la adquisición de conocimiento. En este trabajo se describe la base conceptual y fundamental para el desarrollo de un marco enfocado a la mejora de procesos software que combina las técnicas de estimación tradicionales con la utilización extensiva de modelos dinámicos de simulación como herramienta para asesorar en el proceso de evolución entre los diferentes niveles de madurez propuestos por el modelo de referencia CMM. Tras una introducción a los conceptos fundamentales del modelado y simulación del proceso software y la justificación para la creación de dicho marco, se abordan las cuestiones necesarias para su desarrollo, tales como el enfoque conceptual y su estructura, prestando especial atención al paradigma de desarrollo de los modelos dinámicos de simulación que le dan soporte.

Full text

Marco dinámico integrado para la mejora de los procesos software Mercedes Ruiz Carreira1, Isabel Ramos Román2, Miguel Toro Bonilla2 1Universidad de Cádiz mercedes.rui[email protected] 2Universidad de Sevilla {isabel.ramos, miguel.toro}@lsi.us.es Resumen: Los modelos de procesos actuales como CMM, SPICE y otros recomiendan la aplicación de control estadístico y de guías de métricas para la definición, implementación y posterior evaluación de diferentes mejoras del proceso. Sin embargo, precisamente en este contexto no se ha considerado lo suficiente el modelado cuantitativo, reconocido en otras áreas como un elemento esencial para la adquisición de conocimiento. En este trabajo se describe la base conceptual y fundamental para el desarrollo de un marco enfocado a la mejora de procesos software que combina las técnicas de estimación tradicionales con la utilización extensiva de modelos dinámicos de simulación como herramienta para asesorar en el proceso de evolución entre los diferentes niveles de madurez propuestos por el modelo de referencia CMM. Tras una introducción a los conceptos fundamentales del modelado y simulación del proceso software y la justificación para la creación de dicho marco, se abordan las cuestiones necesarias para su desarrollo, tales como el enfoque conceptual y su estructura, prestando especial atención al paradigma de desarrollo de los modelos dinámicos de simulación que le dan soporte. Palabras clave: Mejora de procesos software, modelado y simulación del proceso software, gestión de proyectos software. 1 Simulación del proceso de desarrollo de software Un modelo de simulación es un modelo computacional consistente en la abstracción o representación simplificada de un sistema dinámico complejo. Los modelos de simulación ofrecen como principal ventaja la posibilidad de experimentar diferentes decisiones y analizar sus resultados en sistemas donde el coste o el riesgo de una experimentación real son prohibitivos. Por otro lado, la simulación permite el análisis de sistemas de una complejidad tan elevada que resultan imposibles de representar mediante modelos estáticos. Entre las fuentes de complejidad más frecuentes en los sistemas reales podemos citar: − Incertidumbre. Algunos sistemas se caracterizan por un grado elevado de incertidumbre. Los modelos analíticos cuentan con restricciones sobre el número y tipo de variables aleatorias que permitan modelar el riesgo y los distintos comportamientos del sistema asociados a dicha incertidumbre. Sin embargo, la simulación constituye un mecanismo mucho más flexible y, por tanto útil, para capturar y modelar la incertidumbre. − Comportamiento dinámico. Ciertos sistemas se caracterizan porque su comportamiento puede variar con el tiempo. Por ejemplo, algunas variables principales de los proyectos software como la productividad o la tasa de detección de errores toman valores diferentes conforme se avanza en el ciclo de vida. En casos como éstos, los modelos dinámicos facilitan el modelado y estudio de estas evoluciones. Las técnicas analíticas como la programación dinámica pueden dar lugar a problemas intratables cuando la complejidad del sistema es elevada. La simulación dinámica se presenta en este caso como una herramienta flexible que permite representar un amplio rango de estructuras e interacciones dinámicas. − Realimentación. Hay sistemas en los que el comportamiento y decisiones tomadas en un instante determinado repercuten sobre la evolución del proceso de diversas maneras, directas o indirectas. Por ejemplo, en un proyecto de desarrollo de software, la decisión de contratar o no más personal tiene diferentes implicaciones sobre la evolución global del proyecto. Cuando las implicaciones son diversas y complejas, los modelos analíticos son inaplicables o no resultan útiles. El objetivo común de los modelos de simulación consiste en proporcionar mecanismos para la experimentación, predicción del comportamiento, resolución de preguntas del tipo ¿Qué pasaría si ...? y aprendizaje del sistema representado, entre otros. Un modelo de simulación del proceso software se centra en determinados aspectos o procesos del desarrollo, mantenimiento o evolución de la producción de software. El modelo puede representar el proceso tal y como es actualmente en una organización o puede representar cómo se planifica que éste sea. Un aspecto fundamental que siempre hay que tener en cuenta al hablar de modelos será que estos constituyen abstracciones del sistema real. Un modelo representará solamente algunos aspectos del proceso software; aquellos que ha sido posible modelar o aquellos que resultan especialmente relevantes para una organización. Existen un gran número de razones para aplicar la simulación al proceso software. En la mayoría de las ocasiones la simulación se comporta como una ayuda en el proceso de toma de decisiones. También favorece el estudio y disminución de los riesgos y asesora a la dirección en los niveles estratégico, táctico y operacional. A continuación se indican las razones principales para la simulación del proceso software: − Gestión estratégica. La simulación puede ayudar a resolver un amplio rango de cuestiones relacionadas con la gestión estratégica. Algunos ejemplos de este tipo de preguntas pueden ser: ¿Sería mejor desarrollar todo el software en la organización, o subcontratar una parte?, ¿Cuál es el impacto a largo plazo de las decisiones de contratación, formación o mejora del proceso que se toman en la actualidad? En estos casos, los modelos de simulación recogen el comportamiento de la organización en una serie de parámetros que se instancian a valores diferentes según la cuestión que se trate de resolver. Los directores de proyectos pueden comparar los resultados de los diferentes escenarios simulados obteniendo un conocimiento extra que les ayude en la toma de decisiones. − Planificación. La simulación del proceso software se puede aplicar tanto en la planificación inicial del proyecto como en las sucesivas planificaciones o modificaciones que se realicen conforme el proyecto progresa. La predicción del esfuerzo/coste, el tiempo de desarrollo, la calidad del producto, los niveles de personal necesarios, etc. son algunas de las posibilidades que se pueden estudiar mediante la simulación de diferentes escenarios. − Control y gestión operacional. La simulación también puede proporcionar un soporte efectivo para las actividades de control y gestión operacional de los proyectos software. Por ejemplo, la evolución de las variables claves del proyecto (como el estado actual del progreso, el consumo de recursos, la calidad percibida, etc.) puede ser monitorizada y comparada con los valores planificados. Los directores de proyectos también pueden utilizar la simulación para facilitar la toma de decisiones operacionales como, por ejemplo, si es conveniente comenzar una determinada actividad en el momento actual o interesa retrasar dicho comienzo. La simulación también puede favorecer el estudio de las consecuencias de un cambio en las prioridades del proyecto, en las necesidades de contratación o en la planificación inicial. En los casos en los que la simulación se utilice para la monitorización y control operacional resultará del todo imprescindible disponer de información detallada, actualizada y precisa del proyecto cuyo modelo se simula. − Mejora del proceso y cambio tecnológico. La simulación puede facilitar el proceso de toma de decisiones en el ámbito de la mejora del proceso ya que permite predecir el impacto potencial de un cambio en el proceso antes de que éste se haga efectivo en la práctica. Como consecuencia, también será posible utilizar la simulación en el diseño de procesos estándares específicos para una determinada organización. En este mismo sentido, la simulación también puede facilitar la toma de decisiones relacionadas con un cambio de la tecnología empleada dentro de la organización. − Comprensión. El propio proceso de construcción de un modelo de simulación permite ampliar el conocimiento que se tiene acerca de la organización y de sus procesos de desarrollo, ya que resulta necesario conocer y comprender correctamente los lazos de realimentación, sus efectos y los retrasos existentes en el proceso, entre otros aspectos, para que el modelo sea preciso. Además, en esta etapa de construcción del modelo es probable que se identifiquen de manera manifiesta aquellas áreas del proceso donde la incertidumbre es mayor y resulte más complicado, al igual que en la realidad, predecir la salida. Finalmente, los modelos de simulación favorecen la comunicación entre los miembros de la organización ya que permiten compartir, bajo una representación formalizada, el conocimiento que cada miembro tenga del proceso software. − Formación y aprendizaje. No es una novedad que la simulación se defina como una herramienta eficaz para la formación y el aprendizaje. La simulación es un medio para que el personal pueda practicar o aprender gestión de proyectos. Un entorno de entrenamiento basado en simulación permite aprender los resultados más probables de las decisiones de gestión más frecuentes y que, a menudo, resultan incorrectas como, por ejemplo, adelantar excesivamente la etapa de codificación, eliminar las revisiones o reducir el esfuerzo asignado a las actividades de prueba. El entrenamiento basado en la simulación también ayuda a los directores de proyectos a aceptar resultados muy diferentes a los que esperaban cuando tomaron la decisión. De esta manera, se consigue que el director obtenga una experiencia que, de otra forma, sólo hubiera adquirido tras años de experiencia gestionando proyectos reales. 2 Justificación Aunque los métodos tradicionales para la gestión de proyectos software hayan revelado en las últimas décadas sus carencias no dejan por ello de ser herramientas necesarias. Una vez analizadas las características y ventajas de los modelos de simulación sería importante tratar de integrar ambos conjuntos de técnicas en un único marco que reúna las ventajas de ambos enfoques y que se convierta en un herramienta efectiva en el diseño de mejoras del proceso y en la evaluación de sus resultados sin coste o riesgo. En [5] se muestran las conclusiones obtenidas tras comparar ambos enfoques para la gestión de proyectos y señala también la necesidad de integrar ambas técnicas. Los enfoques tradicional y dinámico persiguen objetivos similares, tales como la estimación de la duración del proyecto o de su coste, pero la perspectiva desde la que trabajan es distinta. La mayoría de las técnicas tradicionales se basa en una descomposición descendente del proyecto en busca de sus componentes fundamentales, centrándose en detallar esta estructura, y estimar los costes, plazos y recursos necesarios. El enfoque de los sistemas dinámicos es diferente. Las técnicas de gestión basadas en modelos dinámicos se caracterizan por su enfoque ascendente que trata de agregar las características de un proyecto en un único modelo o sistema cuya evolución está regida por relaciones internas de tipo causal. De las características anteriormente expuestas puede deducirse que los modelos dinámicos están indicados especialmente para tratar problemas situados en el nivel estratégico de los proyectos, mientras que los métodos tradicionales resultan útiles en el nivel operacional. Con el desarrollo de un marco dinámico integrado para la mejora de los procesos software (DIFSPI, Dynamic Integrated Framework for Software Process Improvement), pretendemos ofrecer una metodología y un entorno de trabajo que combine las ventajas de ambos conjuntos de técnicas y que permita, tanto a los directores de proyectos como a los miembros del grupo de mejora de la organización (SEIG, Software Engineering Improvement Group), diseñar y evaluar nuevas mejoras del proceso software. Uno de los objetivos principales de DIFSPI consiste en facilitar la evolución del nivel de madurez de las organizaciones de desarrollo de acuerdo con el modelo CMM [3]. El propio diseño y construcción del marco y de los modelos dinámicos que lo integran permite, en sí mismo, la definición de métricas que, por un lado son necesarias para la inicialización y validación del modelo y que, por otro lado, sirven para la definición de un programa de recogidas de métricas concretas dentro de la organización. Esta recogida definida y sistemática de métricas no sólo es útil para la utilización de modelos dinámicos sino que también se revela como una oportunidad única para el conocimiento real del estado de los procesos dentro de la organización. Conocimiento que, sin duda, es indispensable tener, antes de abordar actividades de mejora. 3 Desarrollo del DIFSPI 3.1 Aproximación conceptual La utilización de la simulación para la mejora de procesos dentro del modelo CMM no es una idea nueva. De hecho [2] ya propone al modelo CMM como un marco incremental excelente para la obtención de experiencia a través de la simulación de proyectos. No obstante, no consta en la literatura la construcción sistemática de un marco que favorezca, a la vez que es construido o implementado en un organización, la evolución de su nivel de madurez, sin renunciar a las ventajas que la simulación del proceso de desarrollo ya posee por sí misma y que fueron señaladas en el primer apartado. Una de las características definitorias del empleo de modelos dinámicos en cualquier área de la ingeniería es que sea cual fuere el modelo, éste requiere satisfacer un determinado nivel de calidad o fiabilidad antes de poder ser utilizado en la práctica. De hecho, la potencia y versatilidad de los sistemas de simulación actuales facilitan en gran medida la construcción de modelos dinámicos que pueden llegar a ser realmente complejos. Sin embargo, si la organización no dispone de la suficiente información para inicializar y definir los parámetros y funciones que gobiernan la evolución del comportamiento del modelo, éste resultará inútil. El problema mencionado es uno de los inconvenientes más frecuentes con el que podemos encontrarnos cuando se intentan aplicar modelos clásicos de simulación, como el desarrollado por [1], en organizaciones situadas en niveles bajos de madurez, sobre todo en las etapas iniciales de los proyectos [6]. Por tanto, resulta posible afirmar que el beneficio obtenido con la aplicación de modelos dinámicos dentro de la organización está directamente relacionado con el conocimiento y la información empírica que la misma tenga de sus procesos y cómo valide sus procesos simulados. Queda pues, de manifiesto, que el nivel de madurez de la organización guarda una relación directa con la facilidad de validar los modelos dinámicos y, por tanto, con su fiabilidad. La figura 1 muestra las relaciones existentes entre el nivel de madurez de una organización, la utilización de modelos dinámicos y las ventajas derivadas. El ciclo de realimentación positivo viene a ilustrar un conjunto de relaciones causales que refuerzan la recogida de métricas en la organización para su utilización en el modelo dinámico. Si nos situamos en una organización correspondiente a un nivel de madurez 1 según el modelo CMM, la ausencia de métricas y de información relativa a unos procesos que están aún por definir será la característica predominante. Por ello, para utilizar un modelo dinámico en estos niveles será necesario definir, en primer lugar, los procesos generales de los proyectos software y las métricas requeridas para estos procesos. Surge en este momento la incertidumbre de qué datos recolectar, con qué frecuencia y precisión. El proceso de diseño del modelo dinámico aporta una gran ayuda en este momento. Para construir un modelo se requiere conocer, en primer lugar qué es lo que se desea modelar, delimitar su ámbito y definir qué comportamientos se desean investigar. Estos comportamientos, que constituyen el objetivo del modelo, vienen regidos por la evolución, dada bajo la forma de relaciones causales, del modelo a partir de unas condiciones iniciales. Son precisamente estas condiciones iniciales junto con aquellas que rigen la evolución del comportamiento, las que resuelven la cuestión de qué datos recoger, con qué frecuencia y precisión. Aquellos datos necesarios para inicializar el modelo y para definir las leyes de su comportamiento dinámico serán los componentes principales del programa de recogida de métricas. Tras la definición de los componentes del sistema de métricas, éste puede implementarse en la organización, traduciéndose en la definición y desarrollo de una base de datos histórica. Estos datos de carácter histórico serán los que se utilizarán para la simulación y validación empírica del modelo construido. Una vez demostrada la validez de dicho modelo, los valores ofrecidos por la simulación permiten instanciar una base de datos que permita realizar análisis acerca de los efectos de diferentes acciones o mejoras. Un aumento de la complejidad de las acciones que se pretenden evaluar, se traduce en un aumento de la complejidad del modelo dinámico que vuelve a diseñar Nivel Madurez Estimación Costes Mejora SPI Predicción Evolución Métricas Datos Modelo Dinámico Figura 1: Relaciones causales derivadas de la construcción y utilización de modelos dinámicos un nuevo programa de recogida de métricas para los nuevos módulos de simulación, cerrándose, con ello, el ciclo. La mitad inferior de la figura 1 viene a mostrar de manera gráfica los efectos derivados de la utilización de modelos dinámicos en el ámbito de la mejora de procesos. La utilización de modelos dinámicos diseñados y calibrados de acuerdo con los datos de la organización presenta tres ventajas importantes. En primer lugar, los datos resultantes de la simulación de un modelo dinámico pueden utilizarse en la realización de predicciones sobre la evolución del proyecto. Si el nivel de madurez de la organización es bajo, estos datos permiten la observación de las tendencias gráficas que muestran la evolución del proyecto a partir de determinadas condiciones iniciales (establecidas por los valores de los parámetros de inicialización); cuando el nivel de madurez aumenta, la definición y conocimiento de los procesos de desarrollo también, por lo que los resultados de la simulación se convierten en estimaciones cuantitativas reales que predicen, de acuerdo con la incertidumbre de sus parámetros, los resultados futuros del proyecto. En segundo lugar, la posibilidad de definir y experimentar diferentes escenarios sin asumir coste o riesgo alguno, es una de las principales cualidades de la simulación de modelos en cualquier área. También la gestión de proyectos software puede verse favorecida por esta cualidad. Es posible, por tanto, definir y experimentar diferentes mejoras de procesos, simular el modelo, y analizar los resultados de manera que la mejora o mejoras que se implementen de manera efectiva en el proyecto sean aquellas que arrojaron los mejores resultados durante la simulación. En tercer lugar, los modelos de simulación también se pueden utilizar la estimación de costes del proyecto; costes que pueden estar relacionados con algún sector concreto del mismo, como por ejemplo el coste de la calidad o el de las actividades de revisión, o con el proyecto completo. Las capacidades para facilitar las predicciones de la evolución del proyecto, para establecer sus costes y para evaluar el resultado de diferentes mejoras del proceso constituyen tres de los factores principales para el progreso en los niveles de madurez del modelo CMM. 2.2 Estructura del DIFSPI La gestión de proyectos se compone de una serie de actividades que se encuentran integradas en el sentido de que una determinada acción desarrollada en un área afectará muy posiblemente a otras áreas. Por ejemplo, un retraso en el calendario afectará siempre al coste del proyecto, pero podrá o no afectar a la motivación del equipo o a la calidad del producto. Las interacciones entre las distintas áreas de la gestión de proyectos son tales que en muchas ocasiones el rendimiento de alguna de ellas sólo puede conseguirse sacrificando el rendimiento de otra. Un ejemplo claro de este comportamiento podemos encontrarlo en la frecuente práctica de reducir la calidad o los requisitos implementados en una versión concreta del producto software con el fin de cumplir las previsiones temporales o de coste. Los modelos dinámicos favorecen la comprensión de esta naturaleza integrada de la gestión de proyectos al describirla a través de sus procesos, estructuras e interrelaciones principales. En el marco que proponemos, la gestión de proyectos se considera como un conjunto de procesos dinámicos interrelacionados. Los proyectos se componen de procesos. Cada proceso está formado por una serie de actividades encaminadas hacia la consecución de un objetivo [3]. Desde un punto de vista general, podría decirse que los proyectos se componen de procesos que pertenecen a una de las siguientes categorías principales: − Proceso de gestión de proyectos. Esta categoría recoge a todos aquellos procesos relacionados con la descripción, organización, control y dirección del proyecto. − Proceso software o de ingeniería. Todos los procesos relacionados con las actividades propias de la especificación y construcción del producto software estarían recogidos en esta categoría. Ambas categorías interaccionan durante el ciclo de vida de un proyecto según se muestra en la figura 2. A partir de una planificación inicial llevada a cabo por los procesos de gestión, los procesos de ingeniería comienzan a desarrollarse. A través de la información del progreso de los procesos de ingeniería será posible determinar las modificaciones a la planificación necesarias para satisfacer los objetivos del proyecto. El DIFSPI propuesto sigue esta clasificación y se estructura, por tanto, en torno a los procesos de gestión y de ingeniería. En ambos niveles, la utilización de modelos dinámicos para simular los procesos reales y para la definición y construcción de bases de datos históricas será la característica predominante. P L A N P R O G R E S O Proceso de Gestión Proceso de Gestión Proceso de Gestión Proceso de Ingeniería Proceso de Ingeniería Proceso de Ingeniería Figura 2: Clasificación de los procesos que integran el desarrollo de proyectos software Proceso de ingeniería en el DIFSPI En este nivel, los modelos dinámicos permiten simular el ciclo de vida del producto software. Los beneficios que puede aportar utilizar la simulación en este nivel son los siguientes: − La construcción del modelo obliga a mejorar el conocimiento que se tiene del proceso de desarrollo de software. Al tener que establecer los límites y el ámbito de aquellos comportamientos del sistema real que se pretenden estudiar mediante simulación estamos obligados a aumentar nuestro conocimiento. − Los parámetros requeridos por el modelo y las tablas que gobiernan su comportamiento temporal constituirán los elementos constituyentes del programa de recogida de métricas del proceso de desarrollo y la definición de la estructura de una base de datos histórica. − La aplicación del programa de métricas permitirá la realización de inserciones en la base de datos histórica. − Los datos históricos favorecen el proceso de validación y calibración del modelo dinámico. − El modelo dinámico, finalmente, simula los procesos de desarrollo con el conocimiento, y la madurez, de los que dispone la organización. − La utilización del modelo dinámico permite el establecimiento de la línea base del proyecto, la investigación de mejoras de procesos y la construcción de una base de datos, alimentada por los resultados de la simulación, que permita realizar análisis de las diferentes mejoras de procesos. Los modelos dinámicos utilizados en este nivel deben respetar la visibilidad y el conocimiento de los procesos de ingeniería que las organizaciones tienen en cada uno de los niveles de madurez. Resulta obvio que la complejidad del modelo dinámico que utilicen las organizaciones de nivel CMM-1 no puede ser la misma que la complejidad del modelo adecuado para los procesos de ingeniería de una organización de, por ejemplo, nivel CMM-3. Y esto es así, porque el conocimiento que de los procesos tienen las organizaciones está restringido, como ya hemos comentado, por su nivel de madurez. Proceso de gestión en el DIFSPI Los procesos de gestión se encuentran divididos en dos grandes categorías: − Planificación. Recoge los procesos destinados a establecer la planificación inicial y las modificaciones necesarias según sea el progreso informado del proyecto. En este apartado se integrarán las técnicas tradicionales de estimación y planificación junto con las técnicas de simulación de modelos dinámicos. − Control. Aquí se agrupan todos los procesos encargados de realizar la monitorización y seguimiento del proyecto. La decisión de acciones correctoras también será responsabilidad del proceso de control por lo que aquí cobrará una gran importancia la simulación de mejoras del proceso.