CIS0910IS05
ConstruColectiva:
Guía metodológica para la gestión de proyectos de software
basados en metodologías ágiles, utilizando ambientes de
desarrollo colaborativo. Caso de estudio: GForge
John Eddie Díaz Agudelo
Juan Felipe Olaya Figueroa
PONTIFICIA UNIVERSIDAD JAVERIANA
FACULTAD DE INGENIERIA
CARRERA DE INGENIERIA DE SISTEMAS
BOGOTÁ, D.C.
2010.
CIS0910IS05
ConstruColectiva:
Guía metodológica para la gestión de proyectos de software
basados en metodologías ágiles, utilizando ambientes de
desarrollo colaborativo. Caso de estudio: GForge
Autor(es):
JOHN EDDIE DÍAZ AGUDELO
JUAN FELIPE OLAYA FIGUEROA
MEMORIA DEL TRABAJO DE GRADO REALIZADO PARA CUMPLIR UNO DE LOS REQUISITOS PARA OPTAR AL TITULO DE INGENIERO DE SISTEMAS
Director
MARIA CONSUELO FRANKY
Jurados del Trabajo de Grado
DIEGO FERNANDO MARÍN
MARÍA LUISA LAMPREA ORDOÑEZ
PONTIFICIA UNIVERSIDAD JAVERIANA
FACULTAD DE INGENIERIA
CARRERA DE INGENIERIA DE SISTEMAS
BOGOTÁ, D.C.
ENERO, 2010
PONTIFICIA UNIVERSIDAD JAVERIANA
FACULTAD DE INGENIERIA
CARRERA DE INGENIERIA DE SISTEMAS
Rector Magnífico
Joaquín Emilio Sánchez García S.J.
Decano Académico Facultad de Ingeniería
Ingeniero Francisco Javier Rebolledo Muñoz
Decano del Medio Universitario Facultad de Ingeniería
Padre Sergio Bernal Restrepo S.J.
Directora de la Carrera de Ingeniería de Sistemas
Ingeniero Luis Carlos Díaz Chaparro
Director Departamento de Ingeniería de Sistemas
Ingeniero Germán Alberto Chavarro Flórez
Artículo 23 de la Resolución No. 1 de Junio de 1946
“La Universidad no se hace responsable de los conceptos emitidos por sus alumnos en sus proyectos de grado. Sólo velará porque no se publique nada contrario al dogma y la moral católica y porque no contengan ataques o polémicas puramente personales. Antes bien, que se vean en ellos el anhelo de buscar la verdad y la Justicia”
AGRADECIMIENTOS
A nuestras familias por el apoyo incondicional que nos han brindado desde que iniciamos nuestras carreras profesionales. A Maria Consuelo Franky, por sus incesables sesiones de correcciones a todos los documentos que fueron fruto de este trabajo de grado, y también por sus charlas y anécdotas en la gestión de proyectos de software basados en metodologías ágiles. ¡De verdad, muchas gracias profe!, por ese ánimo en investigar este tema tan asombroso que se tiene en la Ingeniería de Sistemas y por sembrarnos la curiosidad y el interés en el apasionante mundo de las metodologías ágiles. A Miguel Eduardo Torres por su colaboración en la revisión de la guía metodológica y sus consejos para la realización de este trabajo de grado. A Ángela María Suarez por su ayuda brindada en lo referente de las buenas prácticas de redacción y por sus consejos brindados en este tema tan importante. Muchas gracias a todos, este proyecto de grado está dedicado a todos ustedes…
John Eddie Díaz y Juan Felipe Olaya
INTRODUCCIÓN 1
I - DESCRIPCIÓN GENERAL DEL TRABAJO DE GRADO 3
I.1. Oportunidad ó Problemática 3
I.1.1. Descripción del contexto 3
I.1.2. Formulación 4
I.2. Descripción del Proyecto 4
I.2.1. Visión global 4
I.2.2. Justificación 5
I.2.3. Objetivo general 5
I.2.4. Objetivos específicos 5
I.2.5. Impacto 6
II - MARCO TEÓRICO 7
II.1. Marco Contextual 7
II.1.1. Ambiente de desarrollo colaborativo (CDE) 7
II.1.2. Metodologías ágiles 7
II.1.2.1. Manifiesto ágil 9
II.1.2.2. Principios del manifiesto ágil 10
II.1.3. Resultados de la encuesta Agile Adoption Rate Survey Results: February 2008 11
II.1.4. Comparación de los ambientes de desarrollo colaborativo (CDE) 18
II.1.5. Unified Software Development Process (UP) 28
II.2. Marco Conceptual 29
II.2.1. Equipos virtuales 29
II.2.2. Workflow 29
II.2.3. Tracker 30
II.2.4. Ítem 30
II.2.5. Sistema de control de versiones 31
II.2.6. Administración de la configuración del software (SCM) 32
II.2.7. Bug 33
II.2.8. GForge 33
II.2.9. Mailman 33
II.2.10. Stakeholders 34
III - PROCESO 35
III.1. Metodología Propuesta 35
III.2. Desarrollo del Proyecto 38
III.3. Definición de trackers y sus workflows para la gestión de un proyecto de software bajo metodologías ágiles en GForge 50
III.3.1. Tracker 1: Análisis de requerimientos y casos de uso 51
III.3.2. Tracker 2: Planeación del desarrollo del proyecto 52
III.3.3. Tracker 3: Arquitectura y diseño 53
III.3.4. Tracker 4: Desarrollo 54
III.3.5. Tracker 5: Pruebas y proceso de integración 55
III.3.6. Tracker 6: Entrega al cliente y pruebas por parte del cliente 57
III.3.7. Tracker 7: Bugs 58
III.3.8. Tracker 8: Extensiones 59
III.3.9. Tracker 9: Puesta en operación 60
III.4. Reflexión Metodológica 61
IV - RESULTADOS Y RECOMENDACIONES 64
IV.1. Resultados 64
IV.1.1. Evaluación de la guía metodológica 68
IV.2. Recomendaciones 69
V - CONCLUSIONES Y TRABAJOS FUTUROS 69
V.1. Conclusiones 69
V.2. Trabajos Futuros 71
VI - REFERENCIAS Y BIBLIOGRAFÍA 72
VI.1. Referencias 72
VI.2. Bibliografía 77
VII- ANEXOS 78
Anexo 1. Glosario 78
Anexo 2. Formato de Encuesta 78
Anexo 3. Encuesta diligenciada 78
Lista de Tablas
Tabla 1 - Información general de los CDEs 20
Tabla 2 - Herramientas para el público o desarrolladores de los CDEs 24
Tabla 3 – Herramientas para los administradores del proyecto en los CDEs 26
Tabla 4 - Herramientas personales para los desarrolladores que hay en los CDEs 27
Tabla 5 - Relación de los procesos con los roles definidos en la guía metodológica 43
Tabla 6 - Estados del workflow del tracker: Análisis de requerimientos y casos de uso 52
Tabla 7 - Estados del workflow del tracker: Planeación del desarrollo del proyecto 53
Tabla 8 - Estados del workflow del tracker: Arquitectura y diseño 54
Tabla 9 - Estados del workflow del tracker: Desarrollo 55
Tabla 10 - Estados del workflow del tracker: Pruebas y proceso de integración 56
Tabla 11 - Estados del workflow del tracker: Entrega al cliente y pruebas por parte del cliente
58
Tabla 12 - Estados del workflow del tracker: Bugs
59
Tabla 13 - Estados del workflow del tracker: Puesta en operación 61
Tabla 14 - Resultados de los documentos que soportan la guía metodológica 68
Lista de Ilustraciones
Ilustración 1 - Agile software development 8
Ilustración 2 - Iteration release 9
Ilustración 3 - Productividad con las metodologías ágiles 12
Ilustración 4 - Calidad con las metodologías ágiles 13
Ilustración 5 - Satisfacción de los stakeholders con las metodologías ágiles 14
Ilustración 6 - Tasas de éxito en las metodologías ágiles por el nivel de distribución en los miembros del equipo 15
Ilustración 7 - Costo en el desarrollo del sistema con las metodologías ágiles 16
Ilustración 8 - Razones por adoptar las metodologías ágiles 17
Ilustración 9 - Stakeholders de una organización 34
Ilustración 10 - Requerimientos evolutivos e iterativos 44
Ilustración 11 - Cono de incertidumbre 45
Ilustración 12 - Los contratos del proyecto 46
Ilustración 13 - Iteraciones de la metodología propuesta 48
Ilustración 14 - Workflow del tracker: Análisis de requerimientos y casos de uso 51
Ilustración 15 - Workflow del tracker: Planeación del desarrollo del proyecto 52
Ilustración 16 - Workflow del tracker: Arqitectura y diseño 53
Ilustración 17 - Workflow del tracker: Desarrollo 54
Ilustración 18 - Workflow del tracker: Pruebas y proceso de integración 56
Ilustración 19 - Workflow del tracker: Entrega al cliente y pruebas por parte del cliente 57
Ilustración 20 - Workflow del tracker: Bugs 58
Ilustración 21 - Workflow del tracker: Extensiones 59
Ilustración 22 - Workflow del tracker: Puesta en operación 60
Ilustración 23 - ConstruColectiva Work Breakdown Structure 65
ABSTRACT
This undergraduate final project defines methodological guidelines for the software projects management based on agile methodologies, profiting the advantages offered by the collaborative development environments, like GForge [GForge Group, 2007]. This kind of environments provides the necessary tools to monitor the different activities required during the development of a software project, such as project planning, requirements elicitation, use cases implementation, testing, installation, training and support.
RESUMEN
Este trabajo define una guía metodológica para la gestión de proyectos de software basados en metodologías ágiles, aprovechando las ventajas ofrecidas por los ambientes de desarrollo colaborativo, como GForge [GForge Group, 2007]. Esta clase de ambientes proveen las herramientas necesarias para supervisar las actividades requeridas durante el desarrollo de un proyecto de software, tales como la planeación de un proyecto, levantamiento de requerimientos, implementación, pruebas, instalación, capacitación y soporte.
RESUMEN EJECUTIVO
Luego de la crisis del software en el año 1968, se abrió paso a la creación de una de las disciplinas más relevantes en el área de la computación, esto es, la ingeniería de software, a partir de la cual se originaron procesos que permitirían adelantar un proyecto, con la estimación precisa de tiempo y recursos.
Si bien, desde su creación, las metodologías de software han contribuido a la optimización de los proyectos, aún no han podido alcanzar la meta para la cual fueron creadas, y la razón, como se desprende de los estudios que soportan el presente trabajo, se resume a continuación.
En primer lugar, la mayor causa del fracaso de los proyectos se le atribuye a errores de carácter humano, los cuales en su mayoría se deben a la deficiente comunicación entre los involucrados en el proceso. Esto, sumado con los altos costos derivados de la centralización de la información, que se maneja en forma independiente, provoca fallas que ponen en riesgo la calidad del proyecto.
Empeora el panorama anterior, el hecho de que los gerentes, no manejan con suficiencia las herramientas de desarrollo colaborativo, ya sea porque las desconocen o porque ignoran sus funcionalidades.
Como respuesta a esta neurálgica situación, ConstruColectiva propone para gestionar un proyecto de software, la aplicación de las metodologías ágiles a través de un ambiente de desarrollo colaborativo.
En este entendido, se elaboró una Guía Metodológica, que permite que el gerente conozca el estado en que se encuentra las actividades en curso, y así se logre un apoyo eficaz en el seguimiento del proyecto.
Para iniciar la construcción de la mencionada guía, se realizó una extensa investigación, enfocada principalmente en las metodologías ágiles y los ambientes de desarrollo colaborativo, por esta razón se analizaron diversas fuentes, dentro de las que sobresalen Manifesto for Agile Software Development [Beedle, y otros, 2001]; Agile and Iterative Development: A Manager's Guide, Craig Larman [Larman, 2004]; The unified software development process [Jacobson, Booch, & Rumbaugh, 1999]; Agile RUP: Experiences from the trenches: [Lines, Barnes, Holmes, & Ambler, 2008].
Una vez recopilada la documentación necesaria para soportar el documento líder del trabajo, se consolidaron los pilares bajo los cuales estaría fundamentada la Guía Metodológica y se procedió a realizar la instalación y configuración del ambiente de desarrollo colaborativo GForge, junto con su respectivo manual de instalación.
Cabe señalar, que se escogió la mencionada herramienta, por las ventajas que ofrece a los intereses del proyecto, como se infiere del estudio comparativo llevado a cabo por ConstruColectiva, en el que se toman diversas aplicaciones y se concluye que GForge resulta favorable al proyecto pues se puede descargar e instalar en un servidor de la organización, por esta razón ofrece una mayor confidencialidad, además permite la automatización de los procesos de seguimiento del proyecto y cuenta con licencia GPL (GNU General Public License) [Free Software Foundation, Inc, 2009], que permite el aprovechamiento de los servicios ofrecidos por la herramienta sin generar costos si el número de usuarios no excede de quince.
Claro lo anterior, se avanzó en la Guía Metodológica, pues se procedió a definir los procesos que harían parte del documento, cada uno con sus correspondientes trackers y workflows; para esto, se consideró apropiado tomar los procesos estándar: planeación del desarrollo del proyecto, levantamiento de requerimientos, diseño, implementación de los casos de uso, pruebas, instalación, capacitación y soporte, y compararlos con los propuestos por los Core Workflows [Jacobson, Booch, & Rumbaugh, 1999] para, a partir de aquí, consolidar los procesos que adecuados a los requerimientos de la propuesta.
Es así como la guía se inicia con el análisis de requerimientos y casos de uso, luego la planeación del desarrollo, arquitectura y diseño, la etapa de desarrollo, pruebas y proceso de integración, continúa la entrega y pruebas por parte del cliente, bugs, extensiones y por último la puesta en operación. Para finalizar esta etapa, y teniendo consolidada esta estructura, se indicaron los ítems que harían parte de cada uno de los trackers.
Acto seguido, teniendo en cuenta los lineamientos y pilares de las metodologías ágiles, se definió la iteración, la cual, para los efectos de la propuesta, se entiende como elaboración y entrega, lo que se aborda de forma clara y detallada en el capítulo Desarrollo del proyecto del presente documento.
Finalizado lo anterior, se inició el procedimiento de registro de la Guía Metodológica, la cual se complementó a través de los siguientes anexos: (i) documentos auxiliares, los cuales corresponden a los ítems y si se requiere a los trackers, (ii) manual de instalación de la guía, (iii) inventario de textos o índice, y (iv) textos de apoyo, que soportan del modelo de gestión.
Culminada la etapa de estructuración y documentación, se dio paso a la etapa de pruebas, esto con la finalidad de determinar la viabilidad y éxito de la Guía Metodológica, para esto, como primera medida, se diseñó una encuesta, cuya finalidad era responder a los objetivos planteados en la presentación del trabajo, por medio de la cual, básicamente se probó la eficacia del trabajo propuesto.
Es así como el experto en software de la reconocida empresa Heinsohn Business Tecnology, Ing. Diego Marín, líder de Calidad, pudo verificar el comportamiento de la herramienta bajo el uso de la guía.
Con la finalidad de obtener otro punto de vista, el Ing. Miguel Eduardo Torres, profesor investigador del área de Ingeniería de Software de la Pontificia Universidad Javeriana, analizó el documento de la guía y extendió dos sugerencias, respecto de las cuales se tomaron las respectivas medidas, esto, en aras de contribuir al mejoramiento de la calidad del trabajo que se presenta.
Adicional a lo anterior, Ing. María Consuelo Franky, PhD. en Informática, docente investigadora, quien cuenta con 10 años de experiencia en el área de proyectos empresariales de tecnología, realizó seguimiento constante al desarrollo de la Guía Metodológica, y rindió concepto favorable frente a la propuesta considerando además de vital importancia, su implementación como texto ilustrativo en Tópicos avanzados en Ingeniería de Sofware, materia que se dicta en la maestría Ingeniería de Sistemas y Computación de la Pontificia Universidad Javeriana, a partir del primer semestre de 2010.
Para terminar, luego de observar el comportamiento de la herramienta GForge, bajo la utilización de la Guía Metodológica para la gestión de Proyectos de Software, se llegó a las siguientes conclusiones:
Si lo que se pretende es lograr la gestión de un proyecto de software de forma ágil, no es absolutamente indispensable acudir a las políticas oficiales establecidas por una determinada organización.
Bajo este mismo lineamiento, se requiere, la automatización en los procesos de la gestión, pruebas, integración continua, entregas periódicas y funcionales en cada iteración, equipos orgullosos y comprometidos con su trabajo, código de mejor calidad, documentación útil, respuesta frente a cambios en los requerimientos y una atenta colaboración del
cliente.
Por último, un ambiente de desarrollo colaborativo como GForge resulta considerablemente útil para la gestión de los proyectos de software bajo metodologías ágiles porque automatiza los procesos de seguimiento al avance del proyecto y como consecuencia, éste se termina a tiempo, sin exceder el presupuesto estimado, aumenta la calidad del software y
como resultado, se satisfacen los requerimientos del cliente.
Dostları ilə paylaş: |