Metodologías de Desarrollo de Software Agile vs RUP
- Outsourcing y Adquisición de TI -
Instituto Tecnológico de Costa Rica
Indice
- Proceso Unificado de Desarrollo (RUP).
- Comparaciones met. ágiles vs tradicionales.
- Metodologías de Desarrollo y Outsourcing.
Metodologías de Desarrollo de SW
Metodologías de Desarrollo y Outsourcing
Consideraciones Tercerización de Desarrollo de SW
Comparación Metodologías Ágiles yTradicionales
Aspectos Desarrollo Offshore
Resumen Comparativo
Consejos Outsourcing Offshore
Diferencias
Consideraciones Creación de Carteles de Licitación
- Cultura e idioma: El desarrollo offshore se puede dar en países con diferentes culturas, que pueden implicar interpretaciones, mal entendidos y por lo tanto, comunicación deficiente.
- Geografía: El cliente y el proveedor están geográficamente separados. Es difícil organizar reuniones frecuentes, talleres y actividades de team building.
- Control: Cuando se opta por desarrollo offshore por proveedor externo el cliente no tiene control sobre el trabajo realizado por el proveedor, lo que implica problemas en el control del proceso de desarrollo de software.
- Estabilidad: Algunos países offshore son políticamente inestables. Estos factores podrían hacer inútiles los contratos y acuerdos establecidos.
- Seguridad: En el desarrollo de software externalizado parte de la operación del cliente se ve comprometida.
- Legislación: La privacidad y las leyes reguladoras pueden implicar barreras para el desarrollo off shore.
• Se debe prestar más atención a los aspectos legales y de seguridad, sobre todo en la etapa de pruebas.
• La gestión de riesgos debe considerar también los riesgos culturales y transfronterizos.
• Se deben seguir al menos 4 pasos básicos:
Paso 1 - Definición de la metodología de desarrollo.
Paso 2 - Redacción de documentos contractuales.
- Adaptabilidad - Previsibilidad: Los métodos ágiles son adaptables, en lugar de predictivos. Los métodos tradicionales intentan definir y planear gran parte del proyecto con detalle.
- Clientes: En las metodologías tradicionales se trabaja con un cliente "en espera", pues él se encarga de poner los objetivos del proyecto y luego tiene que esperar hasta que se finalice. En las metodologías ágiles se trabaja con un cliente comprometido.
- Reuniones: En las metodologías tradicionales se realizan reuniones de seguimiento, las cuales son programadas. En las metodologías ágiles se hacen reuniones diarias.
- Costo de cambios: En cuanto al costo de los cambios en el desarrollo de software, a medida que avanza el tiempo, el costo es exponencial en el caso de la construcción mediante una metodología tradicional.
Paso 3 - Definición del alcance.
Paso 4 - Homologación del proveedor.
Conjunto de pasos y procedimientos que deben seguirse para desarrollar software. Una metodología está compuesta por:
- Cómo dividir un proyecto en etapas.
- Qué tareas se llevan a cabo en cada etapa.
- Qué restricciones deben aplicarse.
- Qué técnicas y herramientas se emplean.
- Cómo se controla y gestiona un proyecto.
Administración Offshore Agile
Se pueden aplicar los 4 principios del manifiesto ágil para una correcta administración y que logre ser un proyecto exitoso:
- 1) Priorizar las personas y sus relaciones sobre los procesos y herramientas: se traduce en hacer que el offshore trabaje como una extensión real del departamento implicado, dando visibilidad a los desarrolladores de ambos lados con reuniones y métodos modernos de comunicación continua.
- 2) Priorizar el software que funciona sobre la documentación en todas sus formas: quiere decir que a ca-da momento, el cliente tiene que poder ver el desarrollo instalado en una máquina de test, staging o demo.
- 3) Priorizar la colaboración con el cliente sobre una negociación contractual: El proyecto se basa en sprints que se deciden junto con el cliente, el cliente prioriza y decide el alcance de cada historia de usuario o incremento funcional.
- 4) Priorizar la capacidad de responder a un cambio sobre seguir un plan: se traduce en ser capaz de aten-der a las necesidades del cliente si este, en base al feedback del proyecto decide cambiar las funcionalidades.
Conclusiones
RUP
Características
Consideraciones Creación de Contratos
Metodologías Ágiles
Proceso Unificado de Desarrollo
Metodologías Ágiles
- Dirigido por casos de uso.
- Centrado en la arquitectura.
- Iterativo e incremental.
- Usa el Lenguaje de Modelado Unificado (UML).
- Se divide en 4 fases:
Principios Manifiesto ágil
Valores Manifiesto ágil
Metodologías Tradicionales
Transición
Construcción
Metodologías Ágiles
VS
Elaboración
Inicio
- Es una metodología para la ingeniería de software. El estilo del proceso unificado más popular es el modelo RUP (del inglés Rational Unified Process), que significa Proceso Unificado de Rational.
- Meta principal es asegurar la producción de software de alta calidad que cumpla con las necesidades de los usuarios, con una planeación y presupuesto predecible.
- RUP es una de las principales metodologías de desarrollo de software tradicionales o no ágiles, que son aquellas que están guiadas por una fuerte planificación durante todo el proceso de desarrollo.
Valorar más a los individuos y su interacción que a los procesos y las herramientas.
Es conveniente explicitar reglas del juego en forma de cláusulas de contrato, como:
- Priorización inicial por valor para el negocio de la lista de objetivos del proyecto o servicio (Product Backlog), que establecerá un primer punto de partida, pero no será vinculante.
- Revisiones regulares del producto final de modo que se disponga de ciclos cortos de aprendizaje, con posibilidad de repriorización del Product Backlog.
- Establecimiento de cómo hacer cambios de requisitos a cuenta del esfuerzo pendiente en el proyecto ("Change for free").
- Definición de Completado (Definition of Done, DoD), que explique qué es un producto preparado para ser utilizado.
- Cláusulas específicas de Cambios de requisitos y de Finalización anticipada del contrato.
Valorar más el software que funciona que la documentación exhaustiva.
Valorar más la colaboración con el cliente que la negociación contractual.
- Son métodos de ingeniería del software que se basan en el desarrollo iterativo e incremental, donde los requerimientos y soluciones evolucionan mediante la colaboración de grupos auto organizados y multidisciplinarios.
- Los interesados reciben prototipos o versiones periódicamente a medida que avanza el proyecto, lo que les permite evaluar el trabajo realizado.
- Ejemplos:
- Extreme Programming o XP.
- Scrum.
- Familia de Metodologías Crystal.
- Feature Driven Development o FDD.
- Dynamic Systems Development Method o DSDM.
- Adaptive Software Development o ASD.
La elaboración de un contrato para proyectos de este tipo suele establecer los puntos detallados a continuación:
- Una firma inicial de requisitos o análisis funcional (para asegurar que se desarrollará todo lo esperado según lo especificado en las primeras estapas del proyecto). Lo anterior crea un contexto que favorece que el cliente pida todo lo que crea que en algún momento sea necesario.
- Revisión intermedia de sub-productos (principalmente documentación).
- Una aceptación final del producto. Esto puede ser riesgoso porque se deja para el final la parte crítica de verificación del cumplimiento de las expectativas.
1. Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana y continua de software con valor.
2. Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo. Los procesos Ágiles aprovechan el cambio para proporcionar ventaja competitiva al cliente.
3. Entregamos software funcional frecuentemente, entre dos semanas y dos meses, con preferencia al periodo de tiempo más corto posible.
4. Los responsables de negocio y los desarrolladores trabajamos juntos de forma cotidiana durante todo el proyecto.
5. Los proyectos se desarrollan en torno a individuos motivados. Hay que darles el entorno y el apoyo que necesitan, y confiarles la ejecución del trabajo.
6. El método más eficiente y efectivo de comunicar información al equipo de desarrollo y entre sus miembros es la conversación cara a cara.
7. El software funcionando es la medida principal de progreso.
8. Los procesos Ágiles promueven el desarrollo sostenible. Los promotores, desarrolladores y usuarios debemos ser capaces de mantener un ritmo constante de forma indefinida.
9. La atención continua a la excelencia técnica y al buen diseño mejora la Agilidad.
10. La simplicidad, o el arte de maximizar la cantidad de trabajo no realizado, es esencial.
11. Las mejores arquitecturas, requisitos y diseños emergen de equipos auto-organizados.
12. A intervalos regulares el equipo reflexiona sobre cómo ser más efectivo para a continuación ajustar y perfeccionar su comportamiento en consecuencia.
Valorar más la respuesta al cambio que el seguimiento de un plan.
- Las metodologías de desarrollo ágiles y tradicionales como RUP no son competidores.
- Si se decide realizar una externalización del desarrollo de software hay que tomar en cuenta la metodología de desarrollo que más se ajuste a las necesidades de la organización.
- A pesar de que las metodologías ágiles valoran más la colaboración con el cliente que los contratos, es necesario definir contratos marco que defina las principales reglas de juego.
- Los planteamientos de contratos en metodologías tradicionales suelen ser más riesgosos.
- Difícil encontrar carteles de licitación pública en Costa Rica con agile.
Ejemplo Representación