Gestión y control de proyectos informáticos. Estimación de recursos. Planificación temporal y organizativa. Seguimiento


El desarrollo de software es una tarea compleja. Las organizaciones necesitan habitualmente herramientas software de tamaño medio o grande, y la complejidad para llevar a cabo con éxito dichos desarrollos crecre exponencialmente con el tamaño del producto. Se hace por tanto necesaria una disciplina para poder realizar dichos desarrollos con éxito.
Dicha disciplina es la gestión de proyectos, encargada de organizar y administrar recursos de manera tal que se pueda culminar todo el trabajo requerido en el proyecto dentro del alcance, el tiempo, y coste definidos.
Un proyecto es un esfuerzo temporal, único y progresivo, emprendido para crear un producto o un servicio también único. Si el objetivo del proyecto es la construcción de un producto software es denominado proyecto informático, y a la disciplina de organización y control, gestión de proyectos informáticos
En este tema veremos las fases de la gestión de proyectos, profundizando a continuación en cada una de ellas.



Introducción

El desarrollo de software es una tarea compleja. Las organizaciones necesitan habitualmente herramientas software de tamaño medio o grande, y la complejidad para llevar a cabo con éxito dichos desarrollos crecre exponencialmente con el tamaño del producto. Se hace por tanto necesaria una disciplina para poder realizar dichos desarrollos con éxito.
Dicha disciplina es la gestión de proyectos, encargada de organizar y administrar recursos de manera tal que se pueda culminar todo el trabajo requerido en el proyecto dentro del alcance, el tiempo, y coste definidos.
Un proyecto es un esfuerzo temporal, único y progresivo, emprendido para crear un producto o un servicio también único. Si el objetivo del proyecto es la construcción de un producto software es denominado proyecto informático, y a la disciplina de organización y control, gestión de proyectos informáticos
En este tema veremos las fases de la gestión de proyectos, profundizando a continuación en cada una de ellas.

Gestión y control de proyectos informáticos

Como cualquier empresa humana, los proyectos necesitan ser ejecutados y entregados bajo ciertas restricciones. Tradicionalmente, estas restricciones han sido alcance, tiempo y costo. Esto también se conoce como el Triángulo de la Gestión de Proyectos, donde cada lado representa una restricción. Un lado del triángulo no puede ser modificado sin impactar a los otros.
La restricción de tiempo se refiere a la cantidad de tiempo disponible para completar un proyecto.
La restricción de coste se refiere a la cantidad presupuestada para el proyecto.
La restricción de alcance se refiere a lo que se debe hacer para producir el resultado final del proyecto.
Para conseguir la ejecución del proyecto cumpliendo dichas restricciones, se realiza un proceso denominado gestión y control de proyectos. Dicho proceso consta de una serie de fases que veremos a continuación.

Fases

Estudio viabilidad

Previamente a la realización del proyecto, se realiza un estudio de viabilidad que determina el alcance del mismo, además de estudiar su rentabilidad económica. En esta fase se decide si abordar o no el proyecto. Se ve con detalle en el tema 51

Lanzamiento

En la fase de lanzamiento se establece el equipo inicial que va a trabajar en el proyecto, se formaliza la comunicación con el usuario, y se comienzan los trabajos relacionados con el mismo

Estimación inicial

La estimación determina de la forma más aproximada posible el esfuerzo, plazo y riesgos del proyecto.

Organización

El objetivo es definir el equipo de trabajo que se hará cargo del proyecto, así como las responsabilidades y dependencias jerárquicas del mismo

Planificación

Consiste en determinar las tareas a realizar, quién y cuándo deben realizarse, así como los productos a obtener de las mismas

Ejecución

Durante la ejecución del proyecto se lleva a cabo el desarrollo del sistema, según la planificación prevista en la fase anterior.

Seguimiento

A lo largo del proyecto debemos vigilar que las cosas se están desarrollando como se han planeado. Para ello, debe realizarse un seguimiento del plan, realizando mediciones y tomando las medidas correctivas necesarias si se producen desviaciones.

Estimación de recursos

