La ingeniería de software es la aplicación de un enfoque sistemático, disciplinado y medible para el desarrollo , operación y mantenimiento de software , así como el estudio de estos enfoques; es decir, la aplicación de la disciplina de la ingeniería al software ( ISO/IEC/IEEE 24765:2017 ) [1] .
El término "ingeniería de software" apareció por primera vez en 1968 en una conferencia de la OTAN y tenía como objetivo estimular la búsqueda de soluciones a la " crisis del software " que se estaba produciendo en ese momento . Desde entonces, se ha convertido en la profesión de ingeniero de software y un campo de investigación dedicado a hacer que el software sea mejor, más accesible, con mejor soporte y más rápido de desarrollar.
Money Magazine y Salary.com clasificaron a la ingeniería de software como el mejor trabajo en Estados Unidos en 2006[ aclarar ]
El desarrollo de software está relacionado con las disciplinas de la informática , la gestión de proyectos y la ingeniería de sistemas .
Cuando aparecieron las primeras computadoras digitales modernas a principios de la década de 1940, ya se habían incorporado conjuntos de instrucciones ejecutables en la máquina. Los expertos se dieron cuenta rápidamente de que este enfoque no es muy conveniente. Así nació la "arquitectura de programas almacenados" o arquitectura de von Neumann . Así, la división en "hardware" y "software" comenzó con una abstracción utilizada para resolver el problema de la complejidad computacional.
Los primeros lenguajes de programación comenzaron a aparecer en la década de 1950, y este fue otro paso importante en la abstracción. Los principales lenguajes como Fortran , Algol y Cobol se lanzaron a fines de la década de 1950 para resolver problemas científicos, algorítmicos y comerciales, respectivamente. Dijkstra escribió su famoso artículo "Go To Statement Considered Harmful " en 1968, y David Parnas introdujo los conceptos clave de modularidad y ocultación de información en 1972 para ayudar a los programadores a lidiar con sistemas de software cada vez más complejos. El software del sistema para controlar el hardware llamado " sistema operativo " fue introducido por Unix en 1969. En 1967, el lenguaje Simula introdujo el concepto de un paradigma de programación orientado a objetos .
Estos avances en el software se encontraron con un gran avance en la tecnología informática. A mediados de la década de 1970, se introdujo la microcomputadora , lo que permitió a los aficionados obtener su propia computadora y escribir sus propios programas para ella. Esto a su vez dio origen a las computadoras personales (PC) y Microsoft Windows . También a mediados de la década de 1980, conceptos como el ciclo de vida del software aparecen como una especie de consenso para el desarrollo de software centralizado. A fines de la década de 1970 y principios de la de 1980, surgieron varios lenguajes de programación orientados a objetos similares a simulaciones, incluidos Smalltalk , Objective-C y C++ .
El software de código abierto , que surgió a principios de la década de 1990, generó un estilo descentralizado de desarrollo de software.
Los requisitos legales para la concesión de licencias y la certificación de ingenieros de software profesionales varían en todo el mundo. En el Reino Unido, la British Computer Society otorga licencias a los ingenieros de software y los miembros de la sociedad también pueden convertirse en "ingenieros certificados" (C.Eng), y en algunas partes de Canadá, como Alberta, Ontario y Quebec, los ingenieros
En 2004, la Oficina de Estadísticas Laborales de EE. UU. contó con 760.840 ingenieros de software que trabajaban en EE. UU. Durante el mismo período, había alrededor de 1,4 millones de profesionales empleados en los EE. UU. en otras profesiones mixtas de ingeniería. Debido a su relativa novedad como campo formal de estudio, la ingeniería de software a menudo se enseña como parte de un plan de estudios de ciencias de la computación, y muchos ingenieros de software están bien versados en ciencias de la computación.
Muchos ingenieros de software trabajan como empleados o contratistas. Trabajan en empresas, agencias gubernamentales (civiles o militares) y organizaciones sin fines de lucro. Algunos ingenieros trabajan como autónomos . Algunas organizaciones cuentan con especialistas para realizar cada una de las tareas en el proceso de desarrollo de software. Otros requieren un ingeniero de software que realice muchas o todas las tareas a la vez. En proyectos grandes, las personas solo pueden especializarse en un rol. En los pequeños las personas pueden asumir varios o todos los roles al mismo tiempo.
Las especializaciones incluyen: en la industria: analistas, arquitectos de software , desarrolladores , evaluadores , soporte técnico, analista intermedio, gerente; en círculos académicos: profesores, investigadores.
La mayoría de los ingenieros y programadores de software trabajan 40 horas a la semana, y 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. Las lesiones en estas profesiones son raras. Sin embargo, al igual que con otras profesiones que requieren mucho tiempo frente a una computadora, las personas en estas profesiones son más propensas a la fatiga ocular, dolor de espalda y dolencias en manos y muñecas, como el síndrome del túnel carpiano .
El Instituto de Ingeniería de Software ofrece certificación en áreas específicas como seguridad, optimización de procesos y arquitectura de software. Apple , IBM , Microsoft y otras empresas financian[ aclarar ] exámenes propios para la certificación. Muchos programas de certificación de TI se enfocan en tecnologías específicas y son administrados por esos proveedores de tecnología. Estos programas de certificación están diseñados en torno a la ubicación donde se empleará a las personas que utilizan estas tecnologías.
La extensión de certificación "Habilidades generales de desarrollo de software" está disponible a través de varias comunidades profesionales. En 2006, el IEEE certificó a más de 575 profesionales de software como "Profesional de desarrollo de software certificado" (CSDP). En 2008, agregaron una certificación de nivel de entrada conocida como "Asociado de desarrollo de software certificado" (CSDA). ACM tenía un programa de certificación profesional a principios de la década de 1980 que se suspendió debido a la falta de interés.
La British Computing Society ha desarrollado una certificación profesional legalmente reconocida llamada Chartered IT Professional (CITP) y solo está disponible para miembros de pleno derecho (MBCS). Los ingenieros de software son elegibles para ser miembros de la Institución de Ingeniería y Tecnología y pueden calificar como Ingenieros Colegiados en consecuencia . En Canadá, la Sociedad Canadiense de Procesamiento de la Información también ha desarrollado una certificación profesional legalmente reconocida llamada Profesional de Sistemas de Información (ISP). En Ontario, Canadá, los ingenieros de software que se gradúan de la Junta Canadiense de Acreditación de Ingeniería (CEAB), aprueban con éxito el Examen de práctica profesional (PPE) y tienen al menos 48 meses de experiencia como ingenieros de software, son elegibles para obtener una licencia a través de PEO.”) y pueden convertirse en Ingenieros Profesionales (P.Eng).
El conocimiento de programación es un requisito previo para convertirse en ingeniero de software. En 2004, la IEEE Computer Society lanzó SWEBOK , que se publicó como el estándar ISO/IEC 19759:2004, que describe la cantidad de conocimiento que creen que debe adquirir un ingeniero de software calificado con cuatro años de experiencia. Muchas personas ingresan a esta profesión después de graduarse o asistir a una escuela vocacional. El plan de estudios estándar para la Licenciatura Internacional en Ingeniería de Software fue definido por el CCSE y actualizado en 2004. Varias universidades tienen programas de ingeniería de software. Desde 2010, ha habido 244 programas de tiempo completo, 70 cursos en línea, 230 programas especializados, 41 programas de investigación y 69 programas de certificación en los Estados Unidos. En las universidades rusas hay un área separada de capacitación 09.03.04 "Ingeniería de software".
Además de la educación superior, muchas empresas financian pasantías para estudiantes que desean seguir una carrera en tecnología de la información. Estas prácticas pueden mostrar al estudiante desafíos interesantes de la vida real que los ingenieros de software enfrentan todos los días. Se puede obtener una experiencia similar a través del servicio militar en el campo de la ingeniería de software.
Las principales diferencias entre la ingeniería de software y otras disciplinas de la ingeniería, según algunos investigadores, son los distintos niveles de costes de producción. [2]
diccionarios y enciclopedias | ||||
---|---|---|---|---|
|