May 8th, 2005
Desarrollo de software: 30 años sin cambios
Hace algunos días, y en mi blog-tour habitual (léase recorrida de blogs que leo con frecuencia), me encuentro con un artículo interesante publicado en alzado.org relacionado con los 30 años de la publicación del libro “The Mythical Man-Month”.
Se trata de un libro publicado en el año 1975, escrito por Frederick Brooks, considerado una referencia a nivel de ingeniería de software y gestión de proyectos. No he podido aún leerlo todo pero en base al articulo mencionado es interesante ver como a pesar de ser un libro que tiene 3 decadas, y publicado en un contexto aparentemente muy diferente al de hoy en día, sigue teniendo absoluta vigencia.
Este libro plantea 3 puntos importantes relacionados con el desarrollo de software
- El desarrollo de software es como un pozo de alquitrán
- La idea del mes de trabajo es un mito
- La integridad conceptual es el aspecto fundamental de todo software
Trataré de dar una explicación rápida de estos puntos, pueden leer el artículo original donde se analizan más profundamente estos asuntos
El pozo de alquitrán
Con esto el autor se refiere a los pozos de alquitran que es habitual ver en las representaciones de la prehistoria los que parecían angullir a los animales que caían en ellos, y que cuanto más luchaban por salir más los arrastraban hacia el fondo. En un proyecto de desarrollo de software se puede observar un proceso análogo, es posible desarrollar componentes individuales con relativa facilidad pero hacer converger esos procesos parciales de desarrollo hacia una sistema única, donde los componentes interactúen entre sí, es bastante más complejo.
Uno de los principales problemas que se dan en el desarrollo de software es la incorrecta estimación de recursos, tanto humanos como de tiempo, necesarios para concretarlo. Otro error frecuente es equiparar el tiempo invertido con el progreso logrado.
Un punto muy interesante que el autor señala, y que va contra la idea habitual pero que es perfetamente cierto, es que a medida que nos acercamos al final del proyecto la convergencia se hace más lenta, precisamente porque es en esta fase donde se debe verificar la unicidad de todo el sistema.
De acuerdo al autor, la única salida de este pozo de alquitrán es aplicar un proceso de ingeniería consciente y métodos probados de gestión de proyecto.
El mito del mes de trabajo
El segundo punto destacado por Brooks es la idea erronea de que horas y recursos humanos son intercambiables. De acuerdo a esta idea se piensa habitualmente que un proyecto atrasado se puede solucionar, dado que no es posible agregar tiempo, agregando recursos humanos, o sea programadores.
Una idea al parecer muy simple y correcta, pero que al minuto de plantearla nos damos cuenta de que no lo es tanto. Agregar programadores a un proyecto no hace que se cumplan metas en menos tiempo. Por el contrario un aumento del personal asignado a un proyecto conlleva, generalmente, una aumento de la necesidad de comunicación, distribución y organización del desarrollo, para lo cual es necesario un consumo de recursos que habitualmente se hace mayor que los propiso recursos asignados con lo que el incremento del equipo de trabajo tiene un efecto contrario al esperado.
Integridad conceptual
Es el tercero de los puntos considerados clave por Brooks. La idea fundamental es que cada proyecto de desarrollo debe tener un único modelo mental pero considerando las diferentes necesidades de los usuarios.
Debido a que la aplicación es producida por diferentes personas debe de haber una persona encargada de asegurar la integridad de la misma. Esto se logra a través un arquitecto de sistema, quien diseña la cara pública del sistema y es responsable del desarrollo de la misma.
Se trata sin dudas de una obra de absoluta vigencia que debería ser de lectura obligatoria para los responsables de desarrollar proyectos de software.
Tags: desarrollo


No Comments Add your own
Leave a Reply
XHTML: You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>