9 SEMANA – ANALISIS Y DISEÑO DE SOFTWARE
Desarrollo de software. Ciclo de vida RUP (Rational
Unified Process)
RUP es un marco de desarrollo, te indica una forma de enfocar un
proyecto de desarrollo desoftware y después en función de la
naturaleza del mismo haces las adaptaciones oportunas (sin salirte de las
fronteras que te marca la metodología porque de lo contrario estaríamos
hablando de algo que no sería RUP).
RUP sigue principios de ingeniería del
software para la obtención de sistemas de información de
calidad y de esta forma proporcionar una alternativa que permita evitar que los
productos que se obtengan caigan en los aspectos que caracterizan a la crisis del
software (todavía muy presente en
nuestros días).
RUP sigue una estrategia de ciclo de vida iterativo
e incremental, pero de una forma un tanto peculiar, como vamos a ver a
continuación.
El ciclo de vida RUP
se divide en 4 fases: Iniciación, Elaboración, Construcción y Transición.
En cada fase se realizan una o más iteraciones (con el objeto de ir
perfeccionando los objetivos, mediante el feedback del
usuario) y hasta que no finaliza una fase no se comienza con la siguiente. Por
regla general, la fase en la que se realizan más iteraciones es la Contrucción.
En cada fase se refinan los objetivos de las fases anteriores en el
proceso de conseguir el objetivo o objetivos de la fase, por ejemplo, en la
fase de construcción se pueden modificar, añadir o eliminar requisitos, casos de uso,
etc… lo que tiene un impacto en lo obtenido en fases anteriores, acercándonos
cada vez más a un sistema que satisfaga las necesidades de los usuarios.
En cada fase y en cada iteración se realiza un ciclo de vida en
cascada con las siguientes etapas: Análisis, Diseño, Construcción
(las tareas de programación que se realizan, sobre todo las fases de
Construcción y Transición son perfectamente compatibles con la utilización de
técnicas deintegración
continua y análisis estático
de código), Pruebas/Integración/Implantación. El alcance del ciclo de vida depende
en la fase en la que nos encontremos, es decir, aunque se realice un ciclo de vida
en cascada en la fase de Iniciación, lo más probable es que no se llegue a
construir nada o se llegue a algún a hacer algún prototipo de muy alto nivel.
Los objetivos que se
persiguen en cada fase son los siguientes:
- Iniciación:
Obtención de los objetivos, catálogo de requisitos, identificación de casos de
uso.
- Elaboración:
Refinamiento de los objetivos de la fase anterior, casos de uso, análisis,
diseño, definición y establecimiento de la arquitectura base del sistema.
- Construcción:
Refinamiento de los objetivos de las fases anteriores y construcción del
sistema de información.
Por tanto, como se comentó anteriormente, en cada etapa y en cada
iteración se perfeccionan los productos previos que hayan requerido algún
cambio, todo eso mientras se intentan conseguir los objetivos concretos de la
fase. De esta forma el ciclo de vida RUP sigue un modelo adaptativo de
desarrollo de software.
De esta forma, el
reparto de esfuerzos entre actividades varían de una fase a otra.
Una característica importante del RUP es que todo el
proceso está guiado por los casos de uso, algo que resulta lógico cuando
hablamos de modelos incrementales, ya que están orientados al usuario y como
tal es importante tener siempre presente el esquema de interacción
usuarios/sistema, los cuales vienen definidos por los casos de uso y sus
escenarios.
RUP
pretende la obtención de productos de muy alta calidad (extendiéndose esta no
solo al cumplimiento de las expectativas del usuario, sino a la obtención de
productos con una deuda técnica aceptable),
si bien sus características: varias fases, múltiples iteraciones por fases,
pueden provocar que el proceso de desarrollo sea costoso y que no se adapte a proyectos de
pequeña escala, aunque el hecho de que siga un esquema incremental permitiría
dar flexibilidad en el caso de que fuera necesario.
Personalmente
prefiero la aplicación de ciclos de vida iterativos incrementales de una forma más directa, sin aplicar
múltiples iteraciones para liberar una nueva versión del producto, si bien el
ciclo de vida RUP es muy potente y sigue la misma estrategia, es decir,
aproximarse al proceso real de desarrollo de software en el cual el producto va
creciendo conforme los usuarios van comprendiendo cómo queda el sistema.