stringtranslate.com

Ingeniería de software

La ingeniería de software es un enfoque basado en la ingeniería para el desarrollo de software . [1] [2] [3] Un ingeniero de software es una persona que aplica el proceso de diseño de ingeniería para diseñar, desarrollar, probar, mantener y evaluar software de computadora . El término programador se utiliza a veces como sinónimo, pero puede enfatizar la implementación de software sobre el diseño y también puede carecer de connotaciones de educación o habilidades en ingeniería. [4]

Las técnicas de ingeniería se utilizan para informar el proceso de desarrollo de software , [1] [5] que implica la definición, implementación, evaluación, medición, gestión, cambio y mejora del proceso del ciclo de vida del software en sí. Utiliza en gran medida la gestión de configuración de software , [1] [5] , que consiste en controlar sistemáticamente los cambios en la configuración y mantener la integridad y trazabilidad de la configuración y el código durante todo el ciclo de vida del sistema. Los procesos modernos utilizan versiones de software .

Historia

A partir de la década de 1960, la ingeniería de software fue vista como un tipo de ingeniería en sí misma . Además, el desarrollo de la ingeniería de software se consideraba una lucha. Era difícil mantenerse al día con el hardware, lo que causaba muchos problemas a los ingenieros de software. Los problemas incluían software que excedía el presupuesto, excedía los plazos, requería depuración y mantenimiento exhaustivos y no satisfacía las necesidades de los consumidores o ni siquiera se completaba. En 1968 la OTAN celebró la primera conferencia de Ingeniería de Software donde se abordaron cuestiones relacionadas con el software: se establecieron directrices y mejores prácticas para el desarrollo de software. [6]

Los orígenes del término ingeniería de software se han atribuido a diversas fuentes. El término apareció en una lista de servicios ofrecidos por empresas en la edición de junio de 1965 de "Computers and Automation" [7] y se utilizó más formalmente en la edición de agosto de 1966 de Communications of the ACM (Volumen 9, número 8) "carta a los miembros de la ACM" por el Presidente de la ACM, Anthony A. Oettinger. [8] [9] También se asocia con el título de una conferencia de la OTAN en 1968 por el profesor Friedrich L. Bauer . [10] Margaret Hamilton describió la disciplina de "ingeniería de software" durante las misiones Apolo para dar legitimidad a lo que estaban haciendo. [11] En aquel momento se percibió que había una " crisis de software ". [12] [13] [14] La 40.ª Conferencia Internacional sobre Ingeniería de Software (ICSE 2018) celebra los 50 años de la "Ingeniería de software" con las conferencias magistrales de las sesiones plenarias de Frederick Brooks [15] y Margaret Hamilton . [dieciséis]

En 1984, el Instituto de Ingeniería de Software (SEI) se estableció como un centro de investigación y desarrollo financiado con fondos federales y con sede en el campus de la Universidad Carnegie Mellon en Pittsburgh, Pensilvania, Estados Unidos. Watts Humphrey fundó el Programa de Procesos de Software SEI, cuyo objetivo es comprender y gestionar el proceso de ingeniería de software. Los niveles de madurez de proceso introducidos se convertirían en la integración del modelo de madurez de capacidad para el desarrollo (CMMI-DEV), que ha definido cómo el gobierno de EE. UU. evalúa las capacidades de un equipo de desarrollo de software.

El subcomité ISO/IEC JTC 1/SC 7 recopiló las mejores prácticas modernas y generalmente aceptadas para la ingeniería de software y las publicó como el Cuerpo de conocimientos de ingeniería de software (SWEBOK). [17] La ​​ingeniería de software se considera una de las principales disciplinas informáticas . [18]

Definiciones y terminología

Las definiciones notables de ingeniería de software incluyen:

El término también se ha utilizado de manera menos formal:

Etimología de "ingeniero de software"

Margaret Hamilton promovió el término "ingeniería de software" durante su trabajo en el programa Apollo . El término "ingeniería" se utilizó para reconocer que el trabajo debería tomarse tan en serio como otras contribuciones al avance de la tecnología. Hamilton detalla su uso del término:

Cuando se me ocurrió el término por primera vez, nadie había oído hablar de él antes, al menos en nuestro mundo. Fue una broma constante durante mucho tiempo. Les gustaba bromear acerca de mis ideas radicales. Fue un día memorable cuando uno de los gurús del hardware más respetados explicó a todos en una reunión que estaba de acuerdo conmigo en que el proceso de creación de software también debería considerarse una disciplina de ingeniería, al igual que el hardware. No por su aceptación del nuevo "término" per se, sino porque nos habíamos ganado su aceptación y la de los demás en la sala como parte de un campo de ingeniería por derecho propio. [28]

Idoneidad del término

Los comentaristas individuales han discrepado marcadamente sobre cómo definir la ingeniería de software o su legitimidad como disciplina de ingeniería. David Parnas ha dicho que la ingeniería de software es, de hecho, una forma de ingeniería. [29] [30] Steve McConnell ha dicho que no lo es, pero que debería serlo. [31] Donald Knuth ha dicho que la programación es un arte y una ciencia. [32] Edsger W. Dijkstra afirmó que los términos ingeniería de software e ingeniero de software se han utilizado incorrectamente [¿ síntesis inadecuada? ] y debe considerarse dañino, particularmente en los Estados Unidos. [33]

Tareas en proyectos de gran escala.

Requisitos de Software

