Logo Studenta

Proceso_DSD_DCD - Gloria Mendoza

¡Este material tiene más páginas!

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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 1/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.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 (DCD) y Diagrama de Clases 
de Diseño (DSD) ........................................................................................................................... 2 
3.1. Desarrollo del proceso paso a paso sobre el ejemplo.................................................... 2 
3.1.1. DCD inicial ............................................................................................................... 2 
3.1.2. DSD evento 1 (crearNuevaVenta)........................................................................... 3 
3.1.2.1. Crear líneas de vida iniciales ............................................................................... 3 
3.1.2.2. Crear menaje para el evento ............................................................................... 4 
3.1.2.3. Mensaje Create a Venta ...................................................................................... 5 
3.1.2.3.1. Controlar necesidad de variable de instancia .................................................. 5 
3.1.2.3.2. Dibujar mensaje y retorno en el DSD............................................................... 5 
3.1.2.3.3. Agregar mensaje en el DCD ............................................................................ 6 
3.1.2.3.4. Agregar Notas en el DSD si hay código no representado por el dibujo........... 6 
3.1.2.4. Mensaje Create de la colección........................................................................... 7 
3.1.3. DSD evento 2 (introducirArticulo) ............................................................................ 9 
3.1.3.1. Crear Líneas de Vida iniciales ............................................................................. 9 
3.1.3.2. Crear Mensaje para el evento.............................................................................. 9 
3.1.3.3. Mensaje BuscarProdcuto................................................................................... 10 
3.1.3.3.1. Mensaje getId ................................................................................................. 11 
3.1.3.3.2. Retorno del Mensaje ...................................................................................... 13 
3.1.3.4. Mensajes para obtener Descripción y Precio .................................................... 14 
3.1.3.5. Mensaje para crear instancia LineaDeVenta..................................................... 17 
3.1.3.6. Mensaje para Agregar la Linea de Venta a la colección ................................... 19 
3.1.3.7. Cálculo del subtotal............................................................................................ 21 
3.1.3.8. DSD completo evento 2 ..................................................................................... 22 
3.1.4. DCD completo para eventos 1 y 2........................................................................ 23 
3.2. Proceso para hacer DCD y DSD simultáneamente:..................................................... 24 
4. Historia de Versiones del documento............................................................................... 24 
 
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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 2/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.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 
 
 
2.4. Documentos Relacionados 
 
Documento Nombre / Ubicación del archivo Fuente 
DR1 – Políticas de 
Diagramas UML 
Nombre: Politicas_de_Diagramas_UML_v1_15.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 Rational. La versión que estamos utilizando de 
Rational (IBM Rational® Rose® Developer for Java™) tiene algunas limitaciones ya que esta 
basada en UML 1.4. 
 
 
 
3. Proceso para construir Diagrama de Secuencia de 
Diseño (DCD) y Diagrama de Clases de Diseño (DSD) 
3.1. Desarrollo del proceso paso a paso sobre el ej emplo 
3.1.1. 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 mas clases, o juntar varias clases en una clase. Esta revisión 
deberá realizarse continuamente mientrasse construye los DSD. 
 
 
 
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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 3/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.doc 
Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 
El Diagrama de Clases inicial nos queda: 
 
«singleton»
CatalogoDeProductos
ControladorProcesarVenta
EspecificacionDelProducto
Venta
LineaDeVenta
 
 
 
3.1.2. DSD evento 1 (crearNuevaVenta) 
3.1.2.1. Crear líneas de vida iniciales 
Luego creamos en el diagrama de secuencia crearNuevaVenta la línea de vida para el 
actor Cajero. Ponemos el Cajero porque XDE no nos permites originar un mensaje si no hay 
una línea de vida, pero la política fijada por la cátedra no lo exige. 
 
Luego creamos la línea de vida de la clase ControladorProcesarVenta y 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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 4/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.doc 
Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 
3.1.2.2. Crear menaje para el evento 
Luego agregamos al DSD el mensaje como CrearNuevaVenta(). 
 
 
 
Ahora se agrega a la clase ControladorProcesarVenta la operación crearNuevaVenta(). 
 
