¿Es la ingeniería de desarrollo de software? Si no, ¿cuáles son las cosas que le faltan para calificar así?
Sí, la ingeniería de software es una disciplina de ingeniería.
Wikipedia define la ingeniería como "la aplicación de las matemáticas, así como el conocimiento científico, económico, social y práctico para inventar, innovar, diseñar, construir, mantener, investigar y mejorar estructuras, máquinas, herramientas, sistemas, componentes, materiales , procesos, soluciones y organizaciones ". El resultado de la ingeniería de software es un sistema de software que puede mejorar la vida de las personas y puede implicar una combinación de conocimiento científico, matemático, económico, social o práctico.
En términos de cómo se ve, académica y profesionalmente, varía. ABET puede acreditar los programas de ingeniería de software como programas de ingeniería. Los ingenieros de software pueden ser miembros del IEEE. Algunas compañías consideran que la ingeniería de software es una disciplina de ingeniería, mientras que otras no, es realmente una sacudida.
El mejor libro sobre este tema es el Desarrollo de software profesional de Steve McConnell: horarios más cortos, productos de mayor calidad, proyectos más exitosos, carreras mejoradas . Considera la ingeniería de software como una profesión, la evolución de un oficio a una profesión, la ciencia del desarrollo de software, la diferencia entre la ingeniería de software y la ingeniería de software (aplicando prácticas de ingeniería al software versus ingenieros que construyen software, con un estudio de caso que incluye mi alma mater ), certificación y licencia y ética.
Glenn Vanderburg tiene una serie de charlas llamadas "Ingeniería de software real" que ha impartido entre 2010 y 2015 en una serie de conferencias, junto con dos charlas relacionadas, "Artesanía, ingeniería y la esencia de la programación" (dada en 2011 como discurso de apertura en RailsConf) y "Craft and Software Engineering" (impartido en 2011 en QCon London). Creo que estas conversaciones son un argumento bastante completo de por qué la ingeniería de software es una disciplina de ingeniería.
Un argumento, que Vanderburg menciona brevemente en sus charlas, es el que hizo Jack W. Reeves en 1992 (y revisado nuevamente en 2005) sobre qué es el diseño de software y cómo el código es el resultado de las actividades de diseño de ingeniería de software ( esto también es discutido en el wiki de C2) Una vez que se aleja de las escuelas de pensamiento más antiguas donde la especificación y el modelado es el diseño de software y se convierte en el diseño de software, algunas de las relaciones entre la ingeniería de software y otras disciplinas de ingeniería se hacen más evidentes. Algunas diferencias y las razones de esas diferencias se vuelven aún más evidentes después de ver que la economía del desarrollo de software es muy diferente a muchas otras disciplinas: la construcción es barata (casi gratuita, en muchos casos), mientras que el diseño es la parte costosa.
¿Es eso [CMMI] algo que convertirá el desarrollo en ingeniería?
No. CMMI es un marco de mejora de procesos que proporciona orientación a las organizaciones sobre qué tipos de actividades son útiles al crear software. Las disciplinas de ingeniería suelen tener un proceso de ingeniería. Tener dicho proceso es importante para la finalización exitosa de proyectos de alta calidad. Dicho esto, el CMMI (o cualquier otro marco o metodología de proceso) es solo una herramienta única: usarlo no te hará avanzar mágicamente de un desarrollador a un ingeniero. Sin embargo, no seguir algún tipo de proceso es, en mi opinión, una señal de un proyecto que no es un proyecto de ingeniería.
Además, ¿cuál es su opinión sobre los cursos / certificados de ingeniería de software?
Solo tiene el mismo valor que otras personas le dan. Hay cursos útiles y hay cursos inútiles. Hay certificados valiosos y certificados que no valen el papel en el que están impresos. Hay muchos factores, desde quién respalda o acredita el curso o quién emite el certificado a su industria actual de empleo hasta su trabajo actual y hacia dónde desea ir.