La ingeniería de requisitos trata de la obtención, análisis, especificación y validación de requisitos para software . Los requisitos de software pueden ser de tres tipos diferentes. Hay requisitos funcionales , requisitos no funcionales y requisitos de dominio. Se debe realizar la operación del software y se debe esperar que el usuario obtenga el resultado adecuado. Los requisitos no funcionales abordan cuestiones como la portabilidad, la seguridad, la mantenibilidad, la confiabilidad, la escalabilidad, el rendimiento, la reutilización y la flexibilidad. Se clasifican en los siguientes tipos: restricciones de interfaz, restricciones de rendimiento (como tiempo de respuesta, seguridad, espacio de almacenamiento, etc.), restricciones operativas, restricciones del ciclo de vida (mantenibilidad, portabilidad, etc.) y restricciones económicas. Se necesita conocimiento de cómo funciona el sistema o el software cuando se trata de especificar requisitos no funcionales. Los requisitos de dominio tienen que ver con las características de una determinada categoría o dominio de proyectos. [34]

Diseño de software

El diseño de software trata sobre el proceso de definir la arquitectura, los componentes, las interfaces y otras características de un sistema o componente. Esto también se llama arquitectura de software . El diseño de software se divide en tres niveles diferentes de diseño . Los tres niveles son diseño de interfaz , diseño arquitectónico y diseño detallado . El diseño de interfaz es la interacción entre un sistema y su entorno. Esto sucede en un alto nivel de abstracción junto con el funcionamiento interno del sistema. El diseño arquitectónico tiene que ver con los componentes principales de un sistema y sus responsabilidades, propiedades, interfaces y las relaciones e interacciones que ocurren entre ellos. El diseño detallado son los elementos internos de todos los componentes principales del sistema, sus propiedades, relaciones, procesamiento y, generalmente, sus algoritmos y estructuras de datos . [35]

Construcción de software

La construcción de software, la actividad principal del desarrollo de software, [1] [5] es la combinación de programación , pruebas unitarias , pruebas de integración y depuración para implementar el diseño. Las pruebas durante esta fase generalmente las realiza el programador mientras el software está en construcción, para verificar lo que se acaba de escribir y decidir cuándo el código está listo para enviarse al siguiente paso. [ cita necesaria ]

Pruebas de software

Las pruebas de software [1] [5] son ​​una investigación técnica empírica realizada para proporcionar a las partes interesadas información sobre la calidad del producto o servicio bajo prueba, con diferentes enfoques, como pruebas unitarias y pruebas de integración . Es un aspecto de la calidad del software . Como fase separada en el desarrollo de software, generalmente la realiza el personal de control de calidad o un desarrollador distinto al que escribió el código.

Análisis de software

El análisis de software es el proceso de analizar el comportamiento de los programas informáticos con respecto a una propiedad como el rendimiento , la robustez y la seguridad . Se puede realizar sin ejecutar el programa ( análisis estático del programa ), durante el tiempo de ejecución ( análisis dinámico del programa ) o en una combinación de ambos.

Mantenimiento del software

El mantenimiento de software [1] [5] se refiere a las actividades necesarias para proporcionar soporte rentable después del envío del producto de software. El mantenimiento del software consiste en modificar y actualizar las aplicaciones de software después de su distribución para corregir fallas y mejorar su rendimiento. El software tiene mucho que ver con el mundo real y cuando el mundo real cambia, se requiere mantenimiento del software. El mantenimiento del software incluye: corrección de errores , optimización, eliminación de funciones no utilizadas y descartadas, y mejora de funciones que ya existen. Por lo general, el mantenimiento representa entre el 40% y el 80% del costo del proyecto, por lo que centrarse en el mantenimiento mantiene los costos bajos. [36]

Educación

El conocimiento de la programación informática es un requisito previo para convertirse en ingeniero de software. En 2004, la IEEE Computer Society produjo el SWEBOK , que se publicó como Informe técnico ISO/IEC 1979:2005, y describe el conjunto de conocimientos que recomiendan que domine un ingeniero de software graduado con cuatro años de experiencia. [37] Muchos ingenieros de software ingresan a la profesión obteniendo un título universitario o capacitación en una escuela vocacional. El Grupo de Trabajo Conjunto sobre Currículos de Computación de la IEEE Computer Society y la Association for Computing Machinery definió un plan de estudios internacional estándar para títulos universitarios en ingeniería de software , y lo actualizó en 2014. [38] Varias universidades tienen programas de grado en Ingeniería de software; En 2010 , había 244 programas universitarios de Licenciatura en Ingeniería de Software , 70 programas en línea, 230 programas de nivel de maestría, 41 programas de nivel de doctorado y 69 programas de nivel de certificado en los Estados Unidos.

Además de la educación universitaria, muchas empresas patrocinan pasantías para estudiantes que desean seguir carreras en tecnología de la información. Estas pasantías pueden presentar al estudiante tareas interesantes del mundo real que los ingenieros de software típicos encuentran todos los días. Se puede obtener una experiencia similar a través del servicio militar en ingeniería de software.

Programas de grado en ingeniería de software

La mitad de todos los profesionales actuales tienen títulos en ciencias de la computación , sistemas de información o tecnología de la información . [ cita necesaria ] Un número pequeño, pero creciente, de profesionales tienen títulos en ingeniería de software. En 1987, el Departamento de Computación del Imperial College de Londres introdujo la primera licenciatura en ingeniería de software de tres años en el Reino Unido y el mundo; al año siguiente, la Universidad de Sheffield estableció un programa similar. [39] En 1996, el Instituto de Tecnología de Rochester estableció el primer programa de licenciatura en ingeniería de software en los Estados Unidos, sin embargo, no obtuvo la acreditación ABET hasta 2003, al mismo tiempo que la Universidad Rice , la Universidad Clarkson , la Escuela de Ingeniería de Milwaukee y La Universidad Estatal de Mississippi obtuvo la suya. [40] En 1997, la Facultad de Tecnología del PSG en Coimbatore, India, fue la primera en iniciar una Maestría en Ciencias integrada de cinco años en Ingeniería de Software. [ cita necesaria ]

