Los ingenieros de software y los programadores informáticos desarrollan aplicaciones de software que necesitan las computadoras en funcionamiento. La diferencia entre los dos puestos radica en las responsabilidades y el enfoque del trabajo. Los ingenieros de software utilizan principios y procedimientos científicos bien definidos para entregar un producto de software eficiente y confiable.
La ingeniería de software trata el enfoque para desarrollar software como un proceso formal muy similar al que se encuentra en la ingeniería tradicional. Los ingenieros de software comienzan analizando las necesidades del usuario. Diseñan software, lo implementan, lo prueban por calidad y lo mantienen. Indican a los programadores informáticos cómo escribir el código que necesitan. Los ingenieros de software pueden o no escribir el código ellos mismos, pero necesitan habilidades de programación sólidas para comunicarse con los programadores y con frecuencia dominan varios lenguajes de programación..
Los ingenieros de software diseñan y desarrollan juegos de computadora, aplicaciones comerciales, sistemas de control de red y sistemas operativos de software. Son expertos en la teoría del software informático y las limitaciones del hardware que diseñan para.
Todo el proceso de diseño de software debe gestionarse formalmente mucho antes de que se escriba la primera línea de código. Los ingenieros de software producen largos documentos de diseño utilizando herramientas de ingeniería de software asistidas por computadora. Luego, el ingeniero de software convierte los documentos de diseño en documentos de especificación de diseño, que se utilizan para diseñar código. El proceso es organizado y eficiente. No hay programación improvisada.
Una característica distintiva de la ingeniería de software es el rastro de papel que produce. Los diseños son aprobados por los gerentes y las autoridades técnicas, y el papel del aseguramiento de la calidad es verificar el rastro de papel. Muchos ingenieros de software admiten que su trabajo es 70% de papeleo y 30% de código. Es una forma costosa pero responsable de escribir software, que es una de las razones por las que la aviónica en los aviones modernos es tan costosa.
Los fabricantes no pueden construir sistemas complejos de vida crítica como aviones, controles de reactores nucleares y sistemas médicos, y esperan que el software se combine. Requieren que todo el proceso sea administrado a fondo por ingenieros de software para que se puedan estimar los presupuestos, contratar personal y minimizar el riesgo de fallas o errores costosos..
En áreas críticas para la seguridad, como la aviación, el espacio, las centrales nucleares, la medicina, los sistemas de detección de incendios y las montañas rusas, el costo de la falla del software puede ser enorme porque las vidas están en riesgo. La capacidad del ingeniero de software para anticipar problemas y eliminarlos antes de que sucedan es crítica.
En algunas partes del mundo y en la mayoría de los estados de EE. UU., No puede llamarse a sí mismo ingeniero de software sin educación formal o certificación. Varias de las grandes compañías de software, incluidas Microsoft, Oracle y Red Hat, ofrecen cursos para obtener certificaciones. Muchos colegios y universidades ofrecen títulos en ingeniería de software. Los aspirantes a ingenieros de software pueden especializarse en informática, ingeniería de software, matemáticas o sistemas de información informática..
Los programadores escriben código a las especificaciones que les dan los ingenieros de software. Son expertos en los principales lenguajes de programación de computadoras. Aunque generalmente no están involucrados en las primeras etapas de diseño, pueden estar involucrados en probar, modificar, actualizar y reparar el código. Escriben código en uno o más de los lenguajes de programación bajo demanda, que incluyen: