son modelos de análisis y diseño, principalmente con base en uml
DESCRIPTION
Son modelos de Análisis y Diseño, principalmente con base en UML Comienza desde mapa de procesos y flujograma de información Clase 2: Despacho por Ventas. Evolución Informática S.A. Clases de Software del Método Genérico de Desarrollo de Sistemas de Información. - PowerPoint PPT PresentationTRANSCRIPT
• Son modelos de Análisis y Diseño, principalmente con base en UML
• Comienza desde mapa de procesos y flujograma de información
• Clase 2: Despacho por Ventas
Evolución Informática S.A.Clases de Software del
Método Genérico de Desarrollo de Sistemas de Información
Devoluciones
RECEPCIÓNPOR COMPRAS
Ventas Servicio postventaProyección ventas Adquisiciones
DESPACHOPOR VENTAS
Devoluciones
Macro-procesos
MAPA DE PROCESOS (como parte del Modelo de Negocios)
Procesosoperativos
Segundo Flujo-grama de
Información
25/09/2002 3
Flujograma : Proceso de Despacho de Productos a Clientes - (Guía Interna de Despacho por Venta )
Cliente
Nota de Venta
12
3
Encargado de Despacho
Nota deVenta.
12
3
Depto. deVentas
Depto. deContabilidad
Despachador(Bodega)
Emitir Guía de Despacho
Recibir PagoG/D
Interna1’
2’
3’
Nota de Venta
1’
Nota de Venta.
1’2’
3’
Cajero
Despachar Productosde Bodega
2’’’G/D Interna
G/D Interna
12
3
2’G/D Interna
1’
1’’’G/D Interna
Nota :1) Este Flujograma no sigue todas las reglas ortodoxas del diseño, sin embargo, cumple con la función de mostrar la emisión de la Guía de Despacho en su contexto.
2’’G/D Interna
1’’
2’’G/D Interna
1’’
1’’’G/D Interna
Normalmente la firma de la Guía de Despacho se- ría en conjunto entre el
Despachador y el Cliente. (Copias 1 y 2 ).
25/09/2002 4
Crear Guía Interna de Recepción por Compra
Crear Guía Interna de Despacho por Venta
Administrar Sistema de Bodega de Despacho
Iniciar Sistema de Bodegas
Administrar Sistema de Bodega de Recepción
Diseño de Clases:Diagrama de Casos de Uso
(Casos de Uso Básicos)
Administrar Sistema ...Son Casos de Uso Genéricos queen el transcurso del análisis se des- agregarían en otros Casos de Uso
Encargadode Recepción(Empleado)
Encargadode Despacho(Empleado)
Cliente
Proveedor
Administrador(Empleado)
• Administrador, • Encargado de Recepción, • Encargado de Despacho...son “roles” que juegan las personasde la Organización. ( No necesariamente son tres personas distintas ).
25/09/2002 5
Diseño de Clases: Guía de DespachoCaso de Uso: Crear Guía Interna de Despacho por Venta ( Productos con
registro persistente )
Comentarios relevantes :
1) Se trata de una transacción entre dos entidades, (con Cliente y Encargado de Despacho).2) Se trata de una transacción que implica una entrega / recepción de Productos. 3) Existe un Registro de Clientes .4) Existe un Registro de Encar- gados de Despacho (Empleado).5) Existe un Registro de Productos. 6) Se lleva un registro persistente de la transacción
Encargadode Despacho(Empleado)
Crear Guía Interna de Despacho por Venta
Terminal Despacho
• Caso de Uso: Crear Guía Interna de Despacho por Venta• Actores: Cliente, Encargado de Despacho• Tipo: Primario• Un Cliente llega para solicitar la entrega de Mercadería, presentando como documentación una Nota de Venta. El Encargado de Despacho registra los datos de la mercadería emitiendo una Guía Interna de Despacho por Venta y firma la docu- mentación en todos sus ejemplares para indicar la conformidad. El Cliente se retira para pasar a la Caja llevado su copia de la Nota de Venta firmada por el Encargado de Despa- cho, quien, a su vez, envía las partes de la Guía de Despacho firmadas a sus respectivos destinos. (Según Flujograma de Información )
Cliente
Caso de Uso de Alto Nivel
Nota : (Craig Larman, 2.7.2, pg. 26): “Los Casos de Uso de Alto Nivel sonbreves descripciones de un proceso - usualmente dos o tres frases - “Ver también: (Craig Larman, 6.3.1, pg. 49)
Bibliografía: Esta presentación se basa principalmente en el libro “ Applying UML and Patterns “ de Craig Larman - 1998 - ( Prentice Hall) ISBN 0-13-748880-7
25/09/2002 6
Funciones BásicasDiseño de Clases :Caso de Uso: Crear Guía Interna de Despacho por Venta ( Productos con registro persistente)
R1.1R1.2
R1.3R1.4
R1.5
R1.6
R1.7
R1.8
R1.9
R1.10
R1.11
R1.12
R1.13
R1.14
R1.15
Capturar y activar opciones desde un Menú de Opciones, aceptar Opción (Selección Manual).Desplegar la Interfaz de Creación de Guía de Despacho, Nº de Guía de Despacho (correlativo) y Fecha de la Transacción, - aceptar eventual modificación de Fecha (Ingreso Manual).Capturar el Código del Encargado de Despacho (Ingreso Manual).Desplegar datos del Encargado de Despacho registrados en almacenamiento persistente
Capturar la información del Cliente usando el RUT (Ingreso Manual) y desplegar datos pertinentes del Cliente registrados en almacenamiento persistente.Capturar Nº de Nota de Venta del Cliente (Ingreso Manual), verificar validez ( No Existencia previa) y desplegarlo.Capturar Fecha (Propia) de Nota de Venta del Cliente (Ingreso Manual) y desplegarla.
Capturar/Verificar. Condición de Pago de la Venta (Ingreso Manual) y desplegarla.
Registrar la transacción en proceso: los Productos a despachar. Capturar la información del Producto a despachar usando el Código (interno) (Ingreso Manual).Desplegar la descripción del Producto registrado en almacenamiento persistente
Capturar el Precio al Cliente del Producto (Ingreso manual) y desplegarlo.
Capturar la Cantidad de unidades del Producto respectivo (Ingreso manual). y calcular valor de la línea actualizando los totales de la Guía de Despacho en la Interfaz al dar OK a la línea.Grabar en el Detalle de la Guía de Despacho (línea a línea) los datos de cada línea a medida que se completa y calcula cada una de ellas.Actualizar los valores de existencia y despachado de Productos (evitando doble actualización) al dar OK a la Guía de Despacho en su totalidad. Ofrecer un mecanismo de almacenamiento persistente.
evidenteevidente
evidenteevidente
evidente
evidente
evidente
evidente
evidente
evidente
evidente
evidente
oculta
oculta
oculta
Ref. # Función Categoría
25/09/2002 7
Diseño de Clases :Caso de Uso: Crear Guía Interna de Despacho por Venta ( Productos con registro persistente). Crear Guía Interna de
Despacho por Ventas
Caso de Uso : Crear Guía Interna de Despacho por Venta
Actores : Cliente (Iniciador) , Encargado de Despacho (Actor Primario)
Propósito: Capturar Datos de Despacho de Productos Vendidos.
Resumen: Un Cliente contacta a un Encargado de Despacho para solicitar la Entrega de Pro- ductos que ha pedido, la Transacción requerida la documenta con una Nota de Venta. El Encargado de Despacho verifica los datos indicados por el Documento y los ingresa en el Terminal de Despacho, al terminar confirma la Transacción. El Cliente recibe la 1ª copia de la Nota de Venta firmada por el Encargado de Despa- cho, quien envía a sus respectivos destinos las copias firmadas de la Guía deDespa- cho y las restantes de la Nota de Venta ( según Flujograma del Proceso ). El Cliente se retira en dirección a la Caja.
Tipo: Primario y real.
Referencias cruzadas: Funciones: R1.1, R1.2, R1.3, R1.4, R1.5, R1.6, R1.7, R1.8
R1.9, R1.10, R1.11, R1.12, R1.13, R1.14, R1.15
Encargado de Despacho
Terminal Despacho
Cliente
Caso de Uso Expandido
Nota : (Craig Larman, 2.7.2, pg. 26): “Los Casos de Uso Expandidos sonextensas narrativas de descripciónde un proceso - pueden contener cientos de frases - “Ver también: (Craig Larman, 6.3.2, pg. 50)
Caso de Uso Expandido
Este Caso de Uso comprende desde la Hoja # 7 (la actual) hastala Hoja # 11
25/09/2002 8
Curso Normal de los Eventos
Acción de los actores Respuestas del Sistema1. Este caso comienza cuando un Cliente se contacta con un Encargado de Despacho, presentando una Nota de Venta, para solicitar que se efectúe una Despacho de Productos. (Petición)
2. El Encargado de Despacho acuerda realizar la Transacción. (Aceptación del compromiso) y para ello ingresa a la opción de Crear Guía de Despacho del Menú de Opciones haciendo (Click) y después oprimiendo la tecla (Tab). 3. El sistema despliega la interfaz de Creación de Guía de Despacho,
asigna y despliega automáticamente en A el Nº de Guía de Despacho correlativo correspondiente y en B la fecha del sistema.4. El Encargado de Despacho verifica visualmente el Nº de Guía de
Despacho y Fecha ofrecidos por el sistema y a continuación ingresa su identificación (Código) en C.
6. El Encargado de Despacho ingresa en E el RUT del Cliente y verifica los datos del mismo desplegados por el sistema.
5. El sistema obtiene y despliega el nombre del Encargado de Despacho en D.
7. El sistema despliega los datos básicos del Cliente (Razón Social, Dirección, e-Mail, Comuna, Ciudad, Teléfono, Fax) en F, G, H, I, J, K y L respectivamente,
10. El Encargado de Despacho pasa a la sección de detalle, en el cual ingresa el Código del Producto en P. 11. El sistema despliega el Nº de Línea en LL, obtiene y despliega la
descripción del Producto en Q.12. El Encargado de Despacho verifica los datos del Producto e ingresa el Precio unitario y la cantidad a despachar en R y S. Luego oprime (Tab) para grabar la línea actual y crear una nueva línea o terminar el ingreso de datos. 13. El sistema calcula el valor de la línea ingresada y lo acumula, desplegan-
do los valores en T y U, a la vez que graba la línea recién completada.14. Al terminar de ingresar los Productos, el Encargado de Despacho oprime el botón V para indicar al sistema el fin de la captura de datos. 15. El sistema calcula los valores subtotales / total y los despliega / re-
despliega en los campos T y U, además actualiza los datos de la transacción en el sistema de almacenamiento persistente. Genera tres copias de la transacción realizada utilizando la inter- faz de salida indicada. “Limpia” la interfaz de entrada y posiciona el cursor en A
16. El Encargado de Despacho cierra la interfaz de Transacción opri- miendo el botón XX para volver al Menú de Opciones y entrega la 1ª copia de la Nota de Venta (firmada) al Cliente (Notificación de cumplimiento del compromiso). El Cliente se retira en dirección a la Caja.• Las restantes copias de la Nota de Venta y Guía Interna de Despacho (fir- madas), el Encargado de Despacho las envía por la vía de comunicación preestablecida.
Diseño de Clases : Caso de Uso: Crear Guía Interna de Despacho por Venta (Expandido ) ( Base Craig Larman ) (Productos con registro persistente)
8. El Encargado de Despacho ingresa en M, N y O respectivamente el Nº de Nota de Venta, la Fecha de la Nota de Venta y las Condi- ciones de Pago de la Venta.
9. El sistema verifica la validez / “no existencia” del Nº de la Nota de Venta
25/09/2002 9
Nº Guía Despacho
Fecha Despacho
RUT Cliente -
Razón Social Cliente
Código Enc. Despacho
A C
B D
E F
G
Diseño de Clases :Caso de Uso ( Expandido ): Crear Guía Interna de Despacho por Venta( Productos con registro persistente) Interfaz de Entrada
Dirección Cliente
Comuna Ciudad Fono Fax
H
I J K L
M N O
Grabar
L. Código Descripción Precio Cantidad Valor Neto
Total acumulado
P Q R
Encargado Despacho
Cerrada
Anulada
S T
UCerrar V
Anular
W
Salir
X
Guía Interna de Despacho por Venta
Nota de Venta Nº Fecha Nota de Venta Cond. Pago
Y Z
LL
XX
25/09/2002 10
Notas adicionales a la Interfaz de Entrada:( para desarrollar en una próxima vuelta de la espiral )
Curso Normal 1) Considerar operacion(es) de Cerrado en Encabezado 2) Considerar operacion(es) y “flag” de Cerrada en LíneasExcepciones 3) Considerar operación(es) y “flag” de Reversado en Encabezado 4) Considerar operacion(es) de Anulado de Encabezado 5) Considerar operacion(es) y “flag” de Anulada en Líneas 6) Considerar operacion(es) y “flag” de Reversada en Líneas 7) Considerar operación(es) de Modificar en Encabezado 8) Considerar operación(es de Modificar en Encabezado 9) Considerar operación(es) de Cancelar en Encabezado10) Considerar operación(es) de Cancelar en Líneas
Excepciones al Curso Normal de los Eventos: (para desarrollar los Casos de Uso correspondientes en una próxima vuelta de la espiral )
1) Producto no registrado (Código no existe) 2) Nº de Nota de Venta ya existe. 3) RUT de Cliente no registrado ( RUT no existe) 4) Encargado de Despacho no registrado (Código no existe) 5) Existencia negativa (Inventario insuficiente) 6) Nota de Venta de más de 6 productos
Diseño de Clases :Caso de Uso ( Expandido ): Crear Guía Interna de
Despacho por Venta( Productos con registro persistente)
25/09/2002 11
Guía de Despacho Nº Fecha
RUT Cliente X-
Comuna Ciudad Teléfono Fax
L. Código Descripción Precio Cantidad Valor Neto
Total Neto
999.999 99/99/9999
999.999.999 XXXXXXX
Razón Social Cliente XXXXXXX
Dirección Cliente XXXXXXX
XXXXXXX XXXXXXX XXXXXXX XXXXXXX
XXXXXXX XXXXXXXXXXXX 99999999,99 999999,99
99999999,99
99
Encargado Despacho
Diseño de Clases :Caso de Uso ( Expandido ): Crear Guía Interna de Despacho por Venta( Productos con registro persistente) Interfaz de Salida
Nº de Nota de Venta 999.999 Fecha Nota de Venta 99/99/9999 Cond. Pago
e-Mail XXXXXXX
XXXXXXX
EncargadoDespacho
CajaDespachador
Cliente
Conforme :
25/09/2002 12
Productos
Clientes
Encabezado de Guía Interna de Despacho por
Venta
1
*
*
*
Diseño de Clases:Modelo Conceptual (simplificado)
Crear Guía Interna de Despacho por Venta
(Productos con registro persistente)
Detalle de Guía Interna de Despa-
cho por Venta
1
1
11..*
Notas de Venta1
1Emplea-
dos
Nombre
CódigoDescripciónPrecio
Nº de GuíaFechaClienteNombre
DescripciónPrecioCantidad
RUTNombreDirección
Nº Nota de VentaFecha
Dentro de los requerimientos,podría sustituirse por la consultaa los Encabezados de Guía anteriores.( Condición de NO existencia previa )
Nota : En este modelo se consideranlos conceptos mínimos. En un análisisy desarrollo posteriores se podrían in-cluir conceptos tales como Bodega, Terminal, Empresa, etc.
25/09/2002 13
Productos
Clientes
Encabezado de Guía Interna de Despacho por
Venta
1
*
*
*
Diseño de Clases:Diagrama de Diseño
de Clases ( Borrador inicial )Crear Guía Interna de
Despacho por Venta(Productos con registro persistente)
Detalle de Guía Interna de Despa-
cho por Venta
1
111..*
Notas de Venta1
1
Nombre
CódigoDescripcionPrecio
Nº de GuíaFechaClienteNombre
DescripciónPrecioCantidad
RUTNombreDirección
Nº Nota de VentaFecha
Dentro de los requerimientos, podría sustituirse por la consultaa los Encabezados de Guía anteriores.( Condición de NO existencia previa )
Nota: Según Craig Larman( pg.257 ) : “ Si bien la presen-tación de los diagramas de claseses posterior a la creación de los diagramas de interacción, en la prác-tica usualmente se crean en paralelo. Muchas clases, métodos y relaciones pueden bosquejarse tempranamenteen la etapa de Diseño”
Emplea-dos
Nota: Según Craig Larman(21.8.4 a 21.8.8 - pgs.262 - 264)Salvo casos especificos, es conve-niente omitir los métodos : crear(),modificar(), eliminar() y consultar()en los diagramas de clases dado queno agregan valor y aumentan el“ruido” - se consideran implícitos -
25/09/2002 14
Diseño de Clases: Crear Guía Interna de Despacho por Venta
Diagrama de Secuencia del Sistema(Productos con registro persistente)
(Base Craig Larman)
Encargado de Despacho:Sistema
Ingresar a la Opción Crear Guía de Despacho
Ingresar RUT del Cliente en Encabezado
Ingresar Código del Empleado en Encabezado
Ingresar Código del Producto en Línea Detalle
Ingresar Precio y Cantidad del Producto
Dar OK a la Línea de Detalle
Dar OK al Final para Terminar la Creación
Caso de Uso:Crear Guía de Despacho( Curso Normal de los Eventos)
Obtener / Ingresar(Tab) Nº de Guía Despacho y Fecha sistema, verificar correlativo y fecha. Ingresar Código del Empleado y obtener / verificar el nombre del mismo.Ingresar RUT del Cliente y obtener / verificar los datos del mismo.Ingresar datos de Nota de Venta( Nº Nota, Fecha, Condiciones )Para cada línea:• Ingresar el Código del Producto• Obtener / Verificar datos del Producto• Ingresar precio y cantidad del Producto• Dar OK a la línea (Grabar)Al terminar:•Dar OK a la Transacción (Grabar)• Salir al Menú
Versión en Lenguaje Natural
Reiterar hastaque no haya más Productos que ingresar
Salir al Menú
Ingresar Nº Nota de Venta, Fecha y C. Pago en Encabezado
Ingresar RUT del Cliente en Encabezado
25/09/2002 15
Diseño de Clases: Crear Guía Interna de Despacho por Venta
Diagrama de Secuencia del Sistema(Productos con registro persistente)
(Base Craig Larman)
Encargado de Despacho
:Sistema
crearEncGuiaDespVenta(NumGuiaDespVen, FechaV)
ingresarRutCliente(RutCliente)
ingresarCodEmpleado(CodigoEmpleado)
ingresarCodProducto(CodigoProducto)
ingresarPrecioCantidad(Precio,Cantidad)
grabarLínea()
terminarTransacción()
Versión llamando los Eventospor su Nombre
( equivalente a Operaciones del sistema)
salirAMenú()
Caso de Uso:Crear Guía de Despacho( Curso Normal de los Eventos)
Obtener / Ingresar(Tab) Nº de Guía Despacho y Fecha sistema, verificar correlativo y fecha. Ingresar Código del Empleado y obtener / verificar el nombre del mismo.Ingresar RUT del Cliente y obtener / verificar los datos del mismo.Ingresar datos de Nota de Venta
( Nº Nota, Fecha, Condiciones ) Para cada línea:• Ingresar el Código del Producto• Obtener / Verificar datos del Producto• Ingresar precio y cantidad del Producto• Dar OK a la línea (Grabar)Al terminar:•Dar OK a la Transacción (Grabar)• Salir al Menú
Reiterar hastaque no haya más Productos que ingresar
ingresarNumNVFechaNVCond(NumNV, FecNV, CPag)
25/09/2002 16
Diseño de Clases:Crear Guía Interna de Despacho
por Venta Operaciones del Sistema
(Productos con registro persistente)(Base Craig Larman)
grabarLínea()
terminarTransacción()
Sistema
Visión Dinámica del Sistema
salirAMenu()
crearEncGuiaDespVenta(NumGuiaDespVen, FechaV)
ingresarCodEmpleado(CodigoEmpleado)
ingresarRutCliente(RutCliente)
ingresarNumNVFechaNVCond(NumNV, FecNV, CPag)
ingresarCodProducto(CodigoProducto)
ingresarPrecioCantidad(Precio,Cantidad)
25/09/2002 17
Diseño de Clases: ContratosCrear Guía Interna
de Despachopor Venta
(Productos con registro persistente)
(Base Craig Larman)
Postcondiciones:
ContratoNombre: crearEncGuiaDespVenta(NumGuiaDespVen, FechaV)
Responsabilidades:
Tipo:
Referencias cruzadas:
Notas:
Excepciones:
Salida:
Precondiciones:
Aceptar (Click) en la opción del Menú.Desplegar la Interfaz de Creaciónde Guía de Despacho. Aceptar (Tab) para iniciar el ingreso de la transac-ción. Crear instancias de EncGuiaDespVenta y DetGuiaDespVenta, obtenery desplegar NumGuiaDespVen, obtener y desplegar FechaV desde la fecha del sistema, opcionalmente aceptar modificación manual de la fecha. Sistema
R1.1, R1.2, R1.15
Usar Sistema de Menú, Ahora() de MS Access,- el Empleado oprime (Tab) para iniciar el ingreso -
N / A
N / A
El sistema tiene el Menú y la opción Crear Guía de Despacho por Ventarequerida instalados y activos
• Se aceptó (Click) en el Menú de Opciones para pasar a CrearGuíaDespacho• Se desplegó la interfaz de Crear Guía de Despacho por Venta (“limpia”)• Se creó una nueva instancia de EncGuiaDespVenta (creación de instancia)• Se asoció EncGuiaDespVenta a Terminal (asociación formada)• Se creó una nueva instancia DetGuiaDespVenta (creación de instancia)• Se asoció DetGuiaDespVenta a EncGuiaDespVenta (asociación formada)• Se posicionó el cursor en A y se aceptó (Tab) para proseguir• Se desplegó el Número correlativo de Guía de Despacho: NumGuiaDespVen en A y la Fecha: FechaV en B• Se asignó el Número correlativo de Guía de Despacho al campo: EncGuiaDespVenta .NumGuiaDespVen (modificación de atributos)• Se asignó la Fecha del sistema al campo: EncGuíaDespVenta .FechaV ( modificación de atributos)• Se posicionó el cursor en el campo C : Código Enc. Despacho
Nota:
Los nombres de elementos usados
en los contratos hacen referencia
al Diagrama de Secuencia de pág. 15,
al Modelo Funcional de pág. Nº 32
y al Modelo de Clases de pág. Nº 33.
25/09/2002 18
Postcondiciones:
Contrato
Nombre: ingresarCodEmpleado(CodigoEmpleado)Responsabilidades:
Tipo:
Referencias cruzadas:
Notas:
Excepciones:
Salida:
Precondiciones:
Aceptar el ingreso de CodigoEmpleado. Basado en CodigoEmpleado, obtener y desplegar Nombre registrado en el sistema de almacenamiento persistente. (Alternativa a Lista de Valores Posibles).A continuación posicionar el cursor en el campo E.
Sistema
R1.3, R1.4, R1.15
Error en ingreso manual del Código o Código no registrado
N / A
El sistema conoce a Empleados.CodigoEmpleado (Registrado opor-tunamente con anterioridad)
Usar Base de Datos MS Access y (Tab) para sucesivos campos
• Se desplegó CodigoEmpleado en C y Nombre en D..• Se asoció EncGuiaDespVenta a una instancia de Empleados basado en una igualdad de CodigoEmpleado (asociación formada) • Se asignó CodigoEmpleado a EncGuiaDespVenta.CodigoEmpleado (modi- ficación de atributo) Nota : Alternativamente ( desde Lista de Valores Posibles ) - Sustituyendo CodigoEmpleado por Nombre - - Se asignó Nombre a EncGuiaDespVenta.Nombre (modificación de atributo).• Se posicionó el cursor en el campo E: RUT Cliente
Diseño de Clases: ContratosCrear Guía Interna deDespacho por Venta
(Productos con registro persistente)
(Base Craig Larman)
Nota:
Los nombres de elementos usados
en los contratos hacen referencia
al Diagrama de Secuencia de pág. 15,
al Modelo Funcional de pág. Nº 32
y al Modelo de Clases de pág. Nº 33.
25/09/2002 19
Postcondiciones:
Contrato
Nombre: ingresarRutCliente(RutCliente)
Responsabilidades:
Tipo:
Referencias cruzadas:
Notas:
Excepciones:
Salida:
Precondiciones:
Aceptar el ingreso de RutCliente, por su intermedio, obtener y des-plegar los Datos del Cliente registrados en el sistema de almacena-miento persistente. A continuación posicionar el cursor en el campo M.
Sistema
R1.5, R1.15
Error en ingreso manual del RUT o RUT no registrado
N / A
El sistema conoce a Clientes.RutCliente (Registrado oportuna-mente con anterioridad)
• Se desplegó RutCliente en el campo E• Se asoció EncGuiaDespVenta a una instancia de Clientes basado en una igualdad de RutCliente (asociación formada) • Se asignó RutCliente a EncGuiaDespVenta.RutCliente (modificación de atributo)• Se desplegaron los datos básicos del Cliente según los campos de la interfaz ( RazonSocial, Direccion, eMail, Comuna, Ciudad, Fono, Fax) (Campos F, G, H, I, J, K, L )•Se posicionó el cursor en el campo M: Nota de Venta Nº
Usar Base de Datos MS Access - el Encargado de Despacho oprime (Tab) para pasar a los sucesivos campos -
Diseño de Clases: ContratosCrear Guía Interna de
Despacho por Venta(Productos con registro
persistente)(Base Craig Larman)
Nota:
Los nombres de elementos usados
en los contratos hacen referencia
al Diagrama de Secuencia de pág. 15,
al Modelo Funcional de pág. Nº 32
y al Modelo de Clases de pág. Nº 33.
25/09/2002 20
Postcondiciones:
Contrato
Nombre: ingresarNumNVFechaNVCond(NumNV, FecNV, CPag)
Responsabilidades:
Tipo:
Referencias cruzadas:
Notas:
Excepciones:
Salida:
Precondiciones:
Aceptar el ingreso de NumNV, FecNV, CPag, verificar no existencia del Nº de Nota de Venta en registros del sistema de almacenamiento persis-tente. A continuación posicionar el cursor en el campo P.
Sistema
R1.6, R1.7 y R1.8, R1.15
El Nº de Nota de Venta ya existe.
N / A
El sistema conoce a EncGuiaDespVenta.NumNV (Registrado oportuna-mente con anterioridad). Están disponibles los Encabezados de Guías de Despacho previas.
• Se desplegó NumNV, FecNV, CPag en los campos M, N y O• Se asignó NumNV a EncGuiaDespVenta.NumNV (modificación de atributo)• Se asignó FecNV a EncGuiaDespVenta.FecNV (modificación de atributo)• Se asignó CPag a EncGuiaDespVenta.CPag (modificación de atributo)• Se posicionó el cursor en el campo P:Código.
Usar Base de Datos MS Access - el Encargado de Despacho oprime (Tab) para pasar a los sucesivos campos -
Diseño de Clases: ContratosCrear Guía Interna de
Despacho por Venta(Productos con registro
persistente)(Base Craig Larman)
Nota:
Los nombres de elementos usados
en los contratos hacen referencia
al Diagrama de Secuencia de pág. 15,
al Modelo Funcional de pág. Nº 32
y al Modelo de Clases de pág. Nº 33.
25/09/2002 21
Usar Base de Datos MS Access y tecla (Tab)
Postcondiciones:
ContratoNombre: ingresarCodProducto(CodigoProducto)
Responsabilidades:
Tipo:
Referencias cruzadas:
Notas:
Excepciones:
Salida:
Precondiciones:
Aceptar el ingreso de CodigoProducto. Basado en CodigoProducto, ob-tener y desplegar los Datos del Producto registrados en el sistema de almacenamiento persistente. Al oprimir (Tab) - fin de ingreso de Codi-goProducto - asignar Número correlativo a la Instancia de DetGuía-DespVenta.NumLinea y pasar al campo Q. Si la Descripción es la cor-recta pasar (Tab) al campo R: Precio.Sistema
R1.9, R1.10, R1.15
Error en ingreso manual del Código o Código no registrado
N / A
El sistema conoce a Productos.CodigoProducto (Registrado oportuna-mente con anterioridad)
• Se redesplegó CodigoProducto en P• Se desplegó el Número de Línea NumLínea en LL• Se asoció DetGuíaDespVenta a una instancia de Productos basado en una igualdad de CodigoProducto (asociación formada) • Se asignó NumLínea a DetGuiaDespVenta.NumLínea ( modificación de atributo )• Se asoció la nueva línea de DetGuíaDespVenta a EncGuíaDespVenta (asociación formada) • Se asignó CodigoProducto a DetGuiaDespVenta.CodigoProducto (modi- ficación de atributo)• Se desplegó la Descripción del Producto, Descripcion en Q. • Se posicionó el cursor en R: Precio
Diseño de Clases: ContratosCrear Guía Interna de
Despacho por Venta(Productos con registro
persistente)(Base Craig Larman)
Nota:
Los nombres de elementos usados
en los contratos hacen referencia
al Diagrama de Secuencia de pág. 15,
al Modelo Funcional de pág. Nº 32
y al Modelo de Clases de pág. Nº 33.
25/09/2002 22
Usar Base de Datos MS Access
Postcondiciones:
Contrato
Nombre: ingresarPrecioCantidad(Precio, Cantidad)
Responsabilidades:
Tipo:
Referencias cruzadas:
Notas:
Excepciones:
Salida:
Precondiciones:
Aceptar el Precio del Producto del Cliente en R, avanzar con (Tab) hasta el campo S. Aceptar Cantidad en S. Si todo está correcto pasar con (Tab) al campo T.
Sistema
R1.11 y R1.12
N / A
El sistema conoce a Productos.Existencia (Registrado oportuna- mente con anterioridad)
• Se posicionó el cursor en R• Se redesplegó Precio en R y se posicionó el cursor en S.• Se redesplegó Cantidad en S• Se asignó Precio a DetGuiaDespVenta.Precio y Cantidad a DetGuiaDespVenta.Cantidad ( modificación de atributos)• Se posicionó el cursor en T: Valor Neto
Diseño de Clases: ContratosCrear Guía Interna de
Despacho por Venta(Productos con registro
persistente)(Base Craig Larman)
Existencia negativa ( falta producto para despachar).
Nota:
Los nombres de elementos usados
en los contratos hacen referencia
al Diagrama de Secuencia de pág. 15,
al Modelo Funcional de pág. Nº 32
y al Modelo de Clases de pág. Nº 33.
25/09/2002 23
ContratoNombre: grabarLínea()
Responsabilidades: Aceptar avance con (Tab) hasta la siguiente línea de la interfaz, creandouna nueva Línea de DetGuiaDespVenta. Calcular /ValorLínea y desple-garlo en T de la línea previa. Grabar en almacenamiento persistente un registro de DetGuiaDespVenta con los datos ingresados/calculados en la línea previa (anterior). Calcular /ValorTotal y desplegarlo en U. Posicio-nar el cursor en P de la nueva línea.
Postcondiciones:
Tipo:
Referencias cruzadas:
Notas:
Excepciones:
Salida:
Precondiciones: N / A
Sistema
R1.13, R1.15
N / A
• Se calculó /ValorLínea y se desplegó en T • Se calculó/recalculó /ValorTotal y se desplegó/redesplegó en U.• Se asignó /ValorLínea a DetGuiaDespVenta./ValorLínea ( modificación de atributo )• Se grabó en almacenamiento persistente el registro de DetGuiaDespVenta recién completado• Se creó una nueva Línea de DetGuiaDespVenta (creación de instancia)• Se asoció la nueva Línea de DetGuiaDespVenta a EncGuiaDespVenta (asociación formada)• Se posicionó el cursor en P de la nueva Línea de DetGuiaDespVenta.
Usar Base de Datos MS Access. En este punto el sistema queda listo para reiterar el ingreso de un nuevo código CodigoProducto o caso contrario, pasar a terminarTransacción()
N / A
Diseño de Clases: ContratosCrear Guía Interna de
Despacho por Venta(Productos con registro
persistente)(Base Craig Larman)
Nota:
Los nombres de elementos usados
en los contratos hacen referencia
al Diagrama de Secuencia de pág. 15,
al Modelo Funcional de pág. Nº 32
y al Modelo de Clases de pág. Nº 33.
25/09/2002 24
Postcondiciones:
ContratoNombre: terminarTransacción()
Responsabilidades:
Tipo:
Referencias cruzadas:
Notas:
Excepciones:
Salida:
Precondiciones:
Aceptar (click) del Botón V (Grabar). Recalcular /ValorTotal y redesple-garlo en U. Grabar en almacenamiento persistente la instancia actual de EncGuiaDespVenta.”Limpiar” los datos desplegados en la interfaz. Actua-lizar Productos.Existencia, Productos.Despachado y DetGuiaDesp- Venta.notAct. Posicionar en A el cursor.
Sistema
R1.2, R1.14, R1.15
N / A
• Se activó onClick_CBGrabar de commandGrabar• Se recalculó /ValorTotal y se grabó/regrabó en almacenamiento persistente la instancia EncGuiaDespVenta y las líneas completadas DetGuiaDespVenta.• Se verificó notAct() de DetGuiaDespVenta y se actualizó Productos.Existencia, Productos.Despachado, regrabando los registros de Productos afectados por la transacción (modificación de atributo), después de ello, se le asignó el valor false al atributo DetGuiaDespVenta.notAct (modificación de atributo), regra- bando los registros correspondientes de DetGuiaDespVenta.• Se creó una nueva EncGuiaDespVenta (creación de instancia) (en blanco)• La nueva EncGuiaDespVenta fue asociada a Terminal (asociación formada)• Se creó una nueva DetGuiaDespVenta ( creación de instancia) (en blanco)• Se asoció la nueva instancia de DetGuiaDespVenta a EncGuiaDespVenta (asociación formada)• Se posicionó el cursor en A, esperando la próxima acción del usuario.
Usar Base de Datos MS Access. Al terminar, el sistema queda listo pa-ra ingresar una nueva transacción o volver al Menú de opciones.
N / A
Productos.Existencia y Productos.Despachado ya fueron actualizados.
Diseño de Clases: ContratosCrear Guía Interna de
Despacho por Venta(Productos con registro
persistente)(Base Craig Larman)
Nota:
Los nombres de elementos usados
en los contratos hacen referencia
al Diagrama de Secuencia de pág. 15,
al Modelo Funcional de pág. Nº 32
y al Modelo de Clases de pág. Nº 33.
25/09/2002 25
Diseño de Clases:Creación de EncGuiaDespVenta
Diagramas de ColaboracióningresarOpcion(CrearGuiaDespacho)
(Productos con registro persistente)(Base Craig Larman)
Fecha
:EncGuiaDespVentat1:Terminal1:NumGuiaDespVen := siguiente():NumGuia
2:FechaV := ahora():Fecha
d1:EncGuiaDespVenta 3 :[NuevaGuiaDespacho] crearEncGuiaDespVenta(NumGuiaDespVen, FechaV)
t1:Terminal
l1:DetGuiaDespVenta
3.1 :[NuevaGuiaDespacho] crearDetGuiaDespVenta(NumGuiaDespVen)
siguiente():NumGuiaahora():Fecha
crearEncGuiaDespVenta(NumGuiaDespVen, FechaV)
Omisión del Contenedor de LíneasNota: Según Craig Larman( 21.8.6 - pg.262 ) : “ Un mensaje a un multiobjeto se interpreta como un mensaje al objeto contenedor / colec-ción en sí mismo... estas clases ( tales comojava.util.Vector... ) son clases predefinidasde la biblioteca de clases... no es útil mos-trarlas explícitamente... agregan “ruido” pero poca información nueva. ”
El mensaje invoca un método de clase ( no de instancia ), específicamenteel método ahora() de la clase Fecha
25/09/2002 26
Diseño de Clases:Creación de EncGuiaDespVenta
Diagramas de ColaboracióningresarCodEmpleado(CodigoEmpleado)
ingresarRutCliente(RutCliente)(Productos con registro persistente)
(Base Craig Larman)
c1:Clientes
d1:EncGuiaDespVentat1:Terminal 2:ingresarRutCliente (RutCliente)
2.1.a:RazonSocial := consultar (RutCliente)2.1.b:Direccion := consultar (RutCliente)2.1.c: eMail := consultar (RutCliente)2.1.d:Comuna := consultar (RutCliente)2.1.e:Ciudad := consultar (RutCliente) 2.1.f: Fono := consultar (RutCliente)2.1.g:Fax := consultar (RutCliente)
t1:Terminal d1:EncGuiaDespVenta1:ingresarCodEmpleado(CodigoEmpleado)
e1:Empleados
1.1:Nombre := consultar(CodigoEmpleado)
ingresarCodEmpleado(CodigoEmpleado)
ingresarRutCliente (RutCliente)
25/09/2002 27
Diseño de Clases:Creación de EncGuiaDespVenta
Diagramas de ColaboracióningresarNumNVFechaNVCond(NumNV, FecNV, CPag)
(Productos con registro persistente)(Base Craig Larman)
1: ingresarNumNVFechaNVCond(NumNV, FecNV, CPag)
ll:DetGuiaDespVenta
t1:Terminal d1:EncGuiaDespVenta
ingresarNumNVFechaNVCond(NumNV, FecNV, CPag)
:EncGuiaDespVenta1.1: consultar (NumNV)
La instancia específica :d1:EncGuíaDespVenta hace la con-sulta a los Encabezados de Guía anterio-res. ( Condición de NO existencia previa )
25/09/2002 28
Diseño de Clases:Creación de EncGuiaDespVenta
Diagramas de ColaboracióningresarCodProducto(CodigoProducto)
(Productos con registro persistente)(Base Craig Larman)
1.2:Descripcion := consultar(CodigoProducto)
1:ingresarCodProducto(CodigoProducto)
2 *:[i:=1...6] NumLínea:= siguiente () : NumLinea
ll:DetGuiaDespVenta
t1:Terminal
b1:Productos
1.1:aceptarCodigo(CodigoProducto)
d1:EncGuiaDespVenta
2.1 *:[i:=1...6] NumLínea:= siguiente () : NumLinea
2.2:crearLinea(NumLinea)
ingresarCodProducto(CodigoProducto)
siguiente () : NumLinea
Omisión del Contenedor de LíneasNota: Según Craig Larman( 21.8.6 - pg.262 ) : “ Un mensaje a un multiobjeto se interpreta como un mensaje al objeto contenedor / colec-ción en sí mismo... estas clases ( tales comojava.util.Vector... ) son clases predefinidasde la biblioteca de clases... no es útil mos-trarlas explícitamente... agregan “ruido” pero poca información nueva. ”
25/09/2002 29
Diseño de Clases:Creación de EncGuiaDespVenta
Diagramas de ColaboracióningresarPrecioCantidad(Precio, Cantidad)
grabarLínea()(Productos con registro persistente)
(Base Craig Larman)
ll:DetGuiaDespVentaa
t1:Terminal1:ingresarPrecioCantidad(Precio, Cantidad)
1.1:aceptarDatos(Precio, Cantidad)
d1:EncGuiaDespVenta
2: /ValorTotal := calcularTotales()t1:Terminal d1:EncGuiaDespVenta
2.1*:[i:=1...6]: /ValorLínea := calcularValor()
ll:DetGuiaDespVenta
Después de grabarLinea() el usua-rio vuelve a la acción anterior de ingresarCodProducto() hasta queno queden más productos queingresar, en cuyo caso pasa a la siguiente acción : teminarTransaccion()
ingresarPrecioCantidad(Precio, Cantidad)
calcularTotales()
25/09/2002 30
Diseño de Clases:Creación de EncGuiaDespVenta
Diagramas de ColaboraciónterminarTransaccion()
(Primera Parte)(Productos con registro persistente)
(Base Craig Larman)t1:Terminal
1: /ValorTotal := calcularTotales()d1:EncGuiaDespVenta
1.1*:[i:=1...6] /ValorLínea := calcularValor()
ll:DetGuiaDespVenta
t1:Terminal d1:EncGuiaDespVenta
2.1.a*:[i:=1...6 ][notAct] restarExistencia(CodigoProducto, Cantidad)2.1.b*:[i:=1...6 ][notAct] sumarDespachado(CodigoProducto, Cantidad)
ll:DetGuiaDespVenta
b1:Productos
2.3*:[i:=1...6 ][notAct] notAct := notAct(notAct := false)
2.2.a*:[i:=1...6 ][notAct] restarExistencia(CodigoProducto, Cantidad)
2.2.b*:[i:=1...6 ][notAct] sumarDespachado(CodigoProducto, Cantidad)
2.a*:[i:=1...6 ][notAct] restarExistencia(CodigoProducto, Cantidad)2.b*:[i:=1...6 ][notAct] sumarDespachado(CodigoProducto, Cantidad)
calcularTotales()
sumarDespachado(CodigoProducto, Cantidad) restarExistencia(CodigoProducto, Cantidad)
Este Diagrama reitera lo indicadoen grabarLínea() al recalcular lostotales ( se expone por completitud )
25/09/2002 31
Diseño de Clases:Creación de EncGuiaDespVenta
Diagramas de ColaboraciónterminarTransaccion()
(Segunda Parte)(Productos con registro persistente)
(Base Craig Larman)
d1:EncGuiaDespVenta 5 :[NuevaGuiaDespacho] crearEncGuiaDespVenta(NumGuiaDespVen, FechaV)
t1:Terminal
l1:DetGuiaDespVenta
5.1 :[NuevaGuiaDespacho] crearDetGuiaDespVenta (NumGuiaDespVen)
Fecha
t1:Terminal :EncGuiaDespVenta3:NumGuiaDespVen := siguiente():NumGuia
4:FechaV := ahora():Fecha
siguiente():NumGuiaahora():Fecha
crearEncGuiaDespVenta(NumGuiaDespVen, FechaV)
Esta Segunda Parte del Diagramade terminarTransacción() reiteralo indicado en pág 25 ingresarOpción()( se expone por completitud )
25/09/2002 32
Encabezado de Guía de Despacho
•Nº Guia de DespachoRUT Cliente Nº Nota de VentaFecha DespachoCódigo EmpleadoFecha Nota de VentaCondición de Pago/ Valor Total
Transacción CerradaTransacción Anulada
1. Crear Encabezado() 2. Aceptar datos() 6. Calcular Totales() 7. Cerrar Transacción() 8. Anular Transacción() 9. Copiar Transacción()10. Siguiente()
•Nº LíneaCódigo ProductoPrecio Cantidad/ Valor líneanotActLínea CerradaLínea Anulada
Detalle de Guía de Despacho
1. Crear Línea() 2. Aceptar Codigo() 3. Aceptar datos() 6. Calcular Valor() 7. Cerrar Línea() 8. Anular Línea() 9. Copiar Línea() 10. Siguiente()11. notAct()
Clientes
•RUT Cliente Razón Social Dirección e_Mail Comuna Ciudad País Contacto Fono Fax
Diseño de Clases :Modelo Funcional
(Detallado y Generalizado)Crear Guía Interna de
Despacho por Venta(Productos con Registro
persistente)
Productos
•Código ProductoDescripciónU.MedidaPrecioCosto UnitarioExistencia InicialExistenciaRecibidoDespachado
4. Consultar datos()6. Sumar Existencia() 7. Restar Existencia()8. Sumar Recibido()9. Sumar Despachado()10. Existencia Negativa()11. Calcular CPP()
Empleados
•Código Empleado Nombre ...
Terminal
1.Cargar correlativo y fecha de sistema2. Aceptar datos.3. Enviar mensajes de C/E a registros.4. Enviar mensajes de consulta de datos5. Calcular totales cumulativos6. Enviar mensajes de actualización de existencias y actualizar línea a línea el registro de la transacción
Encabezado, detalle y totales según formato de pantalla adjunto.
C/E, msg1, msg2,
msg6 y msg10
C/E, msg1, msg2, msg3, msg6, msg10 y msg11
4. Consultar datos()
4. Consultar datos()
C/E y msg4
C/E y msg4
C/E, msg4, msg7, msg9 y msg10
C/E y msg4
Notas de Venta
• Nº Nota de Venta Datos
4. Consultar datos()
Al crear la línea de detalle, notAct
se incializa a: true
25/09/2002 33
EncGuíaDespVentaNumGuíaDespVenRUTCliente NumNVFechaVCódigoEmpleado FecNVCPag/ValorTotalTransacciónCerradaTransacciónAnulada
crearEncGuiaDespVenta() ingresarCodEmpleado() ingresarRutCliente() ingresarNumNVFechaNVCond() ingresarCodProducto() ingresarPrecioCantidad() restarExistencia() sumarDespachado() calcularTotales() cerrarTransacción() anularTransacción() copiarTransacción() siguiente()
•NumLineaCodigoProductoPrecioCantidad/ValorLíneanotActLíneaCerradaLíneaAnulada
DetGuíaDespVenta
crearDetGuiaDespVenta() crearLínea() aceptarCodigo() aceptarDatos() calcularValor() restarExistencia() sumarDespachado() cerrarLínea() anularLínea() copiarLínea() siguiente() notAct()
Clientes
•RUTCliente RazónSocial Dirección eMail Comuna Ciudad País Contacto Fono Fax
Diseño de Clases : Modelo de DatosDiagrama de Diseño de Clases
Crear Guía Interna de Despacho por Venta
(Productos con Registropersistente)
1
1
*
*
1 1..*
Productos
•CodigoProductoDescripciónUMedidaPrecioCostoUnitarioExistenciaInicialExistenciaRecibidoDespachado
sumarExistencia() restarExistencia()sumarRecibido()sumarDespachado()existenciaNegativa()calcularCPP()
Empleados
• CódigoEmpleado Nombre
1
*
Notas de Venta
• NumNV RUTCliente FechaNV etc...
1
1
Agregado para clarificar contexto, en principio es una
lista de valores posibles
Al crear la línea de detalle, notAct
se incializa a: true
Nota: Según Craig Larman(21.8.4 a 21.8.8 - pgs.262 - 264)Salvo casos especificos, es conve-niente omitir los métodos : crear(),modificar(), eliminar() y consultar()en los diagramas de clases dado queno agregan valor y aumentan el“ruido” - se consideran implícitos -
Dentro de los requerimientos, podría sustituirse por la consultaa los Encabezados de Guía anteriores.( Condición de NO existencia previa )