Determinar el costo y tiempo de un proyecto de software es uno de los temas ms importantes en el desarrollo de software. Mi opinin seguramente va a ser polmica, y ac est: es imposible determinar cul ser el costo y el tiempo de un proyecto de desarrollo de software. Ms an, es muy mala idea intentar usar la planificacin como si fuera un contrato con nuestro cliente. Por qu es imposible? (el tringulo de hierro)
El Tringulo de Hierro es una muy buena analoga para explicarlo. Lo que muestra el tringulo es que en los proyectos de software (y, bsicamente, en cualquier proyecto), asumiendo que la calidad queda esttica (los proyectos siempre deberan apuntar a tener la mayor calidad posible), hay otras tres variables en juego: el Tiempo (qu tan rpido queremos entregar la solucin), el Costo (que tan barato queremos que sea el producto) y el Alcance (cuntas caractersticas queremos que tenga la aplicacin). Lo interesante es que estas tres variables dependen entre si, por lo que resulta imposible dar ms prioridad a una sin quitarle a las dems. Lo que hace que sea imposible determinar el costo y el tiempo de un proyecto es que, sin importar cunto anlisis y recoleccin de requerimientos hagamos, es imposible conocer por completo el alcance de las caractersticas de la aplicacin desde el inicio (dije que iba a ser polmico). Y sin estos datos, cmo vamos a calcular los otros dos lados del tringulo? Incluso cuando el costo es fijo, o el tiempo es fijo, es imposible calcular el otro vrtice del tringulo. Para analizar ms, supongamos que estoy equivocado y que realmente podemos determinar el Alcance de la aplicacin desde el inicio. Por lo tanto lo estimamos, y supongo que todos estamos de acuerdo en que la estimacin tan slo expresa una probabilidad; cuando digo "estar terminado en un mes", quiero decir algo como "hay un 80% de probabilidad de que termine en un mes". Cuando encadenamos las probabilidades (la estimacin de cada una de las caractersticas que formaban el Alcance), la probabilidad de acertar cae exponencialmente, lo que significa que incluso aunque conozcamos todas las caractersticas, la probabilidad combinada de acertar en todas las estimaciones es ridculamente baja. La planificacin continua La solucin al problema es cambiar la perspectiva y mirar a la planificacin no como una actividad enorme que se hace al comienzo del proyecto, sino como una actividad continua que se realiza druante toda la vida del proyecto. Mientras ms hayamos desarrollado la aplicacin, ms podremos refinar nuestro plan. Conclusin Existe un crculo vicioso: un proyecto de software no se aprueba hasta que se estime el costo y el tiempo, pero esto no se puede determinar porque recin conoceremos el alcance real de las caractersticas al momento de empezar a desarrollarlas. Igualmente, esto no debe impedirnos de empezar un proyecto y crear una estimacin inicial, y refinarla a medida que desarrollamos el producto. Pero tengan cuidado: crear una planificacin inicial y usarla como un contrato va a afectar seriamente a todas las partes involucradas; es probable que el cliente no pueda hacer cambios durante el desarrollo, y el equipo de desarrollo trabajar bajo presin para cumplir fechas, y al terminar el producto final no ser lo que el cliente esperaba y su calidad ser pobre. Traducido de How to determine the cost and schedule of a software project? The mythical BPUF (Big planning upfront), por Alberto Gutierrez.