Actualmente, el software ha superado al hardware como la clave del éxito de muchos sistemas basados en computadoras. Tanto si se utiliza la computadora para llevar un negocio, controlar un producto o capacitar un sistema, el software es el factor que marca la diferencia. Lo que diferencia a una compañía de su competidora es la suficiencia y la oportunidad de la información dada por el software. La importancia del Software Durante las tres primeras décadas de la informática, el principal desafío era el desarrollo del hardware de las computadoras, de forma que se redujera el costo de procesamiento y almacenamiento de datos. Hoy el problema es diferente, el principal desafío es mejorar la calidad (y reducir el coste) de las soluciones basadas en computadoras - soluciones que se implementan con el software. El software es el mecanismo que nos facilita utilizar y explotar las enormes capacidades de procesamiento y almacenamiento del hardware moderno. EVOLUCION DEL SOFTWARE El contexto en 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 coste más bajo, han dado lugar a sistemas informáticos más sofisticados. Los primeros años (1950 - 1965): El software estaba en su infancia El software era un añadido Existían pocos métodos para la programación No se tenia una planificación para el desarrollo del software Los programadores trataban de hacer las cosas bien El software se diseñaba a medida El software era desarrollado y utilizado por la misma persona u organización (entorno personalizado) El diseño de software era realizado en la mente de alguien y no existía documentación La segunda era (1965 - 1975): Multiprogramación y sistemas multiusuarios introducen nuevos conceptos de interacción hombre-máquina. Sistemas de tiempo real que podían recoger, analizar y transformar datos de múltiples fuentes. Avances en los dispositivos de almacenamiento en línea condujeron a la primera generación de sistemas de gestión de Base de Datos. Software como producto y la llegada de las "casas de software" produciéndose así una amplia distribución en el mercado. El software se desarrollaba para ser comercializado Se empezó a distribuir software para grandes computadoras y minicomputadores El mantenimiento de software comenzó a absorber recursos en una gran medida. Comenzó una crisis del software porque la naturaleza personalizada de los programas hizo imposible su mantenimiento.
Conforme crecía el número de sistemas informáticos,
comenzaron a extenderse las bibliotecas de software de computadora. Las casas desarrollaban proyectos en que se producían programas de decenas de miles de sentencias fuente. Los productos de software comprados en el exterior incorporaban cientos de miles de nuevas sentencias. Una nube negra apareció en el horizonte. Todos estos programas 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 hubiera adquirido. Estas actividades se llamaron colectivamente mantenimiento del software. La tercera era (1975 - 1985): Procesamiento Distribuido. Múltiple computadoras, cada una ejecutando funciones concurrentes y comunicándose con alguna otra. Redes de área local y de área global. Comunicaciones digitales de alto ancho de banda y la creciente demanda de acceso "instantáneo" a los datos. Amplio uso de microprocesadores y computadoras personales (hardware de bajo costo). Incorporación de "inteligencia" (autos, hornos de microondas, robots industriales y equipos de diagnóstico de suero sanguíneo). Impacto en el consumo. Planificación en el proceso del desarrollo de software. La cuarta era (1985 -2000): Tecnología orientada a objetos Los sistemas expertos y la inteligencia artificial se han trasladado del laboratorio a las aplicaciones prácticas. Software para redes neuronales artificiales (simulación de procesamiento de información al estilo de como lo hacen los humanos). Impacto colectivo del software Sistemas operativos sofisticados , en redes globales y locales Aplicaciones de software avanzadas Entorno cliente/cliente servidor Superautopista de información y una conexión del ciberespacio La industria del software es la cuna de la economía Técnicas de cuarta generación para el desarrollo de software Programación de realidad virtual y sistemas multimedia Algoritmos genéticos Adopción de prácticas de Ingeniería del software Software: La descripción de software en un libro de texto podría tomar la forma siguiente: (1) instrucciones que cuando se ejecutan proporcionan la función y el rendimiento deseados, (2) estructuras de datos que permiten a los programas manipular adecuadamente la información, y (3) documentos que describen la operación y el uso de programas. Pero, el software se ha convertido en el elemento clave de la evolución de los sistemas y productos informáticos, y por tal razón no se puede tomar como sólo el conjunto de programas, instrucciones y estructuras de datos. El software se ha convertido en algo fundamental para la sociedad. Es el motor que conduce a la toma de decisiones comerciales. Sirve como la base de investigación científica moderna y de resolución de problemas de ingeniería. Es el factor clave que diferencia los productos y servicios modernos. Está inmerso en sistemas de todo tipo: de transportes, médicos, de telecomunicaciones, militares, procesos industriales, entretenimiento, productos de oficina, etc. El software será el que nos lleve de la mano en los avances en todo desde la educación elemental a la Ingeniería Genética. Características del software Para poder comprender lo que es el software y consecuentemente la ingeniería del software, es importante examinar las características del software que lo diferencian de otras cosas que los hombres pueden construir. El software es un elemento del sistema que es lógico, en lugar de físico. Por tanto, el software tiene unas características considerablemente distintas a las del hardware: El software se desarrolla, no se fabrica en un sentido clásico: se utiliza un modelo de proceso de desarrollo que comprende análisis, diseño, desarrollo, implementación y evaluación para obtener un producto de calidad. El software no se "estropea", pero se deteriora: El software durante su vida sufre cambios por lo que es probable que surjan fallos y defectos que si no se corrigen permiten que el software se vaya deteriorando. La mayoría del software se construye a medida, en vez de ensamblar componentes existentes: a medida que el software evoluciona se crean estándares de diseño. La reusabilidad es una característica importante para un componente de software de alta calidad. Es decir, el componente debe diseñarse e implementarse para que pueda volver a usarse en muchos programas diferentes.