2.2.2. Proceso Unificado (UP)

13
El Proceso Unificado de Desarrollo Software o simplemente Proceso Unificado es un marco de desarrollo de software que se caracteriza por estar dirigido por casos de uso, centrado en la arquitectura y por ser iterativo e incremental. El refinamiento más conocido y documentado del Proceso Unificado es el Proceso Unificado de Rational o simplemente RUP. El Proceso Unificado no es simplemente un proceso, sino un marco de trabajo extensible que puede ser adaptado a organizaciones o proyectos específicos. De la misma forma, el Proceso Unificado de Rational, también es un marco de trabajo extensible, por lo que muchas veces resulta imposible decir si un refinamiento particular del proceso ha sido derivado del Proceso Unificado o del RUP. Por dicho motivo, los dos nombres suelen utilizarse para referirse a un mismo concepto. El nombre Proceso Unificado se usa para describir el proceso genérico que incluye aquellos elementos que son comunes a la mayoría de los refinamientos existentes. También permite evitar problemas legales ya que Proceso Unificado de Rational o RUP son marcas registradas por IBM (desde su compra de Rational Software Corporation en 2003). El primer libro sobre el tema se denominó, en su versión española, El Proceso Unificado de Desarrollo de Software (ISBN 84-7829-036-2) y fue publicado en 1999 por Ivar Jacobson, Grady Booch y James Rumbaugh, conocidos también por ser los desarrolladores del UML, el Lenguaje Unificado de Modelado. Desde entonces los autores que publican libros sobre el tema y que no están afiliados a Rational utilizan el término Proceso Unificado, mientras que los autores que pertenecen a Rational favorecen el nombre de Proceso Unificado de Rational. Índice 1 Características 1.1 Iterativo e Incremental 1.2 Dirigido por los casos de uso 1.3 Centrado en la arquitectura

Transcript of 2.2.2. Proceso Unificado (UP)

Page 1: 2.2.2. Proceso Unificado (UP)

El Proceso Unificado de Desarrollo Software o simplemente Proceso Unificado es un marco de desarrollo de software que se caracteriza por estar dirigido por casos de uso, centrado en la arquitectura y por ser iterativo e incremental. El refinamiento más conocido y documentado del Proceso Unificado es el Proceso Unificado de Rational o simplemente RUP.

El Proceso Unificado no es simplemente un proceso, sino un marco de trabajo extensible que puede ser adaptado a organizaciones o proyectos específicos. De la misma forma, el Proceso Unificado de Rational, también es un marco de trabajo extensible, por lo que muchas veces resulta imposible decir si un refinamiento particular del proceso ha sido derivado del Proceso Unificado o del RUP. Por dicho motivo, los dos nombres suelen utilizarse para referirse a un mismo concepto.

El nombre Proceso Unificado se usa para describir el proceso genérico que incluye aquellos elementos que son comunes a la mayoría de los refinamientos existentes. También permite evitar problemas legales ya que Proceso Unificado de Rational o RUP son marcas registradas por IBM (desde su compra de Rational Software Corporation en 2003). El primer libro sobre el tema se denominó, en su versión española, El Proceso Unificado de Desarrollo de Software (ISBN 84-7829-036-2) y fue publicado en 1999 por Ivar Jacobson, Grady Booch y James Rumbaugh, conocidos también por ser los desarrolladores del UML, el Lenguaje Unificado de Modelado. Desde entonces los autores que publican libros sobre el tema y que no están afiliados a Rational utilizan el término Proceso Unificado, mientras que los autores que pertenecen a Rational favorecen el nombre de Proceso Unificado de Rational.

Índice

1 Características

1.1 Iterativo e Incremental

1.2 Dirigido por los casos de uso

1.3 Centrado en la arquitectura

1.4 Enfocado en los riesgos

2 Lenguaje unificado de modelado

2.1 ¿Por qué analizar y diseñar?

3 Véase también

4 Bibliografía

Características

Iterativo e Incremental

Page 2: 2.2.2. Proceso Unificado (UP)

