Planificación y gestión del proyecto
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.
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
- No puedo estimar con precisión si no sé quién va a trabajar en el proyecto.
- Productividad personal varía por un factor de 10.
- 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
- 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.
- 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)
- 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.
- 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.
- 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.
- 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
- Por el tamaño del proyecto y
- Porque el problema a resolver abarca muchos aspectos distintos en los que se requieren distintos expertos.
- 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
- Tiempo y lugares de encuentro, interacción entre los miembros.
- Reconocimiento público de sus logros.
- Pago acorde a habilidades y experiencia.
- Hacerlos responsables por su trabajo.
- Asignarles tareas demandantes pero no imposibles.
- Proveer programa de capacitación.
Actividades del jefe de proyecto
- 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
Comentarios
Publicar un comentario