stringtranslate.com

Historia de la ingeniería de software.

La historia de la ingeniería de software comienza alrededor de los años 1960. Escribir software se ha convertido en una profesión que se ocupa de cómo maximizar la calidad del software y de cómo crearlo. La calidad puede referirse a qué tan mantenible es el software, a su estabilidad, velocidad, usabilidad, capacidad de prueba, legibilidad, tamaño, costo, seguridad y cantidad de fallas o "errores", así como a cualidades menos mensurables como la elegancia, la concisión y la atención al cliente. satisfacción, entre muchos otros atributos. La mejor manera de crear software de alta calidad es un problema separado y controvertido que abarca los principios de diseño de software, las llamadas "mejores prácticas" para escribir código, así como cuestiones de gestión más amplias, como el tamaño óptimo del equipo, el proceso y la mejor manera de entregar el software a tiempo. y lo más rápido posible, la "cultura" del lugar de trabajo, las prácticas de contratación, etc. Todo esto cae bajo la amplia rúbrica de ingeniería de software . [1]

Descripción general

La evolución de la ingeniería de software es notable en varios ámbitos:

1945 a 1965: los orígenes

Los primeros usos del término ingeniería de software incluyen una carta de 1965 del presidente de ACM, Anthony Oettinger , [6] [7] conferencias de Douglas T. Ross en el MIT en la década de 1950. [8] Margaret H. Hamilton es la persona a quien se le ocurrió la idea de nombrar la disciplina, ingeniería de software, como una forma de darle legitimidad durante el desarrollo de la Computadora de Orientación Apollo . [9] [10]

Luché para darle legitimidad al software para que éste (y quienes lo construyen) recibieran el debido respeto y así comencé a utilizar el término "ingeniería de software" para distinguirlo del hardware y otros tipos de ingeniería, pero tratando cada tipo de ingeniería. ingeniería como parte del proceso general de ingeniería de sistemas. Cuando comencé a usar esta frase, me pareció bastante divertida. Fue una broma constante durante mucho tiempo. Les gustaba bromear acerca de mis ideas radicales. El software eventualmente y necesariamente ganó el mismo respeto que cualquier otra disciplina.

—  Margaret Hamilton, entrevista de 2014 con El País [11]

El Comité Científico de la OTAN patrocinó dos conferencias [12] sobre ingeniería de software en 1968 ( Garmisch , Alemania) y 1969, que dieron a este campo su impulso inicial. Muchos creen que estas conferencias marcaron el inicio oficial de la profesión de ingeniería de software . [6] [13]

1965 a 1985: la crisis del software

La ingeniería de software fue impulsada por la llamada crisis del software de los años 1960, 1970 y 1980, que identificó muchos de los problemas del desarrollo de software. Muchos proyectos superaron el presupuesto y el cronograma. Algunos proyectos causaron daños a la propiedad. Algunos proyectos provocaron pérdidas de vidas. [14] La crisis del software se definió originalmente en términos de productividad , pero evolucionó para enfatizar la calidad . Algunos utilizaron el término crisis de software para referirse a su incapacidad para contratar suficientes programadores calificados. [ cita necesaria ]

Peter G. Neumann ha elaborado una lista contemporánea de problemas y desastres de software. [16] La crisis del software ha ido desapareciendo de la vista, porque psicológicamente es extremadamente difícil permanecer en modo crisis durante un período prolongado (más de 20 años). Sin embargo, el software –especialmente el software integrado en tiempo real– sigue siendo riesgoso y omnipresente, y es fundamental no caer en la complacencia. Durante los últimos 10 a 15 años, Michael A. Jackson ha escrito extensamente sobre la naturaleza de la ingeniería de software, ha identificado la principal fuente de sus dificultades como la falta de especialización y ha sugerido que sus marcos de problemas proporcionan la base para una "práctica normal". de la ingeniería de software, un requisito previo para que la ingeniería de software se convierta en una ciencia de la ingeniería. [17]

1985 a 1989: " No hay bala de plata "

Durante décadas, resolver la crisis del software fue primordial para los investigadores y las empresas que producían herramientas de software. El costo de poseer y mantener software en la década de 1980 era dos veces más caro que desarrollarlo. [ cita necesaria ]

Proyectos de software

Al parecer, cada nueva tecnología y práctica desde los años 1970 hasta los años 1990 fue anunciada como una solución milagrosa para resolver la crisis del software. Las herramientas, la disciplina, los métodos formales , el proceso y el profesionalismo se promocionaron como soluciones mágicas: [ cita necesaria ]

En 1986, Fred Brooks publicó su artículo No Silver Bullet , argumentando que ninguna tecnología o práctica individual lograría jamás una mejora diez veces mayor en la productividad en 10 años. [ cita necesaria ]

El debate sobre las soluciones milagrosas se prolongó durante la década siguiente. Los defensores de Ada , sus componentes y sus procesos continuaron argumentando durante años que su tecnología favorita sería una solución milagrosa. Los escépticos no estuvieron de acuerdo. Al final, casi todos aceptaron que nunca se encontraría una solución milagrosa. Sin embargo, de vez en cuando surgen afirmaciones sobre soluciones mágicas , incluso hoy en día. [ cita necesaria ]

¿ Algunos que? ] interpretar [ ¿por qué? ] no hay una fórmula mágica para significar que la ingeniería de software fracasó. [ aclaración necesaria ] Sin embargo, con más lecturas, Brooks continúa diciendo: "Seguramente lograremos avances sustanciales en los próximos 40 años; un orden de magnitud en 40 años no es mágico ..." [ cita necesaria ]

La búsqueda de una única clave para el éxito nunca funcionó. Todas las tecnologías y prácticas conocidas sólo han logrado mejoras incrementales en la productividad y la calidad. Sin embargo, tampoco existen soluciones mágicas para ninguna otra profesión. Otros interpretan que no hay una solución mágica como prueba de que la ingeniería de software finalmente ha madurado y reconocen que los proyectos tienen éxito gracias al trabajo duro. [ cita necesaria ]

Sin embargo, también se podría decir que, de hecho, hoy en día existe una variedad de soluciones milagrosas , que incluyen metodologías ligeras (ver " Gestión de proyectos "), calculadoras de hojas de cálculo, navegadores personalizados , motores de búsqueda en el sitio, generadores de informes de bases de datos, diseño integrado. -editores de codificación de prueba con memoria/diferencias/deshacer, y tiendas especializadas que generan software especializado, como sitios web de información, a una fracción del costo de un desarrollo de sitios web totalmente personalizado. Sin embargo, el campo de la ingeniería de software parece demasiado complejo y diverso para que una sola "solución milagrosa" mejore la mayoría de los problemas, y cada problema representa sólo una pequeña porción de todos los problemas de software. [ cita necesaria ]

1990 a 1999: prominencia de Internet

El auge de Internet provocó un crecimiento muy rápido de la demanda de sistemas internacionales de visualización de información y correo electrónico en la World Wide Web. Se requirió que los programadores manejaran ilustraciones, mapas, fotografías y otras imágenes, además de animaciones simples, 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). [ cita necesaria ]

El crecimiento del uso del navegador, que se ejecuta en el lenguaje de marcado de hipertexto (HTML), cambió la forma en que se organizaba la visualización y recuperación de información. Las conexiones de red generalizadas condujeron al crecimiento y la prevención de virus informáticos internacionales en las computadoras con MS Windows, y la gran proliferación de correo electrónico no deseado se convirtió en un problema importante de diseño en los sistemas de correo electrónico, inundando los canales de comunicación y requiriendo una detección previa semiautomática. . Los sistemas de búsqueda de palabras clave evolucionaron hasta convertirse en motores de búsqueda basados ​​en la web , y muchos sistemas de software tuvieron que ser rediseñados para realizar búsquedas internacionales, dependiendo de la optimización de motores de búsqueda (SEO). Se necesitaban sistemas humanos de traducción de lenguaje natural para intentar traducir el flujo de información en múltiples idiomas extranjeros, y muchos sistemas de software se diseñaron para el uso en varios idiomas, basándose en conceptos de diseño de traductores humanos. Las bases típicas de usuarios de computadoras pasaron de cientos o miles de usuarios a, a menudo, muchos millones de usuarios internacionales. [ cita necesaria ]

2000 a 2015: Metodologías ligeras

Con la creciente demanda de software en muchas organizaciones más pequeñas, la necesidad de soluciones de software económicas llevó al crecimiento de metodologías más simples y rápidas que desarrollaron software en ejecución, desde los requisitos hasta la implementación, de manera más rápida y sencilla. El uso de creación rápida de prototipos evolucionó hacia metodologías enteramente livianas , como la Programación Extrema (XP), que intentó simplificar muchas áreas de la ingeniería de software, incluida la recopilación de requisitos y las pruebas de confiabilidad para la creciente y enorme cantidad de pequeños sistemas de software. Los sistemas de software muy grandes todavía utilizaban metodologías muy documentadas, con muchos volúmenes en el conjunto de documentación; sin embargo, los sistemas más pequeños tenían un enfoque alternativo más simple y rápido para gestionar el desarrollo y mantenimiento de cálculos y algoritmos de software, almacenamiento/recuperación y visualización de información. [ cita necesaria ]

