Evolución del Software

Software: Instrucciones que cuando se ejecutan proporcionan la función y el comportamiento deseado. Estructura de datos que facilitan a los programas manipular adecuadamente la información.


El contexto en el que se ha desarrollado el software está fuertemente ligado a las casi cinco décadas de evolución de los sistemas informáticos. Un mejor rendimiento del hardware, una reducción del tamaño y un costo más bajo, han dado lugar a sistemas informáticos más complejos. Como dijimos anteriormente, hemos pasado de los procesadores con válvulas de vacío a los dispositivos microelectrónicos que son capaces de procesar 200 millones de instrucciones por segundo y más


Primera Era (1950 - 1965)

  • Se trabajaba con la idea de "codificar y corregir".
  • No existía un planteamiento previo.
  • No existía documentación de ningún tipo.
  • Desarrollo a base de prueba y error.
Durante los primeros años de desarrollo de las computadoras, el hardware sufrió continuos cambios, mientras que el software se contemplaba simplemente como un agregado. La programación de computadoras era un arte para el que existían pocos métodos sistemáticos y el desarrollo del software se realizaba virtualmente sin ninguna planificación. Durante este período, en la mayoría de los sistemas se utilizaba una orientación por lotes. Sin embargo, la mayor parte del hardware se dedicaba a la ejecución de un único programa que, a su vez, se dedicaba a una aplicación específica. Lo normal era que el hardware fuera de propósito general y, por otra parte, el software se diseñaba a medida para cada aplicación y tenía una distribución relativamente pequeña. La mayoría del software se desarrollaba y era utilizado por la misma persona u organización: la misma persona lo escribía, lo ejecutaba y, si fallaba, lo depuraba; debido a que la movilidad en el trabajo era baja, los ejecutivos estaban seguros de que esa persona estaría allí cuando se encontrara algún error. En este entorno personalizado del software, el diseño era un proceso implícito, realizado en la mente de alguien, y la documentación normalmente no existía.


Segunda Era (1965 - 1972)

  • Se busca simplificar el código
  • Sistemas de Tiempo Real apoyan la toma de decisiones.
  • Aparición del Software como producto.
  • Inicio de la crisis del Software
La multiprogramación y los sistemas multiusuario introdujeron nuevos conceptos de interacción hombre-máquina. Las técnicas interactivas abrieron un nuevo mundo de aplicaciones y nuevos niveles de complejidad del hardware y del software. Los sistemas de tiempo real podían recoger, analizar y transformar datos de múltiples fuentes, controlando así los procesos y produciendo salidas en milisegundos en vez de en minutos, avances en los dispositivos de almacenamiento en línea condujeron a la primera generación de sistemas de gestión de bases de datos. Esta era se caracterizó también por el establecimiento del software como producto y la llegada de las "casas de software", donde el software ya se desarrollaba para tener una amplia distribución en un mercado multidisciplinario: los programas se distribuían para computadoras grandes y para minicomputadoras, a cientos e incluso a miles de usuarios; la industria, el gobierno y la universidad se aprestaban a "desarrollar el mejor paquete de software" y ganar así mucho dinero. Conforme crecía el número de sistemas informáticos, comenzaron a extenderse las bibliotecas de software, las casas desarrollaban proyectos en los que se producían programas de decenas de miles de sentencias fuente y los productos de software comprados al exterior incorporaban cientos de miles de nuevas sentencias. Todos esos programas (todas esas sentencias) tenían que ser corregidos cuando se detectaban fallos, modificados cuando cambiaban los requisitos de los usuarios o adaptados a nuevos dispositivos de hardware que se hubieran adquirido; estas actividades se llamaron colectivamente mantenimiento del software. El esfuerzo gastado en el mantenimiento del software comenzó a absorber recursos en una medida alarmante, aún peor, la naturaleza personalizada de muchos programas los hacía virtualmente imposibles de mantener. Había comenzado una "crisis del software".


