Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 1/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] Proceso para construir DSD y DCD Diseño de Sistemas 1. Índice 1. Índice ...................................................................................................................................... 1 2. Introducción ............................................................................................................................ 1 2.1. Propósito del documento ................................................................................................ 1 2.2. Alcance del documento ................................................................................................... 2 2.3. Definiciones, abreviaturas y acrónimos .......................................................................... 2 2.4. Documentos Relacionados ............................................................................................. 2 2.5. Visión general del documento ........................................................................................ 2 3. Proceso para construir Diagrama de Secuencia de Diseño (DSD) y Diagrama de Clases de Diseño (DCD) ................................................................................................................................ 3 3.1. Desarrollo del proceso paso a paso sobre el ejemplo .................................................... 3 3.1.1. Descripción del Caso de Uso .................................................................................. 3 3.1.2. Diagrama de Secuencia de Sistema ....................................................................... 4 3.1.3. Modelo de Dominio .................................................................................................. 4 3.1.4. DCD Inicial ............................................................................................................... 5 3.1.5. DSD evento 1 (crearNuevaVenta) ........................................................................... 6 3.1.5.1. Crear líneas de vida iniciales ............................................................................... 6 3.1.5.2. Crear mensaje para el evento .............................................................................. 6 3.1.5.3. Mensaje Create a Venta ...................................................................................... 7 3.1.5.3.1. Controlar necesidad de variable de instancia .................................................. 7 3.1.5.3.2. Dibujar mensaje en el DSD .............................................................................. 8 3.1.5.3.3. Agregar mensaje en el DCD ............................................................................ 8 3.1.5.4. Inicializar y agregar Notas en el DSD .................................................................. 9 3.1.5.4.1. Agregar mensaje y atributos en el DCD ........................................................... 9 3.1.5.5. Mensaje Create de la colección ......................................................................... 10 3.1.5.5.1. Agregar la colección lineas en el DSD ........................................................... 11 3.1.6. DSD evento 2 (introducirArticulo) .......................................................................... 12 3.1.6.1. Crear Líneas de Vida iniciales ........................................................................... 12 3.1.6.2. Crear Mensaje para el evento ............................................................................ 12 3.1.6.3. Mensaje BuscarProducto ................................................................................... 13 3.1.6.3.1. Mensaje getId ................................................................................................. 14 3.1.6.4. Mensajes para obtener Descripción y Precio .................................................... 16 3.1.6.5. Mensaje para crear instancia LineaDeVenta ..................................................... 18 3.1.6.6. Mensaje para Agregar la Linea de Venta a la colección lineas ......................... 22 3.1.6.7. Cálculo del subtotal ............................................................................................ 25 3.1.7. DCD completo para eventos 1 y 2 ........................................................................ 26 3.2. Proceso para hacer DCD y DSD simultáneamente: ..................................................... 27 4. Historia de Versiones del documento .................................................................................. 27 2. Introducción 2.1. Propósito del documento Especificar las actividades a realizar para construir los diagramas de secuencia de diseño y los diagramas de clase de diseño en la asignatura Diseño de Sistemas. Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 2/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 2.2. Alcance del documento Las consignas de este documento aplican a todos los alumnos de la asignatura Diseño de Sistemas de la carrera de Ingeniería en Sistemas de Información dictada en la Universidad Tecnológica Nacional - Facultad Regional Rosario. 2.3. Definiciones, abreviaturas y acrónimos DSD � Diagrama de Secuencia de Diseño DCD � Diagrama de Clase de Diseño RSM � Rational Software Modeler 2.4. Documentos Relacionados Documento Nombre / Ubicación del archivo Fuente DR1 – Políticas de Diagramas UML Nombre: Politicas_de_Diagramas_UML_v...pdf Ubicación: http://es.groups.yahoo.com/group/ds_utn_rosario/files Enrique Porta Luciano Ripani 2.5. Visión general del documento Esta solución esta basada en el ejemplo presentado por Larman en el libro UML y patrones. Nuestra solución no coincide exactamente con la solución propuesta por Larman, ya que este documento se basa en las políticas de nuestra cátedra (ver DR1 – Políticas de Diagramas UML). En la sección 3 de este documento se presenta un ejemplo del proceso para hacer DSD y DCD. Vamos a realizar solo los eventos crearNuevaVenta e introducirArticulo . No vamos a hacer los eventos realizarPago y finalizarVenta para simplificar este trabajo. Para dibujar los diagramas utilizaremos un software. El software que estamos utilizando es IBM Rational Software Modeler (RSM) versión 7.5.4 y está basada en UML 2.1. Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 3/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla:campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 3. Proceso para construir Diagrama de Secuencia de Diseño (DSD) y Diagrama de Clases de Diseño (DCD) 3.1. Desarrollo del proceso paso a paso sobre el ej emplo 3.1.1. Descripción del Caso de Uso Caso de Uso: Procesar venta Nivel de la meta: Usuario Alcance del Caso de Uso: Sistema Caja: Negra Instanciación: Real Interacción: Dialogal Usabilidad: No contemplada ACTORES Primario: Cliente Iniciador: Cajero PRECONDICIONES: (de sistema): DISPARADOR: El cliente llega a un punto de venta FLUJO DE SUCESOS: CAMINO BÁSICO: 1. El Cajero comienza una nueva venta 2. El Sistema 2.1 Muestra la ventana para ingreso de artículos 3. El Cajero ingresa la identificación del artículo y la cantidad 4. El Sistema 4.1 muestra la descripción del artículo y el subtotal Se repite los pasos 3 y 4 hasta que el cajero lo indique 5 El Cajero selecciona finalizar venta 6 El Sistema 6.1 muestra el total 7 El Cajero ingresa el importe pagado 8 El Sistema 8.1 muestra el importe del cambio 8.2 registra la venta CAMINOS ALTERNATIVOS: No se incluyen para simplificar este ejemplo POSTCONDICIONES: (de sistema) Éxito: La venta quedó registrada Fracaso: La venta no quedó registrada Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 4/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 3.1.2. Diagrama de Secuencia de Sistema 3.1.3. Modelo de Dominio Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 5/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 3.1.4. DCD Inicial En el DCD Procesar Venta creamos las clases que están el Modelo de Dominio (MD) y que estén involucradas en el caso de uso (en este apunte solo limitado a los eventos crearNuevaVenta e introducirArticulo ), o sea creamos EspecificacionDelProducto , LineaDeVenta y Venta. Luego creamos las clases que no están en el MD. En este caso, agregamos al DCD inicial las clases ControladorProcesarVenta y CatalogoDeProductos (a esta clase le agregamos el estereotipo Singleton). Finalmente teniendo en cuenta que en el MD las clases son clases candidatas, debemos revisar la coherencia del DCD para determinar si hay que eliminar alguna clase, o dividir una clase en dos o más clases, o juntar varias clases en una clase. Esta revisión deberá realizarse continuamente mientras se construye los DSD. El Diagrama de Clases inicial nos queda: Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 6/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 3.1.5. DSD evento 1 (crearNuevaVenta) 3.1.5.1. Crear líneas de vida iniciales Luego creamos en el diagrama de secuencia crearNuevaVenta la línea de vida para el actor Cajero. En los DSD Larman no incluye al actor, pero incluimos la línea de vida del actor Cajero porque RSM no nos permites originar un mensaje si no hay una línea de vida. Luego creamos la línea de vida de la clase ControladorProcesarVenta y nos queda: 3.1.5.2. Crear mensaje para el evento Luego agregamos al DSD el mensaje como CrearNuevaVenta(). Ahora se agrega a la clase ControladorProcesarVenta la operación crearNuevaVenta(). Nota: Si utilizamos RSM por cada mensaje agregado en el diagrama de secuencia se agrega en forma automática una operación a la clase en el diagrama de clase. Esto también es aplicable al resto de los casos que aparecerán en este documento. Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 7/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 3.1.5.3. Mensaje Create a Venta Ahora comenzaremos a agregar las líneas de vida y los mensajes al DSD. Comencemos con el mensaje create() desde ControladorProcesarVenta a Venta 3.1.5.3.1. Controlar necesidad de variable de insta ncia Antes de agregar un mensaje en el DSD primero tenemos que plantearnos lo siguiente: 1) A que clase se enviará el mensaje En este caso la clase Venta 2) ¿Debemos guardar el objeto obtenido o creado, para que lo use otro evento? Si es así, necesito asignarlo a una variable de instancia del controlador, y crear la asociación, agregarle la navegabilidad hacia la clase Venta y el rol. Esto es en caso de que no se haya realizado esto previamente. Para eso tenemos que crear la asociación entre ControladorProcesarVenta y Venta. Luego agregar el rol ventaActual, la multiplicidad [0..1] y la navegabilidad desde la clase ControladorProcesarVenta hacia la clase Venta. La variable de instancia la podemos representar como a) un atributo en la clase o b) como un rol en la asociación. a) La variable de instancia la representamos como un atributo en la clase b) La variable de instancia la representamos como un rol en la asociación Admitiremos ambas representaciones. En este apunte, a partir de ahora solo utilizaremos la representación como rol. Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 8/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 3.1.5.3.2. Dibujar mensaje en el DSD Después de crear en el DCD la asociación entre las clases ControladorProcesarVenta y Venta, creamos la línea de vida de la instancia ventaActual de la clase Venta y agregamos el mensaje create() desde ControladorProcesarVenta a ventaActual:Venta. El DSD nos queda:3.1.5.3.3. Agregar mensaje en el DCD Ahora agregamos en la clase Venta la operación create() Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 9/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 3.1.5.4. Inicializar y agregar Notas en el DSD Luego se inicializa en la instancia creada. Se agrega una nota indicando la inicialización de los atributos fecha con la fecha actual (date())y hora con la hora actual (time()). También se agrega una nota indicando que se asigna ventaActual : Venta a la instancia de Venta creada. El DSD nos queda 3.1.5.4.1. Agregar mensaje y atributos en el DCD Ahora agregamos en la clase Venta los atributos fecha : Date y hora : Time, y la operación inicializarVenta() Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 10/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 3.1.5.5. Mensaje Create de la colección Antes de agregar un mensaje en el DSD primero tenemos que plantearnos lo siguiente: 1) A que clase se enviará el mensaje En este caso a la colección líneas de LineaDeVenta 2) ¿Debemos guardar el objeto obtenido o creado, para que lo use otro evento? En este caso sí. Para eso tenemos que crear la asociación entre Venta y LineaDeVenta. Esta asociación es de tipo composición, ya que una línea de venta depende de la existencia de una venta. Agregamos en la asociación la navegabilidad de Venta hacia LineaDeVenta, la multiplicidad 1..* y el rol líneas . Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 11/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 3.1.5.5.1. Agregar la colección lineas en el DSD Después de crear en el DCD la asociación entre las clases Venta y LineaDeVenta, creamos la línea de vida de la colección líneas:LineaDeVenta en el DSD. Para indicar que es una colección utilizaremos el estereotipo <<multiobjeto>> en la línea de vida. Luego agregamos el mensaje create() desde Venta a LineaDeVenta y agregamos el mensaje de retorno. Como el mensaje es a la colección del multiobjeto y no a la clase LineaDeVenta, no se agrega la operación create() a la clase LineaDeVenta. Nota: Si utilizamos RSM por cada mensaje agregado en el diagrama de secuencia se agrega en forma automática una operación a la clase en el diagrama de clase. Para este caso, como es un mensaje enviado a una colección no debe mostrarse en el DCD, entonces tenemos que ocultar el mensaje en RSM. Esto también es aplicable al resto de los casos que aparecerán en este documento. Por último agregamos notas para documentar la asignación en variables de instancias de la colección “líneas” creada. El DSD nos queda: Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 12/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 3.1.6. DSD evento 2 (introducirArticulo) Luego creamos en el diagrama de secuencia introducirArticulo la línea de vida para el actor Cajero. 3.1.6.1. Crear Líneas de Vida iniciales Luego creamos la clase ControladorProcesarVenta en el DSD, y nos queda: 3.1.6.2. Crear Mensaje para el evento Luego agregamos al DSD el mensaje introducirArticulo(id : String, cantidad : Real) Ahora agregamos en la clase ControladorProcesarVenta la operación introducirArticulo con los parámetros id : String y cantidad : Real. Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 13/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 3.1.6.3. Mensaje BuscarProducto Vamos a agregar el mensaje BuscarProducto desde ControladorProcesarVenta a CatalogoDeProductos Antes de agregar otro mensaje en el DSD primero tenemos que plantearnos lo siguiente: 1) A que clase se enviará el mensaje En este caso CatalogoDeProductos 2) ¿ Tenemos alguna variable en el DCD que me permita acceder a esa clase?. Para eso tenemos que crear la asociación entre ControladorProcesarVenta y CatalogoDeProductos. Adornamos la asociación con el rol cp, la navegabilidad y las multiplicidades. Otra opción en este caso, dado que CatalogoDeProductos es singleton, es poner una dependencia entre ControladorProcesarVenta y CatalogoDeProductos. El DCD nos queda Luego creamos la línea de vida de la clase CatalogoDeProductos en el DSD y agregamos el mensaje buscarProducto con el parámetro artId : String desde ControladorProcesarVenta a CatalogoDeProductos El DSD nos queda: Ahora agregamos a la clase CatalogoDeProductos la operación buscarProducto con el parámetro artId : String. Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 14/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 3.1.6.3.1. Mensaje getId Vamos a agregar el mensaje getId() desde CatalogoDeProductos a EspecificacionDelProducto Antes de agregar otro mensaje en el DSD primero tenemos que plantearnos lo siguiente: 1)A que clase se enviará el mensaje En este caso EspecificacionDelProducto 2) ¿ Tenemos alguna variable en el DCD que me permita acceder a esa clase?. Para eso tenemos que crear la asociación entre CatalogoDeProductos y EspecificacionDelProducto. Adornamos la asociación con el rol especif, la navegabilidad y las multiplicidades. Luego creamos la línea de vida que representa a una instancia de la colección especif. O sea creamos especif[i] : EspecificacionDelProducto en el DSD Luego agregamos el mensaje getid() desde CatalogoDeProductos a especif[i] : EspecificacionDelProducto. Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 15/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] Ahora agregamos a la clase EspecificacionDelProducto la operación getId y el atributo Id : String. Luego agregamos el mensaje de retorno id : String. También agregamos el marco bucle (loop) y la condición de guarda [para cada e en especif]. Luego agregamos el mensaje de retorno ep : EspecificacionDelProducto Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 16/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 3.1.6.4. Mensajes para obtener Descripción y Precio Vamos a agregar mensajes para obtener la descripción y el precio de un item desde ControladorProcesarVenta a ep:EspecificacionDelProducto. Antes de agregar otro mensaje en el DSD primero tenemos que plantearnos lo siguiente: 1) A que clase se enviará el mensaje En este caso EspecificacionDelProducto 2) ¿ Tenemos alguna variable en el DCD que me permita acceder a esa clase?. Como no tenemos una variable, creamos la dependencia entre ControladorProcesarVenta y EspecificacionDelProducto En el DCD agregamos la dependencia entre ControladorProcesarVenta y EspecificacionDelProducto. También tenemos que agregar los atributos descripción: String y precio : Real a la clase EspecificacionDelProducto. El DCD nos queda Luego agregamos en el DSD la línea de vida de la instancia ep de EspecificacionDelProducto Luego agregamos el mensaje getDescripcion desde ControladorProcesarVenta a ep:EspecificacionDelProducto. Luego agregamos el mensaje de retorno descripcion : String Luego agregamos el mensaje getPrecio desde ControladorProcesarVenta a ep : EspecificacionDelProducto. Luego agregamos el mensaje de retorno Precio : Real Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 17/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] El DSD nos queda Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 18/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] Ahora agregamos a la clase EspecificacionDelProducto las operaciones getDescripcion() y getPrecio() El DCD nos queda 3.1.6.5. Mensaje para crear instancia LineaDeVenta Vamos a agregar mensajes para crear una instancia de línea de venta desde ControladorProcesarVenta a LineaDeVenta. Como no tenemos una variable en el DCD que me permita acceder a esa clase LineaDeVenta, entonces en el DCD tenemos que agregar la dependencia entre ControladorProcesarVenta y LineaDeVenta Además, en el DCD agregamos la asociación entre LineaDeVenta y EspecificacionDelProducto, y adornamos la asociación con el rol ep y la navegabilidad. Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 19/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] El DCD nos queda Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 20/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] Luego creamos la línea de vida de la instancia lv:LineaDeVenta y agregamos el mensaje create(ep : EspecificacionDelProducto ,cantidad : Real) desde ControladorProcesarVenta a lv:LineaDeVenta. El DSD nos queda: Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 21/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] Ahora agregamos a la clase LineaDeVenta la operación create( ep : EspecificacionDelProducto ,cantidad : Real ) y el atributo cantidad : Real. El DCD nos queda: Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro.22/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 3.1.6.6. Mensaje para Agregar la Linea de Venta a l a colección lineas Primero creamos la línea de vida ventaActual : Venta. Posteriormente creamos el mensaje agregarLinea(lv : LineaDeVenta) desde ControladorProcesarVenta a ventaActual:Venta. Luego creamos el mensaje de retorno y el DSD nos queda Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 23/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] El DCD nos queda Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 24/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] Luego agregamos al DSD la línea de vida que representa a la colección lineas : LineasDeVenta <<multiobjeto>> Posteriormente creamos el mensaje add(lv : LineasDeVenta) desde ventaActual : Venta a líneas : LineaDeVenta <<multiobjeto>>. Luego creamos el mensaje de retorno. Como el mensaje add(lv : LineasDeVenta) es a la colección lineas y no a la clase LineaDeVenta, no se agrega en el DCD la operación add(lv : LineasDeVenta) a la clase LineaDeVenta. El DSD nos queda: Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 25/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 3.1.6.7. Cálculo del subtotal Agregamos en el DCD el atributo subtotal:Real = 0 en la clase ControladorProcesarVenta. En el DSD agregamos una nota con la forma calcular el subtotal y el mensaje de retorno desde el ControladorProcesarVenta al actor Cajero con el texto “Descripcion + Subtotal”. Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 26/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 3.1.7. DCD completo para eventos 1 y 2 El DCD nos queda: Proceso para construir DSD y DCD - Diseño de Sistemas Autor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.07 [25/04/12] Cátedra Diseño de Sistemas UTN – F.R.Ro. 27/27 25/04/2012 10:21:00 C:\Enrique_UTN_2012\DS\Clase_pre_examen\Originales_Clase_pre_examen\Proceso_DSD_DCD_v1_07.doc Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 3.2. Proceso para hacer DCD y DSD simultáneamente: A modo de conclusión si reflexionamos sobre las actividades expuestas en la sub-sección anterior (paso a paso sobre el ejemplo), podemos formalizar de manera breve el proceso de la siguiente manera: 1- Agregar al DCD las clases (sin atributos) del MD que sean necesarias para el caso de uso 2- Agregar al DCD las clases de diseño que hagan falta a priori (sin atributos) 3- Realizar los pasos 4 y 5 para cada evento del DSS 4 - Poner el actor y el mensaje del DSS al controlador en el DSD 5 - Ir trabajando en el DSD, agregando mensajes, y por cada mensaje plantearse: a- ¿A qué clase le enviaré el mensaje? a.1- Como alternativa puedo tener solo que agregar una nota, como inicialización de variables o acumulación de valores. b - ¿Tenemos algún rol (o alguna variable) en el DCD que me permite acceder a esa clase? o ¿Debemos guardar el objeto obtenido o creado, para que lo use otro evento? b.1- Crear asociación --> agregando en DCD el rol (o atributo) y adornar la asociación con la navegabilidad y la multiplicidad b.2- Otra opción a b.1 sería Crear dependencia --> agregando en DCD la relación c- Crear la línea de vida al DSD d- Ponerle nombre al objeto en el DSD d.1- si es variable de instancia --> el nombre debe coincidir con el DCD d.2- si es variable local --> no hace falta coincidir con DCD e- Crear el método en el DSD y en el DCD (solo si es mensaje no es a la colección de un multiobjeto) f- Dibujar los retornos h- Agregar los atributos y sus tipos en el DCD i- Agregar los tipos en los parámetros de los mensajes j- Si se agregaron marcos, agregar las condiciones de guarda 6 – Revisar el DCD para controlar si han quedado clases del MD que no se usan. 4. Historia de Versiones del documento Versión Fecha Autor Descripción 1.01 27/06/08 LR / EP Versión inicial 1.02 01/07/08 LR / EP Revisión general 1.03 08/10/08 LR / EP Revisión (Proceso_DSD_DCD.mdx ) 1.04 11/10/08 EP Revisión en DSD 1.05 03/04/10 EP Se corrigió error en título 3. 1.06 11/04/12 EP Se adaptó a nuevas políticas para diagramas UML. Los diagramas se realizaron con RSM 1.07 25/04/12 EP Se modificaron puntos 3.1.6.7 y 3.1.7
Compartir