La gestión de proyectos es la disciplina que agrupa y ordena el conjunto de tareas o actividades destinadas a obtener unos objetivos.

Esto incluye la planificación, definición, ordenamiento y gestión de las actividades que formarán el proyecto software.

En su primera expresión, la buena gestión de un proyecto es la que es capaz de reducir al mínimo las posibilidades de fallo de éste durante todo el transcurso del mismo. Pudiendo entenderse como fallo, la no consecución de los requisitos iniciales del proyecto, la inviabilidad económica del mismo, un resultado que impida mantenerlo o le impida evolucionar, etc.

Otra visión más orientada al ámbito de costes y económico del proyecto es la que define la buena gestión como la que optimiza el uso de los recursos (tiempo, dinero, personas, equipos, etc.) en cada fase del mismo.

Muy comúnmente, la gestión del proyecto se lleva a cabo por el director del proyecto, normalmente una sola persona que no tiene por qué participar activamente en las actividades del mismo, pero que sí que se ocupa de monitorizar su progreso y de la interacción entre los diferentes grupos que intervienen en éste para minimizar el riesgo de fallo del proyecto.

Además de hojas de cálculo de control de horas por tarea, uso de recursos, etc., los diagramas de Gantt son muy usados en estos entornos por mostrar de una forma clara la sucesión de tareas, recursos involucrados y sus dependencias.

En los diagramas de Gantt, representamos las actividades que hay que realizar en forma de árbol (mitad izquierda de la figura), indicando su fecha de inicio y su duración estimada. El programa representa la actividad sobre un calendario (mitad derecha de la figura) y nos permite definir las dependencias entre las actividades. Al indicar que una tarea debe empezarse al terminar otra, o que deben empezar a la vez o terminar las dos simultáneamente, el diagrama va modificando automáticamente la situación de las actividades en el tiempo.

Dependiendo de la complejidad del programa que utilicemos para representar el diagrama, podremos especificar también los recursos disponibles, los necesarios para cada tarea, etc. y seremos capaces de detectar conflictos en la planificación, como intervalos en los que no dispondremos de los recursos necesarios, o cuál va a ser el camino crítico del proyecto (la sucesión de tareas que por sus dependencias van a determinar la duración máxima del proyecto).

Concretamente, en entornos de software libre, no existe una forma “tradicional” de gestionar un proyecto. Un buen ejemplo de ello es el artículo de Eric S. Raymond, “La Catedral y el Bazar”, en el que se describe la forma tradicional de gestionar un proyecto como analogía de construir una catedral, y se compara la forma como se gestionan muchos proyectos de software libre al funcionamiento de un bazar.

Proyectos grandes de software libre, como el desarrollo del núcleo Linux o el servidor web Apache, están formados por un comité de gestión del proyecto (o una sola persona como dictador benevolente) que deciden los siguientes pasos que habrá que llevar a cabo en el proyecto, y que inmediatamente delegan en otras personas o equipos los cambios que hay que realizar para llegar a los objetivos. La aprobación de los cambios realizados o bien la incorporación de nuevas funcionalidades propuestas por los usuarios u otros desarrolladores sigue el proceso inverso hasta llegar al comité de aprobación que decide si se incorporan al proyecto o no.

Por supuesto, en este tipo de gestión de proyectos, juega un papel fundamental las herramientas de soporte y comunicación entre los diferentes equipos. Programas de gestión de incidencias como el conocido Bugzilla o entornos como Sourceforge que ayudan a los gestores del proyecto o a los comités organizadores a conocer el estado del proyecto, la opinión de sus usuarios, las aportaciones de los desarrolladores, etc.

Proyectos pequeños o medianos de software libre no acostumbran a seguir una metodología tradicional, y se orientan más a una gestión ágil del proyecto, siguiendo principios acordes con el software libre, primando la publicación de nuevas funcionalidades y versiones del proyecto al cumplimiento de un calendario rígido de actividades e hitos.

En estos proyectos, el director del mismo suele intervenir muy estrechamente en el desarrollo y en el resto de actividades.
Este último tipo de proyectos suelen gestionarse mediante simples listas de requisitos y fallos por resolver, que por la naturaleza distribuida de los proyectos de software libre, deberá estar disponible para su consulta y modificación por parte de los desarrolladores y usuarios.

El gestor o los desarrolladores serán los que den prioridad a las tareas, y decidan cuáles van a incorporar en las nuevas releases del proyecto.

 

Fuente:

Ingeniería del software en entornos de SL
Marc Gibert Ginestà
entornos de SL
Álvaro Peña González
UOC Formación de Posgrado