«singleton»
CatalogoDeProductos
ControladorProcesarVenta
+ crearNuevaVenta ( )
EspecificacionDelProducto
Venta
LineaDeVenta
 
 
 
 
 
 
 
 
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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 5/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.doc 
Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 
3.1.2.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.2.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 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 en caso de que no haya sido creada previamente. 
Para eso tenemos que crear la asociación entre ControladorProcesarVenta y Venta, y 
agregar la variable de instancia ventaActual:Venta a la clase ControladorProcesarVenta 
 
ControladorProcesarVenta
+ ventaActual : Venta
+ crearNuevaVenta ( )
Venta
0..1
- ventaActual
1
 
 
3.1.2.3.2. Dibujar mensaje y retorno 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 clase Venta y agregamos el mensaje create() desde 
ControladorProcesarVenta a Venta. También creamos los mensajes de retorno. 
 
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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 6/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.doc 
Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 
3.1.2.3.3. Agregar mensaje en el DCD 
Ahora agregamos en la clase Venta la operación create() 
Venta
+ create ( )
0..1
- ventaActual
 
 
 
 
3.1.2.3.4. Agregar Notas en el DSD si hay código no 
representado por el dibujo 
 
Luego agregamos una nota para indicar como se inicializan los atributos fecha y hora 
(fecha = date() y hora = time() ) 
El DSD nos queda 
 
 
 
 
 
Ahora agregamos en la clase Venta los atributos fecha y hora 
 
 
Venta
+ fecha
+ hora
+ 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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 7/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.doc 
Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 
3.1.2.4. Mensaje Create de la colección 
De la misma manera que con el mensaje anterior, ahora analizamos el mensaje create 
desde Venta a la colección LineaDeVenta. 
 
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 LineaDeVenta) 
2) ¿Debemos guardar el objeto obtenido o creado, para que lo use otro evento? 
 
Si es así, necesito asignarlo a una variable de instancia, y crear la asociación en caso 
de que no haya sido creada previamente. 
 
Para eso tenemos que crear la asociación entre Venta y LineaDeVenta, y agregar el 
atributo líneas: array de LineaDeVenta 
 
Venta
+ fecha
+ hora
+ lineas : array de LineaDeVenta
+ create ( )
LineaDeVenta
1..*
1
 
 
Después de crear en el DCD la asociación entre las clases Venta y LineaDeVenta, 
creamos la línea de vida el multiobjeto LineaDeVenta en el DSD. 
 
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. 
 
 
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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 8/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.doc 
Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 
Por último agregamos notas para documentar la asignación en variables de instancias 
ventaActual y el array de LineaDeVenta 
 
El DSD nos queda: 
 
 
 
El DCD nos queda: 
 
ControladorProcesarVenta
+ ventaActual : Venta
+ crearNuevaVenta ( )
Venta
+ fecha
+ hora
+ lineas : array de LineaDeVenta
+ create ( )
0..1
- ventaActual
1
LineaDeVenta
1..*
1
 
 
Proceso para construir DSD y DCD - Diseño de SistemasAutor: E. Porta (Director Cátedra DS) - L. Ripani (Director Área Sistemas - DISI) Versión : 1.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 9/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.doc 
Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 
3.1.3. DSD evento 2 (introducirArticulo) 
 
Luego creamos en el diagrama de secuencia introducirArticulo la línea de vida para 
el actor Cajero. 
3.1.3.1. Crear Líneas de Vida iniciales 
 
Luego creamos la clase ControladorProcesarVenta en el DSD, y nos queda: 
 
 
3.1.3.2. Crear Mensaje para el evento 
Luego agregamos al DSD el mensaje introducirArticulo(id,cantidad) 
 
 
 
 
Ahora agregamos en la clase ControladorProcesarVenta la operación introducirArticulo 
con los parámetros id y cantidad. 
 
ControladorProcesarVenta
+ ventaActual : Venta
+ introducirArticulo ( [in] id , [in] cantidad )
+ crearNuevaVenta ( )
 
 
 
 
 
 
 
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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 10/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.doc 
Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 
3.1.3.3. Mensaje BuscarProdcuto 
 
