En los últimos 15 años, han habido grandes avances en proyectos de ingeniería de software. Aún así, es muy difícil medir los costos y tiempos de un Proyecto de Software. La Agilidad ha logrado aumentar la rapidez de las entregas de software, acortando el ciclo de feedback. La Educción de Requisitos sigue siendo un desafío.
Proyectamos para que los Costos de un Proyecto no excedan el presupuesto, y conviene ser pesimista. Aún así, para contratar a una empresa desarrolladora de software, es importante analizar:
- La buena fe de la empresa.
- El historial de desarrollos de la empresa.
- La importancia del proyecto para la empresa.
Algunos factores críticos para el éxito son:
- Alta gerencia involucrada.
- Requerimientos claros y documentados.
- Objetivos claros.
- Director de proyecto efectivo.
- Equipo de trabajo comprometido y motivado.
En ingeniería de software no existen las balas de plata. Medir el progreso de un proyecto en función del tiempo que lleva desarrollándose es un error. Pequeñas demoras incrementales se van acumulando para producir un enorme retraso.
Cada gerente de proyecto debe crear un conjunto de documentos que definan objetivos, alcance, recursos, y tecnologías del proyecto.
Todos los proyectos de ingeniería pueden demorarse y encarecerse, el problema es que en Ingeniería de Software casi siempre se presentan estas condiciones. A veces se cuentan con todos los recursos necesarios para el proyecto, pero falla la comunicación u organización.
Ley de Brooks: añadir trabajadores a un proyecto de software retrasado hará que se retrase aún más.
Si nos demoramos en un proyecto, hay que replanificar lo antes posible. Alternativas:
- Prolongar el cronograma.
- Reducir las tareas.
- Añadir personas (suele ser muy mala idea).
Capas de la ingeniería de software:
- Herramientas.
- Método.
- Proceso.
- Gerenciamiento.
Hay estándares de gestión tradicional que nos ofrecen pautas a seguir:
- PMBOK (americano, enfoque teórico).
- PRINCE2 (europeo, enfoque práctico).
Otros estándares de gestión específicos pueden ser Waterfall, Proceso Unificado de Desarrollo de Software, Scrum, XP, etc.