Historia de la ingeniería del software para niños
Desde la década de 1940, el desarrollo de programas de computadora ha crecido mucho. Hoy es una disciplina que se encarga de crear y mantener programas. También se ocupa de diseñar cómo funcionan y de mejorar su rendimiento y calidad. La "calidad" de un programa significa que es fácil de mantener, estable, rápido y seguro. También incluye que sea fácil de usar y que cumpla con lo que el usuario necesita.
Crear programas de alta calidad implica varias etapas. Estas incluyen la planificación, la escritura del código y la evaluación de las soluciones. También abarca la gestión del ciclo de vida del programa, la organización del equipo y el cumplimiento de los plazos. Todos estos aspectos son clave en la ingeniería de software.
Contenido
- ¿Qué es la ingeniería de software?
- Los primeros años del software
- De 1950 a 1960: Los inicios de la ingeniería de software
- De 1960 a 1980: El desafío del software
- De 1985 a 1989: La búsqueda de soluciones en el software
- Proyectos de software y la "bala de plata"
- De 1990 a 1999: El auge de Internet
- De 2000 al presente: Métodos más ágiles
- Tendencias actuales en la ingeniería de software
- La ingeniería de software hoy
- Personas importantes en la historia de la ingeniería de software
- Véase también
- Galería de imágenes
¿Qué es la ingeniería de software?
La ingeniería de software es una rama de la ingeniería que se dedica a diseñar, desarrollar, probar y mantener programas de computadora. Ha evolucionado mucho en varias áreas:
- Nacimiento de la profesión: La ingeniería de software comenzó a ser reconocida como una profesión a principios de los años 80.
- Procesos de desarrollo: Los procesos son pasos organizados para crear programas. Ayudan a mejorar la calidad del software, pero a veces pueden limitar la creatividad de los programadores.
- Costo de los equipos: El precio de las computadoras ha cambiado mucho en los últimos 60 años. Antes, las computadoras grandes (llamadas mainframes) eran muy caras. Solo grandes organizaciones podían comprarlas y financiar proyectos de software a medida. Ahora, las computadoras son más baratas y potentes. Esto ha permitido que empresas como Microsoft creen programas comerciales para un mercado más grande. También hace que sea más fácil para los programadores trabajar.
Los primeros años del software
Al principio, las computadoras nuevas aparecían cada uno o dos años. Esto hacía que las computadoras viejas quedaran obsoletas. Los ingenieros de software tenían que reescribir sus programas para que funcionaran en las máquinas nuevas. Los programadores no tenían computadoras en sus escritorios. Debían ir a una "sala de máquinas" y usar tarjetas perforadas para dar instrucciones a la computadora. Luego esperaban los resultados impresos.
En esa época, era muy difícil predecir cuándo terminaría un proyecto. El equipo de la computadora era específico para cada tarea. Las tareas científicas y de negocios necesitaban máquinas diferentes. Para facilitar la adaptación de los programas a las nuevas máquinas, se crearon lenguajes de programación más avanzados como FORTRAN, COBOL y ALGOL. Las empresas que vendían computadoras regalaban los programas, porque no se podía vender el equipo sin ellos. Algunas compañías ofrecían servicios de programación personalizada, pero no existían empresas dedicadas solo al software.
La idea de reutilizar programas era popular. Las organizaciones de usuarios compartían sus programas. Grupos como Share ofrecían catálogos de componentes de software que se podían usar varias veces. En las universidades, aún no se enseñaban los principios de las ciencias de la computación. Sin embargo, ya se usaban técnicas como la programación modular y la abstracción de datos.
De 1950 a 1960: Los inicios de la ingeniería de software
El término ingeniería de software se usó por primera vez entre los años 50 y principios de los 60. Los programadores conocían otras ingenierías, como la civil o la eléctrica. Se preguntaban qué significaría la ingeniería para el software.
Durante el desarrollo de la computadora para el Programa Apolo, Margaret Hamilton propuso usar el nombre "ingeniería de software". Quería que el desarrollo de programas fuera visto con el mismo respeto que otras ramas de la ingeniería.
El Comité de Ciencias de la OTAN organizó dos conferencias sobre ingeniería de software. Una fue en 1968 en Garmisch, Alemania, y otra en 1969. Muchos creen que estas conferencias marcaron el inicio oficial de la profesión. Aunque el software ya existía antes de las computadoras electrónicas (por ejemplo, con ábacos), fue con ellas que adoptó su nombre y se desarrolló como disciplina.
De 1960 a 1980: El desafío del software
La ingeniería de software recibió un gran impulso por lo que se llamó la crisis del software en las décadas de 1960, 1970 y 1980. Esta crisis identificó muchos problemas en el desarrollo de programas. Muchos proyectos de software excedían el presupuesto y el tiempo estimados. Algunos proyectos causaron problemas graves. La crisis del software se definió al principio por la falta de productividad, pero luego se enfocó en la calidad.
- Costo y exceso de presupuesto: El sistema operativo OS/360 fue un ejemplo. Este proyecto de IBM duró una década desde los años 60. Fue uno de los primeros grandes proyectos de software, con 1000 programadores. En su libro The Mythical Man-Month, Fred Brooks dijo que cometió un error muy costoso al no diseñar una arquitectura de software clara antes de empezar.
- Problemas de seguridad: Los errores en los programas pueden causar daños. Una seguridad débil permite a los hackers robar información, lo que cuesta tiempo y dinero.
- Riesgos en sistemas críticos: Algunos sistemas embebidos en máquinas de radioterapia tuvieron fallos graves. El caso más conocido es el incidente de Therac-25.
Peter G. Neumann ha mantenido una lista de problemas y fallos de software. Aunque la crisis del software parece haber disminuido, el software sigue siendo un campo con desafíos. Es importante no confiarse, especialmente con programas que funcionan en tiempo real.
Michael A. Jackson ha estudiado la ingeniería de software. Él cree que la principal dificultad es la falta de especialización. Sugiere que si se usan marcos de problemas, la ingeniería de software podría convertirse en una ciencia más predecible.
De 1985 a 1989: La búsqueda de soluciones en el software
Durante décadas, resolver la crisis del software fue muy importante para investigadores y empresas. En los años 80, el costo de mantener un programa era el doble de lo que costaba desarrollarlo. En los 90, este costo aumentó un 30%. En 1995, se vio que la mitad de los proyectos de software no eran considerados exitosos, aunque funcionaran. Además, el 50% de los proyectos excedían el tiempo estimado. Tres cuartas partes de los grandes programas se entregaban con fallos o no cumplían con lo que el cliente necesitaba.
Proyectos de software y la "bala de plata"
Entre los años 70 y 90, cada nueva tecnología o práctica se presentaba como una "bala de plata" para resolver la crisis del software. Se decía que herramientas, disciplina, métodos formales, procesos y profesionalismo serían la solución:
- Herramientas: Se destacaron herramientas como la programación estructurada, la programación orientada a objetos, las herramientas CASE, el lenguaje de programación Ada, la documentación y los estándares.
- Disciplina: Algunos expertos pensaban que la crisis se debía a la falta de disciplina de los programadores.
- Métodos formales: Otros creían que si se aplicaban metodologías de ingeniería formales, el desarrollo de software sería tan predecible como otras ingenierías.
- Proceso: Muchos defendían el uso de procesos y metodologías definidas, como el Modelo de Capacidad y Madurez.
- Profesionalismo: Esto llevó a trabajar en códigos de ética, licencias y la profesionalización del campo.
En 1986, Fred Brooks publicó su artículo "No hay balas de plata". En él, argumentó que ninguna tecnología o práctica por sí sola mejoraría la productividad diez veces en diez años.
El debate sobre las "balas de plata" continuó por una década. Los defensores de Ada, los componentes y los procesos seguían diciendo que su tecnología favorita sería la solución. Los escépticos no estaban de acuerdo. Finalmente, casi todos aceptaron que no existe una única "bala de plata". Sin embargo, de vez en cuando, aún hoy, surgen afirmaciones sobre nuevas "balas de plata".
Algunos interpretan que "no hay balas de plata" significa que la ingeniería de software ha fallado. Pero Brooks también dijo que se harían progresos importantes. La búsqueda de una única clave para el éxito nunca funcionó. Todas las prácticas y tecnologías solo han logrado mejoras graduales en productividad y calidad. Al final, "no hay balas de plata" también puede significar que la ingeniería de software ha madurado y que el éxito de los proyectos se debe al trabajo duro.
Hoy en día, existen muchas herramientas y metodologías que ayudan mucho. Por ejemplo, las metodologías ágiles, los navegadores personalizados, los motores de búsqueda y los generadores de informes. Sin embargo, el campo de la ingeniería de software es muy complejo. No hay una única "bala de plata" que resuelva todos los problemas.
De 1990 a 1999: El auge de Internet
El crecimiento de Internet aumentó rápidamente la demanda de sistemas para compartir información y correo electrónico en la World Wide Web. Los programadores tuvieron que manejar imágenes, mapas, fotos y animaciones de una forma nunca vista. Había pocos métodos para optimizar cómo se mostraban y guardaban estas imágenes.
El uso del navegador y el lenguaje HTML cambiaron la forma de organizar y encontrar información. Las conexiones de red globales llevaron al crecimiento y la prevención de virus informáticos. El correo basura se convirtió en un gran problema en los sistemas de correo electrónico, saturando las comunicaciones. Los sistemas de búsqueda de palabras clave evolucionaron en buscadores web. Muchos programas tuvieron que ser rediseñados para la búsqueda internacional, usando técnicas de posicionamiento en buscadores (SEO).
También se necesitaron sistemas de traducción automática para manejar la información en muchos idiomas. Muchos programas se diseñaron para ser multilingües, basándose en ideas de traductores humanos. Las bases de usuarios de computadoras pasaron de cientos o miles a millones de usuarios en todo el mundo.
De 2000 al presente: Métodos más ágiles
La creciente demanda de programas en empresas pequeñas llevó a la necesidad de métodos de desarrollo más rápidos y económicos. Una tendencia fue el uso de prototipos rápidos, que buscan crear un programa funcional lo antes posible. Esto dio lugar a metodologías ágiles, como la programación extrema (XP). Estas metodologías buscan simplificar el proceso de desarrollo, incluyendo la recopilación de requisitos y las pruebas. Sin embargo, los programas muy grandes siguen usando métodos más tradicionales y documentados. Los sistemas más pequeños prefieren métodos más sencillos y rápidos para gestionar el desarrollo, el mantenimiento, el almacenamiento de información y la visualización.
Tendencias actuales en la ingeniería de software
La ingeniería de software es una disciplina joven y sigue evolucionando. Algunas de las direcciones en las que se está desarrollando incluyen:
La Conferencia sobre el Futuro de la Ingeniería de Software (FOSE), celebrada en ICSE 2000, documentó el estado de la ingeniería de software en el año 2000 y listó muchos problemas a resolver. Las conferencias ICSE 2000 e ICSE 2007 también ayudan a identificar el estado actual de la ingeniería de software.
La ingeniería de software hoy
La profesión está tratando de definir sus límites y lo que abarca. El Software Engineering Body of Knowledge SWEBOK fue presentado como un estándar ISO en 2006 (ISO/IEC TR 19759).
En 2006, la revista Money y Salary.com calificaron la ingeniería de software como el mejor trabajo en Estados Unidos. Se basaron en el crecimiento, el salario, los niveles de estrés, la flexibilidad de horarios, el ambiente de trabajo, la creatividad y la facilidad para entrar y avanzar en el campo.
Personas importantes en la historia de la ingeniería de software
- Charles Bachman (nacido en 1924) es conocido por su trabajo en bases de datos.
- Laszlo Belady (nacido en 1928) fue el editor principal de la revista IEEE Transactions on Software Engineering en los años 80.
- Fred Brooks (nacido en 1931) es conocido por desarrollar el OS/360.
- Peter Chen es conocido por desarrollar el modelo entidad-relación.
- Edsger Dijkstra (1930–2002) creó el marco para la programación adecuada.
- David Parnas (nacido en 1941) desarrolló el concepto de ocultamiento de información en la programación modular.
- Michael A. Jackson (nacido en 1936) es un experto en ingeniería de software. Creó el método de diseño de programas JSP y el método de desarrollo de sistemas JSD (con John Cameron). También trabajó en marcos de problemas para analizar y estructurar los desafíos del desarrollo de software.
Véase también
- Ingeniería de software
- Crisis del software