Tercer Era (1972 - 1985)

  • Nuevo concepto: Sistemas Distribuidos.
  • Complejidad en los Sistemas de información.
  • Aparecen: Redes de área local y global, y Comunicaciones Digitales.
El procesamiento distribuido (múltiples computadoras, cada una ejecutando funciones concurrentemente y comunicándose con alguna otra) incrementó notablemente la complejidad de los sistemas informáticos. Las redes de área local y de área global, las comunicaciones digitales de gran ancho de banda y la creciente demanda de acceso "instantáneo" a los datos, supusieron una fuerte presión sobre los desarrolladores del software. Se produce la llegada y el amplio uso de los microprocesadores y las computadoras personales. El microprocesador es una parte integral de un amplio espectro de productos "inteligentes" que incluyen automóviles, hornos microondas, robots industriales y equipos de diagnóstico médico. En muchos casos, la tecnología del software es integrada en esos productos por equipos técnicos que conocen el hardware, pero que a menudo no tienen experiencia en desarrollo de software. Las computadoras personales han sido el catalizador del gran crecimiento de muchas compañías de software. Mientras que las compañías de software de la segunda era vendían cientos o miles de copias de sus programas, las compañías de software de la tercera era venden decenas e incluso centenares de miles de copias. El hardware de las computadoras personales se ha convertido rápidamente en un producto estándar, mientras que el software que se suministre con ese hardware, es lo que marca la diferencia. De hecho, mientras que las ventas de computadoras personales se estabilizaron hacia la mitad de los 80, las ventas de productos de software han continuado creciendo. Mucha gente en el campo industrial y muchos particulares han gastado más dinero en software que lo que se gastaron en la computadora sobre la que se ejecuta el software. Los lenguajes de programación era lo último para las computadoras donde son mejores en rendimiento que las de lenguajes de generaciones anteriores. Con la salida de la computadora IBM salen los programas fortran (lenguaje de cálculo numérico) y cobol (lenguaje orientado para negocios) para un mejor funcionamiento de ellas.


Cuarta Era (1985 - actualidad)

  • Impacto colectivo de Software.
  • Aparecen: Redes de Información, Tecnologías Orientadas a Objetos, Sistemas de Expertos, Software de Inteligencia Artificial.
  • La Ingeniería de Software toma un valor más importante.
La cuarta era del software se aleja de las computadoras individuales y de los programas de computadoras, dirigiéndose al impacto colectivo de las computadoras y del software. Potentes máquinas personales controladas por sistemas operativos sofisticados, en redes globales y locales, acompañadas por aplicaciones de software avanzadas se han convertido en la norma. Cambia la arquitectura informática de entornos centralizado de grandes computadores a entornos descentralizados cliente / servidor. De hecho Internet se puede observar como un software al que pueden acceder usuarios individuales. La cuarta era del software está enfocada a las tecnologías orientadas a los objetos y están desplazando rápidamente a enfoques de desarrollo de software más convencionales en muchas áreas de aplicación. Las técnicas de cuarta generación para el desarrollo de software ya están cambiando la forma en que algunos segmentos de la comunidad informática construyen los programas computacionales. Por fin, los sistemas expertos y el software de inteligencia artificial se han trasladado del laboratorio a las aplicaciones prácticas, para un amplio rango de problemas del mundo real. El software de redes neuronales artificiales ha abierto excitantes posibilidades para el reconocimiento de formas y habilidades de procesamiento de información al estilo de como lo hacen los humanos. Pero aún en la cuarta era, continúan intensificándose los problemas asociados con el software: La tecnología del hardware ha dejado desfasada a la capacidad de construir software que pueda explotar el potencial del hardware. La capacidad de construir nuevos programas no puede dar abasto a la demanda de nuevos programas. La capacidad de mantener los programas existentes está amenazada por el mal diseño y el uso de recursos inadecuados. Sin una buena ingeniería de software, es prácticamente imposible lograr un producto con calidad.