Está en la página 1de 17

UML RUP Un caso prctico

UML-RUP - un caso prctico


Objetivos El presente ejemplo, que se complementa con el curso de UML-RUP, tiene como fin presentar un caso prctico (simplificado) que sirva a los alumnos como modelo para desarrollar un sistema OO, utilizando UML y el Proceso de Desarrollo. Desarrollo 1. Descripcin bsica del problema 2. Definicin de los Casos de uso a. Identificacin de los actores b. Diagrama de contexto c. Identificacin de los casos de uso d. Diagramas de caso de uso e. Descripcin bsica de los casos de uso i. Refinamiento f. Descripcin detallada de los casos de uso 3. Definicin del modelo de clases de dominio 4. Definicin de diagramas de interaccin a. Diagramas de secuencia de sistema b. Diagramas de colaboracin para asignar responsabilidades 5. Definicin de diagramas de clases de diseo 6. Persistencia de las clases en un modelo relacional

Dentro de un proceso de desarrollo iterativo e incremental, podramos considerar que estamos en una primera iteracin, en la etapa de elaboracin. No consideramos la codificacin (estamos cubriendo la parte marcada con doble lnea negra)

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML RUP Un caso prctico

1. Descripcin bsica del problema Compaa de Ventas de Libros por I nternet ( CVLI) El cliente accede a la informacin sobre los libros a travs de la Web El cliente elegir un nombre de usuario y una clave como mtodo de autentificacin para efectuar las transacciones El cliente podr realizar bsquedas por autor, ttulo o ISBN El cliente debe estar previamente registrado El cliente puede establecer preferencias de envo El cliente puede introducir opciones de empaquetado La librera deber recoger los datos de los pedidos La librera deber rearmar en uno nico los pedidos aislados que estn dentro del plazo de 90 minutos La empresa puede realizar envos parciales en funcin de la disponibilidad de los tems 1.a. Identificacin de los actores Cliente (primario) Administrador del sistema (primario) Tarjeta de crdito (secundario) Gestor de libros (secundario) 1.b. Diagrama de contexto
<< actor>>

0..1 0..*

TARJETA DE CREDITO

secundario

Cliente CVLI
secundario 0..1
<< actor>> GESTOR DE LIBROS

0..1 secundario
<< actor>> GESTOR DE ENVIO

Administrador Sistema

0..1

1.c. Identificacin de los casos de uso Cliente Registrarse al sistema Consultar libro Comprar libro Establecer preferencias de envo y empaquetado
Mg Carlos Neil Material preparado para el curso UML - Proceso de Desarrollo

UML RUP Un caso prctico

Administrador del sistema Armar pedidos Rearmar pedidos 1.d. Diagrama de Casos de Uso

Registrarse al sistema Gestor de Libros

Consultar libro Tarjeta de Credito Cliente Comprar libro

Armar pedidos

Establecer preferencias de envo y empaquetado

Rearmar pedidos

Administrador del Sistema

1.e. Descripcin de los casos de uso nota : esta descripcin podra corresponder a la etapa de inicio, donde se trabaja la visin y el anlisis del negocio Titulo: Registrarse al sistema Resumen: el cliente, antes de realizar una primera transaccin de compra o bsqueda de libros, debe introducir todos sus datos por nica vez, los cuales sern guardados por el sistema y ste le ofrecer la posibilidad de tener una clave y contrasea que utilizara para cada transaccin que realice posteriormente, el cliente tendr la posibilidad de hacer cambios en los datos introducidos, incluso en su clave y contrasea Actores: cliente (primario), tarjeta de crdito (secundario) Titulo: Consultar libro Resumen: el cliente, una vez ingresado al sistema, podr navegar por el mismo en bsqueda de libros, novedades, ofertas, etc. Actores: cliente (primario), gestor de libros (secundario) Titulo: Comprar libro Resumen: el cliente, una vez ingresado al sistema, podr realizar compras de libros, eligindolo de una lista ofrecida por la empresa, cada libro elegido, se sumara a una carrito de compra, etc. El cliente informar el numero y tipo de tarjeta de crdito para realizar el pago. Deber especificar direccin de envi y forma de pago Actores: cliente (primario), gestor de libros (secundario), tarjeta de crdito (secundario)

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML RUP Un caso prctico

