METODOLOGIA RUP
RUP es un proceso o marco de trabajo para el desarrollo de un proyecto de software que
define claramente quién, cómo, cuándo y qué debe hacerse en el proyecto. Presenta tres
características esenciales:
• Dirigido por casos de uso: Orientan el proyecto a la importancia para el usuario y lo que éste
quiere.
• Centrado en la arquitectura: Relaciona la toma de decisiones que indican cómo tiene que
ser construido el sistema y en qué orden.
• Iterativo e incremental: Divide el proyecto en mini proyectos donde los casos de uso y la
arquitectura cumplen sus objetivos de manera más depurada.
Como filosofía RUP maneja seis principios claves:
• Adaptación del proceso. El proceso deberá adaptarse a las características propias de la
organización. El tamaño del mismo, así como las regulaciones que lo condicionen, influirán en
su diseño específico. También se deberá tener en cuenta el alcance del proyecto.
• Balancear prioridades. Los requisitos de los diversos inversores pueden ser diferentes,
contradictorios o disputarse recursos limitados. Debe encontrarse un balance que satisfaga los
deseos de todos.
• Colaboración entre equipos. El desarrollo de software no lo hace una única persona, sino
múltiples equipos. Debe haber una comunicación fluida para coordinar requisitos, desarrollo,
evaluaciones, planes, resultados, etc.
• Demostrar valor iterativamente. Los proyectos se entregan, aunque sea de un modo
interno, en iteraciones. En cada iteración se analiza la opinión de los inversores, la estabilidad y
calidad del producto, y se refina la dirección del proyecto así como, también, los riesgos
involucrados.
• Elevar el nivel de abstracción. Este principio dominante motiva el uso de conceptos
reutilizables, tales como patrón del software, lenguajes 4GL o esquemas (frameworks), por
nombrar algunos. Éstos se pueden acompañar por las representaciones visuales de la
arquitectura, por ejemplo con UML.
• Enfocarse en la calidad. El control de calidad no debe realizarse al final de cada iteración,
sino en todos los aspectos de la producción.
MEJORES PRÁCTICAS
Desarrollo iterativo
En función de la cada vez mayor complejidad solicitada para los sistemas de software, ya no es
posible trabajar secuencialmente, es decir, definir primero el problema completo; luego,
diseñar toda la solución, construir el software y, finalmente, testear el producto. Es necesario
un enfoque iterativo que permita una comprensión creciente del problema a través de
refinamientos sucesivos, llegando a una solución efectiva luego de múltiples iteraciones
acotadas en complejidad.
RUP utiliza y soporta este enfoque iterativo e incremental que ayuda a atacar los riesgos
mediante la producción de entregables ejecutables progresivos y frecuentes que permiten la
opinión e involucramiento del usuario.
A través de las iteraciones que generan entregables ejecutables, se logra detectar, en forma
temprana, los desajustes e inconsistencias entre los requisitos, el diseño, el desarrollo y la
implementación del sistema, manteniendo al team de desarrollo focalizado en producir
resultados.
• Administración de requisitos
Los requisitos son las condiciones o capacidades que el sistema debe conformar. La
administración de requisitos es un enfoque sistemático para hallar, documentar, organizar y
monitorear los requisitos cambiantes de un sistema.
La administración de requisitos permite:
a) que las comunicaciones estén basadas en requisitos claramente definidos;
b) que los requisitos puedan ser priorizados, filtrados y monitoreados;
c) que sea posible realizar evaluaciones objetivas de funcionalidad y performance;
d) que las inconsistencias se detecten fácilmente.
RUP describe como:
a) Obtener, organizar y documentar la funcionalidad y restricciones requeridas;
b) Documentar y monitorear las alternativas y decisiones.
Las nociones de casos de uso y de escenarios utilizadas en RUP han demostrado ser una
manera excelente de capturar los requisitos funcionales y asegurarse que dirigen el diseño, la
implementación y la prueba del sistema, logrando así que el sistema satisfaga las necesidades
del usuario.
• Arquitectura basada en componentes
El proceso de software debe focalizarse en el desarrollo temprano de una arquitectura robusta
ejecutable, antes de comprometer recursos para el desarrollo en gran escala. RUP describe
cómo diseñar una arquitectura flexible, que se acomode a los cambios, comprensible
intuitivamente y promueve una más efectiva reutilización de software. Soporta el desarrollo de
software basado en componentes: módulos no triviales que completan una función clara. RUP
provee un enfoque sistemático para definir una arquitectura utilizando componentes nuevos y
preexistentes.
• Modelamiento visual
RUP muestra cómo representar el software visualmente para capturar la estructura y
comportamiento de arquitecturas y componentes. Las abstracciones visuales ayudan a
comunicar diferentes aspectos del software; comprender los requisitos, ver cómo los
elementos del sistema se relacionan entre sí, mantener la consistencia entre diseño e
implementación y promover una comunicación precisa. El estándar UML (Lenguaje de
Modelado Unificado), creado por Rational Software, es el cimiento para un modelamiento
visual exitosa.
• Verificación continúa de la calidad
Es necesario evaluar la calidad de un sistema respecto de sus requisitos de funcionalidad,
confiabilidad y performance. La actividad fundamental es el testeo (testing), que permite
encontrar las fallas antes de la puesta en producción. RUP asiste en el planeamiento, diseño,
implementación, ejecución y evaluación de todos estos tipos de testeo (testing).
El aseguramiento de la calidad se construye dentro del proceso, en todas las actividades,
involucrando a todos los participantes, utilizando medidas y criterios objetivos, permitiendo así
detectar e identificar los defectos en forma temprana.
• Control de cambios
La capacidad de administrar los cambios es esencial en ambientes en los cuales el cambio es
inevitable. RUP describe como controlar, rastrear y monitorear los cambios para permitir un
desarrollo iterativo exitoso. Es también una guía para establecer espacios de trabajo seguros
para cada desarrollador, suministrando el aislamiento de los cambios hechos en otros
espacios de trabajo y controlando los cambios de todos los elementos de software (modelos,
código, documentos, etc.). Describe cómo automatizar la integración y administrar la
conformación de entregables.
Estructura de RUP
RUP es un proceso que puede describirse en dos dimensiones, tal como se muestra en la figura
1.11, a lo largo de dos ejes:
• El eje horizontal representa tiempo y muestra el aspecto dinámico del proceso expresado
en términos de ciclos, fases, iteraciones, y metas.
• El eje vertical representa el aspecto estático del proceso; está descrito en términos de
actividades, artefactos, trabajadores o roles y flujos de trabajo.
Fases
RUP divide el proceso en cuatro fases, dentro de las cuales se realizan varias iteraciones en
número variable según el proyecto y en las que se desarrolla en mayor o menor proporción los
distintos flujos de trabajo:
• Inicio: En esta primera fase se define el alcance y objetivos del proyecto.
• Elaboración: Se desarrolla el plan del proyecto, la especificación de características y la
arquitectura base del sistema.
• Construcción: Esta fase se concentra en la elaboración, de un producto totalmente operativo
y eficiente y el manual de usuario.
• Transición: Es la fase en la cual se instala el producto en el cliente y se entrena a los
usuarios.
Flujos de trabajo
Los flujos de trabajo son también conocidos como disciplinas. Consisten en una secuencia de
actividades que producen un resultado observable (artefacto) a cargo de algún miembro del
proyecto (rol).
Existen dos grupos de flujos de trabajo: de proceso y de apoyo, los cuales que se describirán a
continuación.
Flujos de trabajo del proceso
Orientados al desarrollo del software. Comprende:
• Modelado del negocio: Describe la estructura y la dinámica de la organización donde se va a
implantar el sistema que construyamos.
• Captura de requisitos: Establece exactamente lo que tiene que hacer el sistema, para ello, se
extrae los requisitos utilizando diferentes métodos.
• Análisis y diseño: Traduce los requisitos a una especificación que describe cómo
implementar el sistema creando, para ello, diferentes vistas arquitectónicas.
• Implementación: Tiene en cuenta el desarrollo de software, las pruebas unitarias y la
integración.
• Pruebas: Describe la ejecución de pruebas y las métricas para rastreo de defectos.
• Despliegue o implantación: Incluye actividades relacionadas con la entrega de la aplicación.
Flujos de trabajo de apoyo o de soporte
Orientados a la gestión del proyecto. Éstos son:
• Configuración y control de cambios: Mantiene la integridad de todos los artefactos que se
crean en el proyecto. También mantiene información del proceso evolutivo que se ha seguido.
• Gestión del proyecto: Es el arte de lograr un balance al gestionar objetivos, riesgos y
restricciones para desarrollar un producto que sea acorde a los requisitos de los clientes y los
usuarios.
• Entorno: Cubre la infraestructura necesaria para desarrollar un sistema.
Roles en RUP
Un rol define el comportamiento y responsabilidades de un individuo o de un grupo de
individuos trabajando juntos como un equipo. Un miembro del equipo de proyecto cumple,
normalmente, muchos roles. Las responsabilidades de un rol son tanto el llevar a cabo un
conjunto de actividades como el ser el dueño de un conjunto de artefactos. Existen muchos
roles específicos dentro de los roles genéricos RUP, tales como:
Analistas:
• Analista de procesos de negocio
• Diseñador del negocio
• Analista de sistema
• Especificador de requisitos
Desarrolladores:
• Arquitecto de software
• Diseñador
• Diseñador de interfaz de usuario
• Diseñador de cápsulas
• Diseñador de base de datos
• Implementador
• Integrador
Gestores:
• Jefe de proyecto
• Jefe de control de cambios
• Jefe de configuración
• Jefe de pruebas
• Jefe de despliegue
• Ingeniero de procesos
• Revisor de gestión del proyecto
• Gestor de pruebas
Apoyo:
• Documentador técnico
• Administrador de sistema
• Especialista en herramientas
• Desarrollador de cursos
• Artista gráfico
Especialista en pruebas:
• Especialista en Pruebas
• Analista de pruebas
• Diseñador de pruebas
Otros roles:
• Stakeholders
• Revisor
• Coordinador de revisiones
• Revisor técnico