Vamos a agregar el BuscarProdcuto mensaje 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?. 
 a) Para eso tenemos que crear la asociación entre ControladorProcesarVenta y 
CatalogoDeProductos, y agregar el atributo cp:CatalogoDeProductos. Otra opción en este 
caso, dado que CatalogoDeProductos es singleton, es poner una dependencia entre 
ControladorProcesarVenta y CatalogoDeProductos. 
 
El DCD nos queda 
«singleton»
CatalogoDeProductos
ControladorProcesarVenta
+ ventaActual : Venta
+ cp : CatalogoDeProductos
+ introducirArticulo ( [in] id , [in] cantidad )
+ crearNuevaVenta ( )
1
1..*
 
 
 
 Luego creamos la línea de vida de la clase CatalogoDeProductos en el DSD y 
agregamos el mensaje desde ControladorProcesarVenta a CatalogoDeProductos 
 
El DSD nos queda: 
 
cp : «singleton» CatalogoDe
Productos
 : ControladorProcesarVenta : Cajero
1 : introducirArticulo ( id , cantidad ) 
2 : buscarProducto ( id ) 
 
 
Ahora agregamos a la clase CatalogoDeProductos la operación buscarProducto con el 
parámetro id. 
 
«singleton»
CatalogoDeProductos
+ buscarProducto ( [in] id )
ControladorProcesarVenta
+ ventaActual : Venta
+ cp : CatalogoDeProductos
+ introducirArticulo ( [in] id , [in] cantidad )
+ crearNuevaVenta ( )
1
1
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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 11/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.doc 
Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 
3.1.3.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?. 
 a) Para eso tenemos que crear la asociación entre CatalogoDeProductos y 
EspecificacionDelProducto, y agregar el atributo especificaciones: array de 
EspecificacionDelProducto. 
 
 
«singleton»
CatalogoDeProductos
+ especificaciones : array de EspecificacionDelProducto
+ buscarProducto ( [in] id )
EspecificacionDelProducto
1
1..*
1..*
1
 
 
 
Luego creamos la línea de vida del multiobjeto 
especificaciones:EspecificacionDelProducto en el DSD 
 
 Luego agregamos el mensaje getid() desde CatalogoDeProductos a 
especificaciones:EspecificacionDelProducto. 
 
 
especificaciones : Especificacion
DelProducto
cp : «singleton» CatalogoDe
Productos
 : ControladorProcesarVenta
1 : introducirArticulo ( id , cantidad ) 
2 : buscarProducto ( id ) 
3 : getId ( ) 
 
 
 
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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 12/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.doc 
Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 
Luego le agregamos los asteriscos al mensaje. 
 
especificaciones : Especificacion
DelProducto
cp : «singleton» CatalogoDe
Productos
 : ControladorProcesarVenta
1 : introducirArticulo ( id , cantidad ) 
2 : buscarProducto ( id ) 
3 : getId ( ) *
*
 
 
 
Ahora agregamos a la clase EspecificacionDelProducto la operación getId y su 
respectivo atributo. 
 
«singleton»
CatalogoDeProductos
+ especificaciones : array de EspecificacionDelProducto
+ buscarProducto ( [in] id )
EspecificacionDelProducto
+ Id
+ getId ( )
1
1..*
1
 
 
 
 
Luego agregamos el mensaje de retorno id. 
 
especificaciones : Especificacion
DelProducto
cp : «singleton» CatalogoDe
Productos
2 : buscarProducto ( id ) 
3 : getId ( ) 
id
*
*
 
 
 
 
 
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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 13/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.doc 
Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 
3.1.3.3.2. Retorno del Mensaje 
Luego agregamos el mensaje de retorno ep:EspecificacionDelProducto. 
 
especificaciones : Especificacion
DelProducto
cp : «singleton» CatalogoDe
Productos
 : ControladorProcesarVenta