Titulo: Establecer preferencias de envo y empaquetado Resumen: el cliente, en cada pedido, podr asociar al mismo opciones tales como tipo de empaque, direccin de envo, mensaje en la tarjeta, etc Actores: cliente (primario) Titulo: Armar pedidos Resumen: El administrador del sistema, agrupar todos los pedidos realizados por un cliente para proceder a su despacho , permitindole al cliente realizar modificaciones al pedido original. Se enviara un notificacin por mail al cliente Actores: Administrador del Sistema (primario) Titulo: Rearmar pedidos Resumen: El administrador del sistema, una vez completado el pedido definitivo puede rearmarlo en funcin de las limitaciones respecto a los libros en disponibilidad, no obstante el costo del pedido no se modifica, avisndole al cliente que el resto del pedido se efectuara ni bien se actualicen las existencias Actores: Administrador del Sistema (primario) 1.e.i Refinamiento nota : esta seccin podra corresponderse con una segunda iteracin Especializacin de cliente El cliente ocasional, que puede mirar las novedades, best-sellers o buscar un libro determinado de acuerdo a un criterio y el cliente especializado (estudiante, investigador o profesor) que puede necesitar ver los libros que tratan sobre un tema especfico

Registrarse al sistema

Consultar libro Cliente Especializado

Cliente

Comprar libro

Cliente Ocasional Establecer preferencias de envo y empaquetado

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML RUP Un caso prctico

Metas Nota: las metas son fines que debe lograrse independientemente de cmo se obtenga

<<meta cuantitativa>> busqueda en sistema


UdeM1 : tiempo respuesta < 2 seg

<<meta cualitativa>> uso del sistema


UdeM1 : interfaz = amigable UdeM2 : exito en la busqueda = alto

<<meta cuantitativa>> errores en el sistema


UdeM1 : cantidad de errores = 0 Cliente Ocacional Cliente

Cliente Especializado

Uso de extensiones e inclusin

Consultar libros en general

Consultar novedades <<extend>> <<extend>> <<extend>>

Consultar ofertas

Gestor de Libros

Consultar libro Cliente <<include>>

Tarjeta de Credito

Comprar libro <<extend>>

Establecer preferencias de envo y empaquetado

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML RUP Un caso prctico

Nuevos casos de uso Consultar libros en general Consultar novedades Consultar ofertas f. Descripcin detallada de casos de usos Nota: hay muchas formas de representar los casos de uso, lo importante es describir con claridad los requerimientos de los usuarios Titulo: Registrarse al sistema Resumen: el cliente, antes de realizar una primera transaccin de compra o bsqueda de libros, debe introducir todos sus datos por nica vez, los cuales sern guardados por el sistema y ste le ofrecer la posibilidad de tener una clave y contrasea que utilizara para cada transaccin que realice posteriormente, el cliente tendr la posibilidad de hacer cambios en los datos introducidos, incluso en su clave y contrasea Actores: cliente (primario), tarjeta de crdito (secundario) Fecha de creacin: Fecha de actualizacin: Versin: Precondicin: el cliente ingresa al sistema por primera vez Escenario principal 1. El cliente ingresa a la pagina web de CVLI 2. El cliente ingresa a la opcin registracin 3. El sistema solicita ingreso de los datos personales: nombre y apellidos, direccin, localidad, cdigo postal, pas 4. El cliente ingresa los datos personales 5. El sistema evala el pas de origen y solicita ingreso de los datos de la tarjeta de crdito: tipo de tarjeta, nmero, fecha lmite de validez 6. El cliente ingresa datos de la tarjeta de crdito 7. El sistema chequea el nmero de la tarjeta de crdito 8. El sistema (teniendo en cuenta el pas de origen) solicita la opcin de preferencia de envo por omisin, esta opcin puede modificarse en cada envo 9. El cliente ingresa preferencia de envo 10. El sistema solicita, para finalizar, el ingreso de la clave de acceso y la contrasea 11. El cliente ingresa clave y contrasea 12. El sistema solicita reingreso de contrasea 13. El cliente reingresa contrasea 14. El sistema informa que la transaccin se realizo correctamente

Flujo alternativo
Mg Carlos Neil Material preparado para el curso UML - Proceso de Desarrollo

