Introducción
El avance experimentado por la Industria del desarrollo de software ha propiciado un cambio en las actividades del día a día de la sociedad; hoy está presente en casi todas las áreas de interés de los seres humanos: ingeniería, bancos, industria, educación, medicina, ámbito científico, gobierno y en las empresas en general. (1
Desarrollar un software es una tarea compleja y la probabilidad de no satisfacer las expectativas de los clientes y usuarios finales es muy elevada, si no se utiliza por parte del equipo de desarrollo una metodología para su construcción desde la fase inicial.
La selección de la metodología de desarrollo adecuada es indispensable para el éxito de todo proyecto de desarrollo de software, ya que facilita la realización de todas las tareas necesarias de acuerdo con las características del proyecto y su entorno. 2
En la actualidad existen dos tipos de metodologías de desarrollo de software. Las metodologías tradicionales, primeras en aparecer, garantizan un exquisito proceso de desarrollo del software, donde el seguimiento y la planificación predictiva, herramientas, documentación extensiva y negociación contractual reciben merecida importancia. Luego, como reacción a la filosofía utilizada en las metodologías tradicionales, surgen las metodologías ágiles, basadas en entregas frecuentes de versiones de software funcionales, con mayor relevancia a la planificación adaptativa, colaboración con el cliente y respuestas ante los cambios inherentes al desarrollo de software. 3-6
A pesar de la existencia de ambos tipos de metodologías de desarrollo, aún persisten problemas en el desarrollo de software relacionados con la calidad y el cumplimiento del tiempo y el presupuesto planificado. Según los resultados del estudio Standish Group 2015 Chaos Report, el 29% de los proyectos ejecutados en el mismo año terminaron con éxito, el 52% fueron renegociados y el 19% fracasaron en su totalidad. 7
Uno de los principales problemas relacionados con el proceso de desarrollo de software son los métodos utilizados en su construcción; el débil nivel de rendimiento y eficiencia del grupo de desarrollo, desajuste de los plazos y costes previstos en la planificación, entre otros, constituyen los principales factores de fracaso de ese tipo de proyectos.
La elección de la metodología para el desarrollo de software sigue siendo un aspecto a tratar de manera adecuada, sobre todo en el ámbito de las metodologías tradicionales y de las metodologías ágiles no existe un criterio unificado. 8 Según refieren Crêspo Boaventura y otros, la selección de la metodología a utilizar en los proyectos de software actuales, debe ser una evaluación de alternativas técnicas, costos, beneficios, condiciones y riesgos asociados. Una selección inadecuada puede implicar una pérdida de tiempo debido a la ejecución de algunas tareas irrelevantes. 9
A partir de esta problemática, este estudio tiene como objetivo proponer una metodología de desarrollo de software, para la gestión de los programas de maestrías del Instituto “Pedro Kourí” (IPK), a través de una comparación entre dos de las metodologías más utilizadas en la actualidad (una tradicional y una ágil).
Métodos
En la presente investigación se realizó un análisis bibliográfico de las dos principales corrientes metodológicas identificadas: desarrollo tradicional frente a las ágiles, sus semejanzas y sus diferencias; sus características que se han ido modificando de acuerdo a las necesidades y los aspectos relevantes que se han ido desarrollando en el tiempo de la sociedad del conocimiento.
Se evidencian cambios pequeños en algunos casos y giros importantes en otros, de ahí la importancia de su estudio.
Resultados
La revisión bibliográfica permitió describir los cambios presentados por las diferentes metodologías y las consideraciones de los principales autores en la temática, para lo cual se plantea el recorrido a fin de evaluar el estado de las mismas en el ambiente del desarrollo de software.
En primer lugar, es fundamental conceptualizar los términos metodología y desarrollo. La palabra metodología está formada por tres vocablos griegos: metá (“más allá”), odós (“camino”) y logos (“estudio”); por lo que teniendo en cuenta lo anterior, metodología es definida como el estudio de los métodos para luego determinar cuál es el más adecuado. 8
Específicamente, el vocablo metodología se define como un “conjunto de métodos coherentes y relacionados por unos principios comunes”, mientras que el concepto de desarrollo, es vinculado a la acción de desarrollar o a las consecuencias de este accionar, por lo que resulta necesario, rastrear el significado del verbo desarrollar: se trata de incrementar, agrandar, extender, ampliar o aumentar alguna característica de algo físico (concreto) o intelectual (abstracto). Por lo anterior, se concluye que metodología de desarrollo es: "el estudio y determinación de cuál es el método más adecuado para dar incremento a algo¨ en este caso al software". 8
Metodologías de desarrollo tradicional
Las metodologías tradicionales se focalizan en documentación, planificación y procesos.
Según lo sustentado por Crêspo Boaventura y otros, las principales metodologías tradicionales, Rational Unified Process (RUP) y Microsoft Solutions Framework (MSF), centran su atención en llevar una documentación exhaustiva de todo el proyecto. 3
Metodología RUP
RUP, es un proceso de ingeniería de software que suministra un enfoque para asignar tareas y responsabilidades dentro de una organización de desarrollo. Su objetivo es asegurar la producción de software de alta y de mayor calidad para satisfacer las necesidades de los usuarios, que tienen un cumplimiento al final, dentro de un límite de tiempo y presupuesto previsible. 3-6),(9-11
Las principales características de esta metodología son:
Forma disciplinada de asignar tareas y responsabilidades.
Pretende implementar las mejores prácticas en Ingeniería de Software.
Desarrollo interactivo.
Administración de requisitos.
Uso de arquitectura basada en componentes.
Control de cambio.
Modelado visual del software.
Verificación de la calidad del software.
En la Metodología RUP se distinguen 4 fases:
Fase de inicio
Durante esta fase las iteraciones se centran con mayor énfasis en las actividades de modelación de la empresa y en sus requerimientos.
Fase de elaboración
Durante esta fase, el equipo se centra en la realización de los casos de uso, este lleva una serie de requerimientos y pasos; el análisis y el diseño van acumulando las actividades, para empezar una parte de implementación que va a ser orientada a la base de la construcción de todas las especificaciones de la arquitectura del diseño.
Fase de construcción
Durante la fase de construcción, se lleva a cabo la construcción del producto por medio de una serie de iteraciones, se define su análisis y después el diseño y se procede a su implantación y sus respectivas pruebas.
Fase de transición
Durante esta fase se busca garantizar que el producto este bien preparado para su entrega al usuario.
A continuación en la figura 1 se presentan las fases y etapas de la metodología RUP, según los autores Rivas, Corona, Gutiérrez y Hernández. 8
Metodologías de desarrollo ágil
De acuerdo con Molina Ríos y otros, son una serie de técnicas para la gestión de proyectos que han surgido como contraposición a los métodos clásicos de gestión. (12)
Sus principios se agrupan en cuatro valores:
Los individuos y su interacción, por encima de los procesos y las herramientas.
El software que funciona, frente a la documentación exhaustiva.
La colaboración con el cliente, por encima de la negociación contractual.
La respuesta al cambio, por encima del seguimiento de un plan.
Muchas personas asocian las metodologías ágiles con falta de documentación o control sobre el proyecto, pero esto es falso. Lo que se desea es minimizar el impacto de las tareas que no son totalmente imprescindibles para conseguir el objetivo del proyecto en el menor tiempo posible. Se pretende aumentar la eficiencia de las personas involucradas en el proyecto y, como resultado de ello, minimizar el coste.
Entre los principales métodos ágiles tenemos el XP (eXtreme Programming), Scrum, Iconix, Cristal Methods y Agile Unified Process (AUP). 11), (13-15
Metodología XP
XP es una metodología liviana de desarrollo de software. Es un conjunto de prácticas y reglas para desarrollar software. Está basada en diferentes ideas de cómo enfrentar ambientes cambiantes. 11
En vez de planificar, analizar y diseñar para el futuro, XP hace todo esto un poco cada vez, a través de todo el proceso de desarrollo.
Objetivos
La metodología XP tiene dos objetivos primordiales para el correcto desarrollo del proyecto. (11
La satisfacción de cliente: Entendida como dar al cliente lo que necesita y cuando lo necesita, respondiendo rápidamente a las necesidades de este. Uno de los factores importantes en todo proyecto de software es que el sistema software logre el objetivo para el cual fue diseñado y que el equipo de trabajo logre el objetivo para el cual fue contratado, de ahí que el incumplimiento de esto termine con un producto incompleto y un cliente insatisfecho.
Potenciar al máximo el trabajo en grupo: Todos están involucrados y comprometidos con el desarrollo del software, tanto los jefes como los desarrolladores y los clientes, no hay agentes individuales o aislados al proyecto
Características
Planificación incremental: Se identifican los requerimientos en Historias de Usuario, que son negociadas progresivamente con el cliente.
Entregas pequeñas: Se desarrolla primero la más mínima parte útil que le provea funcionalidad al sistema, y gradualmente se efectúan incrementos que aumentan la funcionalidad de la primera entrega, cada ciclo concluye con una entrega del sistema, tal y como se muestra en la figura 2, ciclo de entrega en XP.
Al igual que en RUP, en XP el ciclo de vida (Fig. 3)termina cuando no hay más ciclos de entrega y el sistema ha cumplido el objetivo para el cual fue diseñado, de no ser así, se deberá continuar con el ciclo especificado en la figura 2 hasta que la funcionalidad del sistema sea la deseada.
Diseño sencillo: Solo se ejecuta el diseño necesario para satisfacer los requerimientos actuales, es decir, no se abordan requerimientos futuros.
Desarrollo previamente aprobado: Una de las características relevantes y propias de XP es que primero se efectúan las pruebas y luego se da la codificación, esto con la finalidad de asegurar la satisfacción del requerimiento.
Limpieza del código o refactorización: Consiste en simplificar y optimizar el programa sin perder funcionalidad, es decir, alterar su estructura interna sin afectar su comportamiento externo.
Programación en parejas: Es otra de las características de esta metodología, que propone que los desarrolladores trabajen en parejas en una terminal, comprobando cada uno el trabajo del otro y auxiliándose en la búsqueda de mejores soluciones, garantizando de esta forma un trabajo más eficiente y de mayor calidad.
Propiedad colectiva: El conocimiento y la información deben ser de todos, por lo tanto, no se desarrollan islas de conocimiento, todos los programadores tienen acceso a todo el código y cualquiera puede sugerir y realizar mejoras.
Integración continua: Al terminar una tarea, se integra al sistema entero y se realizan pruebas de unidad a todo el sistema, ésta práctica garantiza una aplicación más funcional en cada iteración y su funcionamiento con los demás módulos del sistema.
Ritmo sostenible: No es aceptable trabajar durante grandes cantidades de horas ya que se considera que puede reducir la calidad del código y la productividad del equipo a mediano plazo, se sugieren 40 horas semanales.
Cliente presente: Se debe tener un representante (cliente o usuario final) a tiempo completo, ya que en XP éste forma parte del equipo de desarrollo, con la responsabilidad de formular los requerimientos para el desarrollo del sistema.
Principios del Método XP
Este método se basa en cuatro principios bien definidos:
Simplicidad: La simplicidad consiste en desarrollar sólo el sistema que realmente se necesita. Implica resolver en cada momento sólo las necesidades actuales.
Feedback: Una metodología basada en el desarrollo iterativo de pequeñas partes, con entregas y pruebas frecuentes y continuas, proporciona un flujo de retro- información valioso para detectar los problemas o desviaciones y facilitar su corrección.
Decisión: Implica saber tomar decisiones difíciles. Reparar un error cuando se detecta. Mejorar el código tras el feedback y las sucesivas iteraciones.
Comunicación: XP hace casi imposible la falta de comunicación, ya que pone en comunicación directa y continua a clientes y desarrolladores.
Metodologías tradicionales y metodologías ágiles
Las metodologías tradicionales garantizan en los grupos de desarrollo una disciplina de trabajo fundamentada en la documentación sobre el proceso de desarrollo de software, específicamente en la planificación global y total de todo el trabajo a realizar, de manera que una vez todo detallado, comience el ciclo de desarrollo de software; mientras que las metodologías ágiles muchas veces obvian la documentación y se centran en el trabajo, buscando el equilibrio entre proceso/esfuerzo. 16
Surgidas recientemente, las metodologías ágiles constituyen una opción a las metodologías tradicionales, ya que efectúan resistencia a la excesiva documentación de aquéllas. Brooks, en su mítico libro The Mythical Man Month, detalla las primeras ideas que se plantean en las metodologías ágiles; las que, en su gran mayoría, responden al sentido común. (17
La Tabla 1 muestra una comparación entre los aspectos relevantes de las metodologías de desarrollo tradicionales y las metodologías ágiles. (18
Metodologías Tradicionales | Metodologías Ágiles |
---|---|
Predictivos | Adaptativos |
Orientado a procesos | Orientado a personas |
Proceso rígido | Proceso flexible |
Se concibe como un solo proyecto | Un proyecto es subdividido en varios proyectos más pequeños |
Poca comunicación con el cliente | Comunicación constante con el cliente |
Entrega de software al finalizar el desarrollo | Entregas constantes de software |
Documentación extensa | Poca documentación |
Otros autores concuerdan con la comparación realizada por Cadavid et al, pero le agregan más elementos a esta comparación, los que se relacionan en la Tabla 2. (18),(19
Metodologías Tradicionales | Metodologías Ágiles |
---|---|
Se basan en normas provenientes de estándares seguidos por el entorno de desarrollo | Se basan en heurísticas provenientes de prácticas de producción de código |
Cierta resistencia a los cambios | Preparados para cambios durante el proyecto |
Impuestas externamente | Impuestas internamente por el equipo |
Proceso muy controlado, numerosas normas | Proceso menos controlado, con pocos principios |
Contrato prefijado | Contrato flexible e incluso inexistente |
Cliente interactúa con el equipo de desarrollo mediante reuniones | El cliente es parte del desarrollo |
Grupos grandes | Grupos pequeños (<10) |
Más artefactos | Pocos artefactos |
La arquitectura del software es esencial | Menor énfasis en la arquitectura del software |
Selección de metodologías
Este aspecto no ha recibido un tratamiento adecuado, fundamentalmente en el ámbito de las metodologías tradicionales, y en el caso de las ágiles no se ha llegado a un consenso de criterios. Por ello, este artículo se orientó, de acuerdo a la información existente hasta la fecha y a la experiencia personal de los autores, a la formulación de un procedimiento para la selección de una metodología por criterios de conocimientos.
Selección de metodología, por criterios de conocimientos
En función del equipo de desarrollo, se consideran una serie de criterios relacionados con los conocimientos que tengan los integrantes del equipo sobre las metodologías de desarrollo de software a evaluar. Estos criterios se relacionan a continuación:
Grado de conocimiento
Soporte orientado a objetos
Adaptable a cambios
Basado en casos de uso
Posee documentación adecuada
Facilita la integración entre las etapas de desarrollo
Relación con el Unified Modeling Language (UML)
Permite desarrollo software sobre cualquier tecnología
Los pesos para cada criterio se establecen en función de los conocimientos que tengan los integrantes del equipo de desarrollo. Por ejemplo, Ríos y Wilson, en su tesis de grado, proponen las siguientes tablas de pesos: 20
20% para el grado de conocimiento
15% para adaptable a cambios y posee documentación adecuada
10% para el resto de criterios
Para determinar la metodología a usar, se realizó una adaptación del cuadro resumen elaborado por Ríos y Wilson para las metodologías RUP y XP. 20
En la evaluación realizada por estos autores, la metodología RUP recibió el mayor puntaje.
Criterio | % | RUP | XP | Total |
---|---|---|---|---|
Grado de conocimiento | 20 | 15 | 10 | 25 |
Soporte orientado a objetos | 10 | 10 | 10 | 20 |
Adaptable a cambios | 15 | 10 | 15 | 25 |
Basado en casos de uso | 10 | 10 | 5 | 15 |
Posee documentación adecuada | 15 | 15 | 10 | 25 |
Facilita la integración entre las etapas de desarrollo | 10 | 10 | 10 | 20 |
Relación con UML | 10 | 10 | 10 | 20 |
Permite el desarrollo de software sobre cualquier tecnología | 10 | 10 | 10 | 20 |
Total | 100 | 90 | 80 |
Las diferencias entre corrientes metodológicas (Tablas 1 y 2) obedece a que estas metodologías pueden ser implementadas en diferentes contextos, con diferencias en los requerimientos, en los niveles de riesgo que pueda tener cada proyecto, en los tipos de clientes y en el nivel de calidad, entre otros muchos aspectos, lo cual hace que cada enfoque metodológico sea viable para los negocios con características similares o para un determinado contexto de aplicación.
Situación en el IPK, en cuanto a las Maestrías y desarrollos web utilizados
El IPK es una Unidad de Ciencia y Técnica, que desarrolla la política de trabajo en el campo de la Medicina Tropical en el país. Es la institución de más alto nivel científico en investigación, atención médica y en la formación y actualización docente en Medicina Tropical, dentro del Sistema de Salud Cubano. (21
La integración asistencial-investigativa-docente del IPK, es de primordial importancia para el Centro de Posgrado IPK, de la Universidad de Ciencias Médicas de La Habana (UCHM), con aseguramiento de los resultados en el campo de la actividad docente, en las diversas modalidades del posgrado, además de organizar la superación profesional, con una serie de cursos de actualización y complementación, imprescindibles para mantener al día a profesionales y técnicos en las diferentes actividades de la asistencia hospitalaria, el diagnóstico microbiológico y parasitológico, los aspectos de la vigilancia epidemiológica, la entomología y el control de vectores. (22
Toda la información relacionada con los programas de Maestrías del IPK se genera en el departamento de Docencia, como órgano responsable de los distintos procesos docentes, en el que la gestión de la información se realiza fundamentalmente en un grupo de bases de datos en Access desarrolladas en el propio departamento y en la UCMH y una pequeña minoría de forma manual en ficheros Word y Excel. En ocasiones los especialistas responsables de los programas de maestrías han confrontado dificultades para obtener con inmediatez una información en específico, aunque el dato esté registrado, se dificulta ofrecer rápidamente la información solicitada, dado el cúmulo de actividades que se realizan en este departamento.
Al momento de realizar los informes correspondientes a los programas de maestrías para los organismos superiores, los especialistas del departamento docente deben revisar un gran número de documentos en sus ordenadores, o demandar información a los demás profesores de la institución, lo que retrasa o dificulta la entrega de la información solicitada. Además, no existe un sistema de almacenamiento y conservación de la documentación existente que facilite su búsqueda y recuperación, lo que ocasiona falta de noción precisa de lo que se tiene, generación duplicada de información, gastos excesivos de tiempo y dificultad para llevar el seguimiento de la información generada por la institución.
Todas las consideraciones planteadas con anterioridad justificaron el desarrollo de una herramienta informática, en ambiente web, de acceso restringido para profesores involucrados, que permitiera la gestión automatizada de la información relacionada con los programas de maestrías del IPK, facilitando la búsqueda y recuperación de la documentación existente, disminuyendo la generación duplicada de información, los gastos excesivos de tiempo y las dificultades para el seguimiento de la información de la institución.
Idoneidad de la metodología propuesta para dar respuesta al objetivo
Las metodologías tradicionales, por ejemplo RUP, son bastante sistemáticas en su proceso, lo que implica altos niveles de dedicación a la planificación y documentación para poder conseguir el desarrollo deseado, sin embargo, han evolucionado y se han transformado en metodologías enfocadas a procesos agiles, tales como RUP Ágil, ya que el mercado y la industria del software precisa la obtención de resultados en poco tiempo y dispuestos al cambio constante.
RUP es adaptable, según el tipo de proyecto y las características del mismo, haciéndose énfasis en aquellos flujos de trabajo durante la vida del software que reporten más importancia y sean indispensables. Contiene artefactos diseñados en cada una de las fases, que describen detalladamente las características del software desde que se realiza el análisis del problema hasta la entrega final del producto. RUP constituye una metodología de desarrollo que utiliza algunas de las mejores prácticas en desarrollo de software, ajustable perfectamente a proyectos complejos, a grandes equipos de trabajo y cuenta con gran nivel de aceptación entre desarrolladores de software.
Se propone RUP como metodología de desarrollo para el sistema en ambiente web para la gestión de los programas de maestrías del Instituto “Pedro Kourí”, por ser la más completa y abarcadora, pues como refiere la bibliografía analizada, las restantes son casos particulares de esta. Además, XP igual que el resto de los métodos de desarrollo existentes, presenta algunas debilidades, que constituyen riesgos considerables, como dificultades a la hora de una buena obtención de los requisitos para el sistema.
Conclusiones
La revisión de la bibliografía existente sobre las metodologías de desarrollo constituye una evidencia científica que sustenta la afirmación de que no existe una metodología universal para hacer frente a cualquier proyecto de desarrollo de software; cada una de las metodologías puede ser aplicada de acuerdo con el contexto: recurso humano, documentación necesaria, tiempo y disponibilidad del usuario, entre otros.
Todas las metodologías tienen sus limitantes, del mismo modo que las metodologías ágiles son más apropiadas para pequeños y medianos proyectos, no son las más adecuadas para sistemas que demanden de interacciones complejas con otros sistemas, debido a que dichos sistemas requieren de un nivel de precisión muy alto; aunque no todas las metodologías ágiles están basadas en el desarrollo y entrega incremental, comparten los principios del manifiesto ágil para el desarrollo de software.
No es conveniente utilizar una metodología ágil para el desarrollo de un sistema crítico que requiera un análisis detallado de todos los requerimientos para comprender su complejidad e implicaciones, debido a la complejidad y la extrema precisión que pueda tener la captura de requerimientos, proceso en el cual las metodologías agiles como XP ofrecen excesiva flexibilidad.
La metodología a utilizar debe ajustarse al proceso de desarrollo concreto a realizar, de acuerdo a las condiciones existentes y el entorno organizacional en el momento de su aplicación, lo que no descarta que en el futuro la organización pueda asimilar otro tipo de metodología para este tipo de proyecto.
La metodología RUP, es la propuesta para el desarrollo del sistema en ambiente web para la gestión de los programas de maestrías del Instituto “Pedro Kourí”