1 : introducirArticulo ( id , cantidad ) 
2 : buscarProducto ( id ) 
3 : getId ( ) 
id
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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 14/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.docPlantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 
3.1.3.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?. 
Para eso creamos la dependencia entre ControladorProcesarVenta y 
EspecificacionDelProducto 
 
En el DCD dibujamos la dependencia entre ControladorProcesarVenta y 
EspecificacionDelProducto 
 
«singleton»
CatalogoDeProductos
+ especificaciones : array de EspecificacionDelProducto
+ buscarProducto ( [in] id )
ControladorProcesarVenta
+ ventaActual : Venta
+ cp : CatalogoDeProductos
+ introducirArticulo ( [in] id , [in] cantidad )
+ crearNuevaVenta ( )
EspecificacionDelProducto
+ Id
+ getId ( )
Venta
+ fecha
+ hora
+ lineas : array de LineaDeVenta
+ create ( )
0..1
- ventaActual
1
1
1..*
1..*
1
1
 
 
 
 
 
 
Luego creamos la línea de vida de la instancia ep de EspecificacionDelProducto 
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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 15/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.doc 
Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 
 
 
 
 
Luego creamos el mensaje getDescripcion desde ControladorProcesarVenta a 
ep:EspecificacionDelProducto. 
 
 
ep : EspecificacionDelProducto
especificaciones : Especificacion
DelProducto
cp : «singleton» CatalogoDe
Productos
 : ControladorProcesarVenta
1 : introducirArticulo ( id , cantidad ) 
2 : buscarProducto ( id ) 
3 : getId ( ) 
id
ep:EspecificacionDelProducto
4 : getDescripcion ( ) 
*
*
 
 
 
 
Luego agregamos el mensaje de retorno Descripcion 
 
ep : EspecificacionDelProducto
especificaciones : Especificacion
DelProducto
cp : «singleton» CatalogoDe
Productos
 : ControladorProcesarVenta
1 : introducirArticulo ( id , cantidad ) 
2 : buscarProducto ( id ) 
3 : getId ( ) 
id
ep:EspecificacionDelProducto
4 : getDescripcion ( ) 
Descripcion
*
*
 
 
 
Ahora agregamos a la clase EspecificacionDelProducto la operación getDescripcion() y 
el respectivo atributo 
 
 
EspecificacionDelProducto
+ descripcion
+ Id
+ getId ( )
+ getDescripcion ( )
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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 16/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.doc 
Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 
 
Luego creamos el mensaje getPrecio desde ControladorProcesarVenta a 
ep:EspecificacionDelProducto. Luego agregamos el mensaje de retorno Precio 
 
El DSD nos queda 
 
ep : EspecificacionDelProducto
especificaciones : Especificacion
DelProducto
cp : «singleton» CatalogoDe
Productos
 : ControladorProcesarVenta
1 : introducirArticulo ( id , cantidad ) 
2 : buscarProducto ( id ) 
3 : getId ( ) 
id
ep:EspecificacionDelProducto
4 : getDescripcion ( ) 
Descripcion
5 : getPrecio ( ) 
Precio
*
*
 
 
 
Ahora agregamos a la clase EspecificacionDelProducto la operación getPrecio() 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 17/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.doc 
Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 
3.1.3.5. Mensaje para crear instancia LineaDeVenta 
 
Vamos a agregar mensajes para crear una instancia de línea de venta desde 
ControladorProcesarVenta a LineaDeVenta. 
En el DCD tenemos que dibujar la dependencia entre ControladorProcesarVenta y 
LineaDeVenta 
 
«singleton»
CatalogoDeProductos
+ especificaciones : array de EspecificacionDelProducto
+ buscarProducto ( [in] id )
ControladorProcesarVenta
+ ventaActual : Venta
+ cp : CatalogoDeProductos
+ introducirArticulo ( [in] id , [in] cantidad )
+ crearNuevaVenta ( )
EspecificacionDelProducto
+ descripcion
+ precio
+ Id
+ getId ( )
+ getDescripcion ( )
+ getPrecio ( )
Venta
+ fecha
+ hora
+ lineas : array de LineaDeVenta
+ create ( )
0..1
- ventaActual
1
1
1..*
1..*
1
LineaDeVenta
1..*
1
 
 
En el DCD creamos la asociación entre LineaDeVenta y EspecificacionDelProducto, y 
agregamos el atributo ep: EspecificacionDelProducto en la clase LineaDeVenta. 
 
