Un Caso Practico UML Proceso de Desarrollo

UML – RUP Un caso práctico 1 UML-RUP - un caso práctico Objetivos El presente ejemplo, que se complementa con el curso

Views 142 Downloads 4 File size 475KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

UML – RUP Un caso práctico

1

UML-RUP - un caso práctico Objetivos El presente ejemplo, que se complementa con el curso de UML-RUP, tiene como fin presentar un caso práctico (simplificado) que sirva a los alumnos como modelo para desarrollar un sistema OO, utilizando UML y el Proceso de Desarrollo. Desarrollo 1. Descripción básica del problema 2. Definición de los Casos de uso a. Identificación de los actores b. Diagrama de contexto c. Identificación de los casos de uso d. Diagramas de caso de uso e. Descripción básica de los casos de uso i. Refinamiento f. Descripción detallada de los casos de uso 3. Definición del modelo de clases de dominio 4. Definición de diagramas de interacción a. Diagramas de secuencia de sistema b. Diagramas de colaboración para asignar responsabilidades 5. Definición de diagramas de clases de diseño 6. Persistencia de las clases en un modelo relacional

Dentro de un proceso de desarrollo iterativo e incremental, podríamos considerar que estamos en una primera iteración, en la etapa de elaboración. No consideramos la codificación (estamos cubriendo la parte marcada con doble línea negra)

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML – RUP Un caso práctico

2

1. Descripción básica del problema Compañía de Ventas de Libros por Internet (CVLI) El cliente accede a la información sobre los libros a través de la Web El cliente elegirá un nombre de usuario y una clave como método de autentificación para efectuar las transacciones El cliente podrá realizar búsquedas por autor, título o ISBN El cliente debe estar previamente registrado El cliente puede establecer preferencias de envío El cliente puede introducir opciones de empaquetado La librería deberá recoger los datos de los pedidos La librería deberá rearmar en uno único los pedidos aislados que estén dentro del plazo de 90 minutos La empresa puede realizar envíos parciales en función de la disponibilidad de los ítems 1.a. Identificación de los actores Cliente (primario) Administrador del sistema (primario) Tarjeta de crédito (secundario) Gestor de libros (secundario) 1.b. Diagrama de contexto >

0..1

TARJETA DE CREDITO

0..* secundario

Cliente CVLI

>

secundario

GESTOR DE LIBROS

0..1

0..1 secundario

Administrador Sistema

0..1

> GESTOR DE ENVIO

1.c. Identificación de los casos de uso Cliente Registrarse al sistema Consultar libro Comprar libro Establecer preferencias de envío y empaquetado Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML – RUP Un caso práctico

3

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

Establecer preferencias de envío y empaquetado

Armar pedidos

Rearmar pedidos

Administrador del Sistema

1.e. Descripción de los casos de uso nota: esta descripción podría corresponder a la etapa de inicio, donde se trabaja la visión y el análisis del negocio Titulo: Registrarse al sistema Resumen: el cliente, antes de realizar una primera transacción de compra o búsqueda de libros, debe introducir todos sus datos por única vez, los cuales serán guardados por el sistema y éste le ofrecerá la posibilidad de tener una clave y contraseña que utilizara para cada transacción que realice posteriormente, el cliente tendrá la posibilidad de hacer cambios en los datos introducidos, incluso en su clave y contraseña Actores: cliente (primario), tarjeta de crédito (secundario) Titulo: Consultar libro Resumen: el cliente, una vez ingresado al sistema, podrá navegar por el mismo en búsqueda 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, eligiéndolo 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 crédito para realizar el pago. Deberá especificar dirección de envió y forma de pago Actores: cliente (primario), gestor de libros (secundario), tarjeta de crédito (secundario)

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML – RUP Un caso práctico

4

Titulo: Establecer preferencias de envío y empaquetado Resumen: el cliente, en cada pedido, podrá asociar al mismo opciones tales como tipo de empaque, dirección de envío, 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, permitiéndole al cliente realizar modificaciones al pedido original. Se enviara un notificación 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 función de las limitaciones respecto a los libros en disponibilidad, no obstante el costo del pedido no se modifica, avisándole 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 sección podría corresponderse con una segunda iteración Especialización 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 específico

Registrarse al sistema

Consultar libro Cliente Especializado

Cliente

Comprar libro

Cliente Ocasional Establecer preferencias de envío y empaquetado

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML – RUP Un caso práctico

5

Metas Nota: las metas son fines que debe lograrse independientemente de cómo se obtenga

uso del sistema

busqueda en sistema

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

UdeM1 : tiempo respuesta < 2 seg

errores en el sistema UdeM1 : cantidad de errores = 0 Cliente Ocacional Cliente

Cliente Especializado

Uso de extensiones e inclusión

Consultar libros en general

Consultar novedades

Consultar ofertas



Gestor de Libros

Consultar libro Cliente

Tarjeta de Credito

Comprar libro

Establecer preferencias de envío y empaquetado

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML – RUP Un caso práctico

6

Nuevos casos de uso Consultar libros en general Consultar novedades Consultar ofertas f. Descripción 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 transacción de compra o búsqueda de libros, debe introducir todos sus datos por única vez, los cuales serán guardados por el sistema y éste le ofrecerá la posibilidad de tener una clave y contraseña que utilizara para cada transacción que realice posteriormente, el cliente tendrá la posibilidad de hacer cambios en los datos introducidos, incluso en su clave y contraseña Actores: cliente (primario), tarjeta de crédito (secundario) Fecha de creación: Fecha de actualización: Versión: Precondición: 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 opción “registración “ 3. El sistema solicita ingreso de los datos personales: nombre y apellidos, dirección, localidad, código postal, país 4. El cliente ingresa los datos personales 5. El sistema evalúa el país de origen y solicita ingreso de los datos de la tarjeta de crédito: tipo de tarjeta, número, fecha límite de validez 6. El cliente ingresa datos de la tarjeta de crédito 7. El sistema chequea el número de la tarjeta de crédito 8. El sistema (teniendo en cuenta el país de origen) solicita la opción de preferencia de envío por omisión, esta opción puede modificarse en cada envío 9. El cliente ingresa preferencia de envío 10. El sistema solicita, para finalizar, el ingreso de la clave de acceso y la contraseña 11. El cliente ingresa clave y contraseña 12. El sistema solicita reingreso de contraseña 13. El cliente reingresa contraseña 14. El sistema informa que la transacción se realizo correctamente

Flujo alternativo Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML – RUP Un caso práctico

7

A1 Ingreso incorrecto de los números 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 números nuevamente El escenario vuelve al punto 5 A2 Ingreso incorrecto de los números de la tarjeta de crédito La secuencia comienza en el punto 7 del escenario principal 7. El sistema informa que los números ingresados son incorrectos 8. el sistema evalúa si la cantidad de veces que ingreso el número de tarjeta en forma incorrecta es menor a 3 9. El sistema pide ingreso de números nuevamente El escenario vuelve al punto 8 Poscondición: el cliente está registrado en el sistema Titulo: Consultar libro Resumen: el cliente, una vez ingresado al sistema, podrá navegar por el mismo en búsqueda de libros, novedades, ofertas, etc. Actores: cliente (primario), gestor de libros (secundario) Fecha de creación: Fecha de actualización: Versión: Precondición: el cliente se ha registrado previamente Escenario principal 1. El cliente ingresa a la opción 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 práctico

8

Titulo: Consultar libro en general Resumen: el cliente, una vez ingresado al sistema, podrá navegar por el mismo en búsqueda de libros para una posterior compra Actores: cliente (primario), gestor de libros (secundario) Fecha de creación: Fecha de actualización: Versión: Precondición: el cliente ha ingresado a la opción 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 transacción 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 Poscondición: 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, eligiéndolo 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 crédito para realizar el pago. Deberá especificar dirección de envió y forma de pago

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML – RUP Un caso práctico

