¿Cómo se gestiona el proceso de desarrollo de software?
El proceso de desarrollo de software tiene diferencias importantes con los de fabricación de otros productos o servicios que se pueden industrializar. Por ejemplo, las fases en las que el proyecto se estructura pueden ser planeadas para que se ejecuten de forma paralela, con el propósito de terminar lo antes posible el producto y aprovechar al máximo la capacidad del equipo del proyecto que lo está desarrollando, logrando una mayor ocupación de cada uno de los integrantes del equipo. Igualmente, es clave resaltar que el producto que se está desarrollando puede requerir cambios durante su proceso de construcción, ya que cada día es más necesario, que las organizaciones y sus productos se adapten de manera flexible a los entornos altamente cambiantes a los que se enfrentan.
El modelo adoptado debe permitir según el tipo de producto que se esté desarrollando una iteración constante entre los integrantes del equipo de desarrollo y el entorno de la empresa, que es lo que determina la ruta que se debe seguir. Dicha iteración permite: que el producto se acople a los requerimientos organizacionales y que su calidad sea mayor cada vez, ya que permite en ciclos de tiempos cortos: planear, ejecutar, revisar y ajustar. Esto es, la iteración constante logra tener productos flexibles, innovadores y de alta calidad.
Las consideraciones que se deben tener presente a la hora de adoptar un modelo para el proceso de desarrollo de software pueden ser entre otras: entorno en el que la organización se mueve (cambio constante, estable o moderado), tiempo requerido de salida al mercado del producto, presupuesto disponible, equipo del proyecto, calidad esperada y oportunidades y amenazas.
A continuación, se presentan algunos modelos de desarrollo de software que pueden ser adoptados según las consideraciones que se tengan en cuenta:
Cascada
Quizás el más famoso de todos, debido a que se ha usado por muchos años. En este modelo, se estructuran las etapas y procesos del desarrollo de software de manera estructurada para en primera instancia determinar los requerimientos del producto, antes de iniciar el proceso de programación del software. Es el ciclo de vida que corresponde a: Levantamiento de requerimientos, análisis, desarrollo, pruebas, despliegue, implementación y acompañamiento en producción.
Este modelo sigue aún vigente y se recomienda para organización y productos que tengan, por ejemplo: un entorno estable, que el producto a desarrollar pueda ser fácil de determinar desde el inicio del proyecto, que el tiempo total de desarrollo esté acorde con la necesidad de la organización y su estrategia operativa y/o comercial, entre otras consideraciones.
Prototipado
El modelo basado en prototipos, para permitir que los usuarios finales puedan percibir como será su producto final, sin necesidad de tener que esperar hasta la entrega final. Busca reducir la incertidumbre que se presenta debido a que los productos de software son intangibles y no existen en el mundo físico, sino en el digital. Solo serán posible apreciar a través de sus funcionalidades e iteración con los usuarios.
Es un modelo también tradicional, pero poco usado. Puede ser recomendado para utilizar en empresas que estén enfocadas a hacer validaciones de productos innovadores y que estén dispuestas a invertir en investigación y desarrollo.
Incremental
Como su nombre lo puede dar a entender, consiste en lograr la construcción del producto final a lo largo de varias y si se quiere muchas iteraciones. Esto es, en cada iteración se entrega una nueva versión del producto que agrega valor a la organización a través de nuevas funcionalidades, componentes y/o elementos. Es la base que se usa para las metodologías ágiles como: scrum, programación extrema y Kanban, entre otras.
La idea es que se determine un mínimo producto viable que permita que la organización pueda rápidamente usufructuar la inversión realizada. Esta primera versión del producto debe ser usable y aprovechable por los usuarios finales en corto tiempo y sobre ella se podrán generar nuevas versiones con nuevos componentes y/o funcionalidades, cuyo objetivo fundamental será entregar valor en corto tiempo.
Se recomienda tener presente este modelo y metodologías teniendo en cuenta: que la organización se mueve en un entorno con cambios permanentes, en dónde no se conoce a ciencia cierta cual será el producto final, pero si se tiene una idea inicial de lo que se busca con él, el presupuesto con el que se cuenta es flexible y puede crecer según los resultados que se obtengan al llevar el producto al mercado, las oportunidades y amenazas se requieren controlar en corto tiempo y así maximizar sus impactos en caso de ser oportunidades o de reducirlos en caso de ser amenazas.
Adicionalmente a los modelos brevemente explicados acá, existen otros como, por ejemplo: espiral, por etapas, concurrente, etc. También se pueden usar metodologías diversas que pueden estar basadas en estándares como el PMI©, PRINCE2, IPMA e ISO 21500.
Al final el éxito de una fábrica de desarrollo de software debe estar estructurada de tal forma que le permita planear, ejecutar, monitorear y controlar y entregar productos a los clientes, de acuerdo con el modelo que se requiera, acorde a las circunstancias. Debe usar y adaptar la metodología para cumplir con las expectativas y los objetivos planteados de la organización alineados a sus planes estratégicos y a cada proyecto y producto particular.
Si deseas recibir un asesoramiento directo por parte de los profesionales de Linexperts, en temas relacionados con Consultoría, Desarrollo de Software, Gestión de Proyectos o Transformación Digital; puedes contactarnos a través de: Contacto Linexperts.
Bibliografía consultada:
Clifford F. Gray y Erik W. Larson, Administración de proyectos (cuarta edición)
Collen Garton y Erika McCulloch, Fundamentals of Technology Project Mangement (sexta edición)
Projetc Management Body of Knowledge (MPBOK), Project Management Institute (PMI) (Sexta edición)