Luego creamos la línea de vida la instancia lv:LineaDeVenta. 
Posteriormente creamos el mensaje create(ep,cantidad) desde 
ControladorProcesarVenta a lv:LineaDeVenta. 
 
El DSD nos queda: 
 
 : ControladorProcesarVenta cp : «singleton» CatalogoDe
Productos
especificaciones : Especificacion
DelProducto
ep : EspecificacionDelProducto
lv : LineaDeVenta
1 : introducirArticulo ( id , cantidad ) 
2 : buscarProducto ( id ) 
3 : getId ( ) 
id
ep:EspecificacionDelProducto
4 : getDescripcion ( ) 
Descripcion
5 : getPrecio ( ) 
Precio
6 : create ( ep:EspecificacionDel
Producto , cantidad ) 
*
*
 
 
 
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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 18/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.doc 
Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 
 
Nota: Al agregar create a la LineaDeVenta, XDE no muestra los tipos de datos en los 
DSD. Pero deben incluirse los tipos de datos en exámenes y parciales porque la política de la 
cátedra lo exige 
 
Ahora agregamos a la clase LineaDeVenta la operación create(ep,cantidad) y los 
respectivos atributos. 
 
El DCD nos queda: 
 
«singleton»
CatalogoDeProductos
+ especificaciones : array de EspecificacionDelProducto
+ buscarProducto ( [in] id )
ControladorProcesarVenta
+ ventaActual : Venta
+ cp : CatalogoDeProductos
+ introducirArticulo ( [in] id , [in] cantidad )
+ crearNuevaVenta ( )
EspecificacionDelProducto
+ descripcion
+ precio
+ Id
+ getId ( )
+ getDescripcion ( )
+ getPrecio ( )
Venta
+ fecha
+ hora
+ lineas : array de LineaDeVenta
+ create ( )
0..1
- ventaActual
1
1
1..*
1..*
1
LineaDeVenta
+ cantidad
+ ep : EspecificacionDelProducto
+ create ( [in] ep : EspecificacionDelProducto , [in] cantidad )
1..*
1
0..*
1Proceso 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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 19/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.doc 
Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 
3.1.3.6. Mensaje para Agregar la Linea de Venta a l a 
colección 
 
Vamos a analizar los mensajes para agregar la instancia de línea de venta a la 
colección. 
 
Primero creamos la línea de vida ventaActual:Venta 
Posteriormente creamos el mensaje agregarLinea(lv) desde ControladorProcesarVenta 
a ventaActual:Venta. 
Luego creamos el mensaje de retorno. 
 
 
Luego creamos la línea de vida de la colección lineas:LineaDeVenta. 
Posteriormente creamos el mensaje add(lv) desde ventaActual:Venta a 
lineas:LineaDeVenta. 
Luego creamos el mensaje de retorno. 
Como el mensaje add(lv) es a la colección del multiobjeto y no a la clase 
LineaDeVenta, no se agrega la operación add(lv) a la clase LineaDeVenta. 
 
 
 
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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 20/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.doc 
Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 
 
El DSD nos queda: 
 
ventaActual : Venta
 : ControladorProcesarVenta cp : «singleton» CatalogoDe
Productos
especificaciones : Especificacion
DelProducto
ep : EspecificacionDelProducto
lv : LineaDeVenta
lineas : LineaDeVenta
1 : introducirArticulo ( id , cantidad ) 
2 : buscarProducto ( id ) 
3 : getId ( ) 
id
ep:EspecificacionDelProducto
4 : getDescripcion ( ) 
Descripcion
5 : getPrecio ( ) 
Precio
6 : create ( ep:EspecificacionDel
Producto , cantidad ) 
7 : agregarLinea ( lv:LineaDeVenta ) 
8 : add ( lv ) 
*
*
 
 
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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 21/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.doc 
Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 
3.1.3.7. Cálculo del subtotal 
Ahora agregamos una nota con la forma de calcular el subtotal. 
Por ultimo ponemos el mensaje de retorno desde el ControladorProcesarVenta al actor Cajero y le ponemos el texto Descripcion + Subtotal y el 
DSD nos queda: 
 
 : Cajero : ControladorProcesarVenta cp : «singleton» CatalogoDe