La estimación consiste en determinar a priori qué cantidad de recursos se necesitarán para completar el proyecto. Dicho coste es necesario para poder planificar con garantías las actividades del proyecto, así como para decidir si merece la pena el desarrollo.
Vamos a tratar aquí la estimación de recursos necesarios para el desarrollo; hay que tener en cuenta que un proyecto puede tener necesidad de otro tipo de recursos (hardware, licencias, etc..) que también deberían tenerse en cuenta.
La estimación será más util cuanto antes se realice; por lo tanto, se intenta que las predicciones se realicen en las etapas tempranas del proyecto, cuando la información sobre el producto es limitada.
Por su propia naturaleza predictiva, es una de las tareas de la gestión de proyectos más propensa a errores. Sin embargo, un error en la estimación puede dar lugar a problemas importantes en el desarrollo, por lo que se han desarrollado diversas técnicas que intentan mejorar la calidad de las predicciones. Las veremos a continuación

COCOMO y COCOMO II

El método COCOMO es un método empírico. Tiene como base el tamaño del proyecto, en líneas de código, y su objetivo es obtener el coste y tiempo de desarrollo de un proyecto. COCOMO diferencia tres tipos de proyecto: orgánico, mediano y complejo, en función de su complejidad. Presenta tres modelos, básico, intermedio y detallado, cada uno de ellos más preciso pero más complejo de calcular.
A partir del tamaño, del tipo del proyecto y de una serie de factores de ajuste como experiencia de los programadores, empleo de herramientas, estabilidad de los requisitos… calcula el coste y el tiempo necesarios para realizar el proyecto.
La debilidad de este modelo es que, al fin y al cabo, las líneas de código las elige alguien al azar en función de la experiencia.
COCOMO II es una mejora de COCOMO, con más factores, pero la misma filosofía.

Puntos función

La división en esta técnica es funcional: se divide el producto en las principales funciones que realiza, se estima la complejidad de cada una de ellas, a partir de ahí se obtiene una medida estandar de la funcionalidad a realizar: los puntos función.
Para obtenerlos se basa en una serie de elementos, que se pueden obtener al principio del proceso de análisis:
  • Entradas externas: Datos que entran en la aplicación y que añaden o cambian información interna
  • Salidas externas: Grupo de datos que salen de la aplicación (como informe por impresora)
  • Grupos de datos internos: como ficheros internos, tablas de bases de datos, ficheros de control…
  • Grupos de datos de interfaz: datos compartidos con otras aplicaciones (ficheros de intercambio, etc…)
  • Consultas externas: Datos resultados de búsquedas, que no cambian la información (consulta de usuario)
Una vez obtenidos esos elementos, se clasifican según su complejidad (alta, media, baja) y se multiplican por un tabla de valores. A partir de ese calculo, se obtendrían los PF sin ajustar.
A partir de ahí, se examinan una serie de atributos de la aplicación a realizar (como relevancia de la velocidad, del diseño…) y se obtiene un factor de ajuste, con el que se calculan los PF ajustados.
Se multiplican los PF ajustados por el esfuerzo de desarrollo de cada PF (bien basándose en histórico o en estándares de la industria) y se calcula el coste total.
Existe un método más avanzado para obtener los puntos función: el método Mark2. Los elementos utilizados para el cálculo difieren, y se tienen en cuenta más factores (como la división de las partes en línea y en lote) aunque la filosofía es la misma.

Staffing Size

Para la POO, una división clara del problema son las clases que implementarán el producto software; al principio del proceso de desarrollo se tienen claras las principales clases, y en base a ellas se realiza la estimación.
Realiza una división de las clases en:
  • Número de clases clave: aparecen al principio del análisis
  • Número de clases secundarias: aparecen a lo largo del proyecto, por lo que no se conoce su número en el momento de la estimación . En función del tipo de interface, se estima una proporción de clases secundarias por cada clase clave (entre 1 y 3)
A partir del número de clases total (clave + secundarias), se obtiene el coste de desarrollo multiplicándolo por el esfuerzo necesario para desarrollar una clase, del que se tiene una orientación estimativa.

Casos de Uso

