12 Oct 2006

Mis primeros pasos con RUP

Este semestre tengo una clase que se llama Proyecto IAS I, lo interesante es tengo que hacer un proyecto aplicando una metodología de desarrollo de software. El profesor nos dejo elegir la metodología que quisiéramos usar y mi equipo decidió utilizar RUP así que tendré la oportunidad de ir escribiendo un poco de RUP.

Rational Unified Process es en realidad tres cosas:

  • Un approach de desarrollo de software. Es iterativo, architecture-centric y use-case-driven.
  • Un proceso de ingeniería de software. Define quien es responsable de que, como y cuando hacer las cosas.
  • Un producto. No se exactamente en que consiste pero supongo que te proveen de herramientas para customizar y modelar tus procesos, algo así como un framework para modelar tus procesos.

Aquí hablare de las dos primeras cosas. Y para empezar comentare algo sobre el approach de RUP, como decía es un modelo iterativo, esto es algo que me llamo mucho la atención, desde hace rato he estado oyendo de modelos iterativos y ahora he podido ver las ventajas contra el modelo de cascada.

Tradicionalmente nos enseñan ha desarrollar software utilizando el modelo de cascada. Este consiste en tener etapas fijas en la vida del proyecto, como Análisis, Diseño, Implementación, Pruebas y Mantenimiento. En cada etapa hay un grupo de gente que toma un input y genera un output para la gente de la siguiente etapa y así hasta terminar el proyecto. Por ejemplo, los analistas entrevistan al cliente y levantan los requerimientos que pasan a la gente de diseño, los cuales a su vez toman, diseñan y generan especificaciones para los desarrolladores, estos implementan esas especificaciones y pasan el resultado (el software) a los testers, los cuales prueban el producto y liberan para finalmente entrar en una etapa de mantenimiento.

Waterfall model

Este modelo pudiera ser exitoso en el mundo ideal, pero como eso no existe la verdad es que la mayoría de los proyectos -por no decir que todos- que se implementan utilizando este modelo fracasan. Entonces tenemos que la gente que hizo las pruebas vio errores que regresa a la gente de desarrollo, estos ven que el problema esta en la especificación así que regresan el problema a la gente de diseño, los cuales a su vez ven que el problema estuvo en la etapa de análisis así que mandan el problema a los analistas y se regresa al principio de la cascada.

Waterfall modified model

Ahora, cual es el problema con esto?. Bueno una es que los riesgos no se ven hasta que ya son problemas, ademas nadie se siente responsable directo del fracaso, el tester dice "yo solo estoy probando", el desarrollador dice "el diseñador hizo mal su chamba", el diseñador le echa la culpa al analista por no levantar bien el requerimiento y el analista piensa que cualquiera de los otros equipos cometió el error.

Risk reduction

Otro problema es que es muy complicado hacer cambios, como cuando ya estas implementando y te dicen, no siempre no será así, el cliente dijo que mejor le hiciéramos de esta otra manera.

RUP por otro lado es un modelo iterativo, como ya había dicho. Esto quiere decir que en la vida del proyecto se va trabajando en las mismas fases de manera repetitiva e incremental hasta llegar al final de cada disciplina y finalmente del proyecto.

RUP

Como se ve en la imagen RUP propone cuatro fases: Inception, Elaboration, Contruction y Transition. A diferencia del modelo en cascada la propuesta de RUP no es que se pasa a la siguiente fase al concluir una, mas bien en cada fase se trabaja en diferentes disciplinas a mayor o menor grado.

Para entender mejor esto habría que comentar cada uno de los puntos del espíritu de RUP, los cuales son:

  • Attack major risks early and continuously, or they will attack you.
  • Ensure that you deliver value to your customer.
  • Stay focused on executable software.
  • Accommodate change early in the project.
  • Baseline an executable architecture early on.
  • Build your system with components.
  • Work together as one team.
  • Make quality a way of life, not an afterthought.

Después les comentare que cosas se me hicieron interesantes de cada uno de estos puntos. Les recomiendo si quieren saber mas de esto leer este excelente libro.