El Proceso Unificado es un marco de desarrollo iterativo e incremental compuesto de cuatro fases denominadas Inicio, Elaboración, Construcción y Transición. Cada una de estas fases es a su vez dividida en una serie de iteraciones (la de inicio puede incluir varias iteraciones en proyectos grandes). Estas iteraciones ofrecen como resultado un incremento del producto desarrollado que añade o mejora las funcionalidades del sistema en desarrollo.

Cada una de estas iteraciones se divide a su vez en una serie de disciplinas que recuerdan a las definidas en el ciclo de vida clásico o en cascada: Análisis de requisitos, Diseño, Implementación y Prueba. Aunque todas las iteraciones suelen incluir trabajo en casi todas las disciplinas, el grado de esfuerzo dentro de cada una de ellas varía a lo largo del proyecto.

Diagrama ilustrando como el énfasis relativo en las distintas disciplinas cambia a lo largo del proyecto.

Dirigido por los casos de uso

En el Proceso Unificado los casos de uso se utilizan para capturar los requisitos funcionales y para definir los contenidos de las iteraciones. La idea es que cada iteración tome un conjunto de casos de uso o escenarios y desarrolle todo el camino a través de las distintas disciplinas: diseño, implementación, prueba, etc. El proceso dirigido por casos de uso es el rup. Nota: en UP se está Dirigido por requisitos y riesgos de acuerdo con el Libro UML 2 de ARLOW, Jim que menciona el tema.

Centrado en la arquitectura

El Proceso Unificado asume que no existe un modelo único que cubra todos los aspectos del sistema. Por dicho motivo existen múltiples modelos y vistas que definen la arquitectura de software de un sistema. La analogía con la construcción es clara, cuando construyes un edificio existen diversos planos que incluyen los distintos servicios del mismo: electricidad, fontanería, etc.

Enfocado en los riesgos

El Proceso Unificado requiere que el equipo del proyecto se centre en identificar los riesgos críticos en una etapa temprana del ciclo de vida. Los resultados de cada iteración, en especial los de la fase de Elaboración deben ser seleccionados en un orden que asegure que los riesgos principales son considerados primero.

Lenguaje unificado de modelado

Page 3: 2.2.2. Proceso Unificado (UP)

El Lenguaje unificado de modelado no es el sucesor de la oleada de metodos de analisis y diseno orientados a objetos que surgio a finales de la decada de los 1980 y principios de la siguiente. El UML unifica, sobre todo, los metodos de Booch, Rumbaugh, Brühl (OMT) y Jacobson, pero su alcance ha llegado a formar parte fundamental de la Ingeniería de Software tras su estandarización en 1997 con el OMG (Object Management Group o Grupo de administracion de objetos).

¿Por qué analizar y diseñar?

En resumidas cuentas, la cuestion fundamental del desarrollo del software es la escritura del código. Después de todo, los diagramas son solo imagenes bonitas. Ningún usuario va a agradecer la belleza de los dibujos; lo que el usuario quiere es software que funcione (UML Gota a Gota, Addison Wesley, pág. 7). Por lo tanto, cuando considere usar el UML es importante preguntarse por qué lo hará y cómo le ayudará a usted cuando llegue el momento de escribir el código. No existe una evidencia empírica adecuada que demuestre si estas técnicas son buenas o malas; pero lo que sí es cierto es que es de considerable ayuda para las etapas de mantenimiento en proyectos de mediana/avanzada envergadura.

Page 4: 2.2.2. Proceso Unificado (UP)

El Proceso Unificado de Desarrollo de Software (RUP)

IntroducciónEl Proceso Unificado es un proceso de software genérico que puede ser

utilizado para una gran cantidad de tipos de sistemas de software, para diferentes áreas de aplicación, diferentes tipos de organizaciones, diferentes niveles de competencia y diferentes tamaños de proyectos.

Provee un enfoque disciplinado en la asignación de tareas y resposabilidades dentro de una organización de desarrollo. Su meta es asegurar la producción de software de muy alta calidad que satisfaga las necesidades de los usuarios finales, dentro de un calendario y presupuesto predecible.

El Proceso Unificado tiene dos dimensiones (Figura 1):

        Un eje horizontal que representa el tiempo y muestra los aspectos del ciclo de vida del proceso a lo largo de su desenvolvimiento

        Un eje vertical que representa las disciplinas, las cuales agrupan actividades de una manera lógica de acuerdo a su naturaleza.