UML RUP Un caso prctico

A1 Ingreso incorrecto de los nmeros de los datos La secuencia comienza en el punto 4 del escenario principal 5. El sistema informa que los datos ingresados son incorrectos 6. El sistema pide ingreso de nmeros nuevamente El escenario vuelve al punto 5 A2 Ingreso incorrecto de los nmeros de la tarjeta de crdito La secuencia comienza en el punto 7 del escenario principal 7. El sistema informa que los nmeros ingresados son incorrectos 8. el sistema evala si la cantidad de veces que ingreso el nmero de tarjeta en forma incorrecta es menor a 3 9. El sistema pide ingreso de nmeros nuevamente El escenario vuelve al punto 8 Poscondicin: el cliente est registrado en el sistema Titulo: Consultar libro Resumen: el cliente, una vez ingresado al sistema, podr navegar por el mismo en bsqueda de libros, novedades, ofertas, etc. Actores: cliente (primario), gestor de libros (secundario) Fecha de creacin: Fecha de actualizacin: Versin: Precondicin: el cliente se ha registrado previamente Escenario principal 1. El cliente ingresa a la opcin consulta de libros 2. El sistema despliega la opciones a. Ir a CONSULTAR LIBROS EN GENERAL b. Ir a CONSULTAR NOVEDADES c. Ir a CONSULTAR OFERTAS 3. El sistema vuelve al men principal

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML RUP Un caso prctico

Titulo: Consultar libro en general Resumen: el cliente, una vez ingresado al sistema, podr navegar por el mismo en bsqueda de libros para una posterior compra Actores: cliente (primario), gestor de libros (secundario) Fecha de creacin: Fecha de actualizacin: Versin: Precondicin: el cliente ha ingresado a la opcin consultar libros Escenario principal 1. 2. 3. 4. El cliente solicita listado de libros El sistema despliega listado de libros El cliente navega por las lista de libros El cliente elige un libro y opta por alguna de las opciones a. consultar detalles de libro b. incluir libro en su carrito de compras c. eliminar libro de su carrito de compra 5. El sistema permite, si el cliente lo desea, elegir otro libro (va al punto 3) 6. El sistema muestra carrito de compra con detalles de libros y precio total de la transaccin 7. El cliente, si lo desea, puede modificar el contenido del carrito 8. El cliente solicita ir al men principal 9. El sistema despliega el men principal 10. Del cliente elige opciones del men principal o salir del sistema Flujo alternativo A1 falta de disponibilidad actual del libro La secuencia comienza en el punto 3 del escenario principal 4. El sistema informa que no existe disponibilidad actual de ese libro 5. El sistema solicita elegir otro libro El escenario vuelve al punto 4 Poscondicin: el carrito de compras tiene cero o mas libros elegidos para la compra Titulo: Comprar libro Resumen: el cliente, una vez ingresado al sistema, podr realizar compras de libros, eligindolo de una lista ofrecida por la empresa, cada libro elegido, se sumara a una carrito de compra, etc. El cliente informar el numero y tipo de tarjeta de crdito para realizar el pago. Deber especificar direccin de envi y forma de pago

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML RUP Un caso prctico

Actores: cliente (primario), gestor de libros (secundario), tarjeta de crdito (secundario) Fecha de creacin: Fecha de actualizacin: Versin: Precondicin: el cliente ha ingresado al sistema Escenario principal 1. El cliente ingresa a la pagina de CVLI 2. El sistema muestra opciones de navegacin 3. El cliente ingresa opcin de ingreso al sistema de venta 4. El sistema pide ingreso de clave y contrasea 5. El cliente ingresa clave y contrasea 6. El sistema muestra opciones de navegacin 7. El cliente ingresa opcin de compra 8. El cliente va a CONSULTAR LIBRO 9. El sistema pide nmero de tarjeta de crdito 10. El cliente ingresa el nmero de tarjeta 11. Si el usuario lo requiere, ir a ESTABLECER PREFERENCIAS DE ENVO Y EMPAQUETADO 12. El sistema despliega mensaje de transaccin realizada 13. El sistema vuelve al men principal Flujo alternativo A1 Ingreso incorrecto de clave y contrasea La secuencia comienza en el punto 5 del escenario principal 6. El sistema informa que clave y/o contrasea ingresados son incorrectos 7. El sistema pide ingreso nuevamente El escenario vuelve al punto 6 A2 Transaccin Abortada La secuencia comienza en el punto 12 del escenario principal 13. El sistema informa que hubo un problema en la transaccin 14. El sistema solicita al usuario comenzar nuevamente la compra El escenario vuelve al punto 13 Poscondicin: el cliente ha realizado la compra, el sistema a registrado la venta, la tarjeta de crdito ha autorizado la transaccin

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML RUP Un caso prctico