Esta técnica es válida tanto para programación orientada a objetos como para programación estructurada, siempre que se hayan utilizado casos de uso para definir los requisitos.
Las entradas son:
  • Actores: que se clasifican en simples, medios y complejos, y se le asigna un peso
  • Casos de uso: idéntica clasificación
A partir de ahí, se suman y obtienen los puntos de casos de uso, sobre los que se aplica un ajuste de complejidad técnica (referido al producto) y un ajuste de ambiente (referido al grupo de personas de desarrollo), y se obtienen los puntos de casos de uso ajustados.
Inicialmente, cada punto de caso de uso tenía un valor fijo de coste, aunque posteriormente se ha refinado. El valor que obtenemos es el esfuerzo de desarrollo, y debería ampliarse a las restantes fases utilizando una tabla de porcentaje de esfuerzos.

Planificación organizativa

La planificación organizativa depende de cada proyecto: se deben tener en cuenta las características del mismo, así como las de la organización para la que se va a desarrollar. Aun así, existen una seire de roles participantes comunes a todos los proyectos:
  • Directivo: su misión es proveer los recursos necesarios para la ejecución del proyecto, así como tomar las decisiones relevantes que puedan afectar a la organización.
  • Jefe de proyecto: El jefe de proyecto tiene la responsabilidad de la ejecución del proyecto. Realiza la estimación del esfuerzo, selecciona la estrategia de desarrollo, y gestiona las incidencias que se produzcan en la ejecución del mismo.
  • Usuario: proveerán unos requisitos del sistema adecuados y completos para la implementación del mismo. Validarán además, el ajuste del sistema construido a lo solicitado.
  • Analista/programador: Personas que diseñan y construyen el sistema.
Cada recurso debe estar trazado, esto es: se define a que departamento pertenece, cuales son sus funciones, habilidades, y equipo de trabajo en el que participará para el proyecto.

Planificación temporal

El objetivo de esta fase es obtener la programación detallada de actividades del proyecto, definiendo el momento en el que van a realizarse dichas tareas, y asignándole recursos para su ejecución. Se establecen además unos hitos o puntos de control para realizar el seguimiento de la misma.
Para ello es necesario realizar una división del proyecto en una serie de fases y tareas, definir los recursos necesarios para su realización (utilizando técnicas de estimación) y obtener las dependencias entre las taras.
Las técnicas de planificación más utilizadas son las siguientes:

Diagramas de GANTT

Los diagramas de Gantt son gráficos que permiten representar la ejecución temporal de las tareas. En el eje vertical se representan las tareas (pueden dividirse en subtareas) y en el eje vertical, el tiempo durante el que se realiza la tarea.

Histograma de recursos

El histograma de recursos muestra los recursos que intervienen en cada actividad en un momento dado. Es útil para saber si un recurso está sobreutilizado u ocioso en un momento dado.

PERT

PERT es una técnica que tiene como objetivo establecer las dependencias entre las tareas del proyecto, para saber de qué manera deben encadenarse en la planificación. Representa las actividades del proyecto en un grafo: los nodos son las actividades, y las flechas, las dependencias entre ellas.
A partir de ahí pueden deducirse una serie de medidas para cada tarea, como son:
  • Comienzo más temprano: momento más temprano en el que una actividad puede comenzar (si no se ha retrasado ninguna actividad anterior)
  • Finalización más temprana: es el límite inferior de tiempo en el que una actividad puede finalizar
  • Holgura: tiempo que puede retrasarse una actividad sin retrasar la finalización del proyecto
Lo más importante de PERT es que nos indica el camino crítico del proyecto: esto es, las actividades que no pueden retrasarse bajo ningún concepto, ya que un retraso en ellas repercutiría en la fecha de finalización del proyecto entero.

Seguimiento y cierre del proyecto

Una vez definido el proyecto, detalladas y secuenciadas sus tareas, se debe realizar un seguimiento a lo largo de la ejecución del mismo para corregir las desviaciones sobre el plan, tomando las medidas oportunas.
Los tipos de seguimiento que se realizan son los siguientes:
  • Estático: basado en el esfuerzo dedicado a una tarea
  • Dinámico: basado en el avance de los productos obtenidos
  • Predictivo: anticipa problemas futuros en función de variables actuales del proyecto, como la productividad.
