El desarrollo de software por parte de los servicios de TI ahora está asociado con varios tipos de modelos de entrega. Para abordarlos, es esencial conocer los diferentes modelos de desarrollo de software y las formas de contratación de servicios, ya que están estrechamente vinculados.
La premisa «no sólo el código vive un proyecto de software» es una de esas suposiciones, casi bíblicas, en las que cualquier comprador o implementador de software debe basarse. Esto evitaría expectativas inadaptados y asfixias contractuales.
A menudo la implementación del software se realiza de una manera básica, sin seguir ninguna regla y al final el software incluso funciona. Pero, ¿podemos decir que este software cumple con los mejores estándares de calidad? ¿Y es apropiado desde el punto de vista de la usabilidad y el mantenimiento futuro?
La producción de software es una actividad de enorme complejidad, que involucra a grupos importantes departes interesadasque necesitan soluciones para resolver unanecesidad empresarial.
Es una actividad en la que hay un alto grado de incertidumbre (riesgo) y los cambios en el alcance y los plazos de entrega pueden ser inevitables.
Modelos de desarrollo de software
Desde la década de 1970, los grandes fabricantes de software se han dado cuenta de que su producción sería más exitosa, más rentable y reduciría los riesgos si utilizara modelos estándar probados en otras industrias.
Desde el entendimiento de que la ingeniería de software no se trata sólo de codificación, y hay otras disciplinas que contribuyen decisivamente a la producción de software, las primeras metodologías nacieron basadas en un conjunto secuencial de actividades (Waterfall Model).
También hay modelos itativos,como el marcode proceso unificado racional (RUP) de ibm, que aboga por la secuenciación de pasos predefinidos:
Sin embargo, este marco permite que el desarrollo se produzca de forma interactiva e incremental, lo que reduce la complejidad de la integración, reduce los costos y aumenta su eficacia.
Sobre todo, introducen una nueva dinámica de diseño y participación del cliente centrada enteramente en el valor del negocio. Así nace el desarrollo ágil de software que, como sucedió en metodologías clásicas, con el tiempo dio lugar a varios procesos de desarrollo, como RAD, SCRUM o XP.Las ineficiencias y debilidades de los enfoques clásicos allanaron el camino para la aparición de metodologías ágiles. Estos tienen ciclos de desarrollo más cortos y, en consecuencia, más itéticos. También permiten una mayor flexibilidad en la administración de alcances y tienen menos peso en documentos que el modelo de cascada.
Al mismo tiempo, es posible rescatar técnicas y modelos más antiguos, como LEAN y KANBAN, que se pueden acoplar al proceso ágil.
Las metodologías ágiles aportan varias ventajas:
- Ciclos de implementación más cortos;
- Entregas bien definidas de acuerdo con la prioridad para el negocio;
- Concéntrate en la alineación del equipo y la mejora continua.
Se hace más fácil para el cliente identificar desalineaciones en una etapa embrionaria de desarrollo y los equipos también tienen una mayor flexibilidad para los cambios, sin comprometer el objetivo final de cada iteración.
Sin embargo, la aplicabilidad de una metodología ágil presupone la existencia de conocimiento mutuo sobre sus principios, fundamentos y rituales, así como una madurez organizativa significativa.
Servicios de contratación
Los modelos más utilizados son el portugués el mercado de la contratación de servicios de desarrollo de software son precio fijo y tiempo y materiales.
-
Contratos de precio fijo
Más conocido como contratos llave en mano, el monto es estipulado por el proveedor, basado en el alcance, esfuerzo y riesgo del proyecto. En este caso, el control de riesgos y costes es responsabilidad exclusiva del proveedor.
-
Contratos de tiempo y materiales
En este caso, se define un precio por hora y una estimación de tiempo del proyecto. Estos modelos se utilizan normalmente en proyectos de contratación cuando el ámbito no se conoce completamente. La gestión de riesgos y ejecución está controlada por el cliente.
En enfoques clásicos, como el Modelo de cascada, un contrato de precio fijo puedehacer quelas metodologías ágiles sean, por definición, incompatibles con estos modelos de contratación. Aunque el más adecuado es un contrato de Tiempo y Materiales,plantea grandes desafíos al cliente, abriendo la puerta a modelos de entrega ágiles con reparto de riesgos.
Modelos de entrega para proyectos de desarrollo de software
Básicamente, los modelos de entrega son la combinación consistente de modelos de desarrollo de software y tipos de contratación de servicios.
- Cuando el ámbito del proyecto está bien definido, hay un presupuesto cerrado y una duración fija, un modelo de desarrollo de cascada o iteactive se apropiará con un acuerdo de precio fijo. Esta es una buena solución para cuando el cliente no tiene la intención de tomar riesgos.
- Si el ámbito, la duración y el presupuesto no se conocen desde el principio y el cliente puede administrar y correr todo el riesgo, se recomienda un modelo de desarrollo ágil compatible con un contrato de tiempo y materiales.
Modelos de entrega para compartir riesgos
Para los clientes, los beneficios de Agile Development Models son inequívocos y reconocidos. Sin embargo, era necesario encontrar un punto medio para compartir riesgos.
Luego vinieron modelos que contribuyen a promover la confianza, la flexibilidad y la alineación de los objetivos entre los clientes y los socios de implementación.
- Modelo impulsado por personas – Escuadrones y equiposautonómicos, organizados en tribus o gremios. Este modelo combina Agile con contratos de tiempo y materiales. Hay un reparto de riesgos en términos de la velocidad contratada y el tamaño del equipo en el proyecto.
- Modelo controlado por salida: en el modelo controlado por salida,el cliente tiene una cierta velocidad de entrega y depende del proveedor de servicios asegurarse de que se cumple. Al final de cada intervalo de tiempo(Sprint),el cliente valida y paga por el producto entregado.
Un proyecto de software va mucho más allá de la tecnología
Hay un conjunto de directrices para ayudarle a encontrar el mejor modelo de entrega para proyectos de desarrollo de software. Debe tenerse en cuenta el nivel de participación en el riesgo y las metodologías utilizadas.
La expresión «no solo el código vive un proyecto de software» ahora debería tener más sentido. Los lenguajes de programación, las bases de datos y los sistemas operativos son, sin duda, importantes, pero no determinan el éxito de un proyecto de TI. Es reductor circunscribir la implementación de un proyecto de software sólo a la tecnología.
SABER MÁS SOBRE NEXLLENCE