La primera dimensión representa el aspecto dinámico del proceso conforme se va desarrollando, se expresa en términos de fases, iteraciones e hitos (milestones).

La segunda dimensión representa el aspecto estático del proceso: cómo es descrito en términos de componentes del proceso, disciplinas, actividades, flujos de trabajo, artefactos y roles.

 

Page 5: 2.2.2. Proceso Unificado (UP)

Figura 1

El Proceso Unificado se basa en componentes (component-based), lo que significa que el sistema en construcción está hecho de componentes de software interconectados por medio de interfaces bien definidas (well-defined interfaces).

El Proceso Unificado usa el Lenguaje de Modelado Unificado (UML) en la preparación de todos los planos del sistema. De hecho, UML es una parte integral del Proceso Unificado, fueron desarrollados a la par.

Los aspectos distintivos del Proceso Unificado están capturados en tres conceptos clave: dirigido por casos de uso (use-case driven), centrado en la arquitectura (architecture-centric), iterativo e incremental. Esto es lo que hace único al Proceso Unificado.

El Proceso Unificado es dirigido por casos de usoUn sistema de software se crea para servir a sus usuarios. Por lo tanto, para

construir un sistema exitoso se debe conocer qué es lo que quieren y necesitan los usuarios prospectos.

El término usuario se refiere no solamente a los usuarios humanos, sino a otros sistemas. En este contexto, el término usuario representa algo o alguien que interactúa con el sistema por desarrollar.

Un caso de uso es una pieza en la funcionalidad del sistema que le da al usuario un resultado de valor. Los casos de uso capturan los requerimientos funcionales. Todos los casos de uso juntos constituyen el modelo de casos de

Page 6: 2.2.2. Proceso Unificado (UP)

uso el cual describe la funcionalidad completa del sistema. Este modelo reemplaza la tradicional especificación funcional del sistema. Una especificación funcional tradicional se concentra en responder la pregunta: ¿Qué se supone que el sistema debe hacer? La estrategia de casos de uso puede ser definida agregando tres palabras al final de la pregunta: ¿por cada usuario? Estas tres palabras tienen una implicación importante, nos fuerzan a pensar en términos del valor a los usuarios y no solamente en términos de las funciones que sería bueno que tuviera. Sin embargo, los casos de uso no son solamente una herramienta para especificar los requerimientos del sistema, también dirigen su diseño, implementación y pruebas, esto es, dirigen el proceso de desarrollo.

Aún y cuando los casos de uso dirigen el proceso, no son elegidos de manera aislada. Son desarrollados a la par con la arquitectura del sistema, esto es, los casos de uso dirigen la arquitectura del sistema y la arquitectura del sistema influencia la elección de los casos de uso. Por lo tanto, al arquitectura del sistema y los casos de uso maduran conforme avanza el ciclo de vida.

El Proceso Unificado está centrado en la arquitecturaEl papel del arquitecto de sistemas es similar en naturaleza al papel que el

arquitecto desempeña en la construcción de edificios. El edificio se mira desde diferentes puntos de vista: estructura, servicios, plomería, electricidad, etc. Esto le permite al constructor ver una radiografía completa antes de empezar a construir. Similarmente, la arquitectura en un sistema de software es descrita como diferentes vistas del sistema que está siendo construido.

El concepto de arquitectura de software involucra los aspectos estáticos y dinámicos más significativos del sistema. La arquitectura surge de las necesidades de la empresa, tal y como las interpretan los usuarios y otros stakeholders, y tal y como están reflejadas en los casos de uso. Sin embargo, también está influenciada por muchos otros factores, tales como la plataforma de software en la que se ejecutará, la disponiblidad de componentes reutilizables, consideraciones de instalación, sistemas legados, requerimientos no funcionales (ej. desempeño, confiabilidad). La arquitectura es la vista del diseño completo con las características más importantes hechas más visibles y dejando los detalles de lado. Ya que lo importante depende en parte del criterio, el cual a su vez viene con la experiencia, el valor de la arquitectura depende del personal asignado a esta tarea. Sin embargo, el proceso ayuda al arquitecto a enfocarse en las metas correctas, tales como claridad (understandability), flexibilidad en los cambios futuros (resilience) y reuso.