Productos
especificaciones : Especificacion
DelProducto
ep : EspecificacionDelProducto
1 : introducirArticulo ( id , cantidad ) 
2 : buscarProducto ( id ) 
3 : getId ( ) 
id
ep:EspecificacionDelProducto
4 : getDescripcion ( ) 
Descripcion
5 : getPrecio ( ) 
Precio
6 : create ( ep:EspecificacionDel
Producto , cantidad ) 
7 : agregarLinea ( lv:LineaDeVenta ) 
Descripcion + Subtotal
*
*
subtotal = subtotal + ( cantidad * precio)
 
 
 
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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 22/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.doc 
Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 
 
3.1.3.8. DSD completo evento 2 
El DSD nos queda: 
 
ventaActual : Venta
 : Cajero : ControladorProcesarVenta cp : «singleton» CatalogoDe
Productos
especificaciones : Especificacion
DelProducto
ep : EspecificacionDelProducto
lv : LineaDeVenta
lineas : LineaDeVenta
1 : introducirArticulo ( id , cantidad ) 
2 : buscarProducto ( id ) 
3 : getId ( ) 
id
ep:EspecificacionDelProducto
4 : getDescripcion ( ) 
Descripcion
5 : getPrecio ( ) 
Precio
6 : create ( ep:EspecificacionDel
Producto , cantidad ) 
7 : agregarLinea ( lv:LineaDeVenta ) 
8 : add ( lv ) 
Descripcion + Subtotal
*
*
subtotal = subtotal + ( cantidad * precio)
 
 
 
 
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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 23/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.doc 
Plantilla: campo word: doc_basico_UTN_v3_0.dot hardwired: doc_basico_UTN v. 3.0 [25/7/07] 
3.1.4. DCD completo para eventos 1 y 2 
El DCD nos queda: 
«singleton»
CatalogoDeProductos
+ especificaciones : array de EspecificacionDelProducto
+ buscarProducto ( [in] id )
ControladorProcesarVenta
+ subtotal
+ ventaActual : Venta
+ cp : CatalogoDeProductos
+ introducirArticulo ( [in] id , [in] cantidad )
+ crearNuevaVenta ( )
EspecificacionDelProducto
+ descripcion
+ precio
+ Id
+ getId ( )
+ getDescripcion ( )
+ getPrecio ( )
Venta
+ fecha
+ hora
+ lineas : array de LineaDeVenta
+ create ( )
+ agregarLinea ( [in] lv : LineaDeVenta )
0..1
- ventaActual
1
1
1..*
1..*
1
LineaDeVenta
+ cantidad
+ ep : EspecificacionDelProducto
+ create ( [in] ep : EspecificacionDelProducto , [in] cantidad )
1..*
1
0..*
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.04 [11/10/08]
Cátedra Diseño de Sistemas UTN – F.R.Ro.
 
 
 24/24 11/10/2008 11:58:00 
C:\Enrique\UTN_2008\DS\Material_Clase_Practica_Pre_Examen\Proceso_DSD_DCD_v1_04.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- Poner el controlador en el DSD, y elegir un evento del DSS 
4- 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 un paso solo de nota como inicialización de variables o acumulación de valores, etc. 
 b - ¿Tenemos alguna variable en el DCD que me permite accedera 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 atributo y la relación (Dibujar navegabilidad y multiplicidad en el DCD) 
 b.2- Otra opción a b.1 sería Crear dependencia --> agregando en DSD 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- Revisar si hace falta usar * en el DSD 
 g- dibujar los retornos 
 h- Si alguno de los argumentos es de tipo no primitivo, indicarlo en el DCD y DSD 
5 – 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

Continuar navegando

Otros materiales