lunes, 3 de septiembre de 2012

No Silver Bullet("No hay balas de plata"):



"No hay balas de plata — Esencia y Accidentes de la Ingeniería del Software" ("No Silver Bullet — Essence and Accidents of Software Engineering") es un documento ampliamente discutido sobre ingeniería del software escrito por Fred Brooks en 1986. Brooks argumenta que "no hay un simple desarrollo en tecnología o técnica de gestión, que por sí solo prometa incluso una mejora en la productividad, fiabilidad, simplicidad, en un orden de magnitud [por diez] dentro de una década". También afirma que, en el desarrollo de software, "no podemos esperar siquiera ver una ganancia del doble cada dos años", como la que hay en el desarrollo del hardware.
Brooks hace una distinción entre la complejidad accidental y la complejidad esencial y afirma que la mayoría de lo que ahora hacen los ingenieros de software está dedicado a lo esencial, así que reducir todas las actividades accidentales a cero no dará una mejora de un orden de magnitud. Brooks aboga por abordar las partes esenciales del proceso de software. Mientras que Brooks insiste que no hay ninguna bala de plata, él cree una serie de innovaciones atacacando la complejidad esencial podría conducir a importantes mejoras (tal vez mayor que diez veces en un período de diez años).
El artículo y las propias reflexiones de Brooks sobre esto, "'No Silver Bullet' Refired," ("'No hay bala de plata' Redisparado", pueden encontrarse en la edición de aniversario de The Mythical Man-Month.
En el corazón del argumento es la distinción entre la complejidad accidental y la complejidad esencial. La complejidad accidental se refiere a los problemas que creamos nosotros mismos y que pueden coregirse; por ejemplo, los detalles de escribir y optimizar de código en lenguaje ensamblador o los retrasos causados por el procesamiento por lotes. La complejidad esencial es causada por el problema a resolver, y nada puede removerla; Si el usuario desea un programa para hacer 30 cosas diferentes, entonces esas 30 cosas son esenciales y el programa debe hacer esas 30 cosas diferentes.
Brooks afirma que hemos limpiado gran parte de la complejidad accidental, y los programadores de hoy pasan la mayor parte de su tiempo a abordar la complejidad esencial. Una tecnología, que había hecho una mejora significativa en el área de complejidad accidental fue la invención de lenguajes de programación de alto nivel, como Fortran en ese tiempo. Lenguajes de hoy, como C,C++, C# y Java, son considerados como mejoras, pero no del mismo orden de magnitud.
Brooks aboga por el "crecimiento" orgánico del software a través del desarrollo incremental. Sugiere la elaboración y la implementación del programa principal y los subprogramas justo al principio, llenando las subsecciones de trabajo más tarde. Brooks cree que esta forma de programación apasiona a los ingenieros y proporciona un sistema de trabajo en cada etapa de desarrollo.
Brooks prosigue en argumentar que hay una diferencia entre diseñadores "buenos" y "magníficos". Postula que, como la programación es un proceso creativo, algunos diseñadores son intrínsecamente mejores que otros. Sugiere que hay tanto como una diferencia de diez veces entre un diseñador común y un magnífico. Entonces Brooks aboga tratar a los diseñadores estrellas igual de bien como a los gerentes estrellas, proporcionándoles no sólo igualdad de remuneración, sino también todos los privilegios del estatus mayor: Oficina grande, personal, fondos para viajes, etc.
Sacado de:

No hay comentarios:

Publicar un comentario