
-
Use Cases
-
Resources
-
Pricing
Desde sus inicios en la década de 1940, escribir software ha evolucionado hasta convertirse en una profesión que se ocupa de cómo crear software y maximizar su calidad. La calidad puede referirse a cuán mantenible es el software, su estabilidad, velocidad, usabilidad, comprobabilidad, legibilidad, tamaño, costo, seguridad y número de fallas o "bugs", así como, entre muchos otros atributos, a cualidades menos medibles como elegancia, concisión y satisfacción del cliente. La mejor manera de crear software de alta calidad es un problema separado y controvertido cubriendo el diseño de software, principios para escribir código, llamados "mejores prácticas", así como cuestiones más amplias de gestión como tamaño óptimo del equipo de trabajo, el proceso, la mejor manera de entregar el software a tiempo y tan rápidamente como sea posible, la "cultura" del lugar de trabajo, prácticas de contratación y así sucesivamente. Todo esto cae bajo la rúbrica general de ingeniería de software.
1945 - 1949
% complete
Al ser un campo nuevo, la idea de gestión por horario era inexistente. Era casi imposible hacer predicciones de la fecha de finalización del proyecto. El hardware del computador era específico para la aplicación. Las tareas científicas y de negocios necesitaban diferentes máquinas. Debido a la necesidad de traducir frecuentemente el software viejo para atender las necesidades de nuevas máquinas, se desarrollaron lenguajes de orden superior como FORTRAN, COBOL y ALGOL. Vendedores de hardware regalaban sistemas de software gratis puesto que no se podía vender hardware sin software. Algunas compañías vendían el servicio de construcción de software personalizado, pero no había empresas de software vendiendo paquetes de software.
La noción de reutilización floreció. A medida que el software fue libre, las organizaciones de usuarios comúnmente lo liberaban. Grupos como SHARE, el grupo de usuario científico de IBM, ofrecían catálogos de componentes reutilizables. La academia todavía no ensañaba los principios de las ciencias de la computación. La programación modular y la abstracción de datos ya se utilizaban en programación.
1950 - 1960
% complete
El término ingeniería del software apareció por primera vez en la década de 1950 y principios de los años 1960. Los programadores siempre habían sabido sobre ingenieros civiles, eléctricos y de computadores y debatían qué podría significar la ingeniería para el software.
El Comité de ciencia de la OTAN patrocinó dos conferencias sobre ingeniería del software en 1968 (Garmisch, Alemania) y en 1969, que dio al campo su impulso inicial. Muchos creen que estas conferencias marcaron el inicio oficial de la profesión de la ingeniería de software.
El software como se ha visto, no surge con los equipos electrónicos (aunque es con ellos que adopta el nombre), ya está presente desde el empleo de ábacos o sumadoras mecánicas.Sin embargo, en estos casos, el (software) no se encuentra incorporado en el equipo.
1960 - 1980
% complete
La llamada Crisis del Software, fue la época que impulso el desarrollo y crecimiento de la ingeniería del software, la cual duró alrededor de 20 años, identificó muchos de los problemas de desarrollo de software:
Costo y desbordamiento de presupuesto: el sistema operativo OS/360 fue un ejemplo clásico. Este proyecto que duró una década, desde los años 1960 finalmente produjo uno de los más complejos sistemas de software de ese tiempo. El OS/360 fue uno de los primeros de grandes proyectos de software (1000 programadores). En el libro The Mythical Man-Month, Fred Brooks afirma que cometió un error multimillonario por no desarrollar una coherente arquitectura de software antes de iniciar el desarrollo.
Daños a la propiedad: Defectos de software pueden causar daños a la propiedad. Escasa seguridad de software permite a hackers robar identidades, costando tiempo, dinero y reputaciones.
Vida y muerte: Defectos de software pueden matar. Algunos sistemas embebidos en máquinas de radioterapia fallaron de una manera tan catastrófica que administraron dosis letales de radiación a pacientes. La más famosa de estas fallas es el incidente de Therac 25.
1970 - 1990
% complete
Aparentemente, cada nueva tecnología y práctica de la década de 1970 a la de 1990 fue pregonada como una bala de plata para resolver la crisis del software. Herramientas, disciplina, métodos formales, proceso, y profesionalismo fueron promocionados como balas de plata:
Herramientas: Especialmente enfatizaba que las herramientas: programación estructurada, programación orientada a objetos, herramientas CASE, el lenguaje de programación Ada, documentación y estándares eran promocionados como balas de plata.
Disciplina: Algunos expertos argumentaron que la crisis del software era debido a la falta de disciplina de los programadores.
Métodos formales: Algunos creían que si las metodologías de ingeniería formal fueran aplicadas al desarrollo de software, entonces la producción de software sería una industria tan predecible como otras ramas de la ingeniería. Abogaron que había que demostrar que todos los programas eran correctos.
Proceso: Muchos abogaron el uso de procesos definidos y metodologías como el Modelo de Capacidad y Madurez.
Profesionalismo: Esto llevó a trabajar en un código de ética, licencias y profesionalismo.
1985 - 1990
% complete
Durante décadas, solucionar la crisis del software fue de suprema importancia para investigadores y empresas productoras de herramientas de software. El costo de propiedad y mantenimiento del software en la década de 1980 fue dos veces más caro que el propio desarrollo del software. Durante la década de 1990, el costo de propiedad y mantenimiento aumentó en un 30% con respecto a la década anterior. En 1995, las estadísticas mostraron que la mitad de los proyectos de desarrollo encuestados estaban operacionales, pero no eran considerado exitoso. El proyecto de software medio sobrepasa su estimación en tiempo en el 50%. Las tres cuartas partes de todos los grandes productos de software son entregados al cliente con tales fallas que no son usados en absoluto, o no cumplen con los requerimientos del cliente.
1990 - 1999
% complete
El auge de la Internet condujo a un rápido crecimiento en la demanda de sistemas internacionales de despliegue de información y correo electrónico en la World Wide Web. Los programadores debían manejar ilustraciones, mapas, fotografías y otras imágenes, más animación sencilla, a un ritmo nunca antes visto, con pocos métodos conocidos para optimizar la visualización/almacenamiento de imágenes (como el uso de imágenes en miniatura).
El crecimiento del uso del navegador, corriendo en el lenguaje HTML, cambió la manera en que estaba organizada la visualización y la recuperación de la información. Las amplias conexiones de red condujeron al crecimiento y la prevención de virus informáticos internacionales en computadores con MS Windows, y la gran proliferación de correo basura se convirtió en una cuestión de diseño importante en sistemas de correo electrónico, inundando canales de comunicación y requiriendo de precalificación semiautomatizada.
-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 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
2000 - 2021
% complete
Con la creciente demanda de software en muchas organizaciones pequeñas, la necesidad de soluciones de software de bajo costo llevó al crecimiento de metodologías más simples y rápidas que desarrollaran software funcional, de los requisitos de implementación, más rápidos y más fáciles. El uso de prototipos rápidos evolucionó a metodologías ligeras completas como la programación extrema (XP), que intentó simplificar muchas de las áreas de la ingeniería de software, incluyendo la recopilación de requerimientos y las pruebas de confiabilidad para el creciente y gran número de pequeños sistemas de software. Sistemas de software muy grandes todavía utilizan metodologías muy documentadas, con muchos volúmenes en el conjunto de documentación; sin embargo, sistemas más pequeños tenían un enfoque alternativo más simple y rápido para administrar el desarrollo y mantenimiento de cálculos y algoritmos de software, almacenamiento y recuperación de información y visualización.