Ingeniería de software

Enfoque de ingeniería para el desarrollo de software

La ingeniería de software es un enfoque de ingeniería para el desarrollo de software . [1] [2] [3] Un profesional, llamado ingeniero de software , aplica el proceso de diseño de ingeniería para desarrollar software .

Los términos programador y codificador se superponen con los de ingeniero de software , pero implican únicamente el aspecto de construcción de la carga de trabajo típica del ingeniero de software. [4]

Un ingeniero de software aplica un proceso de desarrollo de software , [1] [5] que implica definir, implementar , probar , administrar y mantener sistemas de software y crear y modificar el proceso de desarrollo.

Historia

A partir de la década de 1960, la ingeniería de software fue reconocida como un campo separado de la ingeniería .

El desarrollo de la ingeniería de software se consideraba una lucha. Entre los problemas se encontraban programas que superaban el presupuesto, excedían los plazos, requerían de una depuración y un mantenimiento exhaustivos y no satisfacían las necesidades de los consumidores o ni siquiera se terminaban de fabricar.

En 1968, la OTAN celebró la primera conferencia de ingeniería de software en la que se abordaron cuestiones relacionadas con el software y 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 varias 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ó de forma más formal en la edición de agosto de 1966 de Communications of the ACM (volumen 9, número 8) en "President's Letter to the ACM Membership" de 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 la "ingeniería de software" durante las misiones Apolo para dar legitimidad a lo que estaban haciendo. [11] En ese momento se percibía que había una " crisis del software ". [12] [13] [14] La 40ª Conferencia Internacional sobre Ingeniería de Software (ICSE 2018) celebra 50 años de "Ingeniería de Software" con las conferencias magistrales de Frederick Brooks [15] y Margaret Hamilton . [16]

En 1984, se estableció el Instituto de Ingeniería de Software (SEI) como un centro de investigación y desarrollo financiado por el gobierno federal con sede en el campus de la Universidad Carnegie Mellon en Pittsburgh, Pensilvania , Estados Unidos. [17] Watts Humphrey fundó el Programa de Proceso de Software SEI, destinado a comprender y gestionar el proceso de ingeniería de software. [17] Los niveles de madurez del proceso introducidos se convirtieron en el Modelo de Integración de Madurez de Capacidad para el Desarrollo (CMMI-DEV), que definió cómo el gobierno de los EE. UU. evalúa las habilidades de un equipo de desarrollo de software.

El subcomité JTC 1/SC 7 de ISO/IEC ha recopilado las mejores prácticas modernas y generalmente aceptadas para la ingeniería de software y las ha publicado como Software Engineering Body of Knowledge (SWEBOK). [5] La ingeniería de software se considera una de las principales disciplinas informáticas . [18]

Terminología

Definición

Entre las definiciones notables de ingeniería de software se incluyen:

  • "La aplicación sistemática de conocimientos científicos y tecnológicos, métodos y experiencias al diseño, implementación, prueba y documentación de software".—Oficina de Estadísticas Laborales— Ingeniería de sistemas y software IEEE – Vocabulario [19]
  • "La aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software".— Glosario estándar IEEE de terminología de ingeniería de software [20]
  • "Una disciplina de ingeniería que se ocupa de todos los aspectos de la producción de software".— Ian Sommerville [21]
  • "El establecimiento y uso de principios sólidos de ingeniería para obtener de forma económica un software que sea confiable y funcione de manera eficiente en máquinas reales".— Fritz Bauer [22]
  • "Una rama de la informática que se ocupa del diseño, la implementación y el mantenimiento de programas informáticos complejos ". — Merriam-Webster [23]
  • " La 'ingeniería de software' no sólo abarca el acto de escribir código, sino todas las herramientas y procesos que utiliza una organización para crear y mantener ese código a lo largo del tiempo. [...] La ingeniería de software puede considerarse como 'programación integrada a lo largo del tiempo ' ". —Ingeniería de software en Google [24]

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

  • como el término contemporáneo informal para la amplia gama de actividades que antes se llamaban programación informática y análisis de sistemas [25]
  • como término amplio para todos los aspectos de la práctica de la programación informática, a diferencia de la teoría de la programación informática, que se estudia formalmente como una subdisciplina de la informática [26]
  • como el término que representa la defensa de un enfoque específico para la programación informática, que insta a que se la trate como una disciplina de ingeniería en lugar de un arte o una artesanía, y aboga por la codificación de prácticas recomendadas [27]

Etimología

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 debí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ó por primera vez el término, nadie lo había oído antes, al menos en nuestro mundo. Fue una broma constante durante mucho tiempo. Les gustaba bromear conmigo sobre mis ideas radicales. Fue un día memorable cuando uno de los gurús de 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" en sí, 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