Los tipos de seguimiento no son excluyentes, sino complementarios. En función de la información obtenida, se debe proceder a la replanificación del proyecto y a la toma de las acciones correctoras que se consideren necesarias.
Por último, una vez finalizado el proyecto se debe realizar cierre del mismo. Se liberan los recursos asignados, se guarda la información obtenida en un histórico de proyectos que ayude a la planificación de proyectos futuros, y se realiza un proceso de revisión para identificar las áreas de mejora y actualizar los estándares de la organización para futuros desarrollos.

Conclusiones

En desarrollos importantes, la adecuada definición, gestión y seguimiento del proyecto es un factor crítico de éxito. Tanto es así que las técnicas que miden la madurez de los procesos de desarrollo, como CMMI o ITIL, le dan una importancia especial.
Las metodologías modernas de desarrollo la incluyen sin excepción (Métrica 3, SSADM, RUP…) y consideran que es una actividad de soporte que se lleva a cabo durante todo el ciclo de desarrollo.
Las organizaciones son cada vez más conscientes de ello, y por tanto, es raro encontrar hoy en día departamentos de desarrollo que no hagan uso de estas técnicas. Los alumnos deberán tener por tanto unos conocimientos básicos de las mismas, ya que en su vida laboral van a verse inmersos en proyectos de desarrollo y es conveniente que aprecien la necesidad de los procesos de gestión y conozcan sus técnicas.
Para la gestión de proyectos existen multitud de herramientas: la más conocida, MsProject, es privativa y funciona sólo bajo plataformas windows. Tiene una aplicación servidora, MsProject Central que permite centralizar los datos de todos los proyectos de la organización. También existen herramientas de software libre como OpenProj o GanttProject que funcionan tanto bajo linux como bajo windows, y tienen licencia opensource. Quizá no sean tan potentes como MsProject pero son suficientes para introducir en el aula los conceptos estudiados en este tema.

Implicaciones didácticas

ASI - Administración de Sistemas Informáticos
Curso Módulo
1 Fundamentos de programación
2 Desarrollo de funciones en el sistema informático
2 Implantación de aplicaciones informáticas de gestión
DAI - Desarrollo de Aplicaciones Informáticas
Curso Módulo
1 Análisis y diseño detallado de aplicaciones informáticas de gestión
1 Programación en lenguajes estructurados
2 Desarrollo de aplicaciones en entornos de cuarta generación y con herramientas CASE
2 Diseño y realización de servicios de presentación en entornos gráficos
Antiguo ESI - Explotación de Sistemas Informáticos
Curso Módulo
1 Implantación y mantenimiento de aplicaciones ofimáticas y corporativas
2 Instalación y mantenimiento de servicios de internet
2 Mantenimiento de portales de información

Bibliografía.

  • Temas liberados en el blog de Yabu (http://elblogde.yabu.es) con licencia creative commons attribution, non commertial share-alike.
  • Roger Pressman. Ingeniería del Software. Un enfoque práctico.


Si te ha gustado esta entrada, suscríbete para recibir las próximas entradas por correo electrónico. Por favor, apoya este blog.

2 comentarios:

  1. Durante reuniones, yo uso mi iPad todo el tiempo al trabajo. Se convirtió en una verdadera herramienta imprescindible de trabajo. Para el seguimiento del proyecto sugiero Beesy para importar, hacer anotaciones y compartir mis archivos con la gente. Puedo organizar, compartir y administrar mi lista de tareas pendientes, es muy buena herramienta para profesional: http://es.beesapps.com/beesy-toma-de-notas-ipad/

    Descubrí esta herramienta en Evernote Trunk, así que creo que puede ser interesante.

    Sofya

    ResponderEliminar
  2. somos rafa y esteban, esta pagina es una shit (MIERDA) gracias por el aporte, manga de transvestidos con sindrome de estocolmo ♥♥♥

    ResponderEliminar

Entradas populares