Aprendizaje de CMM a través de la simulación
Abstract
En este artículo se presenta un nuevo enfoque para la enseñanza de la gestión de proyectos y de los estándares de procesos como el Modelo de Madurez de la Capacidad del software (CMM) [6]. Nuestro objetivo será promover el aprendizaje activo de conceptos y técnicas, favoreciendo, en lo posible, la adquisición de experiencia. Para lograrlo, se propone la utilización de modelos de simulación para simular los procesos y el comportamiento de las organizaciones que pertenecen a diferentes niveles de madurez según el modelo CMM.
Full text
Aprendizaje de CMM a través de la simulación Mercedes Ruiz Carreira Dpto. de Lenguajes y Sistemas Informáticos Universidad de Cádiz Escuela Superior de Ingeniería C/ Chile, nº1 – 11003 Cádiz e-mail: [email protected] Isabel Ramos Román Dpto. de Lenguajes y Sistemas Informáticos Universidad de Sevilla Facultad de Informática y Estadística Avda. Reina Mercedes, s/n – 41012 Sevilla e-mail: [email protected] Resumen En este artículo se presenta un nuevo enfoque para la enseñanza de la gestión de proyectos y de los estándares de procesos como el Modelo de Madurez de la Capacidad del software (CMM) [6]. Nuestro objetivo será promover el aprendizaje activo de conceptos y técnicas, favoreciendo, en lo posible, la adquisición de experiencia. Para lograrlo, se propone la utilización de modelos de simulación para simular los procesos y el comportamiento de las organizaciones que pertenecen a diferentes niveles de madurez según el modelo CMM. 1. Introducción y motivación En el año 2000 se hicieron públicos los resultados de una encuesta realizada a más de doscientos ingenieros del software de diferentes lugares del mundo, cuyo objetivo era tratar de obtener las prioridades para la educación y formación de los ingenieros del software [5]. La encuesta consistía en expresar la opinión personal en relación con 75 tópicos clasificados en 13 categorías. Algunos ejemplos de estas categorías son: procesos de la ingeniería del software, principios fundamentales del diseño del software, ingeniería de la computación, aspectos matemáticos, administración y humanidades, entre otros. Los tópicos agrupados bajo la categoría de Procesos de la Ingeniería del Software fueron los siguientes: ü Métodos de análisis y diseño. ü Gestión de versiones y configuraciones. ü Métodos de especificación formal. ü Mantenimiento, reingeniería e ingeniería inversa. ü Medida y análisis del rendimiento. ü Estándares de procesos, CMM, etc. ü Gestión de proyectos. ü Recogida y análisis de requisitos. ü Estimación del coste del software. ü Métricas del software. ü Fiabilidad y tolerancia a fallos. ü Pruebas, verificación y aseguramiento de la calidad. La opinión que los participantes en la encuesta debían expresar, consistía en responder, para cada uno de los 75 tópicos a las cuatro preguntas siguientes: 1. ¿Cuánto aprendió de este tópico en su formación universitaria? La respuesta se ofrecía puntuando de 0 (no aprendí nada) a 5 (lo aprendí en profundidad). 2. ¿Cuál es su conocimiento actual de este tópico, considerando lo que ha aprendido en su actividad profesional y también lo que ha olvidado? La respuesta se ofrecía puntuando de 0 (ningún conocimiento) a 5 (conocimiento a nivel de experto). 3. ¿Cuál ha sido la utilidad de este tópico en su carrera profesional? La respuesta se ofrecía puntuando de 0 (completamente inútil) a 5 (esencial). 4. ¿Cómo han influido sus conocimientos sobre este tópico en su actividad profesional, independientemente de si los ha aplicado de manera directa o no? La respuesta se ofrecía puntuando de 0 (no ha influido en nada) a 5 (influye en la mayoría de las cosas que hago). Los tópicos donde los participantes reconocieron haber recibido una mayor formación universitaria
pertenecen a las categorías de principios fundamentales del diseño del software (estructuras de datos y lenguajes de programación, principalmente) y aspectos matemáticos (cálculo diferencial e integral, álgebra lineal, probabilidad y estadística, entre otros). Hay que esperar hasta el puesto 24 para encontrar un tópico relacionado con la Ingeniería del Software, concretamente el tópico denominado Métodos de Análisis y Diseño. Entre los tópicos en los cuales los participantes reconocieron haber recibido una menor formación se situaron los de gestión de proyectos (puesto 53), fiabilidad y tolerancia a fallos (57), métricas del software (64), mantenimiento, reingeniería e ingeniería inversa (67), estimación del coste del software (71), gestión de versiones y configuraciones (72) y estándares de procesos, CMM, etc. (74). Como puede observarse, demasiados tópicos del ámbito de la ingeniería del software resultaron pobremente puntuados en la formación de los, paradójicamente, actuales ingenieros del software. Sin embargo, analizando las respuestas ofrecidas a las preguntas 3 y 4, el autor de la encuesta realiza una ordenación de los tópicos atendiendo a su importancia e influencia real. En esta ordenación, los tópicos de la ingeniería del software quedarían ahora puntuados de la siguiente forma: ü Recogida y análisis de requisitos (5). ü Métodos de análisis y diseño (9). ü Gestión de proyectos (11). ü Pruebas, verificación y aseguramiento de la calidad (12). ü Gestión de versiones y configuraciones (18). ü Fiabilidad y tolerancia a fallos (22). ü Medida y análisis del rendimiento (26). ü Mantenimiento, reingeniería e ingeniería inversa (27). ü Estimación del coste del software (32). ü Métricas del software (35). ü Métodos de especificación formal (37). ü Estándares de procesos CMM, etc. (38). A tenor de los resultados obtenidos, se puede apreciar claramente que la formación recibida por los actuales ingenieros del software no fue la más adecuada a las necesidades reales de su profesión. Un análisis de los contenidos de los planes de estudio actuales nos lleva a la consideración de si realmente estamos ofreciendo la formación que los futuros ingenieros del software necesitan, tanto para desarrollar su futura actividad profesional como para desarrollar sus habilidades de resolución de problemas. Atendiendo a los 12 tópicos en los que esta encuesta recoge la formación en Ingeniería del Software nos gustaría realizar en este artículo una propuesta concreta para mejorar el aprendizaje de dos de ellos que no se encuentran, por lo general, lo suficientemente potenciados en los planes de estudio actuales. Nos referimos a los tópicos de Gestión de Proyectos y Estándares de procesos, CMM, etc. 2. Enfoque propuesto En nuestra opinión, la enseñanza de la gestión de proyectos e incluso de los estándares de procesos debe ser activa, enfocada al aprendizaje práctico de conceptos y técnicas. La mera exposición oral por parte del profesor de las técnicas principales de gestión de proyectos y de los aspectos subyacentes a la madurez de los procesos de una organización no conducirá a que los alumnos desarrollen un conocimiento activo, ni tan siquiera conceptual de los contenidos expuestos. En la práctica, todos tenemos ejemplos de cómo el empleo de estas técnicas de enseñanza caracterizadas principalmente por su carácter expositivo no conducen a la consecución de nuestros objetivos docentes. Es por ello que para promover el aprendizaje activo de la gestión de proyectos y de los estándares de procesos nos parezca oportuno introducir en las clases la utilización de la simulación de procesos como un instrumento central para el aprendizaje de conceptos y técnicas y la obtención de experiencia. El empleo de la simulación en la enseñanza no es algo nuevo. Las técnicas de simulación, en cualquiera de sus formas (discreta, continua o híbrida) se emplean comúnmente como parte del proceso de formación y entrenamiento en muchas áreas de la ingeniería y también tienen un amplio uso en la investigación [1], [2], incluso dentro de la Ingeniería del Software. Sin embargo, aun a pesar de sus potenciales ventajas, no se aplica en la enseñanza universitaria de la informática.
Nuestra propuesta consiste en utilizar modelos de simulación que modelen los procesos y las organizaciones a cada nivel de madurez. Utilizando estos modelos, el alumno será capaz de gestionar proyectos (o incluso un mismo proyecto) en organizaciones de diferentes niveles de madurez descubriendo las diferencias reales entre niveles, experimentando soluciones para cada nivel de madurez y determinando cuáles serían las mejoras que conducirían a un aumento de la madurez de los procesos. Si la formación previa de los alumnos lo permite, sería posible enfocar las clases no sólo a la experimentación conducida a través de juegos de simulación, sino también hacia el análisis, modificación o construcción de modelos propios, añadiendo las características consideradas como necesarias para la evolución de un nivel de madurez al superior y analizando, posteriormente, las ventajas derivadas. 3. Ventajas de la simulación en el proceso de enseñanza-aprendizaje Quizá el hecho de que la simulación pueda aplicarse en áreas consideradas como críticas (la gestión de proyectos, sin duda lo es) y permita afrontar la solución de problemas antes de que estos se presenten en la realidad, debería valer para promover su empleo, al menos en el desempeño de la actividad profesional de nuestros alumnos [4]. A continuación, enumeramos las ventajas principales que encontramos a su aplicación en el ámbito docente: 1. Permite situar al alumno en escenarios y ante problemas reales en los que su participación y sus decisiones determinan la evolución del escenario, la resolución del problema o la aparición de otros nuevos. 2. Las técnicas se aprenden de manera práctica, a través de los conocidos juegos de simulación y la visualización gráfica de los resultados facilita el entendimiento. 3. Permite el desarrollo de la capacidad de análisis del alumno, ya que le obliga a determinar la situación actual del escenario simulado, determinar una solución (empleando las técnicas estudiadas) y descubrir qué tipo de soluciones son las más eficaces. 4. Favorece el desarrollo de las habilidades de comunicación ya que se presta de una manera natural a la realización de actividades en grupo y de colaboración. 5. Fomenta el conocimiento de la realidad que subyace tras un modelo de simulación. Tras la experimentación con un modelo, los alumnos pueden añadirle nuevas características, modificar algunas de las que posee o incluso construir un nuevo modelo. Las actividades de construcción o modificación de modelos de simulación sirven, por sí mismas, como herramientas para mejorar el conocimiento y comprensión de la realidad que se pretende modelar. 4. Simulación y CMM El modelo de madurez de la capacidad del software (CMM) [6] proporciona un sistema para conocer el estado actual de los procesos de desarrollo utilizados en una organización de desarrollo de software a través de la determinación de su nivel de madurez y de los puntos más débiles de los mismos [3]. CMM ofrece un marco de trabajo incremental excelente para ganar experiencia a través de la simulación. De hecho, la simulación puede ser utilizada en todos los niveles de CMM con diferentes grados de sofisticación. En función del nivel de madurez que posea una organización, le corresponderá un modelo dinámico más o menos complejo. Las salidas gráficas ofrecidas por la simulación permiten definir los procesos de desarrollo de software para las organizaciones situadas en los niveles 2 y 3 según el modelo CMM. El modelado cuantitativo, cuando los procesos están claramente definidos y se dispone de la suficiente información de los mismos, se aplica a las organizaciones cuyos procesos se encuentran situados en el nivel 4. Para finalizar, el enfoque de modelado cuantitativo también se aplica a las áreas claves de proceso de gestión el cambio tecnológico y gestión del cambio en los procesos propias de las organizaciones de nivel 5.
A continuación analizamos cómo puede aplicarse la simulación de modelos en cada uno de los niveles de CMM. 4.1. Nivel 1 CMM En este nivel es del todo recomendable introducir la idea del proceso de software como un entidad dinámica cuyo comportamiento está gobernado por lazos de realimentación. Resulta muy útil colocar a los alumnos frente a entornos de simulación que les permitan llevar a cabo experimentos y practicar juegos de simulación. De esta manera, se pretende que el alumno tome contacto con los entornos de simulación y con la potencialidad y ventajas del empleo de este tipo de modelos. 4.2. Nivel 2 CMM Conforme se progresa hacia el nivel 2, los alumnos pueden comenzar a diseñar o a analizar modelos de los procesos y examinar algunas de las propiedades de sus comportamientos. En concreto, se pueden desarrollar modelos de gestión de proyectos muy generales (sin un alto nivel de detalle) que permitan simular aspectos tales como la planificación, el seguimiento y supervisión de un proyecto. En este nivel de madurez, sólo se dispondrá de medidas muy generales (basadas en la experiencia en la mayoría de las ocasiones) relativas a los costes y al calendario. Las métricas del producto, como por ejemplo la densidad de errores, no están disponibles todavía. Por tanto, estos modelos de simulación sólo serán aproximados en cuanto al nivel de detalle al que se pueden construir y a la precisión de los datos que reciben en su entrada. No obstante, representan un comienzo importante para la predicción cuantitativa. Las entradas más comunes para los modelos de simulación situados en el nivel 2 son: ü Dependencias de tareas. ü Duración de las tareas. ü Ciclo de repetición de tareas. ü Datos de gestión de personal (contratación, bajas). Las salidas de estos modelos pueden incluir datos sobre: ü Calendario del proyecto. ü Perfil de evolución del presupuesto. ü Perfil de evolución del personal. Las herramientas de simulación actuales permiten construir rápidamente modelos muy sofisticados. Sin embargo hay que tener en cuenta y hacer entender al alumno que dadas las limitaciones de los datos métricos disponibles en las organizaciones de nivel 2, la validación de los modelos a este nivel es muy difícil de alcanzar. Ejemplo de uso: La simulación debe contemplar tanto la planificación inicial como las actividades enfocadas a la modificación de dicha planificación atendiendo al estado actual de un proyecto. En la planificación inicial, se deben establecer las necesidades de recursos y las estimaciones de coste. La salida de la simulación puede ofrecer una línea base de evolución. En esta fase deben poderse formular preguntas del tipo ¿Qué pasaría si ...? Por ejemplo, ¿cuál es el impacto sobre el calendario de diferentes tasas de contratación o diferentes niveles de experiencia de los técnicos del proyecto? 4.3. Nivel 3 CMM Las organizaciones del nivel 3 aplican un énfasis especial sobre la ingeniería del producto, la definición formal de los procesos de ingeniería y la instrumentación de estos procesos. Por tanto, si anteriormente se trataba a las actividades de ingeniería como cajas negras, ahora ya se posee conocimiento sobre la composición de estas actividades. Los datos recogidos de la observación de los procesos de ingeniería pueden servir de soporte para las actividades de simulación, utilizándose para comprender el comportamiento, estabilidad y sensibilidad de las variables principales del proyecto frente a los cambios. En este nivel es importante resaltar el hecho de la influencia que los procesos de ingeniería poseen sobre los procesos de gestión. Por tanto, la simulación precisa del nivel de ingeniería resultará en una mejora de la precisión en el nivel de gestión del proyecto. Por ejemplo, se puede utilizar la simulación para observar cómo las tasas de corrección de errores afectan al tiempo de finalización de los módulos software y esto, a su vez, tiene un efecto directo sobre el calendario del proyecto.
Las entradas más comunes a las simulaciones del nivel 3 incluirán (además de las del nivel 2) datos sobre: ü Cambios en los requisitos. ü Defectos de diseño. ü Defectos de codificación. ü Pruebas y revisiones. Las salidas incluirán información sobre: ü Calidad del software. ü El ciclo de vida. El nivel 3 también otorga una gran importancia a la definición, mantenimiento y reutilización de procesos en una organización. Esto implica que las organizaciones del nivel 3 deberían mantener una librería de los procesos que pueden reutilizarse, con una adaptación adecuada, en otras partes de la organización. Manteniendo las definiciones de los procesos como modelos de simulación, el alumno puede evaluar las características de los procesos existentes y determinar su adaptación dentro del contexto de otro proyecto. Finalmente, en el nivel 3 el entrenamiento recibe un gran énfasis. En muchas industrias, la simulación es un componente esencial de la formación. Es importante aquí destacar estas ideas que el alumno está viviendo en la práctica. Como herramienta de entrenamiento, la simulación puede ayudar a mejorar el proceso de toma de decisiones. Las áreas claves de proceso como el seguimiento y supervisión, aseguramiento de la calidad e ingeniería del producto software son candidatos perfectos para el entrenamiento basado en simulación. El énfasis de las prácticas de ingeniería en el nivel 3, hace que sea muy importante recoger métricas del producto. Estas métricas están asociadas con parámetros como la duración de las tareas, la estabilidad de los requisitos y los defectos de diseño y codificación y permitirán validar los modelos de simulación con un alto grado de confidencialidad. 4.4. Nivel 4 CMM Los modelos de los niveles 3 y 4 no difieren significativamente en su nivel de detalle o instrumentación. Sin embargo, en el progreso hacia el nivel 4, la validación de los procesos simulados gana en rigor y refleja el nivel de confidencialidad ganado a través de la experiencia. Si se realizan modificaciones a los modelos del nivel 4 existe una alta probabilidad de que los cambios de comportamiento que exhiba el modelo se produzcan también en la realidad. Esto nos va a proporcionar la confianza de que las predicciones resultantes de la simulación son generalmente mejores que las que se basan en exclusiva en el juicio humano. En el nivel 4, el objetivo es ejecutar los procesos dentro de límites de rendimiento cuantitativo. La simulación es un medio para determinar cuáles deben ser esos límites. En primer lugar se deben determinar los límites de las variables dependientes (límites principales de coste, plazo y calidad). Estos límites actúan como restricciones de las variables independientes tales como densidad de errores, recursos, etc. A través de la simulación es posible determinar los límites superiores e inferiores que estas variables dependientes no deben exceder con el objeto de que el coste, la calidad y el plazo se mantengan dentro de los límites aceptables. En este nivel, la simulación también va a permitir predecir (dentro de un intervalo de confianza) si el proyecto va a cumplir con éxito los objetivos fijados. Por otro lado, estas averiguaciones se podrán realizar en cualquier momento del ciclo de vida; bastará con inicializar el modelo con una instantánea de los datos actuales de un proyecto. 4.5. Nivel 5 CMM A partir de las experiencias del nivel 4, se obtienen un conjunto de métricas fiables y de modelos validados que pueden utilizarse para seguir y dirigir (en tiempo real) el curso del proceso. En el nivel 5 esta experiencia se utiliza para realizar cambios más radicales en los procesos, es decir, para cambiar los componentes principales de los mismos. En el nivel 5, se prueban mejoras o nuevas maneras de construir el software en un ambiente controlado. Insertar un nuevo componente en un proceso posee un elemento de riesgo independientemente de cuáles sean las técnicas de análisis, pero las ventajas ofrecidas por el uso de la simulación ayudan a
reducir el riesgo de manera significativa. Además, es posible comparar la salida de la simulación del cambio en un proceso con la salida real de ese proceso sin modificar. Un aspecto muy importante en el nivel 5 es la capacidad que la organización posea para responder rápidamente a las nuevas tecnologías, por ejemplo, las herramientas CASE y las herramientas de flujo de trabajo. La inserción de estas nuevas tecnologías conlleva importantes implicaciones. Posee factores de riesgo humano que la simulación no puede tener en cuenta de manera completa, pero su utilización nos puede orientar sobre sus efectos. Existe también una importante conexión entre la simulación, el flujo de trabajo y las métricas. Por un lado, la simulación permite identificar dónde puede instrumentarse un proceso (es decir, los puntos en los que los datos deben insertarse para conducir la simulación). Por otro lado, el flujo de trabajo nos ofrece la oportunidad de recoger métricas automáticamente de una manera precisa. Por tanto, la simulación soporta el flujo de trabajo apuntando al lugar donde el flujo de trabajo debe ser instrumentado, mientras que el flujo de trabajo proporciona los datos que permiten validar la simulación. En resumen, las organizaciones de nivel 5 poseen modelos detallados y validados para sus procesos. Son capaces de realizar cambios importantes en sus procesos, validarlos a través de la simulación y poseen un alto nivel de confianza que, cuando se lleva a la práctica hace que los procesos respondan de la misma manera que lo hace la evolución real. El énfasis sobre la inserción tecnológica que se realiza en el nivel 5, puede verse favorecido por la simulación que permite averiguar el impacto de los cambios de herramientas sobre el proceso antes de llevarlo realmente a la práctica. 5. Conclusión En este trabajo se ha presentado un enfoque docente cuyo objetivo principal es favorecer una mejora del proceso de aprendizaje de la gestión de proyectos y de los procesos y estándares, CMM en este caso. Para ello, se ha propuesto utilizar la simulación de proyectos y de procesos para promover un aprendizaje activo de los conceptos y técnicas de gestión. La utilización de simulación de modelos es una técnica ampliamente utilizada en muchas áreas de la ingeniería. En nuestro caso concreto, pensamos que su utilización en el aprendizaje de estándares de procesos y gestión de proyectos facilita al alumno la comprensión del significado y de la importancia de la madurez de los procesos en las organizaciones, ya que le permite experimentar y gestionar proyectos en cada uno de esos niveles. Referencias [1] Burke, S, Radical improvements require radical actions: Simulating a high maturity software organization. Technical Report. CMU/SEI-96-TR-024, ESC-TR-96-024, 1997 [2] Christie, AM, Simulation in support of CMMbased process improvement. The Journal of Systems and Software, nº46, pp. 107-112, 1999. [3] Cuadrado Gallego, JJ, et al, Medidas en el marco del modelo CMM, en Dolado Cosín, JJ y Fernández Sanz, L (eds.) Medición para la gestión en la ingeniería del software, pp. 250, 265. Ed. Ra-Ma, 2000. [4] Kellner, MI, et al, Software process simulation modelling: Why? What? How? The Journal of Systems and Software, nº46, pp. 91-105, 1999. [5] Lethbridge, TC, Priorities for the education and training of software engineers. The Journal of Systems and Software, nº53, pp. 53-71, 2000. [6] Paulk, MC, et al, Capability maturity model for software, version 1.1. CMU/SEI-93-TR-24, Software Engineering Institute and Carnegie Mellon University, 1993.