9

Actores: cliente (primario), gestor de libros (secundario), tarjeta de crédito (secundario) Fecha de creación: Fecha de actualización: Versión: Precondición: el cliente ha ingresado al sistema Escenario principal 1. El cliente ingresa a la pagina de CVLI 2. El sistema muestra opciones de navegación 3. El cliente ingresa opción de ingreso al sistema de venta 4. El sistema pide ingreso de clave y contraseña 5. El cliente ingresa clave y contraseña 6. El sistema muestra opciones de navegación 7. El cliente ingresa opción de compra 8. El cliente va a CONSULTAR LIBRO 9. El sistema pide número de tarjeta de crédito 10. El cliente ingresa el número de tarjeta 11. Si el usuario lo requiere, ir a ESTABLECER PREFERENCIAS DE ENVÍO Y EMPAQUETADO 12. El sistema despliega mensaje de transacción realizada 13. El sistema vuelve al menú principal Flujo alternativo A1 Ingreso incorrecto de clave y contraseña La secuencia comienza en el punto 5 del escenario principal 6. El sistema informa que clave y/o contraseña ingresados son incorrectos 7. El sistema pide ingreso nuevamente El escenario vuelve al punto 6 A2 Transacción Abortada La secuencia comienza en el punto 12 del escenario principal 13. El sistema informa que hubo un problema en la transacción 14. El sistema solicita al usuario comenzar nuevamente la compra El escenario vuelve al punto 13 Poscondición: el cliente ha realizado la compra, el sistema a registrado la venta, la tarjeta de crédito ha autorizado la transacción

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML – RUP Un caso práctico

10

3. Definición 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 más significativas Diagrama de Clases Cliente nombre apellido direccion te profesion

1

1 tiene

usa

1

0..*

CarritoCompra

OrdenCompra

es de

1 1

1

numero tarjeta direccionEntrega opcionEntrega

tiene 1..*

Items

EjemplarLibro

0..*

pertenecen

cantidad

1

numero precio 1..*

tiene

1 Libro isbn titulo editorial soporte categoria

Mg Carlos Neil

Autor esta escrito por

1..*

1..*

nombre apellido

Material preparado para el curso UML - Proceso de Desarrollo

UML – RUP Un caso práctico

11

4. Definición de diagramas de interacción a. Diagramas de secuencia de sistema Registrarse al Sistema : SISTEMA

: cliente

ingresarSistema()

ingresarDatosPersonales()

ingresarTarjetaCredito()

ingresarPreferenciasEnvio()

ingresarClaveContraseña()

Comprar Libro : SISTEMA

: cliente

ingresarSistema()

ingresarClaveContraseña()

comprarLibro()

consultarLibro()

corresponde al

CONSULTAR LIBRO

verListadoLibros()

elegirLibro()

ingresarTarjeta()

terminarTransacción()

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML – RUP Un caso práctico

12

El diagrama de secuencia de sistema muestra, para un escenario específico 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 podrían ser traducidos a operaciones dentro del sistema. Si el sistema estuviera constituido por una sola clase, éstas serían las operaciones candidatas que debería tener (teniendo en cuenta los dos casos de uso que analizamos) La distribución de operaciones en las distintas clases, correspond e a una actividad de diseño

SISTEMA ingresarSistema() ingresarDatosPersonales() ingresarTarjetaCredito() ingresarPreferenciasEnvio() ingresarClaveContraseña() comprarLibro() consultarLibro() verListadoLibros() elegirLibro() terminarTransacción()

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML – RUP Un caso práctico

13

4. Definición de diagramas de interacción b. Diagramas de colaboración para asignar responsabilidades a. Uso del patrón “Experto” Reconocemos una operación en el DSS comprar libro, en esta etapa, le damos un nombre más representativo: venta ¿Quién es el responsable de saber la cantidad de ítems vendidos?. Desde el punto de vista del patrón Experto, deberíamos buscar la clase de objetos que posee información sobre los Items ; el objeto que conoce esto es CarritoCompra. ¿Qué información 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 información necesaria para realizar la responsabilidad

