Proceso Unificado de Desarrollo (RUP)
Es una metodología de
desarrollo de software que está basado en componentes e interfaces bien
definidas, y junto con el Lenguaje Unificado de Modelado (UML), constituye la
metodología estándar más utilizada para el análisis, implementación y
documentación de sistemas orientados a objetos.
Es un proceso que puede
especializarse para una gran variedad de sistemas de software, en diferentes
áreas de aplicación, diferentes tipos de organizaciones, diferentes niveles de
aptitud y diferentes tamaños de proyecto.
RUP no es un sistema con
pasos firmemente establecidos, sino un conjunto de metodologías adaptables al
contexto y necesidades de cada organización.
Es el resultado de varios
años de desarrollo y uso práctico en el que se han unificado técnicas de
desarrollo, a través del UML, y trabajo de muchas metodologías utilizadas por
los clientes. La versión que se ha estandarizado vio la luz en 1998 y se
conoció en sus inicios como Proceso Unificado de Rational 5.0; de ahí las
siglas con las que se identifica a este proceso de desarrollo.
Principales Elementos
Como RUP
es un proceso, en su modelación define como sus principales elementos:
Trabajadores (“quién”): Define el comportamiento y
responsabilidades (rol) de un individuo, grupo de individuos, sistema
automatizado o máquina, que trabajan en conjunto como un equipo. Ellos realizan
las actividades y son propietarios de elementos.
Actividades (“cómo”): Es una tarea que tiene un propósito claro, es
realizada por un trabajador y manipula elementos.
Artefactos (“qué”): Productos tangibles del proyecto
que son producidos, modificados y usados por las actividades. Pueden ser
modelos, elementos dentro del modelo, código fuente y ejecutables.
Flujo de actividades (“cuándo”): Secuencia de actividades
realizadas por trabajadores y que produce un resultado de valor observable.
Características Principales de RUP
o Unifica
los mejores elementos de metodologías anteriores.
o Preparado para desarrollar grandes y complejos proyectos.
o Orientado a Objetos.
o Utiliza el UML como lenguaje de representación visual.
o Preparado para desarrollar grandes y complejos proyectos.
o Orientado a Objetos.
o Utiliza el UML como lenguaje de representación visual.
Principales ventajas
o Coste
del riesgo a un solo incremento.
o Reduce el riesgo de no sacar el producto en el calendario previsto.
o Acelera el ritmo de desarrollo.
o Se adapta mejor a las necesidades del cliente.
o Reduce el riesgo de no sacar el producto en el calendario previsto.
o Acelera el ritmo de desarrollo.
o Se adapta mejor a las necesidades del cliente.
Ciclo de vida de RUP
El ciclo de vida de RUP se caracteriza por:
Dirigido por casos de uso: Los casos de uso reflejan lo que los usuarios futuros necesitan y desean, lo cual se capta cuando se modela el negocio y se representa a través de los requerimientos. A partir de aquí los casos de uso guían el proceso de desarrollo ya que los modelos que se obtienen, como resultado de los diferentes flujos de trabajo, representan la realización de los casos de uso (cómo se llevan a cabo).
Dirigido por casos de uso: Los casos de uso reflejan lo que los usuarios futuros necesitan y desean, lo cual se capta cuando se modela el negocio y se representa a través de los requerimientos. A partir de aquí los casos de uso guían el proceso de desarrollo ya que los modelos que se obtienen, como resultado de los diferentes flujos de trabajo, representan la realización de los casos de uso (cómo se llevan a cabo).
Centrado en la arquitectura: La
arquitectura muestra la visión común del sistema completo en la que el equipo
de proyecto y los usuarios deben estar de acuerdo, por lo que describe los
elementos del modelo que son más importantes para su construcción, los
cimientos del sistema que son necesarios como base para comprenderlo,
desarrollarlo y producirlo económicamente. RUP se desarrolla mediante
iteraciones, comenzando por los CU relevantes desde el punto de vista de la
arquitectura. El modelo de arquitectura se representa a través de vistas en las
que se incluyen los diagramas de UML.
Iterativo e Incremental: Una iteración involucra
actividades de todos los flujos de trabajo, aunque desarrolla fundamentalmente
algunos más que otros.
Por
ejemplo, una iteración de elaboración centra su atención en el análisis y
diseño, aunque refina los requerimientos y obtiene un producto con un
determinado nivel, pero que irá creciendo incrementalmente en cada
iteración.
Es práctico dividir el trabajo en partes más pequeñas o miniproyectos. Cada miniproyecto es una iteración que resulta en un incremento. Las iteraciones hacen referencia a pasos en los flujos de trabajo, y los incrementos, al crecimiento del producto. Cada iteración se realiza de forma planificada es por eso que se dice que son miniproyectos.
Es práctico dividir el trabajo en partes más pequeñas o miniproyectos. Cada miniproyecto es una iteración que resulta en un incremento. Las iteraciones hacen referencia a pasos en los flujos de trabajo, y los incrementos, al crecimiento del producto. Cada iteración se realiza de forma planificada es por eso que se dice que son miniproyectos.
Fases
·
La fase de concepción o inicio tiene
por finalidad definir la visión, los objetivos y el alcance del proyecto, tanto
desde el punto de vista funcional como del técnico, obteniéndose como uno de
los principales resultados una lista de los casos de uso y una lista de los
factores de riesgo del proyecto.
·
La fase de elaboración tiene
como principal finalidad completar el análisis de los casos de uso y definir la
arquitectura del sistema, además se obtiene una aplicación ejecutable que
responde a los casos de uso que la comprometen
·
La fase de construcción está
compuesta por un ciclo de varias iteraciones, en las cuales se van incorporando
sucesivamente los casos de uso, de acuerdo a los factores de riesgo del
proyecto.
·
La fase de transición se inicia
con una versión “beta” del sistema y culmina con el sistema en fase de
producción.
Hitos
Fases
|
Hitos
|
Conceptualización - Inicio
|
Objetivos (visión)
|
Elaboración
|
Arquitectura
|
Construcción
|
Funcionalidad operativa
|
Transición
|
Release del sistema
|
Diferencias de RUP con las demás metodologías
Algunos
aspectos que diferencian a RUP de las demás metodologías y lo que lo hace único
es que en RUP, los casos de uso no son sólo una herramienta para especificar
los requisitos del sistema, sino que también guían su diseño, implementación y
prueba. Los casos de uso constituyen un elemento integrador y una guía del
trabajo.
Además de
utilizar los casos de uso para guiar el proceso; se presta especial atención al
establecimiento temprano de una buena arquitectura que no se vea fuertemente
impactada ante cambios posteriores durante la construcción y el mantenimiento.
También este propone que cada fase se desarrolle en iteraciones.
Enlaces Relacionados
·
MDA
Lenguaje modelado de UML
UML son las siglas de “Unified Modeling Language” o
“Lenguaje Unificado de Modelado”. Se trata de un estándar que se ha adoptado a
nivel internacional por numerosos organismos y empresas para crear esquemas,
diagramas y documentación relativa a los desarrollos de software (programas
informáticos).
UML es una herramienta propia de personas que tienen
conocimientos relativamente avanzados de programación y es frecuentemente usada
por analistas funcionales (aquellos que definen qué debe hacer un programa sin
entrar a escribir el código) y analistas-programadores (aquellos que dado un
problema, lo estudian y escriben el código informático para resolverlo en un lenguaje
como Java, C#, Python o cualquier otro). Por tanto si estás dando tus primeros
pasos en programación, te recomendaríamos que te olvides de UML hasta que
tengas unos conocimientos mínimos como uso de condicionales, bucles, y
conocimiento de la programación orientada a objetos. Esto es solo una
recomendación, en realidad prácticamente cualquier persona puede usar UML,
incluso podría usarse para realizar esquemas o documentación de procesos que no
tengan que ver con la informática.
Los principales beneficios de UML son:
- Mejores
tiempos totales de desarrollo (de 50 % o más).
- Modelar
sistemas (y no sólo de software) utilizando conceptos orientados a
objetos.
- Establecer
conceptos y artefactos ejecutables.
- Encaminar
el desarrollo del escalamiento en sistemas complejos de misión crítica.
- Crear
un lenguaje de modelado utilizado tanto por humanos como por máquinas.
- Mejor
soporte a la planeación y al control de proyectos.
- Alta
reutilización y minimización de costos.
UML, ¿Método o Lenguaje de Modelado?
UML es un lenguaje para hacer modelos y es independiente de los métodos
de análisis y diseño. Existen diferencias importantes entre un método y un
lenguaje de modelado. Un método es
una manera explícita de estructurar el pensamiento y las acciones de cada
individuo. Además, el método le dice al usuario qué hacer, cómo hacerlo, cuándo
hacerlo y por qué hacerlo; mientras que el lenguaje de modelado carece de estas
instrucciones. Los métodos contienen modelos y esos modelos son utilizados para
describir algo y comunicar los resultados del uso del método.
Un modelo es expresado en un lenguaje
de modelado. Un lenguaje de modelado consiste de vistas, diagramas,
elementos de modelo los símbolos utilizados en los modelos y un
conjunto de mecanismos generales o reglas que indican cómo utilizar los
elementos. Las reglas son sintácticas, semánticas y pragmáticas (figura 1).
Vistas: Las vistas muestran diferentes aspectos del
sistema modelado. Una vista no es una gráfica, pero sí una abstracción que
consiste en un número de diagramas y todos esos diagramas juntos muestran una
"fotografía" completa del sistema. Las vistas también ligan el
lenguaje de modelado a los métodos o procesos elegidos para el desarrollo. Las
diferentes vistas que UML tiene son:
- Vista
Use-Case: Una vista que muestra la funcionalidad del sistema como la
perciben los actores externos.
- Vista
Lógica: Muestra cómo se diseña la funcionalidad dentro del sistema, en
términos de la estructura estática y la conducta dinámica del sistema.
- Vista
de Componentes: Muestra la organización de los componentes de código.
- Vista
Concurrente: Muestra la concurrencia en el sistema, direccionando los
problemas con la comunicación y sincronización que están presentes en un
sistema concurrente.
- Vista
de Distribución: muestra la distribución del sistema en la arquitectura
física con computadoras y dispositivos llamados nodos.
Diagramas: Los diagramas son las gráficas que describen el
contenido de una vista. UML tiene nueve tipos de diagramas que son utilizados
en combinación para proveer todas las vistas de un sistema: diagramas de caso
de uso, de clases, de objetos, de estados, de secuencia, de colaboración, de
actividad, de componentes y de distribución.
Símbolos o Elementos de modelo: Los conceptos utilizados en los
diagramas son los elementos de modelo que representan conceptos comunes
orientados a objetos, tales como clases, objetos y mensajes, y las relaciones
entre estos conceptos incluyendo la asociación, dependencia y generalización.
Un elemento de modelo es utilizado en varios diagramas diferentes, pero siempre
tiene el mismo significado y simbología.
Reglas o Mecanismos generales: Proveen comentarios extras,
información o semántica acerca del elemento de modelo; además proveen
mecanismos de extensión para adaptar o extender UML a un método o proceso
específico, organización o usuario.
Fases Del Desarrollo De Un Sistema
Las fases del desarrollo de sistemas que soporta UML son: Análisis de requerimientos, Análisis, Diseño, Programación y Pruebas.
Análisis de Requerimientos
UML tiene casos de uso (use-cases) para capturar los requerimientos del
cliente. A través del modelado de casos de uso, los actores externos que tienen
interés en el sistema son modelados con la funcionalidad que ellos requieren
del sistema (los casos de uso). Los actores y los casos de uso son modelados
con relaciones y tienen asociaciones entre ellos o éstas son divididas en
jerarquías. Los actores y casos de uso son descritos en un diagrama use-case.
Cada use-case es descrito en texto y especifica los requerimientos del cliente:
lo que él (o ella) espera del sistema sin considerar la funcionalidad que se
implementará. Un análisis de requerimientos puede ser realizado también para
procesos de negocios, no solamente para sistemas de software.
Análisis
La fase de análisis abarca las abstracciones primarias (clases y
objetos) y mecanismos que están presentes en el dominio del problema. Las
clases que se modelan son identificadas, con sus relaciones y descritas en un
diagrama de clases. Las colaboraciones entre las clases para ejecutar los casos
de uso también se consideran en esta fase a través de los modelos dinámicos en
UML. Es importante notar que sólo se consideran clases que están en el dominio
del problema (conceptos del mundo real) y todavía no se consideran clases que
definen detalles y soluciones en el sistema de software, tales como clases para
interfaces de usuario, bases de datos, comunicaciones, concurrencia, etc.
Diseño
En la fase de diseño, el resultado del análisis es expandido a una solución
técnica. Se agregan nuevas clases que proveen de la infraestructura técnica:
interfaces de usuario, manejo de bases de datos para almacenar objetos en una
base de datos, comunicaciones con otros sistemas, etc. Las clases de dominio
del problema del análisis son agregadas en esta fase. El diseño resulta en
especificaciones detalladas para la fase de programación.
Programación
En esta fase las clases del diseño son convertidas a código en un
lenguaje de programación orientado a objetos. Cuando se crean los modelos de
análisis y diseño en UML, lo más aconsejable es trasladar mentalmente esos
modelos a código.
Pruebas
Normalmente, un sistema es tratado en pruebas de unidades, pruebas de
integración, pruebas de sistema, pruebas de aceptación, etc. Las pruebas de
unidades se realizan a clases individuales o a un grupo de clases y son
típicamente ejecutadas por el programador. Las pruebas de integración integran
componentes y clases en orden para verificar que se ejecutan como se
especificó. Las pruebas de sistema ven al sistema como una "caja
negra" y validan que el sistema tenga la funcionalidad final que le
usuario final espera. Las pruebas de aceptación conducidas por el cliente
verifican que el sistema satisface los requerimientos y son similares a las
pruebas de sistema.
No hay comentarios:
Publicar un comentario