Los comentaristas individuales han discrepado profundamente 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 han sido mal utilizados en los Estados Unidos. [33]

Carga de trabajo

Análisis de requisitos

La ingeniería de requisitos se ocupa de la obtención, el análisis, la especificación y la validación de los requisitos del software . Los requisitos del software pueden ser funcionales , no funcionales o de dominio.

Los requisitos funcionales describen los comportamientos esperados (es decir, los resultados). Los requisitos no funcionales especifican cuestiones como portabilidad, seguridad, mantenibilidad, confiabilidad, escalabilidad, rendimiento, reutilización y 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. El conocimiento de cómo funciona el sistema o el software es necesario 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

El diseño de software es el proceso de elaboración de planes de alto nivel para el software. El diseño a veces se divide en niveles:

Construcción

La construcción de software generalmente implica programación (también conocida como codificación), pruebas unitarias , pruebas de integración y depuración para implementar el diseño. [1] [5] “Las pruebas de software están relacionadas con la depuración, pero son diferentes a ella”. [5] Las pruebas durante esta fase generalmente las realiza el programador y tienen el propósito de verificar que el código se comporte como se diseñó y saber cuándo el código está listo para el siguiente nivel de pruebas. [ cita requerida ]

Pruebas

Las pruebas de software son una investigación técnica y empírica que se lleva a cabo para proporcionar a las partes interesadas información sobre la calidad del software bajo prueba. [1] [5]

Cuando se describen por separado de la construcción, las pruebas suelen estar a cargo de ingenieros de pruebas o de control de calidad en lugar de los programadores que las escribieron. Se realizan a nivel de sistema y se consideran un aspecto de la calidad del software .

Análisis del programa

El análisis de programas es el proceso de analizar programas de computadora con respecto a un aspecto como el rendimiento , la solidez y la seguridad .

Mantenimiento

El mantenimiento de software se refiere al soporte del software después de su lanzamiento. Puede incluir, entre otras cosas: corrección de errores , optimización, eliminación de funciones no utilizadas o descartadas y mejora de funciones existentes. [1] [5]