Tendencias actuales en ingeniería de software.

La ingeniería de software es una disciplina joven y aún está en desarrollo. Las direcciones en las que se está desarrollando la ingeniería de software incluyen: [ cita necesaria ]

Aspectos

Los aspectos ayudan a los ingenieros de software a lidiar con los atributos de calidad al proporcionar herramientas para agregar o eliminar código repetitivo de muchas áreas del código fuente . Los aspectos describen cómo deberían comportarse todos los objetos o funciones en circunstancias particulares. Por ejemplo, los aspectos pueden agregar control de depuración , registro o bloqueo a todos los objetos de tipos particulares. Actualmente, los investigadores están trabajando para comprender cómo utilizar aspectos para diseñar código de propósito general. Los conceptos relacionados incluyen programación generativa y plantillas .

Experimental

La ingeniería de software experimental es una rama de la ingeniería de software interesada en diseñar experimentos con software, recopilar datos de los experimentos y diseñar leyes y teorías a partir de estos datos.

Líneas de productos de software

Las líneas de productos de software, también conocidas como ingeniería de familias de productos , son una forma sistemática de producir familias de sistemas de software, en lugar de crear una sucesión de productos completamente individuales. Este método enfatiza la reutilización extensa, sistemática y formal del código , para intentar industrializar el proceso de desarrollo de software.

La conferencia Futuro de la Ingeniería de Software (FOSE), celebrada en ICSE 2000, documentó el estado del arte de la SE en 2000 y enumeró muchos problemas que se resolverán durante la próxima década. Las pistas de FOSE en las conferencias ICSE 2000 [19] y ICSE 2007 [20] también ayudan a identificar el estado del arte en ingeniería de software. [ cita necesaria ]

La ingeniería de software hoy

La profesión está intentando definir sus límites y contenidos. El conjunto de conocimientos de ingeniería de software SWEBOK se presentó como estándar ISO durante 2006 (ISO/IEC TR 19759). [ cita necesaria ]

En 2006, Money Magazine y Salary.com calificaron la ingeniería de software como el mejor trabajo en Estados Unidos en términos de crecimiento, salario, niveles de estrés, flexibilidad horaria y ambiente de trabajo, creatividad y lo fácil que es ingresar y avanzar en este campo. [21]

Subdisciplinas

Inteligencia artificial

Una amplia variedad de plataformas ha permitido el desarrollo de diferentes aspectos de la IA, desde sistemas expertos como Cyc hasta aprendizaje profundo y plataformas robóticas como Roomba con interfaz abierta. [22] Los avances recientes en redes neuronales artificiales profundas y computación distribuida han llevado a una proliferación de bibliotecas de software, incluidas Deeplearning4j , TensorFlow , Theano y Torch .

Un estudio de 2011 del McKinsey Global Institute encontró una escasez de 1,5 millones de profesionales y gerentes de datos e inteligencia artificial altamente capacitados [23] y varios bootcamps privados han desarrollado programas para satisfacer esa demanda, incluidos programas gratuitos como The Data Incubator o programas pagos como General Assembly. . [24]

Idiomas

Las primeras IA simbólicas inspiraron a Lisp y Prolog , que dominaron la programación temprana de IA. El desarrollo moderno de IA a menudo utiliza lenguajes convencionales como Python o C++ , [25] o lenguajes especializados como Wolfram Language . [26]

Figuras destacadas de la historia de la ingeniería de software.

Ver también

