La ejecución los proyectos de software tiene dos componentes: la ingeniería de software y la gestión.
La ingeniería de software consiste en todas las actividades técnicas que se realizan para construir el producto final del proyecto (las actividades de «simplemente construirlo»).
La ingeniería de proyectos de software se ocupa de construir los componentes, integrarlos, verificarlos, validarlos y, finalmente, combinar todos los componentes en un producto y convencer al cliente para que acepte su entrega.
La gestión facilita la ingeniería de software para que el producto final del proyecto se complete a tiempo, de manera eficiente, eficaz y sin defectos.
Alineación de la metodología de ingeniería de software con la metodología de gestión de proyectos
Existen dos escuelas de pensamiento generales sobre la vinculación de las metodologías de ingeniería de proyectos de software y gestión: fuertemente acopladas y débilmente acopladas.
Fuertemente acopladas. Una escuela de pensamiento sostiene que ambas metodologías están fuertemente acopladas y que la gestión depende completamente de la metodología de ingeniería de software adoptada para construir el producto final del proyecto.
Por lo tanto, la gestión de proyectos debe estar estrechamente entrelazada con la ingeniería de software.
En algunas metodologías de ingeniería de software, como los métodos ágiles, la distinción entre ingeniería de software y gestión de proyectos es algo difusa.
En esta situación, el argumento es que el SPM (gestor de proyectos de software por sus siglas en inglés) o gestor de proyectos de software actúa como un coach, porque la responsabilidad principal de un SPM es ser la voz de las personas y un líder en lugar de un director.
Débilmente acopladas. En la otra escuela de pensamiento, los dos aspectos de la ingeniería de software y la gestión están débilmente acoplados, pero se influyen mutuamente.
Por lo tanto, cada aspecto necesita cierta adaptación para ajustarse al otro. Además, en esta escuela de pensamiento, la gestión de proyectos se considera que tiene múltiples objetivos, siendo el objetivo principal construir el producto final.
Otros objetivos incluyen la gestión del cronograma, la productividad, la calidad, los recursos, la moral, los clientes y las ganancias.
En la escuela de pensamiento débilmente acoplada, un SPM debe ser primero un gestor y, en segundo lugar, conocer la metodología de ingeniería de software.
Metodologías de ingeniería de software
En resumen, las metodologías de ingeniería de proyectos de software incluyen cascada, incremental, espiral, orientada a objetos, basada en casos de uso (lenguaje unificado de modelado) y métodos ágiles de varios tipos.
Estas metodologías también se conocen comúnmente como SDLC (ciclos de vida de desarrollo de software).
Los métodos ágiles incluyen programación extrema (XP), scrum, clear case, desarrollo impulsado por características, desarrollo impulsado por pruebas, desarrollo dinámico de sistemas, proceso unificado racional (RUP, la versión ágil), desarrollo de software adaptativo y programación pragmática.
Los métodos ágiles, con la excepción de RUP, solo fomentan el desarrollo de la documentación mínima requerida asociada con el desarrollo del software.
RUP, sin embargo, es una excepción porque RUP es un proceso detallado de ingeniería de software que incluye niveles de documentación similares a otros tipos de métodos.
Una metodología de gestión de proyectos de software completamente alineada es adecuada para organizaciones más pequeñas y homogéneas, mientras que las organizaciones menos homogéneas deberían tener una metodología de gestión de proyectos desacoplada de la metodología de ingeniería de software del proyecto.
Debido a que la metodología de ingeniería de software utilizada en un proyecto tiene un impacto en la gestión de proyectos, cada proyecto deberá tener la metodología de gestión adaptada en cierta medida para alinearse con la metodología de ingeniería de software.