Desde entonces, se han establecido títulos universitarios en ingeniería de software en muchas universidades. Un comité directivo definió un plan de estudios internacional estándar para títulos universitarios en ingeniería de software, SE2004 , entre 2001 y 2004 con financiación de la Association for Computing Machinery y la IEEE Computer Society . En 2004 , en los EE. UU., alrededor de 50 universidades ofrecen títulos de ingeniería de software, que enseñan principios y prácticas tanto de informática como de ingeniería. La primera maestría en ingeniería de software se estableció en la Universidad de Seattle en 1979. Desde entonces, muchas más universidades han ofrecido títulos de posgrado en ingeniería de software. Asimismo, en Canadá, la Junta Canadiense de Acreditación de Ingeniería (CEAB) del Consejo Canadiense de Ingenieros Profesionales ha reconocido varios programas de ingeniería de software.

En 1998, la Escuela Naval de Postgrado (NPS) de EE. UU. estableció el primer programa de doctorado en Ingeniería de Software del mundo. [ cita necesaria ] Además, han aparecido muchos títulos avanzados en línea en Ingeniería de Software, como la Maestría en Ciencias en Ingeniería de Software (MSE) que se ofrece a través del Departamento de Ingeniería y Ciencias de la Computación de la Universidad Estatal de California, Fullerton . Steve McConnell opina que debido a que la mayoría de las universidades enseñan ciencias de la computación en lugar de ingeniería de software, hay una escasez de verdaderos ingenieros de software. [41] La Universidad ETS (École de technologie supérieure) y la UQAM (Université du Québec à Montréal) recibieron el mandato del IEEE de desarrollar el Cuerpo de conocimientos de ingeniería de software ( SWEBOK ), que se ha convertido en una norma ISO que describe el cuerpo de conocimientos cubierto por un ingeniero de software. [42]

Profesión

Los requisitos legales para la concesión de licencias o certificación de ingenieros de software profesionales varían en todo el mundo. En el Reino Unido, no existe ningún requisito legal ni de licencia para asumir o utilizar el título de trabajo de Ingeniero de software. En algunas áreas de Canadá, como Alberta, Columbia Británica, Ontario, [43] y Quebec, los ingenieros de software pueden tener la designación de Ingeniero Profesional (P.Eng) y/o la designación de Profesional de Sistemas de Información (ISP). En Europa, los Ingenieros de Software pueden obtener el título profesional de Ingeniero Europeo (EUR ING). Los ingenieros de software también pueden obtener la calificación profesional como ingenieros colegiados a través de la British Computer Society .

En los Estados Unidos, el NCEES comenzó a ofrecer un examen de Ingeniero Profesional para Ingeniería de Software en 2013, lo que permite a los Ingenieros de Software obtener una licencia y ser reconocidos. [44] NCEES finalizó el examen después de abril de 2019 debido a la falta de participación. [45] Actualmente, la concesión de licencias obligatorias sigue siendo objeto de gran debate y se percibe como controvertida. [ cita necesaria ]

La IEEE Computer Society y la ACM , las dos principales organizaciones profesionales de ingeniería de software con sede en EE. UU., publican guías para la profesión de ingeniería de software. La Guía del IEEE sobre los conocimientos de ingeniería de software - Versión 2004 , o SWEBOK , define el campo y describe el conocimiento que el IEEE espera que tenga un ingeniero de software en ejercicio. El SWEBOK v3 más actual es una versión actualizada y se lanzó en 2014. [46] El IEEE también promulga un "Código de ética de ingeniería de software". [47]

Empleo

Se estima que hay 26,9 millones de ingenieros de software profesionales en el mundo en 2022, frente a 21 millones en 2016. [48] [49]

Muchos ingenieros de software trabajan como empleados o contratistas. Los ingenieros de software trabajan con empresas, agencias gubernamentales (civiles o militares) y organizaciones sin fines de lucro. Algunos ingenieros de software trabajan por cuenta propia como autónomos . Algunas organizaciones cuentan con especialistas para realizar cada una de las tareas del proceso de desarrollo de software . Otras organizaciones requieren que los ingenieros de software realicen muchas o todas ellas. En proyectos grandes, las personas pueden especializarse en una sola función. En proyectos pequeños, las personas pueden desempeñar varios o todos los roles al mismo tiempo. Muchas empresas contratan pasantes , a menudo estudiantes universitarios o universitarios durante las vacaciones de verano, o pasantías . Las especializaciones incluyen analistas , arquitectos , desarrolladores , evaluadores , soporte técnico , analistas de middleware , gerentes de proyectos , gerentes de productos de software , educadores e investigadores .

La mayoría de los ingenieros de software y programadores trabajan 40 horas a la semana, pero alrededor del 15 por ciento de los ingenieros de software y el 11 por ciento de los programadores trabajaron más de 50 horas a la semana en 2008. [50] Las posibles lesiones en estas ocupaciones son posibles porque, al igual que otros trabajadores que pasan mucho tiempo Durante los períodos sentados frente a una terminal de computadora escribiendo en un teclado, los ingenieros y programadores son susceptibles a fatiga visual, molestias en la espalda y problemas en manos y muñecas, como el síndrome del túnel carpiano . [51]

Estados Unidos