Referencias

  1. ^ "CS302: La historia del software" de Jared King"". aprender.saylor.org . Consultado el 17 de febrero de 2018 .
  2. ^ "La ingeniería de software... ha surgido recientemente como una disciplina por derecho propio". Sommerville, Ian (1985) [1982]. Ingeniería de software . Addison-Wesley. ISBN 978-0-201-14229-7.
  3. ^ Abad, Janet (2012). Recodificación del género . Cambridge, MA: MIT Press. págs.39. ISBN 978-0262534536.
  4. ^ Ensmenger, Nathan (2012). "Los chicos de la informática se hacen cargo" . Cambridge, MA: MIT Press. ISBN 978-0262517966.
  5. ^ "Episodio 576: Cuando las mujeres dejaron de codificar". Dinero del planeta NPR . 17 de octubre de 2014 . Consultado el 27 de junio de 2018 .
  6. ^ ab Meyer, Bertrand (4 de abril de 2013). "El origen de la" ingeniería de software"" . Consultado el 25 de noviembre de 2016 .
  7. ^ Tadre, Matti (3 de diciembre de 2014). La ciencia de la computación . Prensa CRC. pag. 121.ISBN 978-1-4822-1770-4.
  8. ^ Mahoney, Michael. "Las raíces de la ingeniería de software" (PDF) . CWI trimestral . 3 (4): 325–334. Archivado desde el original (PDF) el 20 de febrero de 2011 . Consultado el 10 de febrero de 2023 .
  9. ^ Conferencia Internacional sobre Ingeniería de Software 2018 que celebra su 40 aniversario y 50 años de ingeniería de software. "ICSE 2018 - Sesiones plenarias - Margaret Hamilton". YouTube . Consultado el 9 de junio de 2018 .{{cite web}}: CS1 maint: numeric names: authors list (link)
  10. ^ Rayl, AJS (16 de octubre de 2008). "Ingenieros y científicos de la NASA: transformando los sueños en realidad". Sitio web del 50 aniversario de la NASA . NASA . Consultado el 25 de noviembre de 2016 .
  11. ^ "Primer ingeniero de software | IEEE Computer Society". 5 de octubre de 2018 . Consultado el 5 de marzo de 2023 .
  12. ^ Brian Randell (2001). "Conferencias de ingeniería de software de la OTAN". ncl.ac.uk. ​Consultado el 25 de noviembre de 2016 .
  13. ^ rey abc, Jared (2016). La historia del software de "Jared King""". CS302: Ingeniería de software . Saylor.org . Consultado el 25 de noviembre de 2016 .
  14. ^ Therac-25
  15. ^ Leveson, NG; Turner, CS (1 de julio de 1993). "Una investigación de los accidentes de Therac-25". Computadora . 26 (7): 18–41. CiteSeerX 10.1.1.372.412 . doi :10.1109/MC.1993.274940. ISSN  0018-9162. S2CID  9691171. 
  16. ^ Neumann, Peter G. "LISTA DE RIESGOS: Resumen DEL FORO DE RIESGOS". El compendio de riesgos .
  17. ^ {Michael Jackson, "Ingeniería e ingeniería de software" en S Nanz ed, El futuro de la ingeniería de software, Springer Verlag 2010; Michael Jackson, Marcos de problemas: análisis y estructuración de problemas de desarrollo de software; Addison-Wesley, 2001}
  18. ^ DJPearson "El uso y abuso de un sistema de ingeniería de software" Conferencia Nacional de Computación 1979
  19. ^ "ICSE2000: Convocatoria de participación". mientes .
  20. ^ "CISE 2007: Inicio". ucl.ac.uk.
  21. ^ Kalwarski, Tara; Daphne Mosher; Janet Paskin; Doña Rosato (2006). "Los mejores trabajos de Estados Unidos". Revista DINERO . CNN . Consultado el 20 de abril de 2006 ., "MONEY Magazine y Salary.com investigaron cientos de trabajos, considerando su crecimiento, salario, niveles de estrés y otros factores. Estas carreras ocuparon el puesto más alto. 1. Ingeniero de software..."
  22. ^ "Hackear Roomba". hackingroomba.com . Archivado desde el original el 18 de octubre de 2009.
  23. ^ Manyika, James; Chui, Michael; Bughin, Jacques; Marrón, Brad; Dobbs, Richard; Roxburgh, Charles; Byers, Angela Hung (mayo de 2011). "Big Data: la próxima frontera para la innovación, la competencia y la productividad". Instituto Global McKinsey. Archivado desde el original el 6 de marzo de 2013 . Consultado el 16 de enero de 2016 . {{cite journal}}: Citar diario requiere |journal=( ayuda )
  24. ^ "Nueva York tiene un nuevo campo de entrenamiento para científicos de datos: es gratis pero más difícil de ingresar que Harvard". Vencer Beat . Archivado desde el original el 15 de febrero de 2016 . Consultado el 21 de febrero de 2016 .
  25. ^ "C++Java". infoworld.com . Consultado el 6 de diciembre de 2017 .
  26. ^ Ferris, Robert (7 de abril de 2016). "Cómo el amigo de Steve Jobs cambió el mundo de las matemáticas". CNBC . Consultado el 28 de febrero de 2018 .

enlaces externos