Planificación y gestión del proyecto

 


Autor: Jose Alfredo Castillo - Estudiante de la UFG

La planificación y la gestión de un proyecto son los aspectos probablemente mas importantes y que a veces son los mas descuidados, lo que conlleva a retrasos en las entregas, perdidas de proyectos, fallas en la ejecución y otros muchos problemas.

La administración efectiva de un proyecto de software depende de planear completamente el progreso del proyecto. El administrador del proyecto debe anticiparse a los problemas que puedan surgir, así como preparar soluciones tentativas a esos problemas.

Ademas, se debe considerar los siguiente aspectos:

Estimación

Para poder planificar se debe estimar:

  • Esfuerzo.
  • Costo.
  • Duración.
Para proyectos pequeños, lo mejor es estimar esfuerzo, dividir entre la productividad y obtener el tamaño.

Costo vs Precio

La relación entre el costo real de desarrollo y el precio cobrado al cliente se ve influenciada por múltiples factores:

  • Económicos.
  • Políticos.
  • Del negocio.
  • De la propia organización.
  • Del proyecto específico a desarrollar.
  • Oportunidad de mercado.
  • Incertidumbre en las estimaciones.
  • Condiciones contractuales.
  • Volatilidad de los requisitos del sistema.
  • Dificultades financieras.

Estimar vs planificar

En la estimación se tiene el "proceso analítico imparcial" y "objetivo exactitud". En cambio; con la planificación, se tiene "proceso parcial que procura una meta" y "Objetivo un resultado particular".

Ahora bien, para la planificación y gestión de proyectos, se tiene una ¿buena predicción?

Proyectos afectados por

  • Eventos externos imprevistos.
  • Cambio de asunciones: El proyecto entregado no es el mismo que fue estimado
  • Control: Principio de Incertidumbre de Heisenberg: el observar algo lo cambia.

Incertidumbre de la Estimación – Nube de Incertidumbre

Si el proyecto no converge:

  • Proceso caótico.
  • Requisitos inestables.
  • Tecnología desconocida.
  • Negocio desconocido

Errores en la práctica de estimación:

  • No incluir alcance del proyecto

Factores del Personal

  1. No puedo estimar con precisión si no sé quién va a trabajar en el proyecto.
  2. Productividad personal varía por un factor de 10.
  3. En una misma organización, productividad similar.


Ademas, tiene que ver mucho el lenguaje de programación:

  • La experiencia del equipo en el lenguaje y herramientas - 40% de impacto en productividad general.
  • Herramientas de soporte y ambiente de programación – hasta 50% de impacto.
  • Algunos lenguajes generan más funcionalidad por LOC (Líneas de Código).
  • Trabajar en lenguajes interpretados tiende a ser (hasta 2 veces) más productivo que en lenguajes compilados.

Líneas de Código

Necesidad de definir criterios de medición:
  • Lenguaje.
  • Criterios para contar líneas en ese lenguaje (físicas o lógicas).
  • Con/Sin comentarios.
  • Construidas o libradas al uso.
  • Discriminación de líneas reusadas.
Permite evaluar productividad en programación:
  • Si la potencia del lenguaje aumenta, aumenta la productividad = producto / unidad de tiempo.
  • Productividad estable en LOC, independiente del lenguaje. (depende más del
  • tamaño del proyecto y del tipo de software).
  • ¡OJO con medir productividad individual!: Distintos estilos (sintético o explayado) 
Productividad en proyectos iguales, en lenguajes distintos

Proyecto A: 80.000 LOC C:
  • Análisis Reqs/.Dis. Sist: 2 meses-persona.
  • Cod./PU/P.Int.: 4 meses-persona.
  • Prueba Sistema: 2 meses-persona.
  • Esfuerzo: 8 meses-pers. Productividad: 80.000/8= 10.000.
Proyecto A: 42.000 LOC C++:
  • Análisis Reqs/.Dis. Sist.: 2 meses-persona.
  • DCod./PU/P.Int.: 2 meses-persona.
  • Prueba Sistema: 2 meses-persona.
  • Esfuerzo: 6 meses-pers. Productividad: 42.000/6= 7.000.
 Ventajas:
  • Fácil de medir automáticamente a partir del código.
  • Permite comparar proyectos y estimar proyectos futuros basándose en datos de proyectos pasados.
  • La mayoría de las herramientas de estimación basan sus estimaciones de esfuerzo y duración en LOCs.
Desventajas:
  • Para medir se precisa que el código esté construido.
  • Sujeto a variaciones personales/grupales y estilos de programación.
  • Deseconomía de escala.
  • Productividad varía según tipo de software.
  • No pueden usarse para estimar asignaciones de tareas, porque productividad varía entre programadores.
  • Requisitos, diseño y testing no producen LOCs.
  • Depende del lenguaje: Dificultad para medir productos implementados en más de un lenguaje; tambien, difícil comparar proyectos en distintos lenguajes.

Conformación del Equipo de Desarrollo


El trabajo en grupo se impone en el desarrollo de software:
  • Por el tamaño del proyecto y 
  • Porque el problema a resolver abarca muchos aspectos distintos en los que se requieren distintos expertos. 
¿Cómo seleccionar el personal del equipo de desarrollo?

Se pueden utilizar las siguiente fuentes: Hojas de vida (CV), entrevistas y referencias.

Ademas, las características del personal son las siguiente:
  • Capacidad para desempeñar una tarea.
  • Interés en el trabajo.
  • Experiencia con aplicaciones similares, herramientas, lenguajes, técnicas y ambiente de desarrollo.
  • Capacitación - estudios.
  • Capacidad para comunicarse con otros y compartir la responsabilidad.
  • Capacidad de supervisión.
  • Capacidad para resolver problemas.
  • Adaptabilidad – Capacidad de aprender, aceptar y asimilar cambios.
  • Capacidad para resistir cierta cantidad de tensión.
  • Personalidad

Motivación

En organizaciones de desarrollo de SW, satisfacer: 

Necesidades afiliación:
  • Tiempo y lugares de encuentro, interacción entre los miembros.
Necesidades de reconocimiento:
  • Reconocimiento público de sus logros.
  • Pago acorde a habilidades y experiencia.
Necesidades de realización:
  • Hacerlos responsables por su trabajo.
  • Asignarles tareas demandantes pero no imposibles.
  • Proveer programa de capacitación.
Ser miembro de un grupo cohesivo es altamente motivador - Motivar al grupo como tal.

Actividades del jefe de proyecto

El jefe de proyecto debe hacer las siguiente actividades:
  • Organización del modo de trabajo.
  • Asignar el personal.
  • Asignar/ajustar los roles y responsabilidades.
  • Definir/comunicar los objetivos.
  • Estimación del trabajo que puede realizar el personal.
  • Planificación de las tareas a realizar por cada miembro del equipo.
  • Control de las actividades del personal.
  • Motivar.
  • Facilitar la comunicación entre los integrantes.
  • Resolución de problemas haciendo uso del personal disponible.
  • Brindar retroalimentación respecto a los logros

Trabajo en grupo Distribución del tiempo


Este tema es muy amplio, pero he tratado de explicarles los aspectos más relevantes de esta temática.
Por el momento esto seria todo; sin embargo, esperen más aportes sobre la planificación y gestión del proyecto, seguiré publicando más foro.

Saludos.



Comentarios