¿Cómo se relacionan los casos de uso con la arquitectura? Cada producto tiene función y forma. Uno sólo de los dos no es suficiente. Estas dos fuerzas deben estar balanceadas para obtener un producto exitoso. En este caso función

Page 7: 2.2.2. Proceso Unificado (UP)

corresponde a los casos de uso y forma a la arquitectura. Existe la necesidad de intercalar entre casos de uso y arquitectura. Es un problema del “huevo y la gallina”. Por una parte, los casos de uso deben, cuando son realizados, acomodarse en la arquitectura. Por otra parte, la arquitectura debe proveer espacio para la realización de todos los casos de uso, hoy y en el futuro. En la realidad, ambos arquitectura y casos de uso deben evolucionar en paralelo.

El Proceso Unificado es Iterativo e Incremental Desarrollar un producto de software comercial es una tarea enorme que

puede continuar por varios meses o años. Es práctico dividir el trabajo en pequeños pedazos o mini-proyectos. Cada mini-proyecto es una iteración que finaliza en un incremento. Las iteraciones se refieren a pasos en el flujo de trabajo, los incrementos se refieren a crecimiento en el producto. Para ser más efectivo, las iteraciones deben estar controladas, esto es, deben ser seleccionadas y llevadas a cabo de una manera planeada.

Los desarrolladores basan su selección de qué van a implementar en una iteración en dos factores. Primero, la iteración trata con un grupo de casos de uso que en conjunto extienden la usabilidad del producto. Segundo, la iteración trata con los riesgos más importantes. Las iteraciones sucesivas construyen los artefactos del desarrollo a partir del estado en el que fueron dejados en la iteración anterior.

En cada iteración, los desarrolladores identifican y especifican los casos de uso relevantes, crean el diseño usando la arquitectura como guía, implementan el diseño en componentes y verifican que los componentes satisfacen los casos de uso. Si una iteración cumple sus metas – y usualmente lo hace – el desarrollo continúa con la siguiente iteración. Cuando la iteración no cumple con sus metas, los desarrolladores deben revisar sus decisiones previas y probar un nuevo enfoque.

Page 8: 2.2.2. Proceso Unificado (UP)

1. Proceso de Desarrollo de Software: Proceso de negocio, o caso de uso de

negocio, de un negocio de desarrollo de software. Conjunto total de actividades

necesarias para transformar los requisitos de un cliente en un conjunto consistente de

artefactos que representan un producto software y en punto posterior en el tiempo para

transformar cambiso en dichos requisitos en nuevas versiones del producto.

2. Lenguaje Unificado de Modelado (UML): Lenguaje estandar para el modelado

de software lenguaje para visualizar, especificar, construir y documentar los artefactos

de un sistema con gran cantidad de software. Lenguaje usado por el Proceso Unificado.

Lenguaje que permite a los desarrolladores visualizar el producto de su trabajo

(Artefactos) en esquemas o diagramas estandarizados.

3. Proceso Unificado de Desarrollo de Software (PUDS): Proceso de desarrollo

de software basado en el Lenguaje Unificado de Modelado y que es iterativo, centrado en

la arquitectura y dirigido por los casos de uso y los riesgos. Proceso que se organiza en

cuatro fases: inicio, elaboracion, construccion y transicion, y que se estructura en torno a

cinco flujos de trabajo fundamentales: recopilacion de requisitos, analisis, diseño,

implementacion y pruebas. Proceso que se describe en terminos de un modelo de

negocio, el cual esta a su vez estructurado en funcion de tres bloques de construccion

primordiales trabajadores, actividades y artefactos.

4. Requisitos: Flujo de trabajo fundamental cuyo proposito esencial es orientado al

desarrollado hacia el sistema correcto. Esto se lleva a cabo mediante la descripcion de

los requisitos del sistema de forma tal que se pueda llegar a un acuerdo entre el

cliente(incluyendo los usuarios) y los desarrolladores del sistema, acerca de lo que el

sistema debe hacer y lo que no.

5. Analisisis: Flujos de trabajo fundamental cuyo proposito principal es analizar los

requisitos descritos en la captura de requisitos, mediante su refinamiento y

estructuracion. El objetivo de esto es (1) lograr una comprension mas precisa de los

