archivo

Archivos diarios: abril 6, 2011

RUP es un marco de desarrollo, te indica una forma de enfocar un proyecto de desarrollo de software 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 de integració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.

– Transición: Refinamiento de los objetivos de las fases anteriores e implantación del sistema de información (preparación del producto para su entrega y pasos a producción de versiones no finales (porque hay que hacer ajustes) y de la versión final prevista).

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.

Fuente del gráfico: Wikipedia.

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.

Pero, ¿se puede considerar ágil RUP?, en este otro artículo, indico los motivos por los que no considero ágil a esta metodología.

Defiendo la consultoría artesana ya que siempre me parece la mejor opción la particularización de soluciones a las necesidades del cliente que el intento de aplicar soluciones generalistas con una mínima parametrización. Me creo más, por ejemplo, un plan de sistemas realizado por un profesional con suficiente experiencia y conocimientos que el realizado por profesionales de una empresa prestigiosa pero que tienen menores aptitudes. Por supuesto que puede haber profesionales excelentes en empresas con marca, pero lo mismo el precio no te lo puedes permitir o lo mismo la empresa prefiere obtener un mayor beneficio en el proyecto.

Con respecto al desarrollo de software las soluciones artesanas también son muy competitivas, pero en este caso si las organizaciones tienen unos procesos de trabajo, metodologías, arquitectura, herramientas de soporte al desarrollo, las soluciones más industriales tienen a convertirse en más artesanales y tal vez las artesanales en más industriales. No obstante, la esencia de la artesanía se centraría en las relaciones con el cliente, con el usuario, en la concepción del propio proceso de desarrollo en su conjunto.

La artesanía tiene limitaciones en el tamaño del proyecto y en el número de proyectos que se pueden acometer simultáneamente. Cuando se sobrepasa cierto límite se pierde la esencia de la artesanía y entran en juego los números. No es que no se pueda ganar dinero siendo artesano, sino que queriendo o sin querer cuando se acometen demasiados proyectos y no se seleccionan de manera adecuada, puede ocurrir que se empiece a perder (o existan previsiones de perder) una cantidad de dinero no asumible salvo que se adopten otro tipo de actitudes.