10

3. Definicin del modelo de clases de dominio El modelo de dominio muestra los objetos del dominio o clases conceptuales, asociaciones entre clases y atributos. NO son componentes software. En una primera etapa reconocemos las clases ms significativas Diagrama de Clases
Cliente
nombre apellido direccion te profesion

1
usa

1
tiene

1
CarritoCompra es de

0..* OrdenCompra
numero tarjeta direccionEntrega opcionEntrega

1 1
tiene 1..*

Items
cantidad

EjemplarLibro

0..*

pertenecen

numero precio
1..*

tiene

1 Libro
isbn titulo editorial soporte categoria

Autor
esta escrito por

1..*

1..*

nombre apellido

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML RUP Un caso prctico

11

4. Definicin de diagramas de interaccin a. Diagramas de secuencia de sistema Registrarse al Sistema


: SISTEMA

: cliente

ingresarSistema()

ingresarDatosPersonales()

ingresarTarjetaCredito()

ingresarPreferenciasEnvio()

ingresarClaveContrasea()

Comprar Libro
: SISTEMA

: cliente

ingresarSistema()

ingresarClaveContrasea()

comprarLibro()

consultarLibro()

corresponde al <<include>> CONSULTAR LIBRO

verListadoLibros()

elegirLibro()

ingresarTarjeta()

terminarTransaccin()

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML RUP Un caso prctico

12

El diagrama de secuencia de sistema muestra, para un escenario especfico de un caso de uso, los eventos que generan los actores externos. Los sistemas se tratan como cajas negras. El diagrama de secuencia muestran los mensajes que podran ser traducidos a operaciones dentro del sistema. Si el sistema estuviera constituido por una sola clase, stas seran las operaciones candidatas que debera tener (teniendo en cuenta los dos casos de uso que analizamos) La distribucin de operaciones en las distintas clases, correspond e a una actividad de diseo

SISTEMA
ingresarSistema() ingresarDatosPersonales() ingresarTarjetaCredito() ingresarPreferenciasEnvio() ingresarClaveContrasea() comprarLibro() consultarLibro() verListadoLibros() elegirLibro() terminarTransaccin()

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML RUP Un caso prctico

13

4. Definicin de diagramas de interaccin b. Diagramas de colaboracin para asignar responsabilidades a. Uso del patrn Experto Reconocemos una operacin en el DSS comprar libro , en esta etapa, le damos un nombre ms representativo: venta Quin es el responsable de saber la cantidad de tems vendidos?. Desde el punto de vista del patrn Experto, deberamos buscar la clase de objetos que posee informacin sobre los Items ; el objeto que conoce esto es CarritoCompra. Qu informacin hace falta saber para determinar la cantidad de items pedidos y el precio para saber la venta total? La cantidad de items pedido est en la clase Items y el precio, en EjemplarLibro , ambos tienen la informacin necesaria para realizar la responsabilidad

b. Uso del patrn Creador En la aplicacin quin debera encargarse de crear una instancia de items ? Desde el punto de vista del patrn Creador, deberamos buscar una clase que agregue, contenga, y realice otras operaciones sobre este tipo de instancias. Un CarritoCompra contiene ( agrega) muchos objetos Items . Es por esto que el patrn Creador sugiere que CarritoCompra es la clase idnea para asumir la responsabilidad de crear las instancias de Items . Este mtodo no lo encontramos inicialmente en el DSS. La creacin de instancias es una de las actividades ms comunes en un sistema orientado a objetos

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML RUP Un caso prctico

14