La Oficina de Estadísticas Laborales de EE. UU. (BLS) contabilizó 1.365.500 desarrolladores de software que ocupaban puestos de trabajo en EE. UU . en 2018. [52] Debido a su relativa novedad como campo de estudio, la educación formal en ingeniería de software a menudo se imparte como parte de un plan de estudios de informática. y muchos ingenieros de software tienen títulos en informática. [53] El BLS estima que entre 2014 y 2024 la ingeniería de software aumentaría un 17%. [54] Esto es inferior a la estimación BLS de 2012 a 2022 del 22% para ingeniería de software. [55] [54] Y está aún más por debajo de su estimación BLS del 30% de 2010 a 2020. [56] Debido a esta tendencia, el crecimiento del empleo puede no ser tan rápido como durante la última década, ya que los trabajos que habrían ido a parar a ingenieros de software en los Estados Unidos se subcontratarían a ingenieros de software en países como India y otros países. países extranjeros. [57] [50] Además, la perspectiva laboral BLS para programadores informáticos, la perspectiva ocupacional de la Oficina de Estadísticas Laborales (BLS) de EE. UU. predice una disminución del -7 por ciento de 2016 a 2026, una disminución adicional del -9 por ciento de 2019 a 2029, una disminución del -10 por ciento de 2021 a 2031. [57] y luego una disminución del -11 por ciento de 2022 a 2032. [57] Dado que la programación informática se puede realizar desde cualquier parte del mundo, las empresas a veces contratan programadores en países donde los salarios son más bajos. [57] [58] [59] Además, el número de mujeres en muchos campos del software también ha ido disminuyendo a lo largo de los años en comparación con otros campos de la ingeniería. [60] Luego está la preocupación adicional de que los recientes avances en inteligencia artificial puedan afectar la demanda de futuras generaciones de ingenieros de software. [61] [62] [63] [64] [65] [66] [67] Sin embargo, esta tendencia puede cambiar o desacelerarse en el futuro, ya que muchos ingenieros de software actuales en el mercado estadounidense huyen de la profesión o envejecen fuera del mercado . en las próximas décadas. [57]

Certificación

El Instituto de Ingeniería de Software ofrece certificaciones en temas específicos como seguridad , mejora de procesos y arquitectura de software . [68] IBM , Microsoft y otras empresas también patrocinan sus propios exámenes de certificación. Muchos programas de certificación de TI están orientados a tecnologías específicas y administrados por los proveedores de estas tecnologías. [69] Estos programas de certificación están diseñados para las instituciones que emplearían personas que utilizan estas tecnologías.

Varias sociedades profesionales ofrecen una certificación más amplia de habilidades generales de ingeniería de software. En 2006 , el IEEE había certificado a más de 575 profesionales del software como Profesional Certificado en Desarrollo de Software (CSDP). [70] En 2008 agregaron una certificación de nivel de entrada conocida como Asociado Certificado en Desarrollo de Software (CSDA). [71] La ACM tenía un programa de certificación profesional a principios de la década de 1980, [ cita necesaria ] que se suspendió debido a la falta de interés. La ACM examinó la posibilidad de una certificación profesional de los ingenieros de software a finales de los años 1990, pero finalmente decidió que dicha certificación era inapropiada para la práctica industrial profesional de la ingeniería de software. [72]

En el Reino Unido, la British Computer Society ha desarrollado una certificación profesional legalmente reconocida llamada Chartered IT Professional (CITP) , disponible para miembros totalmente calificados ( MBCS ). Los ingenieros de software pueden ser elegibles para ser miembros de la Sociedad Británica de Computación o de la Institución de Ingeniería y Tecnología y, por lo tanto, calificar para ser considerados para el estado de Ingeniero colegiado a través de cualquiera de esas instituciones. En Canadá, la Sociedad Canadiense de Procesamiento de Información ha desarrollado una certificación profesional legalmente reconocida llamada Information Systems Professional (ISP) . [73] En Ontario, Canadá, los ingenieros de software que se gradúen de un programa acreditado por la Junta Canadiense de Acreditación de Ingeniería (CEAB) , completen con éxito el examen de práctica profesional (PPE) de PEO ( ingenieros profesionales de Ontario ) y tengan al menos 48 meses de experiencia aceptable en ingeniería son elegibles. obtener una licencia a través de Professional Engineers Ontario y puede convertirse en Professional Engineers P.Eng. [74] Sin embargo, la PEO no reconoce ninguna educación en línea o a distancia; y no considera que los programas de Ciencias de la Computación sean equivalentes a los programas de ingeniería de software a pesar de la tremenda superposición entre los dos. Esto ha provocado controversia y una guerra de certificaciones. También ha mantenido excepcionalmente bajo el número de titulares de P.Eng para la profesión. La gran mayoría de los profesionales que trabajan en este campo tienen un título en informática, no en SE. Dado el difícil camino de certificación para los titulares de títulos que no son de SE, la mayoría nunca se molesta en obtener la licencia.

Impacto de la globalización

El impacto inicial de la subcontratación y el costo relativamente menor de los recursos humanos internacionales en los países en desarrollo del tercer mundo llevaron a una migración masiva de actividades de desarrollo de software de corporaciones en América del Norte y Europa a la India y más tarde a China, Rusia y otros países en desarrollo. Este enfoque tenía algunos fallos, principalmente la diferencia de distancia/zona horaria que impedía la interacción humana entre clientes y desarrolladores y la transferencia masiva de puestos de trabajo. Esto tuvo un impacto negativo en muchos aspectos de la profesión de ingeniería de software. Por ejemplo, algunos estudiantes en el mundo desarrollado evitan la educación relacionada con la ingeniería de software por temor a la subcontratación en el extranjero (importación de productos o servicios de software de otros países) y a ser desplazados por trabajadores extranjeros con visas . [75] Aunque las estadísticas actualmente no muestran una amenaza para la ingeniería de software en sí; una carrera relacionada, la programación informática parece haberse visto afectada. [76] [77] Sin embargo, la capacidad de aprovechar inteligentemente los recursos marinos y cercanos a la costa a través del flujo de trabajo de seguimiento del sol ha mejorado la capacidad operativa general de muchas organizaciones. [78] Cuando los norteamericanos salen del trabajo, los asiáticos recién llegan a trabajar. Cuando los asiáticos dejan el trabajo, los europeos llegan a trabajar. Esto proporciona una capacidad continua para tener supervisión humana de los procesos críticos para el negocio las 24 horas del día, sin pagar compensación por horas extras ni interrumpir un recurso humano clave: los patrones de sueño.

Si bien la subcontratación global tiene varias ventajas, el desarrollo global –y generalmente distribuido– puede tropezar con serias dificultades resultantes de la distancia entre los desarrolladores. Esto se debe a que los elementos clave de este tipo de distancia se han identificado como geográfico, temporal, cultural y de comunicación (que incluye el uso de diferentes idiomas y dialectos del inglés en diferentes lugares). [79] Se han llevado a cabo investigaciones en el área del desarrollo de software global durante los últimos 15 años y se ha publicado un extenso conjunto de trabajos relevantes que resaltan los beneficios y problemas asociados con esta compleja actividad. Al igual que con otros aspectos de la ingeniería de software, se están realizando investigaciones en esta y áreas relacionadas.

Premios

Hay varios premios en el campo de la ingeniería de software: [80]

Crítica

La ingeniería de software ve a sus profesionales como individuos que siguen enfoques de ingeniería bien definidos para la resolución de problemas. Estos enfoques se especifican en varios libros de ingeniería de software y artículos de investigación, siempre con connotaciones de previsibilidad, precisión, riesgo mitigado y profesionalismo. Esta perspectiva ha dado lugar a llamados [ ¿de quién? ] para la concesión de licencias, la certificación y los cuerpos codificados de conocimientos como mecanismos para difundir el conocimiento de la ingeniería y madurar el campo.

La ingeniería de software extiende la ingeniería y se basa en el modelo de ingeniería, es decir, el proceso de ingeniería, la gestión de proyectos de ingeniería, los requisitos de ingeniería, el diseño de ingeniería, la construcción de ingeniería y la validación de ingeniería. El concepto es tan nuevo que rara vez se comprende y se malinterpreta ampliamente, incluso en libros de texto y artículos de ingeniería de software y entre las comunidades de programadores y artesanos.

Uno de los problemas centrales de la ingeniería de software es que sus enfoques no son lo suficientemente empíricos porque la validación de los enfoques en el mundo real generalmente está ausente o es muy limitada y, por lo tanto, la ingeniería de software a menudo se malinterpreta como factible sólo en un "entorno teórico".

Edsger Dijkstra , el fundador de muchos de los conceptos utilizados hoy en día en el desarrollo de software, rechazó la idea de "ingeniería de software" hasta su muerte en 2002, argumentando que esos términos eran pobres analogías con lo que llamó la "novedad radical" de la informática. :

Varios de estos fenómenos se han agrupado bajo el nombre de "Ingeniería de software". Así como la economía se conoce como "La ciencia miserable", la ingeniería de software debería ser conocida como "La disciplina condenada", condenada al fracaso porque ni siquiera puede acercarse a su objetivo, ya que su objetivo es contradictorio en sí mismo. La ingeniería de software, por supuesto, se presenta como otra causa digna, pero eso es una tontería: si lees atentamente su literatura y analizas lo que realmente hacen sus devotos, descubrirás que la ingeniería de software ha aceptado como su estatuto "Cómo programar si no puedes". ". [81]

Ver también

Estudia y practica

Roles

Aspectos profesionales

Referencias

Citas

  1. ^ abcdef Abran y col. 2004
  2. ^ ACM (2007). "Grados y carreras en informática". ACM . Consultado el 23 de noviembre de 2010 .
  3. ^ Laplante, Phillip (2007). Lo que todo ingeniero debe saber sobre ingeniería de software. Boca Ratón: CRC. ISBN 978-0-8493-7228-5. Consultado el 21 de enero de 2011 .
  4. ^ "Programadores: dejen de llamarse ingenieros". El Atlántico . 5 de noviembre de 2015.
  5. ^ abcde "Conocimientos de ingeniería de software (SWEBOK versión 3), 2014" (pdf) . www.swebok.org . Sociedad de Computación IEEE . Consultado el 24 de mayo de 2016 .
  6. ^ "La historia de la codificación y la ingeniería de software". www.hackreactor.com . Consultado el 6 de mayo de 2021 .
  7. ^ "Computadoras y automatización: directorio de computadoras y guía para compradores, 1965" (PDF) . bitsavers.org . Consultado el 15 de julio de 2023 .
  8. ^ Oettinger, AG (1966). "Carta del presidente a los miembros de la ACM". Comunitario. ACM . Asociación para Maquinaria de Computación. 9 (8): 545–546. doi : 10.1145/365758.3291288 . ISSN  0001-0782. S2CID  53432801.
  9. ^ "El origen de la" ingeniería de software"". 4 de abril de 2013 . Consultado el 17 de noviembre de 2017 .
  10. ^ Randall, Brian. "Los informes de ingeniería de software de la OTAN de 1968/69" . Consultado el 17 de noviembre de 2017 .
  11. ^ Revista de software . "Qué saber sobre el científico que inventó el término" Ingeniería de software"". Archivado desde el original el 24 de noviembre de 2018 . Consultado el 12 de febrero de 2019 .
  12. ^ Sommerville, Ian (2016). Ingeniería de software (10 ed.). Inglaterra: Pearson Education Limited. pag. 19.ISBN 978-1-292-09613-1.
  13. ^ Pedro, Naur; Randell, Brian (7 a 11 de octubre de 1968). Ingeniería de software: Informe de una conferencia patrocinada por el Comité Científico de la OTAN (PDF) . Garmisch, Alemania: División de Asuntos Científicos, OTAN . Consultado el 26 de diciembre de 2008 .
  14. ^ Randell, Brian (10 de agosto de 2001). "Los informes de ingeniería de software de la OTAN de 1968/69". Página de inicio de la Universidad de Brian Randell . Facultad de Ciencias de la Computación de la Universidad de Newcastle . Consultado el 11 de octubre de 2008 . La idea de la primera Conferencia de Ingeniería de Software de la OTAN, y en particular la de adoptar como título (deliberadamente provocativo) el entonces prácticamente desconocido término "ingeniería de software", creo que surgió originalmente del profesor Fritz Bauer .
  15. ^ 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 - Fred Brooks". YouTube . Consultado el 9 de agosto de 2018 .{{cite web}}: CS1 maint: numeric names: authors list (link)
  16. ^ 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 agosto de 2018 .{{cite web}}: CS1 maint: numeric names: authors list (link)
  17. ^ "ISO/IEC TR 19759:2005" . Consultado el 1 de abril de 2012 .
  18. ^ "El grupo de trabajo conjunto para planes de estudios de informática 2005" (PDF) . 2014-10-21. Archivado (PDF) desde el original el 21 de octubre de 2014 . Consultado el 16 de abril de 2020 .
  19. ^ Ingeniería de software y sistemas - Vocabulario , ISO / IEC / IEEE std 24765:2010(E), 2010.
  20. ^ Glosario estándar IEEE de terminología de ingeniería de software , IEEE std 610.12-1990, 1990.
  21. ^ Sommerville, Ian (2007) [1982]. "1.1.2 ¿Qué es la ingeniería de software?". Ingeniería de software (8ª ed.). Harlow, Inglaterra: Pearson Education. pag. 7.ISBN 978-0-321-31379-9. La ingeniería de software es una disciplina de ingeniería que se ocupa de todos los aspectos de la producción de software, desde las primeras etapas de la especificación del sistema hasta el mantenimiento del sistema después de su puesta en uso. En esta definición, hay dos frases clave:
    1. Disciplina de ingeniería Los ingenieros hacen que las cosas funcionen. Aplican teorías, métodos y herramientas cuando son apropiados [. . .] Los ingenieros también reconocen que deben trabajar con limitaciones organizativas y financieras. [. . .]
    2. Todos los aspectos de la producción de software La ingeniería de software no se ocupa sólo de los procesos técnicos del desarrollo de software sino también de actividades como la gestión de proyectos de software y el desarrollo de herramientas, métodos y teorías para respaldar la producción de software.
  22. ^ "Ingeniería de software". Procesamiento de información . 71 : 530–538.
  23. ^ "Definición de INGENIERÍA DE SOFTWARE". www.merriam-webster.com . Consultado el 25 de noviembre de 2019 .
  24. ^ Inviernos, Tito; Manshrec, Tom; Wright, Hyrum (2020). "Prefacio, programación a lo largo del tiempo". Ingeniería de Software en Google . O'Reilly Media, Inc. págs. xix–xx, 6–7. ISBN 978-1-492-08279-8. Proponemos que la "ingeniería de software" abarca no sólo el acto de escribir código, sino todas las herramientas y procesos que utiliza una organización para construir y mantener ese código a lo largo del tiempo. ¿Qué prácticas puede introducir una organización de software para mantener mejor su código valioso a largo plazo? ¿Cómo pueden los ingenieros hacer que una base de código sea más sostenible y que la disciplina de ingeniería de software sea más rigurosa?
  25. ^ Akram I. Salah (5 de abril de 2002). «Ingeniería de un Programa Académico en Ingeniería de Software» (PDF) . 35º Simposio Anual de Instrucción y Computación del Medio Oeste . Consultado el 13 de septiembre de 2006 .: "Para algunos, la ingeniería de software es sólo un nombre glorificado para la programación. Si eres programador, puedes poner 'ingeniero de software' en tu tarjeta de presentación, aunque nunca 'programador'".
  26. ^ Mills, Harlan D., JR Newman y CB Engle, Jr., "Un plan de estudios universitario en ingeniería de software", en Deimel, Lionel E. (1990). Educación en ingeniería de software: Conferencia SEI 1990, Pittsburgh, Pensilvania, EE. UU., 2 al 3 de abril de ... Saltador. ISBN 978-0-387-97274-9.,pag. 26: "Como cuestión práctica, consideramos la ingeniería de software como la preparación necesaria para el profesional en ejercicio, desarrollo y mantenimiento de software. El informático se está preparando para estudios teóricos adicionales..."
  27. ^ David Budgen; Perla Brereton; Bárbara Kitchenham ; Stephen Linkman (14 de diciembre de 2004). "Realización de la ingeniería de software basada en evidencia". Archivado desde el original el 17 de diciembre de 2006 . Consultado el 18 de octubre de 2006 .: "Creemos que la ingeniería de software sólo puede avanzar como disciplina de ingeniería alejándose de su actual dependencia de la promoción y el análisis..."
  28. ^ Lawrence, Snyder (2017). Fluidez con la tecnología de la información: habilidades, conceptos y capacidades ([Séptima edición] ed.). Nueva York, Nueva York. ISBN 978-0134448725. OCLC  960641978.{{cite book}}: CS1 maint: location missing publisher (link)
  29. ^ Parnas, David L. (1998). "Los programas de ingeniería de software no son programas de informática". Anales de ingeniería de software . 6 : 19–37. doi :10.1023/A:1018949113292. S2CID  35786237., pag. 19: "En lugar de tratar la ingeniería de software como un subcampo de la informática, la trato como un elemento del conjunto, {Ingeniería civil, Ingeniería mecánica, Ingeniería química, Ingeniería eléctrica,....}".
  30. ^ Parnas, David L. (1998). "Los programas de ingeniería de software no son programas de informática". Anales de ingeniería de software . 6 : 19–37. doi :10.1023/A:1018949113292. S2CID  35786237., pag. 20: "Este artículo sostiene que la introducción de programas profesionales acreditados en ingeniería de software, programas que siguen el modelo de programas en disciplinas de ingeniería tradicionales, ayudará a aumentar tanto la calidad como la cantidad de graduados que estén bien preparados, por su educación, para desarrollar habilidades confiables. productos de software."
  31. ^ McConnell, Steve (agosto de 2003). Desarrollo de software profesional: cronogramas más cortos, mejores proyectos, productos superiores, carreras mejoradas . Boston, MA: Addison-Wesley. ISBN 0-321-19367-9., pag. 39: "En mi opinión, la respuesta a esa pregunta es clara: el desarrollo de software profesional debería ser ingeniería. ¿Lo es? No. ¿Pero debería serlo? Sin duda, sí".
  32. ^ Knuth, Donald (1974). "La programación informática como arte" (PDF) . Comunicaciones de la ACM . 17 (12): 667–673. doi : 10.1145/361604.361612 . S2CID  207685720.Transcripción de la conferencia del Premio Turing de 1974 .
  33. ^ Dijkstra, Edsger W ; transcrito por Mario Béland (23 de noviembre de 2004) [Publicado por primera vez el 3 de diciembre de 1993]. "Todavía hay una guerra (manuscrito Austin, 3 de diciembre de 1993)". Archivo EW Dijkstra . Universidad de Texas en Austin, Departamento de Ciencias de la Computación . Consultado el 17 de febrero de 2007 . Cuando FL Bauer, de la Universidad Tecnológica de Munich, acuñó el término en 1968, lo acogí con agrado. [. . .] Interpreté la introducción del término "ingeniería de software" como un reflejo acertado del hecho de que el diseño de sistemas de software era una actividad por excelencia para el ingeniero matemático. [. . .]. Tan pronto como el término llegó a Estados Unidos, fue relevado de todo su contenido técnico. Tenía que ser así porque en su significado original era totalmente inaceptable [. . .] Mientras tanto, ingeniería de software se ha convertido en un término casi vacío, como lo demostró claramente Data General, que de la noche a la mañana promovió a todos sus programadores al exaltado rango de "ingenieros de software".
  34. ^ "Ingeniería de software | Clasificación de requisitos de software". Geeks para Geeks . 2018-06-19 . Consultado el 6 de mayo de 2021 .
  35. ^ "Ingeniería de software | Proceso de diseño de software". Geeks para Geeks . 2019-05-24 . Consultado el 6 de mayo de 2021 .
  36. ^ "¿Qué es el mantenimiento de software? Definición de mantenimiento de software, significado de mantenimiento de software". Los tiempos económicos . Consultado el 6 de mayo de 2021 .
  37. ^ Abran, Alain, ed. (2005) [2004]. "Capítulo 1: Introducción a la Guía". Guía del cuerpo de conocimientos de ingeniería de software. Los Alamitos: Sociedad de Computación IEEE. ISBN 978-0-7695-2330-9. Archivado desde el original el 9 de mayo de 2016 . Consultado el 13 de septiembre de 2010 . Se pretende que el volumen total de literatura citada sea adecuado para el dominio mediante la finalización de una educación universitaria más cuatro años de experiencia.
  38. ^ "Plan de estudios de ingeniería de software SE2014" (PDF) . Consultado el 7 de abril de 2023 .
  39. ^ Cowling, AJ 1999. La primera década de un programa de pregrado en ingeniería de software. Ana. Software. Ing. 6, 1–4 (abril de 1999), 61–90.
  40. ^ "Programas de ingeniería acreditados por ABET". 3 de abril de 2007. Archivado desde el original el 19 de junio de 2010 . Consultado el 3 de abril de 2007 .
  41. ^ McConnell, Steve (10 de julio de 2003). Desarrollo de software profesional: cronogramas más cortos, productos de mayor calidad, proyectos más exitosos, carreras mejoradas . ISBN 978-0-321-19367-4
  42. ^ Ingeniería de software: guía para el conjunto de conocimientos de ingeniería de software (SWEBOK), Organización Internacional de Normalización, 2015 , consultado el 11 de enero de 2020
  43. ^ Williams, Nueva Gales del Sur (19 a 21 de febrero de 2001). "Enfoque de Professional Engineers Ontario para otorgar licencias a los profesionales de la ingeniería de software". Educación y formación en ingeniería de software, actas de 2001. XIV Conferencia sobre . Charlotte, Carolina del Norte: IEEE . págs. 77–78.
  44. ^ "Especificaciones del examen de ingeniería de software NCEES" (PDF) . Archivado desde el original (PDF) el 27 de agosto de 2013 . Consultado el 1 de abril de 2012 .
  45. ^ "NCEES suspende el examen de ingeniería de software PE". Consejo Nacional de Examinadores de Ingeniería y Agrimensura. 13 de marzo de 2018 . Consultado el 6 de agosto de 2018 .
  46. ^ "Guía SWEBOK versión 3" . Consultado el 9 de marzo de 2015 .
  47. ^ "Código de ética de la ingeniería de software" (PDF) . Consultado el 25 de marzo de 2012 .
  48. ^ Labs, Qubit (29 de noviembre de 2022). "¿Cuántos programadores hay en el mundo y en Estados Unidos? [2023]". Laboratorios Qubit . Consultado el 7 de febrero de 2023 .
  49. ^ "Estudio demográfico y de población de desarrolladores globales 2016 V2". Corporación de datos Evans . Consultado el 19 de enero de 2017 .
  50. ^ ab Rosenthal, Rachel (4 de agosto de 2020). "Las empresas de tecnología quieren hacerle creer que Estados Unidos tiene una brecha de habilidades". Bloomberg . Consultado el 8 de octubre de 2021 .
  51. ^ "Ingenieros de software y programadores informáticos" . Consultado el 17 de diciembre de 2009 .
  52. ^ "Desarrolladores de software". Manual de perspectivas laborales . Oficina de Estadísticas Laborales de EE. UU. 4 de septiembre de 2019 . Consultado el 11 de diciembre de 2019 .
  53. ^ "Disciplinas y especializaciones en informática" (PDF) . ACM . Consultado el 6 de septiembre de 2019 .
  54. ^ ab "Desarrolladores de software: manual de perspectivas ocupacionales". Oficina de Estadísticas Laborales de EE. UU.
  55. ^ "Ingeniero de software informático". Oficina de estadísticas laborales. 19 de marzo de 2010. Archivado desde el original el 26 de julio de 2013 . Consultado el 20 de julio de 2012 .
  56. ^ "Desarrolladores de software". Oficina de estadísticas laborales. 8 de enero de 2014 . Consultado el 21 de julio de 2012 .
  57. ^ abcde "Programadores informáticos: manual de perspectivas laborales: Oficina de estadísticas laborales de EE. UU.". Archivado desde el original el 3 de mayo de 2019 . Consultado el 17 de enero de 2017 .
  58. ^ "Archivo por publicación: más allá de los números: Oficina de Estadísticas Laborales de EE. UU.". www.bls.gov .
  59. ^ "El ingeniero de software integrado que pronto se extinguirá". designnews.com . 10 de mayo de 2018.
  60. ^ "Portal para desarrolladores de HP | Semana internacional de la mujer de HP: las mujeres en la informática disminuyen desde la década de 1980". desarrolladores.hp.com .
  61. ^ "¿Los trabajos de ingeniero de software están en peligro debido a herramientas similares a ChatGPT? Esto es lo que tiene que decir el director ejecutivo de Google, Sundar Pichai". Negocios hoy . 2023-04-06 . Consultado el 12 de mayo de 2023 .
  62. ^ "ChatGPT podría hacer que estos trabajos queden obsoletos". 2023-01-25 . Consultado el 12 de mayo de 2023 .
  63. ^ Kay, gracia. "Los ingenieros de software tienen pánico a ser reemplazados por la IA". Business Insider . Consultado el 12 de mayo de 2023 .
  64. ^ Cazador de aves, Gary. "Publicación del consejo: ¿Cómo afectará ChatGPT a los empleos?". Forbes . Consultado el 12 de mayo de 2023 .
  65. ^ Ito, Aki. "ChatGPT significa el fin de la codificación tal como la conocemos". Business Insider . Consultado el 12 de mayo de 2023 .
  66. ^ Zinkula, Aaron Mok, Jacob. "Es posible que ChatGPT venga a ocupar nuestro puesto de trabajo. Aquí están los 10 roles que la IA probablemente reemplazará". Business Insider . Consultado el 12 de mayo de 2023 . {{cite web}}: CS1 maint: multiple names: authors list (link)
  67. ^ Cohen, Mikaela. "Estos son los empleos tecnológicos más amenazados por ChatGPT y la IA" CNBC . Consultado el 12 de mayo de 2023 .
  68. ^ "Página de certificación SEI". Sei.cmu.edu . Consultado el 25 de marzo de 2012 .
  69. ^ Wyrostek, Warren (14 de marzo de 2008). "Los 10 principales problemas de la certificación de TI en 2008". Informar . Consultado el 3 de marzo de 2009 .
  70. ^ Sociedad de Computación IEEE. "Informe de la sociedad de informática IEEE de 2006 a la Asamblea General del IFIP" (PDF) . Consultado el 10 de abril de 2007 .
  71. ^ IEEE. "CSDA" . Consultado el 20 de abril de 2010 .
  72. ^ ACM (17 de julio de 2000). "Un resumen de la posición de ACM en ingeniería de software como profesión de ingeniería con licencia" (PDF) . Asociación de Maquinaria de Computación (ACM). Archivado desde el original (PDF) el 17 de mayo de 2008 . Consultado el 3 de marzo de 2009 . En su reunión de mayo de 2000, el Consejo concluyó además que el marco de un ingeniero profesional con licencia, desarrollado originalmente para ingenieros civiles, no coincide con la práctica industrial profesional de la ingeniería de software. Esas prácticas de concesión de licencias darían falsas garantías de competencia incluso si el conjunto de conocimientos fuera maduro; e impediría que muchos de los ingenieros de software más calificados obtuvieran una licencia.
  73. ^ Sociedad Canadiense de Procesamiento de Información. "Designación de ISP" . Consultado el 15 de marzo de 2007 .
  74. ^ "Professional Engineers Ontario: Bienvenido al sitio web de PEO". Peo.on.ca.Consultado el 25 de marzo de 2012 .
  75. ^ Thibodaux, Patrick (5 de mayo de 2006). "A medida que la subcontratación cobra fuerza, el interés por la informática disminuye". Computerworld.com . Consultado el 6 de diciembre de 2016 .
  76. ^ "Programadores informáticos". Bls.gov . Consultado el 25 de marzo de 2012 .
  77. ^ Mullins, Robert (13 de marzo de 2007). "El crecimiento de los desarrolladores de software se desacelera en América del Norte". InfoMundo . Archivado desde el original el 4 de abril de 2009 . Consultado el 25 de marzo de 2012 .
  78. ^ "Cuadrante Mágico de Gartner" (PDF) . Cognizant.com . Consultado el 25 de marzo de 2012 .
  79. ^ Casey, San Valentín (20 de agosto de 2010). "Gestión de proyectos de equipos de software virtual". Revista de la Sociedad Brasileña de Computación . 16 (2): 83–96. doi : 10.1007/s13173-010-0013-3 . S2CID  14383734.
  80. ^ Algunos enlaces externos:
    • Premios SIGSOFT
    • Premio al artículo más influyente de ICSE
    • Una lista de varios premios de ingeniería de software (y relacionados con SE)
  81. ^ Dijkstra, EW (1988). "Sobre la crueldad de enseñar realmente ciencias de la computación" . Consultado el 10 de enero de 2014 .

Fuentes

Otras lecturas

enlaces externos