Por lo general, el mantenimiento representa entre el 40% y el 80% del costo del proyecto. [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 ha publicado como Informe técnico ISO/IEC 1979:2005, que describe el conjunto de conocimientos que recomiendan dominar por 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. Un plan de estudios internacional estándar para los títulos de ingeniería de software de pregrado fue definido por el Grupo de trabajo conjunto sobre planes de estudio de informática de la IEEE Computer Society y la Association for Computing Machinery , y actualizado en 2014. [18] Varias universidades tienen programas de grado en ingeniería de software; a partir de 2010 [update], había 244 programas de licenciatura en ingeniería de software en campus , 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 una carrera en tecnología de la información. Estas pasantías pueden introducir al estudiante en tareas del mundo real que los ingenieros de software típicos enfrentan 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 de la actualidad tienen títulos en informática , sistemas de información o tecnología de la información . [ cita requerida ] Un pequeño pero creciente número de profesionales tienen títulos en ingeniería de software. En 1987, el Departamento de Informática del Imperial College de Londres introdujo la primera licenciatura en ingeniería de software de tres años del mundo; al año siguiente, la Universidad de Sheffield estableció un programa similar. [38] 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, el mismo año que la Universidad Rice , la Universidad Clarkson , la Escuela de Ingeniería de Milwaukee y la Universidad Estatal de Mississippi . [39] En 1997, el PSG College of Technology en Coimbatore, India, fue el primero en iniciar una maestría integrada de cinco años en Ciencias en Ingeniería de Software. [ cita requerida ]

Desde entonces, se han establecido títulos de grado en ingeniería de software en muchas universidades. Un comité directivo definió un plan de estudios internacional estándar para títulos de grado en ingeniería de software, SE2004 , entre 2001 y 2004 con financiación de la Association for Computing Machinery y la IEEE Computer Society . A partir de 2004 [update], alrededor de 50 universidades en los EE. UU. ofrecen títulos de ingeniería de software, que enseñan principios y prácticas de ingeniería y ciencias de la computación. El primer título de maestría en ingeniería de software se estableció en la Universidad de Seattle en 1979. Desde entonces, se han ofrecido títulos de posgrado en ingeniería de software en muchas más universidades. 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 de Postgrado Naval de los Estados Unidos (NPS) estableció el primer programa de doctorado en Ingeniería de Software del mundo. [ cita requerida ] Además, han aparecido muchos títulos avanzados en línea en Ingeniería de Software, como el título de Maestría en Ciencias en Ingeniería de Software (MSE) ofrecido a través del Departamento de Ciencias de la Computación e Ingeniería 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. [40] 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 un estándar ISO que describe el cuerpo de conocimientos cubierto por un ingeniero de software. [5]

Profesión

Los requisitos legales para la obtención de licencias o certificaciones de ingenieros de software profesionales varían en todo el mundo. En el Reino Unido, no existe ningún requisito legal o 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 [41] 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 cualificación profesional de ingeniero colegiado a través de la British Computer Society .

En los Estados Unidos, la NCEES comenzó a ofrecer un examen de Ingeniero Profesional para Ingeniería de Software en 2013, lo que permitió que los Ingenieros de Software obtuvieran licencia y fueran reconocidos. [42] La NCEES finalizó el examen después de abril de 2019 debido a la falta de participación. [43] Actualmente, la concesión obligatoria de licencias todavía es objeto de un gran debate y se percibe como controvertida. [44] [45]

La IEEE Computer Society y la ACM , las dos principales organizaciones profesionales de ingeniería de software con sede en Estados Unidos, publican guías para la profesión de ingeniería de software. La Guía del IEEE para el Cuerpo de 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. La versión más actual, SWEBOK v3, es una versión actualizada y se publicó en 2014. [5] El IEEE también promulga un "Código de Ética de Ingeniería de Software". [46]

Empleo

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

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 tienen especialistas para realizar cada una de las tareas en el 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 un solo rol. 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 de colegios durante las vacaciones de verano o pasantías . Las especializaciones incluyen analistas , arquitectos , desarrolladores , probadores , 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. [49] Las lesiones potenciales en estas ocupaciones son posibles porque, al igual que otros trabajadores que pasan largos períodos sentados frente a una terminal de computadora escribiendo en un teclado, los ingenieros y programadores son susceptibles a la fatiga visual, molestias en la espalda, trombosis , obesidad y problemas en las manos y muñecas como el síndrome del túnel carpiano . [50]

Estados Unidos

La Oficina de Estadísticas Laborales de Estados Unidos (BLS) contabilizó 1.365.500 desarrolladores de software que tenían empleo en Estados Unidos en 2018. [51] Debido a su relativa novedad como campo de estudio, la educación formal en ingeniería de software a menudo se enseña como parte de un plan de estudios de informática, y muchos ingenieros de software tienen títulos en informática. [52] La BLS estima que de 2023 a 2033 la ingeniería de software aumentaría un 17%. [53] Esto es inferior a la estimación de la BLS de 2022 a 2032 del 25% para la ingeniería de software. [53] [54] Y es aún más inferior a su estimación del 30% de 2010 a 2020 de la BLS. [55] 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 Estados Unidos se subcontratarían a ingenieros de software en países como India y otros países extranjeros. [56] [49] Además, las Perspectivas laborales de la BLS para programadores de computadoras y las Perspectivas ocupacionales de la Oficina de Estadísticas Laborales de EE. UU. (BLS) predicen 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. [56] y luego una disminución del -11 por ciento de 2022 a 2032. [56] 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. [56] [57] [58] Además, las mujeres en muchos campos de software también han estado disminuyendo a lo largo de los años en comparación con otros campos de ingeniería. [59] Luego está la preocupación adicional de que los avances recientes en Inteligencia Artificial podrían afectar la demanda de futuras generaciones de ingenieros de software. [60] [61] [62] [63] [64] [65] [66] Sin embargo, esta tendencia puede cambiar o desacelerarse en el futuro a medida que muchos ingenieros de software actuales en el mercado estadounidense abandonen la profesión o envejezcan fuera del mercado en las próximas décadas. [56]

Proceso de dar un título

El Instituto de Ingeniería de Software ofrece certificaciones en temas específicos como seguridad , mejora de procesos y arquitectura de software . [67] 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 son administrados por los proveedores de estas tecnologías. [68] Estos programas de certificación están diseñados para las instituciones que emplearían a personas que utilizan estas tecnologías.

La certificación más amplia de las habilidades generales de ingeniería de software está disponible a través de varias sociedades profesionales. En 2006 [update], el IEEE había certificado a más de 575 profesionales del software como Certified Software Development Professional (CSDP). [69] En 2008, añadieron una certificación de nivel de entrada conocida como Certified Software Development Associate (CSDA). [70] La ACM tenía un programa de certificación profesional a principios de los años 1980, [ cita requerida ] que se interrumpió debido a la falta de interés. La ACM y la IEEE Computer Society examinaron conjuntamente la posibilidad de otorgar licencias a los ingenieros de software como ingenieros profesionales en los años 1990, pero finalmente decidieron que dichas licencias eran inadecuadas para la práctica industrial profesional de la ingeniería de software. [44] John C. Knight y Nancy G. Leveson presentaron un análisis más equilibrado de la cuestión de las licencias en 2002. [45]

En el Reino Unido, la British Computer Society ha desarrollado una certificación profesional legalmente reconocida llamada Chartered IT Professional (CITP) , disponible para miembros completamente calificados ( MBCS ). Los ingenieros de software pueden ser elegibles para ser miembros de la British Computer Society o la Institution of Engineering and Technology y, por lo tanto, calificar para ser considerados para el estado de Chartered Engineer a través de cualquiera de esas instituciones. En Canadá, la Canadian Information Processing Society ha desarrollado una certificación profesional legalmente reconocida llamada Information Systems Professional (ISP) . [71] En Ontario, Canadá, los ingenieros de software que se gradúan de un programa acreditado por la Canadian Engineering Accreditation Board (CEAB) , completan exitosamente el examen de práctica profesional (PPE) de PEO ( Professional Engineers Ontario ) y tienen al menos 48 meses de experiencia aceptable en ingeniería son elegibles para obtener una licencia a través de Professional Engineers Ontario y pueden convertirse en ingenieros profesionales P.Eng. [72] 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 certificación. También ha mantenido excepcionalmente bajo el número de titulares de títulos de P.Eng en la profesión. La gran mayoría de los profesionales que trabajan en el campo tienen un título en informática, no en ingeniería eléctrica. Dada la difícil vía de certificación para los titulares de títulos no relacionados con la ingeniería eléctrica, 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 las actividades de desarrollo de software de las 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 algunas fallas, principalmente la diferencia de distancia / zona horaria que impedía la interacción humana entre clientes y desarrolladores y la transferencia masiva de trabajos. 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 debido al miedo 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 visa . [73] Aunque las estadísticas actualmente no muestran una amenaza para la ingeniería de software en sí, una carrera relacionada, la programación de computadoras , parece haberse visto afectada. [74] Sin embargo, la capacidad de aprovechar inteligentemente los recursos offshore y nearshore a través del flujo de trabajo follow the sun ha mejorado la capacidad operativa general de muchas organizaciones. [75] Cuando los norteamericanos dejan el trabajo, los asiáticos están llegando para trabajar. Cuando los asiáticos están dejando el trabajo, los europeos llegan para trabajar. Esto proporciona una capacidad continua de tener supervisión humana sobre procesos críticos para el negocio las 24 horas del día, sin pagar compensación por horas extras ni interrumpir los patrones de sueño de un recurso humano clave.

Si bien la subcontratación global tiene varias ventajas, el desarrollo global (y generalmente distribuido) puede enfrentar serias dificultades como resultado de la distancia entre los desarrolladores. Esto se debe a los elementos clave de este tipo de distancia que se han identificado como geográficos, temporales, culturales y de comunicación (que incluyen el uso de diferentes idiomas y dialectos del inglés en diferentes lugares). [76] Se han realizado investigaciones en el área del desarrollo de software global durante los últimos 15 años y se ha publicado una amplia cantidad de trabajos relevantes que destacan los beneficios y los problemas asociados con la compleja actividad. Al igual que con otros aspectos de la ingeniería de software, se están realizando investigaciones en esta y otras áreas relacionadas.

Premios

Existen varios premios en el campo de la ingeniería de software:

  • El premio Codie , un premio anual otorgado por la Asociación de la Industria de Software e Información por la excelencia en el desarrollo de software dentro de la industria del software.
  • Premio Harlan Mills por "contribuciones a la teoría y la práctica de las ciencias de la información, centradas en la ingeniería de software".
  • Premio ICSE al artículo más influyente. [79]


Crítica

Algunos piden licencias, certificación y cuerpos codificados de conocimiento como mecanismos para difundir el conocimiento de ingeniería y hacer madurar el campo. [80]

Algunos afirman que el concepto de ingeniería de software es tan nuevo que rara vez se entiende 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. [81]

Algunos afirman que un problema central con 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 no existe o es muy limitada y, por lo tanto, la ingeniería de software a menudo se malinterpreta como factible solo en un "entorno teórico". [81]

Edsger Dijkstra , fundador de muchos de los conceptos de desarrollo de software actuales, rechazó la idea de "ingeniería de software" hasta su muerte en 2002, argumentando que esos términos eran analogías pobres para lo que él llamaba la "novedad radical" de la informática :

Muchos de estos fenómenos han sido agrupados bajo el nombre de "Ingeniería de software". Así como la economía es conocida como "La ciencia miserable", la ingeniería de software debería ser conocida como "La disciplina condenada", condenada 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 farsa: si lees atentamente su literatura y analizas lo que sus devotos realmente hacen, descubrirás que la ingeniería de software ha aceptado como su carta fundacional "Cómo programar si no puedes". [82]

Véase también

Estudia y practica

Roles

Aspectos profesionales

Referencias

Citas

  1. ^ abcde Abran y otros, 2004 harvnb error: no target: CITEREFAbranMooreBourqueDupuis2004 (help)
  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 debería saber sobre ingeniería de software. Boca Raton: CRC. ISBN 978-0-8493-7228-5. Recuperado el 21 de enero de 2011 .
  4. ^ Bogost, Ian (5 de noviembre de 2015). «Programadores: dejen de llamarse ingenieros». The Atlantic .
  5. ^ abcdefgh Bourque, Pierre; Fairley, Richard E. (Dick), eds. (2014). Guía del conjunto de conocimientos de ingeniería de software versión 3.0 (SWEBOK). IEEE Computer Society .
  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 de 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". Commun. ACM . 9 (8). Association for Computing Machinery: 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. "The 1968/69 NATO Software Engineering Reports" (Los informes de ingeniería de software de la OTAN de 1968/69) . Consultado el 17 de noviembre de 2017 .
  11. ^ Lori Cameron (5 de octubre de 2008). "Margaret Hamilton: la primera ingeniera de software". Noticias tecnológicas . IEEE Computer Society .
  12. ^ Ian Sommerville (24 de marzo de 2015). Ingeniería de software (10.ª edición). Pearson Education Limited. ISBN 978-0-13-394303-0.
  13. ^ Peter, Naur; Randell, Brian (7–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). "The 1968/69 NATO Software Engineering Reports". Página de inicio de la Universidad de Brian Randell . Facultad de Ciencias Informáticas, Universidad de Newcastle . Consultado el 11 de octubre de 2008. Creo que la idea de la primera Conferencia de Ingeniería de Software de la OTAN, y en particular la de adoptar el término entonces prácticamente desconocido "ingeniería de software" como su título (deliberadamente provocativo), 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 (31 de mayo de 2018). «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 (31 de mayo de 2018). «ICSE 2018 – Sesiones plenarias – Margaret Hamilton». YouTube . Consultado el 9 de agosto de 2018 .{{cite web}}: CS1 maint: numeric names: authors list (link)
  17. ^ por Linda Hutz Pesante (1 de enero de 2003). Anthony Ralston; Edwin D. Reilly (eds.). "Software engineering institute (SEI)". Encyclopedia of Computer Science . Chichester , West Sussex, Reino Unido: John Wiley and Sons Ltd .: 1611–1613. ISBN 978-0-470-86412-8( 1 ) El instituto fue otorgado competitivamente a Carnegie Mellon en diciembre de 1984 por el Departamento de Defensa de los EE. UU. (DoD) para mejorar el estado de la práctica de la ingeniería de software. ... (2) el SEI lleva soluciones maduras de valor comprobado a un uso generalizado; algunos ejemplos incluyen el Modelo de Madurez de Capacidades (CMM) ... Icono de acceso gratuito
  18. ^ ab Joint Task Force on Computing Curricula, IEEE Computer Society , Association for Computing Machinery (23 de febrero de 2015). Ingeniería de software 2014: Pautas curriculares para programas de grado en ingeniería de software (PDF) . Un volumen de la serie Computing Curricula. IEEE Computer Society y Association for Computing Machinery .{{cite book}}: CS1 maint: multiple names: authors list (link)
  19. ^ Ingeniería de sistemas y software – 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. pág. 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 que ha entrado 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 restricciones organizacionales y financieras. [. . .]
    2. Todos los aspectos de la producción de software La ingeniería de software no solo se ocupa 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 la 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. ^ Winters, Titus; Manshrec, Tom; Wright, Hyrum (2020). "Prefacio, Programación a lo largo del tiempo". Ingeniería de software en Google . O'Reilly Media, Inc. pp. xix–xx, 6–7. ISBN 978-1-492-08279-8Proponemos que la "ingeniería de software" abarque no sólo el acto de escribir código, sino todas las herramientas y procesos que utiliza una organización para crear y mantener ese código a lo largo del tiempo. ¿Qué prácticas puede introducir una organización de software para mantener el valor de su código a largo plazo? ¿Cómo pueden los ingenieros hacer que una base de código sea más sostenible y que la propia disciplina de ingeniería de software sea más rigurosa ?
  25. ^ Akram I. Salah (5 de abril de 2002). "Engineering an Academic Program in Software Engineering" (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 simplemente un nombre glorificado para la programación. Si eres programador, es posible que en tu tarjeta de presentación pongas 'ingeniero de software', pero nunca 'programador'".
  26. ^ Mills, Harlan D., JR Newman y CB Engle, Jr., "Un plan de estudios de pregrado 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 y 3 de abril de 1990. Springer. ISBN 978-0-387-97274-9.,p. 26: "En la práctica, consideramos que la ingeniería de software es la preparación necesaria para el profesional en ejercicio del desarrollo y mantenimiento de software. El informático se prepara para estudios teóricos posteriores..."
  27. ^ Barbara Kitchevnham; David Budgen; Pearl Brereton; Stephen Linkman (2005). "Realising evidence-based software engineering". Notas de ingeniería de software de ACM SIGSOFT . 30 (4): 1–3. doi :10.1145/1082983.1083175. Creemos que la ingeniería de software solo puede avanzar como disciplina de ingeniería si se aleja de su dependencia actual de la defensa y el análisis, ...
  28. ^ Lawrence, Snyder (2017). Fluidez en la tecnología de la información: habilidades, conceptos y capacidades ([Séptima edición] ed.). NY, NY. 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., p. 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., p. 20: "Este artículo sostiene que la introducción de programas profesionales acreditados en ingeniería de software, programas que se basen en programas de 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 productos de software confiables".
  31. ^ McConnell, Steve (agosto de 2003). Desarrollo de software profesional: plazos más breves, mejores proyectos, productos superiores, carreras profesionales mejoradas . Boston, MA: Addison-Wesley. ISBN 0-321-19367-9., p. 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 en curso (manuscrito Austin, 3 de diciembre de 1993)". Archivo EW Dijkstra . La 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 adecuado 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 los EE. UU., se le quitó todo su contenido técnico. Tenía que ser así porque en su significado original era totalmente inaceptable [. . .] Mientras tanto, la 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 "ingeniero de software".
  34. ^ "Ingeniería de software | Clasificación de requisitos de software". GeeksforGeeks . 2018-06-19 . Consultado el 2021-05-06 .
  35. ^ "Ingeniería de software | Proceso de diseño de software". GeeksforGeeks . 2019-05-24 . Consultado el 2021-05-06 .
  36. ^ "¿Qué es el mantenimiento de software? Definición de mantenimiento de software, significado de mantenimiento de software". The Economic Times . Consultado el 6 de mayo de 2021 .
  37. ^ Alain Abran; James W. Moore; Pierre Bourque; Robert Dupuis; Leonard L. Tripp, eds. (2005) [2004]. "Capítulo 1: Introducción a la Guía". Guía del conjunto de conocimientos de ingeniería de software. IEEE Computer Society . Archivado desde el original el 9 de mayo de 2016. Consultado el 13 de septiembre de 2010. El volumen total de la literatura citada está pensado para que sea adecuado para dominarla mediante la finalización de una educación universitaria más cuatro años de experiencia.
  38. ^ Cowling, AJ 1999. La primera década de un programa de licenciatura en ingeniería de software. Ann. Softw. Eng. 6, 1–4 (abril de 1999), 61–90.
  39. ^ "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 .
  40. ^ McConnell, Steve (10 de julio de 2003). Desarrollo de software profesional: plazos más breves, productos de mayor calidad, proyectos más exitosos, carreras profesionales mejoradas . ISBN 978-0-321-19367-4 . 
  41. ^ Williams, NSW (19–21 de febrero de 2001). "Enfoque de los ingenieros profesionales de Ontario para otorgar licencias a los profesionales de la ingeniería de software". Educación y capacitación en ingeniería de software, Actas de 2001. 14.ª conferencia sobre . Charlotte, NC: IEEE . págs. 77–78.
  42. ^ "Especificaciones del examen de ingeniería de software de NCEES" (PDF) . Archivado desde el original (PDF) el 2013-08-27 . Consultado el 2012-04-01 .
  43. ^ "NCEES discontinuing PE Software Engineering exam". Consejo Nacional de Examinadores de Ingeniería y Topografía. 13 de marzo de 2018. Consultado el 6 de agosto de 2018 .
  44. ^ ab Barbara Simons. "Expresidentes de la ACM reflexionan sobre su servicio a la ACM". Celebrando 75 años de promoción de la informática como ciencia y profesión. Association for Computing Machinery . Consultado el 18 de mayo de 2024. Después de que se enviaron las recomendaciones de los paneles, el Consejo de la ACM concluyó 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 e impediría que muchos de los ingenieros de software más calificados obtengan la licencia.
  45. ^ ab John C. Knight; Nancy G. Leveson (1 de noviembre de 2002). "¿Deberían los ingenieros de software tener licencia?". Communications of the ACM . 45 (11): 87–90. doi :10.1145/581571.581601.
  46. ^ "Código de ética de la ingeniería de software" (PDF) . Consultado el 25 de marzo de 2012 .
  47. ^ Labs, Qubit (29 de noviembre de 2022). «¿Cuántos programadores hay en el mundo y en Estados Unidos? [2023]». Qubit Labs . Consultado el 7 de febrero de 2023 .
  48. ^ "Estudio demográfico y de población de desarrolladores globales 2016 V2". Evans Data Corporation . Consultado el 19 de enero de 2017 .
  49. ^ ab Rosenthal, Rachel (4 de agosto de 2020). "Las empresas tecnológicas quieren que creas que Estados Unidos tiene una brecha de habilidades". Bloomberg . Consultado el 8 de octubre de 2021 .
  50. ^ "Ingenieros de software y programadores informáticos" . Consultado el 17 de diciembre de 2009 .
  51. ^ "Desarrolladores de software". Manual de perspectivas ocupacionales . Oficina de Estadísticas Laborales de EE. UU. 4 de septiembre de 2019. Consultado el 11 de diciembre de 2019 .
  52. ^ "Disciplinas y especialidades informáticas" (PDF) . Association for Computing Machinery . Consultado el 6 de septiembre de 2019 .
  53. ^ ab "Desarrolladores de software: Manual de perspectivas ocupacionales". Oficina de Estadísticas Laborales de Estados Unidos.
  54. ^ "Computer Software Engineer". 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 .
  55. ^ "Desarrolladores de software". Oficina de Estadísticas Laborales. 8 de enero de 2014. Consultado el 21 de julio de 2012 .
  56. ^ abcde «Programadores informáticos: Manual de perspectivas ocupacionales: Oficina de Estadísticas Laborales de Estados Unidos». Archivado desde el original el 3 de mayo de 2019. Consultado el 17 de enero de 2017 .
  57. ^ "Archivo por publicación: Más allá de los números: Oficina de Estadísticas Laborales de EE. UU." www.bls.gov .
  58. ^ "El ingeniero de software integrado que pronto se extinguirá". designnews.com . 10 de mayo de 2018.
  59. ^ "Portal para desarrolladores de HP | Semana Internacional de la Mujer de HP: el número de mujeres en Ciencias de la Computación ha disminuido desde los años 1980". developer.hp.com .
  60. ^ "¿Los trabajos de ingeniería de software están en peligro debido a herramientas como ChatGPT? Esto es lo que dice el director ejecutivo de Google, Sundar Pichai". Business Today . 2023-04-06 . Consultado el 2023-05-12 .
  61. ^ "ChatGPT podría dejar obsoletos estos trabajos". 25 de enero de 2023. Consultado el 12 de mayo de 2023 .
  62. ^ Kay, Grace. "Los ingenieros de software están en pánico por ser reemplazados por la IA". Business Insider . Consultado el 12 de mayo de 2023 .
  63. ^ Fowler, Gary. "Mensaje del consejo: ¿Cómo afectará ChatGPT a los empleos?". Forbes . Consultado el 12 de mayo de 2023 .
  64. ^ Ito, Aki. "ChatGPT significa el fin de la codificación tal como la conocemos". Business Insider . Consultado el 12 de mayo de 2023 .
  65. ^ Zinkula, Aaron Mok, Jacob. "ChatGPT podría llegar a nuestros puestos de trabajo. Estos son los 10 puestos que la IA probablemente reemplazará". Business Insider . Consultado el 12 de mayo de 2023 . {{cite web}}: CS1 maint: multiple names: authors list (link)
  66. ^ Cohen, Mikaela (15 de abril de 2023). "Estos son los empleos tecnológicos más amenazados por ChatGPT y la IA" CNBC . Consultado el 12 de mayo de 2023 .
  67. ^ "Página de certificación SEI". Sei.cmu.edu . Consultado el 25 de marzo de 2012 .
  68. ^ Wyrostek, Warren (14 de marzo de 2008). "Los 10 principales problemas con la certificación de TI en 2008". InformIT . Consultado el 3 de marzo de 2009 .
  69. ^ IEEE Computer Society . «Informe de la IEEE Computer Society de 2006 a la Asamblea General de la IFIP» (PDF) . Consultado el 10 de abril de 2007 .
  70. ^ IEEE. "CSDA" . Consultado el 20 de abril de 2010 .
  71. ^ Sociedad Canadiense de Procesamiento de la Información. «Designación de ISP» . Consultado el 15 de marzo de 2007 .
  72. ^ "Ingenieros profesionales de Ontario: bienvenidos al sitio web de PEO". Peo.on.ca. Consultado el 25 de marzo de 2012 .
  73. ^ Thibodaux, Patrick (5 de mayo de 2006). "A medida que la subcontratación gana impulso, el interés por la ciencia informática disminuye". Computerworld.com . Consultado el 6 de diciembre de 2016 .
  74. ^ Robert Mullins (13 de marzo de 2007). "El crecimiento de los desarrolladores de software se desacelera en América del Norte: un estudio muestra que Asia liderará en empleos de desarrolladores de software en 2010". InfoWorld . Desarrollo de software.
  75. ^ "Cuadrante mágico de Gartner" (PDF) . Cognizant.com . Consultado el 25 de marzo de 2012 .
  76. ^ Casey, Valentine (20 de agosto de 2010). "Gestión de proyectos de equipos de software virtuales". Revista de la Sociedad Brasileña de Informática . 16 (2): 83–96. doi : 10.1007/s13173-010-0013-3 . S2CID  14383734.
  77. ^ "Premio a la investigación destacada". SIGSOFT . Consultado el 1 de abril de 2024 .
  78. ^ David Lo ( presidente de los premios SIGSOFT ); Thomas Zimmermann ( presidente de SIGSOFT ) (17 de enero de 2024). «Premios SIGSOFT 2024». Blog de ACM SIGSOFT . Consultado el 1 de abril de 2024 .
  79. ^ "Premio ICSE al artículo más influyente". ACM SIGSOFT .
  80. ^ Donald J. Bagert (abril de 1999). "Punto de vista: tomar la iniciativa en la concesión de licencias a ingenieros de software". Comunicaciones de la ACM . 42 (4): 27–29. doi :10.1145/299157.299163.Icono de acceso abierto
  81. ^ por Barry Boehm (septiembre-octubre de 2002). "La ingeniería de software es un deporte de contacto basado en el valor". IEEE Software . 19 (5): 95–96. doi :10.1109/MS.2002.1032863.
  82. ^ Dijkstra, EW (1988). "Sobre la crueldad de enseñar realmente ciencias de la computación" . Consultado el 10 de enero de 2014 .

Fuentes

  • Pierre Bourque; Richard E. (Dick) Fairley, eds. (2014). Guía del conjunto de conocimientos de ingeniería de software versión 3.0 (SWEBOK). IEEE Computer Society .
  • Alain Abran; James W. Moore; Pierre Bourque; Robert Dupuis; Leonard L. Tripp, eds. (2004). Guía del conjunto de conocimientos sobre ingeniería de software. IEEE Computer Society . Archivado desde el original el 9 de mayo de 2016. Consultado el 13 de septiembre de 2010 .
  • Ian Sommerville (24 de marzo de 2015). Ingeniería de software (10.ª edición). Pearson Education Limited. ISBN 978-0-13-394303-0.

Lectura adicional

  • Pierre Bourque; Richard E. (Dick) Fairley, eds. (2014). Guía del conjunto de conocimientos de ingeniería de software versión 3.0 (SWEBOK). IEEE Computer Society .
  • Roger S. Pressman; Bruce Maxim (23 de enero de 2014). Ingeniería de software: un enfoque práctico (8.ª ed.). McGraw-Hill. ISBN 978-0-07-802212-8.
  • Ian Sommerville (24 de marzo de 2015). Ingeniería de software (10.ª edición). Pearson Education Limited. ISBN 978-0-13-394303-0.
  • Jalote, Pankaj (2005) [1991]. Un enfoque integrado de la ingeniería de software (3.ª ed.). Springer. ISBN 978-0-387-20881-7.
  • Bruegge, Bernd ; Dutoit, Allen (2009). Ingeniería de software orientada a objetos: uso de UML, patrones y Java (3.ª ed.). Prentice Hall. ISBN 978-0-13-606125-0.
  • Oshana, Robert (2019-06-21). Ingeniería de software para sistemas embebidos: métodos, técnicas prácticas y aplicaciones (Segunda ed.). Kidlington, Oxford, Reino Unido. ISBN 978-0-12-809433-4.
  • Pierre Bourque; Richard E. Fairley, eds. (2004). Guía del conjunto de conocimientos de ingeniería de software versión 3.0 (SWEBOK) , https://www.computer.org/web/swebok/v3. IEEE Computer Society .
  • El marco de ciclo de vida del desarrollo de software e ingeniería de sistemas abiertos Archivado el 18 de julio de 2010 en Wayback Machine OpenSDLC.org el SDLC Creative Commons integrado
  • Instituto de Ingeniería de Software Carnegie Mellon
Retrieved from "https://en.wikipedia.org/w/index.php?title=Software_engineering&oldid=1245882849"