La Crisis del Software
El término “Crisis del Software” fue acuñado a principios de los años 70, cuando la ingeniería de software era prácticamente inexistente. El término expresaba las dificultades del desarrollo de software frente al rápido crecimiento de la demanda por software, de la complexidad de los problemas a ser resueltos y de la inexistencia de técnicas establecidas para el desarrollo de sistemas que funcionaran adecuadamente o pudieran ser validados.
La percepción de que esta crisis existía empezó a mediados de los años 60. Una de las primeras referencias al término, y de las más notables, fue hecha por E.W.Dijkstra, en el discurso que pronuncio durante la entrega del premio Turing en 1972.
En este trabajo abordaremos por que se produjo esta crisis, y cuál fue el camino adoptado para resolverla, o minimizar sus efectos de algún modo.
CAUSAS DE LA CRISIS DEL SOFTWARE
Durante finales de los años 50 i principios de los 60, la potencia computacional de las maquinas era bastante limitada. Es por esto que los programas que se desarrollaban eran “simples” desde nuestro punto de vista actual. Seguían un proceso de desarrollo bastante artesanal, sin una metodología o un camino a seguir para su desarrollo. En esta época se solían usar los lenguajes de bajo nivel para el desarrollo de Software.
Pero a finales de los 60, la potencia de las maquinas empezó a aumentar de forma considerable. Empezaron a aparecer los lenguajes de programación de alto nivel, y las maquinas necesitaban programas mucho más complejos de los desarrollados hasta la época. En definitiva, fue un salto tremendo en cuanto a potencial de hardware, que no fue acompañado por un salto en el desarrollo de software.
En esta época, se empezó a concebir el Software como producto, y se empezaron a desarrollar algunos proyectos para que funcionaran en las máquinas de la época. Pero aparecieron importantes problemas: los productos excedían la estimación de costes, había retrasos en las entregas, las prestaciones no eran las solicitadas, el mantenimiento se hacía extremadamente complicado y a veces imposible, las modificaciones tenían un coste prohibitivo…en resumen, se desarrollaba software de mala calidad, ya que la técnica utilizada para desarrollar pequeños programas para maquinas con mucho menos potencial se quedaba desfasada, y muchas veces este software acababa en el olvido. Como ejemplo, podemos ver este gráfico del año 1979, en el que se recoge la inversión en desarrollo de sistemas software en ese año ($6.8 Millones),y como acabó ese software
Fuente: Apuntes Ingeniería del Software de Gestión. “Tema 1: Software e Ingeniería del Software”
Una de las principales causas de todo esto, si no la principal, era el enfoque dado al proceso de desarrollo de software, el cual era malo e incluso a veces era inexistente. En este proceso, solo ¼ del tiempo de desarrollo se dedicaba a las fases de análisis, diseño, codificación y pruebas, y más de ¾ del tiempo se dedicaba a correcciones y mantenimiento. Es evidente que dedicándole sol ¼ del tiempo a las primeras fases, se arrastran errores graves, sobre todo procedentes de las fases de análisis y diseño, lo que dificultaba muchísimo la implementación, produciendo constantes paradas y retrocesos para revisar este análisis/diseño.
Para que nos hagamos una idea, el conjunto de las fases de análisis y diseño abarcaban el 8% del tiempo total de desarrollo de software. Además casi el 80% de los errores se producían en estas dos fases, con lo que se incrementaba el coste de corrección de errores conforme evolucionaban las fases de manera bestial. Con estos indicadores estaba claro que algo estaba fallando y que el proceso de desarrollo de software necesitaba un cambio radical.
INGENIERÍA DEL SOFTWARE, LA SOLUCIÓN.
Viendo el camino directo al precipicio que estaba llevando el desarrollo de software, había que tomar medidas para solucionarlo. Y esas medidas se llamaron “Ingeniería del Software”.
La Ingeniería del Software, según R.Pressman, es “Una disciplina que integra métodos, herramientas y procedimientos para el desarrollo de SW de computador”. Es decir, es una disciplina que intenta racionalizar el proceso de desarrollo de software y establecer unas pautas a seguir para el desarrollo que minimicen tiempo, esfuerzo, y coste de desarrollo y maximicen la calidad del software.
Después de esta crisis, se intentaron establecer estas pautas, aplicándolos a algunos proyectos y aumentando la inversión. En 1991 se hizo un estudio para comprobar los resultados de la aplicación de estos métodos, y los resultados fueron bastante buenos. El 52% de los proyectos se terminaron con éxito, frente al 2% del año 1979 y el 31,1% se terminó con algunas modificaciones respecto a lo acordado inicialmente, frente al 3% del año 1979. Pero el resultado más espectacular se obtuvo en los proyectos abandonados. En 1991 sólo se abandonaron el 16,2% de proyectos, frente al casi 76% del año 1979. Una reducción increíble de casi el 60% que no hacía mas que confirmar la bondad de estos métodos aplicados al proceso de desarrollo de software. Había nacido una nueva disciplina, la Ingeniería del Software,
Para hacernos una idea mas concreta de lo que abarca la Ingeniería del Software (cosa que nos ayudará a entender porque fue la solución a esta Crisis del Software), debemos de centrar nuestra explicación en que la I.S busca principalmente software de calidad, que es aquel software que cumple los requisitos funcionales y de rendimiento establecidos previamente y consta de unos estándares de desarrollo bien documentados. Además todos sus factores de calidad deben cumplirse y tener un buen seguimiento durante todo el proceso de desarrollo (características operativas, capacidad de soportar cambios y adaptabilidad a nuevos entornos). Y por último, se incorporan al proceso nuevos modelos de desarrollo y modificación del ciclo de vida, nuevos paradigmas de programación, etc.…que hacen que el desarrollo de software sea mucho mas metodológico y estructurado, disminuyendo así notablemente fallos y correcciones costosas.
Como ejemplo de que la ingeniería del software es en la actualidad imprescindible, la revista inglesa “Private Eye” dio detalles sobre importantes proyectos de software que han dado malos resultados. Entre ellos destacan los del servicio de ambulancias Asinfor de Londres, el servicio de sanidad regional de Wessex, la Sociedad para los derechos de autor y el sistema de manejo de equipajes del aeropuerto de Denver.
Por último, os dejo unas viñetas, muy vistas pero no por ello menos buenas, que resumen en unas pocas imágenes la gran problemática del desarrollo del software.
Descarga el documento en PDF aquí.
BIBLIOGRAFÍA
http://es.wikipedia.org/wiki/Crisis_del_software
http://www.unt.edu/benchmarks/archives/1999/july99/crisis.htm
http://jummp.wordpress.com/2009/05/22/la-crisis-del-software/
http://www.angelfire.com/space/equipo_5/diana/crissoft.htm
Apuntes de Ingeniería del Software de Gestión, Tema 1. DSIC. UPV.