requisitos, y (2) obtener una descripcion de los requisitos que sea facil de mantener y

que nos ayude a dar estructura al sistema en su conjunto incluyendo su arquitectura.

6. Diseño: Flujo de trabajo fundamental cuyo proposito principal es la de formular

modelos que se centran en los requisitos no funcionales y el dominio de la solucion y que

prepara para la implementacion y pruebas del sistema.

Page 9: 2.2.2. Proceso Unificado (UP)

7. Implementacion: Flujo de trabajo fundamental cuyo proposito esencial es

implementar el sistema en terminos de componentes, es decir codigo fuente guiones,

ficheros binarios, ejecutables, et.

8. Prueba: Flujo de trabajo fundamental cuyo proposito esencial es comprobar el

resultado de la implementacion mediante las pruebas de cada construccion, incluyendo

tanto construcciones internas como intermedias, asi como las versiones finales del

sistema que van a ser entregadas a terceras personas.

9. Fase de Inicio: Primera fase del ciclo de vida del software, en la que la idea inicial

para el desarrollo es refinada hasta el punto de quedar lo suficientemente bien

establecida como para garantizar la entrada en la base de elaboracion.

10. Fase de Elaboracion: Segunda fase del ciclo de vida, en la que se define la

arquitectura.

11. Fase de Construccion: Tercera fase del ciclo de vida del software, en la que el

software es desarrollado a partir de una linea base de la arquitectura ejecutable, hasta el

punto en el que se esta listo para ser transmitido a las comunidades de usuarios.

12. Fase de Transicion: Cuarta fase del ciclo de vida del software es puesto en manos

de la comunidad de usuarios.

13. Arquitectura: Conjunto de desiciones significativas, acerca de la organizacion de un

sistema software, la seleccion de los elementos estructurales apartir de los cuales se

compone el sistema y las interfaces entre ellos, junto con su comportamiento, tal y como

se especifica en las colaboraciones entre estos elementos, la composicion de estos

elementos estructurales y de comportamiento de subsistemas progresivamente

mayores, y el estilo arquitectonico que guia esta organizacion, estos elementos y sus

interfaces, sus colaboraciones y su composicion. La arquitectura de software se interesa

no solo por la estructura y el comportamiento, sino tambien por las restricciones y

compromisos de uso, funcionamiento, flexibilidad al cambio, reutilizacion, comprension,

economia y tecnologia, asi como aspectos esteticos.

14. Vista Arquitectonica del Modelo de Casos de Uso: Vista de la arquitectura de

un sistema abarcando los casos de uso significativos desde un punto de vista

arquitectonico.

15. Vista Arquitectonica del Modelo de Analisis: Vista arquitectonica de un

sistema, abarcando las clases, paquetes y realizaciones de casos de uso del analisis,

vista que fundamentalmente aborda el refinamiento y estructuracion de los requisitos

del sistema. La estrucutra de esta vista se preserva en la medida de lo posible cuando se

diseña e implementa la arquitectura del sistema.

16. Vista Arquitectonica del Modelo de Diseño: Vista de la arquitectura de un

sistema, abarcando las clases , subsistemas, interfaces y realizaciones de casos de uso

del diseño que forman el vocabulario del dominio de la solucion del sistema, vista que

abarca tambien los hilos y procesos qeu establecen la concurrencia y mecanismos de

sincronizacion del sistema, vista que aborda los requisitos no funcionales, incluyendo los

requisitos de rendimiento y capacidad de crecimiento de un sistema.

17. Vista Arquitectonica del Modelo de Despliege: Vista de la arquitectura de un

sistema abarcando los nodos que forman la topologia hardware sobre la que se ejecuta

el sistema, vista que aborda la distribucion, entrega e instalacion de las partes que

constituyen el sistema fisico.

18. Vista Arquitectonica del Modelo de Implementacion: Vista arquitectonica de

un sistema, abarcando los componentes usados para el ensamblado y lanzamiento del

sistema fisico, vista que aborda la gestion de la configuracion de las versiones del

Page 10: 2.2.2. Proceso Unificado (UP)

sistema, constituida por componentes independientes que pueden ser ensambladas de

varias formas para producir un sistema ejecutable