c. Otras asignaciones Existen otras operaciones en el DSS, cuya asignacin en mas evidente: IngresarDatosPersonales es una responsabilidad de la clase Cliente ConsultarLibro es una responsabilidad de Libro IngresarPreferenciasEnvio es una responsabilidad de OrdenCompra 5. Definicin de diagramas de clases de diseo El diagrama de clases quedara entonces, con la inclusin de las operaciones:
Cliente
nombre apellido direccion te profesion

1
usa

1
tiene

1
CarritoCompra agregarItem() venta() es de

0..* OrdenCompra
numero tarjeta direccionEntrega opcionEntrega

1 1

1
tiene 1..*

Items
cantidad crear() subtotal()

EjemplarLibro

0..*

pertenecen

numero precio

1
darPrecio() 1..* tiene

1 Libro
isbn titulo editorial soporte categoria

Autor
esta escrito por

1..*

1..*

nombre apellido

Figura 1
Mg Carlos Neil Material preparado para el curso UML - Proceso de Desarrollo

UML RUP Un caso prctico

15

Puede suceder que existan operaciones que reconocimos en las primeras etapas anlisis y que, en la fase de diseo, consideremos innecesario asignarlas a una clase en particular. En un refinamiento posterior, luego de la primera iteracin, podramos tener este diagrama de clases (analicen las diferencias con el de la figura 1)

ClienteOcacional

ClienteEspecializado

profesion Cliente
nombre apellido direccion te ingresarDatos() tiene

0..*

OrdenCompra
numero

1 1

IngresarPreferencias()

1
usa es de

1
CarritoCompra

1
agregarItem() venta()

1 Tarjeta
nombre numero

1
DireccionCompra

1
OpcionEntrega

calle numero

tipo

1
tiene 1..* Categoria

tipo
EjemplarLibro

Items
cantidad crear() subtotal()

0..* pertenecen 1

numero darPrecio()

1 1..*
tiene pertenece 1..*

Libro
isbn titulo editorial ConsultarLibro() 1..* escrito por 1..*

Autor
nombre apellido

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML RUP Un caso prctico

16

6. Persistencia de las clases en un modelo relacional Debido al predominio de las bases de datos relacionales, es normal mantener las persistencia de los objetos en tablas Modelo bsico de transformacin Todas las clases se transforman en entidades o Los atributos de la clase pasan a ser atributos de la entidad o Se crean atributos identificadores para cada entidad Las clases asociacin se transforman en interrelaciones o La multiplicidad es de M:N o Los atributos de la clase asociacin pasan a ser atributos de la interrelacin Las asociaciones se transforman en interrelaciones o Se mantiene la misma multiplicidad de la asociacin en las interrelaciones Diagrama de clases a partir del cual realizamos el mapeo con los criterios anteriores

Cliente
nombre apellido direccion te profesion

1
usa

1
tiene

1
CarritoCompra agregarItem() venta() es de

0..* OrdenCompra
numero tarjeta direccionEntrega opcionEntrega

1 1

1
tiene 1..*

Items
cantidad crear() subtotal()

EjemplarLibro

0..* pertenecen 1

numero precio darPrecio() 1..* tiene

1 Libro
isbn titulo editorial soporte categoria

Autor
esta escrito por

1..*

1..*

nombre apellido

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML RUP Un caso prctico

17

Modelo Entidad Interrelacin resultante del mapeo


cod_cli cod_ord

CLIENTE 1 1 cod_carro 1 CARRITOCOMPRA 1 1 N

ORDENCOMPRA 1

num_ejemp N N ITEMS 1 EJEMPLARLIBRO N num_item cod_autor N AUTOR cod_libro 1 N LIBRO

Nota : omitimos, por simplicidad, dibujar los atributos Transformacin del modelo Entidad Interrelacin al Modelo Relacional

Cliente (cod_cli, ...) OrdenCompra(cod_ord, ..., cod_cli(Cliente)) CarritoCompra (cod_carro, ..., cod_cli(Cliente), cod_ord(OrdenCompra)) Items (num_item, ..., cod_carro(CarritoCompra), num_ejem(EjemplarLibro)) EjemplarLibro (num_ejem, ..., cod_libro(Libro)) Libro(cod_libro, ...) Autor(cod_autor, ...) LibroAutor(cod_libro(Libro), cod_autor(Autor))

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo