Un Caso Practico UML Proceso de Desarrollo

  • Upload
    shomy86

  • View
    91

  • Download
    0

Embed Size (px)

Citation preview

  • UML RUP Un caso prctico

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

    1

    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)

  • UML RUP Un caso prctico

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

    2

    1. Descripcin bsica del problema

    Compaa de Ventas de Libros por Internet (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

    CVLI

    Cliente

    Administrador Sistema

    >

    TARJETA DECREDITO

    >

    GESTORDE ENVIO

    >

    GESTORDE LIBROS

    0..*

    0..1

    0..1

    0..1

    0..1

    secundario

    secundario

    secundario

    1.c. Identificacin de los casos de uso Cliente Registrarse al sistema Consultar libro Comprar libro Establecer preferencias de envo y empaquetado

  • UML RUP Un caso prctico

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

    3

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

    Armar pedidos

    Rearmar pedidos Administrador del SistemaEstablecer preferencias de envo y empaquetado

    Consultar libro

    Cliente

    Gestor de Libros

    Comprar libro

    Registrarse al sistema

    Tarjeta de Credito

    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)

  • UML RUP Un caso prctico

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

    4

    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

    Establecer preferencias de envo y empaquetado

    Consultar libro

    Cliente

    Comprar libro

    Cliente Ocasional

    Cliente Especializado

  • UML RUP Un caso prctico

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

    5

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

    errores en el sistema

    UdeM1 : cantidad de errores = 0

    Cliente

    uso del sistema

    UdeM1 : interfaz = amigableUdeM2 : exito en la busqueda = alto

    Cliente Ocacional

    busqueda en sistema

    UdeM1 : tiempo respuesta < 2 seg

    Cliente Especializado

    Uso de extensiones e inclusin

    Establecer preferencias de envo y empaquetado

    Consultar libros en general

    Consultar novedades Consultar ofertas

    Cliente

    Gestor de Libros

    Tarjeta de Credito

    Consultar libro

    Comprar libro

  • UML RUP Un caso prctico

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

    6

    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

  • UML RUP Un caso prctico

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

    7

    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

  • UML RUP Un caso prctico

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

    8

    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. El cliente solicita listado de libros 2. El sistema despliega listado de libros 3. El cliente navega por las lista de libros 4. 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

  • UML RUP Un caso prctico

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

    9

    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

  • UML RUP Un caso prctico

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

    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

    tiene

    OrdenCompranumerotarjetadireccionEntregaopcionEntrega

    Clientenombreapellidodireccionteprofesion

    0..*

    1

    0..*

    1

    tiene

    Autor

    nombreapellido

    Libro

    isbntituloeditorialsoportecategoria

    1..*1..* 1..*1..*

    esta escrito por

    CarritoCompra

    1

    1

    1

    1es de

    1

    1

    1

    1

    usa

    EjemplarLibro

    numeroprecio

    1..*

    1

    1..*

    1

    tiene

    Itemscantidad

    1..*

    1

    1..*

    1

    1

    0..*

    1

    0..* pertenecen

  • UML RUP Un caso prctico

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

    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

    : clienteingresarSistema()

    ingresarClaveContrasea()

    comprarLibro()

    consultarLibro()

    verListadoLibros()

    elegirLibro()

    terminarTransaccin()

    ingresarTarjeta()

    corresponde al

    CONSULTAR LIBRO

  • UML RUP Un caso prctico

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

    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()

  • UML RUP Un caso prctico

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

    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

  • UML RUP Un caso prctico

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

    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:

    Autornombreapellido

    OrdenCompranumerotarjetadireccionEntregaopcionEntrega

    Clientenombreapellidodireccionteprofesion

    0..*

    1

    0..*

    1

    tiene

    Libroisbntituloeditorialsoportecategoria

    1..*1..* 1..*1..*

    esta escrito por

    CarritoCompra

    agregarItem()venta()

    1

    1

    1

    1es de

    1

    1

    1

    1

    usa

    EjemplarLibro

    numeroprecio

    darPrecio()

    1..*

    1

    1..*

    1

    tiene

    Itemscantidad

    crear()subtotal()

    1..*

    1

    1..*

    1

    tiene

    1

    0..*

    1

    0..* pertenecen

    Figura 1

  • UML RUP Un caso prctico

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

    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

    DireccionCompra

    callenumero

    OpcionEntrega

    tipoTarjeta

    nombrenumero

    OrdenCompra

    numero

    IngresarPreferencias()

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    Cliente

    nombreapellidodireccionte

    ingresarDatos()

    0..*1 0..*1tiene

    CarritoCompra

    agregarItem()venta()

    1

    1

    1

    1

    es de

    1

    1

    1

    1

    usa

    Items

    cantidad

    crear()subtotal()

    1..*

    1

    1..*

    1

    tiene

    Autor

    nombreapellido

    EjemplarLibro

    numero

    darPrecio()1

    0..*

    1

    0..* pertenecen

    Categoria

    tipo

    Libro

    isbntituloeditorial

    ConsultarLibro()

    1..*

    1..*

    1..*

    1..*

    escrito por

    1..*

    1

    1..*

    1

    tiene

    1

    1..*

    1

    1..*

    pertenece

  • UML RUP Un caso prctico

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

    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

    Autor

    nombreapellido

    OrdenCompra

    numerotarjetadireccionEntregaopcionEntrega

    Clientenombreapellidodireccionteprofesion

    0..*

    1

    0..*

    1

    tiene

    Libro

    isbntituloeditorialsoportecategoria

    1..*1..* 1..*1..*

    esta escrito por

    CarritoCompra

    agregarItem()venta()

    1

    1

    1

    1es de

    1

    1

    1

    1

    usa

    EjemplarLibro

    numeroprecio

    darPrecio()

    1..*

    1

    1..*

    1

    tiene

    Items

    cantidad

    crear()subtotal()

    1..*

    1

    1..*

    1

    tiene

    1

    0..*

    1

    0..* pertenecen

  • UML RUP Un caso prctico

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

    17

    Modelo Entidad Interrelacin resultante del mapeo

    CLIENTE

    EJEMPLARLIBRO

    cod_cli

    num_ejemp

    1

    1

    ORDENCOMPRA

    1

    1

    1

    cod_carro

    cod_ord

    AUTOR LIBRO

    cod_librocod_autor

    ITEMS

    num_item

    CARRITOCOMPRA

    1

    N

    N

    N 1

    1

    N

    N N

    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))