b. Uso del patrón “Creador” En la aplicación ¿quién debería encargarse de crear una instancia de items ? Desde el punto de vista del patrón Creador, deberíamos 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 patrón Creador sugiere que CarritoCompra es la clase idónea para asumir la responsabilidad de crear las instancias de Items . Este método no lo encontramos inicialmente en el DSS. La creación de instancias es una de las actividades más comunes en un sistema orientado a objetos

Mg Carlos Neil

Material preparado para el curso UML - Proceso de Desarrollo

UML – RUP Un caso práctico

14

c. Otras asignaciones Existen otras operaciones en el DSS, cuya asignación en mas evidente: IngresarDatosPersonales es una responsabilidad de la clase Cliente ConsultarLibro es una responsabilidad de Libro IngresarPreferenciasEnvio es una responsabilidad de OrdenCompra 5. Definición de diagramas de clases de diseño El diagrama de clases quedaría entonces, con la inclusión de las operaciones: Cliente nombre apellido direccion te profesion

1

1

usa

tiene

1

0..*

CarritoCompra agregarItem() venta()

OrdenCompra

es de

1 1

1

numero tarjeta direccionEntrega opcionEntrega

tiene 1..* EjemplarLibro

Items cantidad crear() subtotal()

0..*

numero precio

pertenecen

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 práctico

15

Puede suceder que existan operaciones que reconocimos en las primeras etapas análisis y que, en la fase de diseño, consideremos innecesario asignarlas a una clase en particular. En un refinamiento posterior, luego de la primera iteración, podríamos tener este diagrama de clases (analicen las diferencias con el de la figura 1)

ClienteEspecializado

ClienteOcacional

profesion Cliente nombre apellido direccion te

tiene

1

0..*

OrdenCompra numero

ingresarDatos()

IngresarPreferencias()

1

1 es de

usa

1

1

1

1 CarritoCompra

Tarjeta

agregarItem() venta()

nombre numero

1

1

1

1

OpcionEntrega

DireccionCompra

tipo

calle numero

1 tiene

Categoria

1..*

tipo

Items cantidad crear() subtotal()

EjemplarLibro

0..* pertenecen

1

numero

1

darPrecio()

pertenece

1..*

1..*

tiene

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 práctico

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 básico de transformación 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 asociación se transforman en interrelaciones o La multiplicidad es de M:N o Los atributos de la clase asociación pasan a ser atributos de la interrelación Las asociaciones se transforman en interrelaciones o Se mantiene la misma multiplicidad de la asociación en las interrelaciones Diagrama de clases a partir del cual realizamos el mapeo con los criterios anteriores

Cliente nombre apellido direccion te profesion

1

1

usa

tiene

1

0..*

CarritoCompra agregarItem() venta()

OrdenCompra

es de

1 1

1

numero tarjeta direccionEntrega opcionEntrega

tiene 1..* EjemplarLibro

Items cantidad crear() subtotal()

numero precio

0..* pertenecen 1

darPrecio() 1..*

tiene

1 Libro isbn titulo editorial soporte categoria

Mg Carlos Neil

Autor esta escrito por

1..*

1..*

nombre apellido

Material preparado para el curso UML - Proceso de Desarrollo

UML – RUP Un caso práctico

17

Modelo Entidad Interrelación resultante del mapeo cod_ord

cod_cli

CLIENTE

ORDENCOMPRA 1

N

1

1

cod_carro 1 CARRITOCOMPRA

1

1 num_ejemp N N

1

ITEMS

EJEMPLARLIBRO N num_item

cod_autor

cod_libro 1 N

AUTOR

N LIBRO

Nota: omitimos, por simplicidad, dibujar los atributos Transformación del modelo Entidad Interrelación 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