Modelos de Ciclo de Vida de Desarrollo de Software en el
Contexto de la Industria Colombiana de Software
Hugo F. Arboleda Jiménez. MSc. Docente-Investigador, Facultad de Ingenierías, Universidad de San Buenaventura Cali. Magíster Ingeniería de Sistemas y Computación, Universidad de los Andes, 2002. Ingeniero de Sistemas Universidad del Valle, 1999.
1 INTRODUCCIÓN modelos propuestos de acuerdo al contexto
enmarcado, y a las métricas mantenidas, La evolución de la disciplina de ingeniería ayudan a mejorar la calidad de los productos de software ha traído consigo propuestas de software desarrollados. diferentes para mejorar los resultados del proceso de construcción. Las metodologías 2 MODELOS DE DESARROLLO DE tradicionales haciendo énfasis en la SOFTWARE planeación, y las metodologías ágiles 2.1 Metodologías tradicionales haciendo énfasis en la adaptabilidad del proceso, delinean las principales propuestas Las metodologías tradicionales se presentes en la literatura. De manera caracterizan por exponer procesos basados paralela, el tema de modelos para el en planeación exhaustiva. Esta planeación se mejoramiento de los procesos de desarrollo realiza esperando que el resultado de cada ocupa un lugar importante en la búsqueda de proceso sea determinístico y predecible. La la metodología adecuada para producir experiencia ha mostrado que, como software de calidad en cualquier contexto de consecuencia de las características del desarrollo. De una u otra forma, las software, los resultados de los procesos no características de los proyectos de software son siempre predecibles y sobre todo, es hacen necesario seguir prácticas específicas difícil predecir desde el comienzo del para optimizar los resultados de los proyecto cada desarrollos. Este artículo presenta en contexto las generalidades del estado actual Modelos de Ciclo de Vida de Desarrollo de de evolución de los modelos de ciclo de vida Software en el Contexto de la Industria de desarrollo de software. Luego, se hace Colombiana de Software una reflexión de la importancia de las Hugo F. Arboleda Jiménez. MSc. Docente- características de cada proyecto al momento Investigador, Facultad de Ingenierías, de escoger el modelo de desarrollo a seguir. Universidad de San Buenaventura Cali. La clasificación de los proyectos de software de acuerdo a sus características específicas, Magíster Ingeniería de Sistemas y es útil para enmarcar contextos de desarrollo Computación, Universidad de los Andes, para los cuales prácticas particulares de 2002. proceso resulten en mayor probabilidad de Ingeniero de Sistemas Universidad del éxito. De igual forma, la adaptabilidad de los Valle, 1999. resultado. Sin embargo, es posible por Grupos de desarrollo han experimentado medio de la recolección y estudio de soluciones que basan su fundamento en la métricas de desarrollo lograr realizar adaptabilidad de los procesos de desarrollo, estimaciones acertadas en contextos de en lugar de seguir esperando lograr desarrollo repetibles. Remontándose a la resultados predecibles de un proceso que no historia, el modelo de cascada fue uno de los evoluciona. Esta comunidad de primeros modelos de ciclo de vida (MCV) desarrolladores e investigadores han que formalizó un conjunto de procesos de nombrado su trabajo bajo lo que conocemos desarrollo de software. Este MCV describe como metodologías ágiles. Las metodologías un orden secuencial en la ejecución de los ágiles como puede entenderse mal, no están procesos asociados. El modelo espiral se en contra de administrar procesos de postuló como una alternativa al modelo de desarrollo. Por el contrario promueve la cascada. La ventaja de este modelo radica en formalización de procesos adaptables. La el perfeccionamiento de las soluciones compilación de los principios y valores que encontradas con cada ciclo de desarrollo, en resaltan las metodologías ágiles fue términos de dar respuesta a los formalizada en el manifiesto para el requerimientos inicialmente analizados. El desarrollo de software ágil. Este documento modelo de cascada y el modelo espiral desarrollado por los representantes de cada suponen, de manera general, que los una de las metodologías que en el momento requerimientos del cliente no cambian se presentaban como ágiles, logra resumir en radicalmente en el transcurso del desarrollo un conjunto de ideas las prácticas que una del sistema. Por otro lado, la realización de metodología de este estilo debe llevar a prototipos es una herramienta en la que se cabo. Como característica fundamental, la apoyan diferentes MCV. Un prototipo debe habilidad de responder al cambio es la tener el objetivo de mostrar al cliente o a la principal característica de las metodologías gerencia del proyecto el resultado que se ágiles. XP, una de las más difundidas, es obtendrá de la implementación de cada uno una metodología de desarrollo de software de los requerimientos del cliente una vez ágil que define pocas reglas y pocas terminado el desarrollo. Con los prototipos prácticas. XP promueve la adaptabilidad de se tiene la posibilidad de obtener los procesos de desarrollo basándose en los retroalimentación de manera temprana. La principios y prácticas que presenta. Quienes solución a algunos de los problemas trabajan usando XP deben seguir procesos presentados por las metodologías disciplinados, pero más que eso, deben tradicionales se logra con una gran combinar la disciplina con la adaptabilidad evolución del modelo espiral. El proceso necesaria del proceso. unificado propone la elaboración de varios Las metodologías de Cristal se basan en el ciclos de desarrollo, donde cada uno finaliza principio de que tipos diferentes de con la entrega al cliente de un producto proyectos requieren tipos diferentes de terminado. Este se enmarca entre los metodologías. La metodología escogida conocidos modelos iterativo-incremental. debe depender de dos factores: el número de 2.2 Metodologías ágiles personas en el proyecto, y las consecuencias de los errores. Conforme al principio de las metodologías ágiles, Scrum recalca la imposibilidad de encontrar procesos Los primeros desarrollos de software en definidos y repetibles cuando no existen Colombia iniciaron de manera artesanal. problemas, personas, ni ambientes definidos Incrementalmente, y con la llegada de y repetibles. nuevas tecnología, plataformas de desarrollo, y programas de formación 2.3 ¿Metodologías ágiles o metodologías superior bien estructurados, se inició un tradicionales? proceso de mejoramiento de procesos entre En las metodologías tradicionales el los que se incluye el tema de la planeación y principal problema es que nunca se logra seguimiento de los proyectos de software. planear bien el esfuerzo requerido para El modelo de cascada fue en ese entonces, y seguir la metodología. Pero entonces, si tal vez lo sigue siendo, el modelo más usado logramos definir métricas que apoyen la por los desarrolladores de software que estimación de las actividades de desarrollo, recién constituyen sus empresas de muchas prácticas de metodologías desarrollo. Modelos de desarrollo sin alto tradicionales podrían ser apropiadas. El no nivel de complejidad como el espiral, o el poder predecir siempre los resultados de orientado a prototipos, siguen siendo los cada proceso no significa que estamos frente más usados. Sin embargo, estos modelos a una disciplina de azar. Lo que significa es siguen siendo interpretados en algunos casos que estamos frente a la necesidad de de manera errónea. Es el caso de equipos de adaptación de los procesos de desarrollo que desarrollo que por tener ciclos de desarrollo son llevados por parte de los equipos que iterativo y/o incremental, aseguran seguir un desarrollan software. Tener metodologías modelo espiral, sin realizar un análisis de diferentes para aplicar de acuerdo con el riesgo bien soportado. Igual pasa con el uso proyecto que se desarrolle resulta una idea de los prototipos. Estos se usan como interesante. Estas metodologías pueden herramienta de avance, sin hacer entender al involucrar prácticas tanto de metodologías cliente el objetivo de validación de ágiles como de metodologías tradicionales. requerimientos, y/o especificación de De esta manera podríamos tener una borradores de interfaz. Un problema paralelo metodología por cada proyecto, la radica en que muchos de los ingenieros de problemática sería definir cada una de las desarrollo de software no tienen claro qué prácticas, y en el momento preciso definir modelo de desarrollo siguen al interior de parámetros para saber cual usar. Es sus equipos. Así, problemas “normales” importante tener en cuenta que el uso de un adjuntos a un modelo de ciclo de vida de método ágil no es para todos. Sin embargo, desarrollo los toman por sorpresa, pudiendo una de las principales ventajas de los ser evitados haciendo un análisis del modelo métodos ágiles es su peso inicialmente adecuado para el proyecto particular Uno de ligero y por eso las personas que no estén los temas más abordados en la industria del acostumbradas a seguir procesos encuentran software Colombiano es el tema de estas metodologías bastante agradables. planeación y seguimiento de proyectos. Con 3 MODELOS DE DESARROLLO EN LA este tema viene adjunto el tema de la INDUSTRIA DEL SOFTWARE definición de modelos de ciclo de vida de COLOMBIANO desarrollo. Sin embargo, normalmente el tema se ha abordado desde una perspectiva tradicional de planeación de proyectos, sin vida exitoso en un contexto, no hacer énfasis en las características propias necesariamente lo es en otro contexto. Por de los proyectos de software. Es por esta ejemplo, ante el surgimiento de los Parques razón que los modelos de desarrollo siguen Tecnológicos que incluyen empresas de esquemas tradicionales, con poco o ningún desarrollo de software, se debe tomar en énfasis en la adaptación al cambio y la cuenta las características propias del estimación basada en datos históricos de contexto de un grupo de jóvenes desarrollo. Gran parte de las empresas de emprendedores sin altos recursos para software que tienen esquemas de oficinas de realizar inversión, con necesidad de poner en proyectos, o usan metodologías de el mercado en relativo poco tiempo un planeación guiadas por el Instituto de software altamente funcional de excelente Gerencia de Proyectos de Estados Unidos calidad. Un conjunto de preguntas que (PMI) siguen esquemas tradicionales donde surgen ante la necesidad de redefinir el los procesos de soporte de desarrollo de modelo de desarrollo que un equipo sigue en software son poco tomados en cuenta, un momento determinado, con el fin de generalmente por lo poco entendidos. Es el mejorar los resultados en términos de un caso de la Administración de conjunto de Requerimientos. De igual forma, aunque los atributos como pueden ser la calidad del planes del proyecto sean administrados, en software y la precisión de los planes muchas ocasiones no son impactados frente realizados, podrían ser las siguientes: 1. a los cambios que surgen en el desarrollo del Cómo evaluar mis proceso de desarrollo? 2. día a día. Así, parte de la solución no está en Cómo identificar el conjunto de la búsqueda de realizar planes perfectos de características que rodean mis desarrollos, e desarrollo, sino en la búsqueda de estrategias impactan de manera significativa los que permitan realizar ajustes a los planes resultados de mi equipo? 3. Cómo identificar definidos desde el inicio. En eso hacen el conjunto de prácticas adecuadas para énfasis las metodologías ágiles. incluir en un nuevo modelo de ciclo de vida 4 CÚAL ES EL CAMINO A SEGUIR? de desarrollo? La respuesta a estas preguntas se enmarca en el tema de Mejoramiento de Antes de definir el modelo de ciclo de vida Procesos de Software (SPI). En este tema se de desarrollo a seguir en una iteración de un encuentra por ejemplo la propuesta realizada proyecto dentro de una empresa en el por el Instituto de Ingeniería de Software contexto colombiano, se debe entender los con su trabajo sobre IDEAL y CMMI. Sin fundamentos básicos, con pros y contras, de embargo, al igual que para los procesos de seguir un modelo determinado. Esto incluye desarrollo, las prácticas requeridas para como primera medida, realizar un estudio de mejorar un proceso de software dependen las prácticas que se van a poner en ejecución altamente del contexto donde se mejoran los dentro de un proyecto. Los modelos híbridos procesos. Por ejemplo, no es igual mejorar (tradicionales y ágiles) deben ser los procesos al interior de equipos con alta estructurados teniendo en cuenta las rotación, y gran número de participantes, características propias del proyecto. Esto que mejorarlos en un equipo pequeño y incluye las propias características del estable. Para el caso del contexto contexto colombiano. Un modelo de ciclo de colombiano, tomando como objetivo las pequeñas y medianas empresas, una buena modelo de desarrollo, se debe tener en estrategia es evaluar los procesos frente a un cuenta el marco de referencia con el cual se marco de referencia como puede ser CMMI evaluó el proceso actual, y las características en cada una de sus áreas de proceso. Luego identificadas. Así, de manera incremental, se de tener una evaluación inicial del estado incorporan prácticas en un orden que se actual de los procesos, y definir lo que se defina como prioritario al interior del equipo puede llamar una línea base de procesos, se para minimizar los impactos negativos de debe realizar un plan de mejoramiento características del equipo identificadas, en basado en las características del equipo de los proyectos de desarrollo. Algo que desarrollo. Un buen ejercicio para identificar siempre se debe tener en cuenta es la estas características es realizar un árbol de definición de métricas desde el inicio de problemas como el presentado en la figura 1. mejoramiento, que permitan medir la mejora Por medio de este tipo de esquemas, se una vez impactados los procesos. A estas pueden identificar características que de métricas se les conoce como indicadores de alguna manera no se tomaban en cuenta. gestión del mejoramiento de procesos.
Figura 1. Árbol de problemas para la
identificación de características propias de un contexto. Alta rotación del equipo Jerarquías impuestas Desmotivación Oportunidades del mercado Bajo nivel de productividad No existencia de procesos livianos para adaptar Fuga de conocimiento Incremento del costo en comunicación Adaptación continua de equipo al proceso Incremento de documentación para soportar rotación Fuga de conocimiento