Sie sind auf Seite 1von 20

Ingeniera de Software 1

NO SILVER BULLET

De todos los monstruos, quizs uno de los peores sean los hombres-lobo

porque son personas aparentemente normales que, de repente, se transforman en un ser horrible.

Aunque frente a ellos no hay porque perder la esperanza, ya que usando balas de plata (silver bullet) podemos acabar con ellos.

No existen balas de plata: esencias y accidentes de la ingeniera

Los proyectos de software habituales, al menos tal como los ve un administrador no tcnico, tiene algunas de estas caractersticas; generalmente se ve inocente y directo, pero puede transformarse en un monstruo

Entonces se escuchan gritos desesperados pidiendo una bala de plata algo que haga disminuir los costos del software tan rpidamente como bajan los costos del hardware.

ERROR!!!!!!!!!!!
No solo no existe ninguna bala de plata a la vista, sino que la naturaleza del software en s hace improbable que exista ningunaningun invento hara a la productividad, confiabilidad, y simplicidad lo que la electronica, los transistores, y la integracion a gran escala hicieron por el hardware de los computadores.

Primeramente, debemos observar que la anomala no es que el progreso del software es muy lento, sino que el progreso en hardware es muy rapido.

DIFICULTADES

Esencia

Accidentes

Esencia

dificultades inherentes a la naturaleza del software

Accidentes

dificultades que hoy enfrentamos pero que no son inherentes a la produccin de software.

la parte mas difcil de construir software es su especificacin, diseo y prueba de estos constructos conceptuales, no la labor de representarlos y probar la fidelidad de dicha representacin

Complejidad.
Son complejos por naturaleza. El escalamiento de un software no es meramente la repeticion de los mismos elementos en tamaos mas grandes. De la complejidad deriva la dificultad de comunicacion entre los miembros del equipo lo cual lleva a errores en los productos, aumento en los costos, y retrasos en los plazos.

Conformidad
En cualquier caso deber ser el software el que se deba adaptar al entorno y nunca al revs. A veces le toca por haber sido el ltimo en llegar (los procesos existen primero, luego viene su automatizacin). Conformidad tambin porque debe cumplir con ciertas interfaces (de usuario, de otras aplicaciones)

Cambio
El software siempre va a estar sujeto a cambios, mucho ms que los objetos del mundo real. En gran medida por tratarse de piezas intangibles, fciles de destruir y reconstruir nuevamente (al menos ms fcil que probar hacerlo con casas,autos y otros tipos de construcciones). Pero ms an por la presin del usuario, que en cuanto se sienta cmodo con un software que le sea til, no va a demorar mucho en imaginar (y pedir) nuevas formas en que ese software lo pueda ayudar

Invisibilidad
El software es invisible e individualizable en el espacio. Poder representar al software como una abstraccin geomtrica sera fabuloso. Pero en los hechos no es uno sino varios los diagramas que deben ser usados para representar, flujos de control, de datos, secuencias temporales, etc. Estos grafos no son planares ni jerarquicos entre s. El software se intuye pero no se ve.

Los Adelantos Pasados se deben a Dificultades Accidentales

Si examinamos los tres pasos del desarrollo de la tecnologa del software que han sido ms fructferos en el pasado, descubrimos que cada uno de ellos atac una dificultad mayor en la construccin del software, pero que esas dificultades han sido accidentales, y no esenciales. Tambin podemos ver los lmites naturales a la extrapolacin de cada uno de estos avances.

Lenguajes de alto nivel. Estas abstracciones conceptuales (operaciones, tipos de datos, secuencias, comunicaciones) tratan de aproximarse a la forma intelectual en que el usuario resuelve problemas. Con eso esconden la complejidad accidental del programa compilado, consistente en bits, registros, condiciones, bifurcaciones, canales, discos, interrupciones, etc

Tiempo compartido. La posibilidad de compartir el tiempo de ejecucin entre los procesos combate el accidente de los programas batch que se ejecutan en forma lenta y mejora la sensacin de tiempo de respuesta general

Entornos de programacin unificados. entornos de programacin como el de Unix, que con bibliotecas integradas, formatos de archivos unificados, tuberas y filtros combaten el accidente de tener aplicaciones que resuelven en forma individual las problemticas comunes (reinventando superflua y peligrosamente la rueda). Es interesante ver la evolucin que han tenido en estos ltimos aos plataformas como .NET o JEE, ambas fundadas en APIs de bajo nivel que, combinadas, otorgan una potencia sin precedentes. Brooks ya lo haba insinuado antes

Esperanza de Plata
Consideremos ahora los desarrollos tecnicos que mas habitualmente se muestran como potenciales balas de plata. Que problemas enfrentan los problemas esenciales o las restantes dificultades accidentales? Ofrecen avances revolucionarios o incrementales?

Programacin Orientada a Objetos. Si bien manifiesta tener ms esperanzas en este paradigma que en ninguna otra cosa de hoy en da , admite que con la abstraccin y la jerarquizacin slo ataca el accidente de tener enormes expresiones sintcticas. No obstante la complejidad de los diseos no es accidental si no escencial

Sistemas Expertos. estos sistemas basados en un motor de inferencias y una base de reglas y aserciones, para sugerir interfaces, estrategias detesting, bugs tpicos y ayudas de optimizacin. An as, para lograr la base de reglas y aserciones va a hacer falta un experto

Programacin "Automtica". Tcnica de construir generadores de cdigo (el antepasado del concepto de Software Factories).

Programacin Visual. En esta tecnologa principalmente debido al estado del arte de los monitores de aquellos aos.

Verificacin de Programas. Consiste en detectar bugs ya desde la etapa de diseo o incluso antes an, en la cadena hacia la construccin

Entornos y herramientas. Enumerando caractersticas deseables tales como editores inteligentes para lenguajes especficos que permitan reducir errores sintcticos, as como otras caractersticas

Comprar versus construir. Con un ojo binico, se enuncia los ahorros en los costos del proyecto si se adquieren paquetes de software ad hoc en lugar de lidiar con las fases de construccin y mantenimiento en forma casera

Refinamientos en los requerimientos y prototipado rpido. habida cuenta de que el usuario va a sentir mayor seguridad de lo que quiere tener si previamente va probando prototipos en forma iterativa y los va refinando incrementalmente. Diez y quince aos ms tarde respectivamente, procesos de desarrollo como el Proceso Unificado (Unified Process o UP), Extreme Programming (XP)

Conclusin: Existen las Balas de Plata ??????

Das könnte Ihnen auch gefallen