domingo, 19 de abril de 2009

Cómo el software evitó la guerra de las galaxias

Existe cierta conciencia sobre el impacto que industria e ingeniería del software tienen en la sociedad, aunque a la vista de cómo “socialmente” se la trata puede que no la suficiente. Esto, y que dentro del sector a veces nos falta “memoria histórica”, que nos recuerde que muchas de las “últimas” tecnologías son evolución de otra anterior, puede hacer interesante recordar, de vez en cuando, ciertos hitos históricos relacionados con el software.

Durante la guerra fría, en 1983, el presidente estadounidense Ronald Reagan propuso la creación de la Iniciativa de Defensa Estratégica (o SDI, de Strategic Defense Initiative), más conocida como “Guerra de las Galaxias”, cuyo objetivo era crear un escudo antimisiles que defendiese a EE.UU. frente a un ataque nuclear por parte de la URSS. Iniciativa que nunca se llevo a cabo, principalmente por el coste… y por el software.

Durante los estudios de viabilidad del proyecto se crearon varias comisiones, una de ellas la de asesoría en computación; donde uno de los nueve miembros de la misma, David Parnas (conocido por interesantes reflexiones, destacando el desarrollo del concepto “ocultación de la información”), tras estudiar el proyecto dimitió del mismo, por las pocas garantías de un proceso de pruebas sobre un software de tales requerimientos… "Because of the extreme demands on the system and our inability to test it, we will never be able to believe, with any confidence, that we have succeeded" (la cita se puede encontrar en el Time, del 22 julio de 1985, resumido aquí).

Tras su dimisión, Parnas escribió ocho ensayos (que Communications de ACM reprodujo en 1985, también libre aquí, y que originalmente se publicaron en American Scientist, vol 73, nº 5), en los que argumentaba que el software no sería fiable (se estimó un tamaño de entre 19 y 35 millones de líneas de código y unos 100.000 años hombre de programación) y que sería una amenaza para la humanidad. Los ocho ensayos se centraban en:
  1. Las diferencias entre la ingeniería del software y otras ingenierías [una de las bases del paradigma ágil], y por qué el software no sería fiable.
  2. Propiedades del software requerido que lo hacen irrealizable.
  3. Porque las técnicas de uso para desarrollar software no son adecuadas para este proyecto.
  4. La naturaleza de la investigación en ingeniería del software, y porque las mejoras que esta pueda aportar no serán suficientes para permitir la construcción del software.
  5. Porque investigar en inteligencia artificial no ayudará para desarrollar un software fiable.
  6. Porque la investigación en programación automática no posibilitará las mejoras necesarias.
  7. Porque las técnicas de verificación no pueden hacer suficientemente fiable al software.
  8. Porque fondos de investigación en software y otros no serían la solución.
No sólo Parnas criticó la capacidad para desarrollar el software del proyecto “star wars”, otros como Herbert Lin del MIT, basaron sus críticas en que "Ningún programa funciona correctamente la primera vez" o como comentó Thomas Probert, Director de Computación e Ingeniería del Software del Instituto de Análisis de Defensa: "El hardware estará allí pero el verdadero problema es el software”.

2 comentarios:

David Lopez dijo...

Una vez más, otro ineresante artículo. Además reune dos de mis aficiones: el software y la historia alrededor de la guerra fría.

Leyendo tu post me han entrado ganas de leer los artículos de Parnas. Me los anoto para cuando tenga un hueco.

Una crítica constructiva: modifica el título y añade "de las" entre Guerra y Galaxias.

Javier Garzás dijo...

Gracias, queda modificado.