340 likes | 525 Views
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.
E N D
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 delMétodo Genérico de Desarrollo de Sistemas de Información
MAPA DE PROCESOS (como parte del Modelo de Negocios) Macro-procesos Ventas Servicio postventa Proyección ventas Adquisiciones Segundo Flujo- grama de Información RECEPCIÓNPOR COMPRAS DESPACHOPOR VENTAS Procesos operativos Devoluciones Devoluciones
3 3 1 G/D Interna G/D Interna G/D Interna 2 1 2 1’’ 1’’ 1’ Nota de Venta Nota de Venta. Despachar Productos de Bodega 1’’’ 1’’’ 2’’’ 3 2’’ 2’’ 2’ 2 1 G/D Interna G/D Interna G/D Interna Recibir Pago 1’ 3’ 1’ 2’ Nota de Venta. G/D Interna Flujograma : Proceso de Despacho de Productos a Clientes - (Guía Interna de Despacho por Venta ) Encargado de Despacho Despachador (Bodega) Depto. de Contabilidad Depto. de Ventas Cajero Cliente Emitir Guía de Despacho 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. 3’ 2’ 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 ). Nota de Venta
Administrador, • Encargado de Recepción, • Encargado de Despacho... • son “roles” que juegan las personas • de la Organización. ( No necesariamente • son tres personas distintas ). Administrar Sistema ... Son Casos de Uso Genéricos que en el transcurso del análisis se des- agregarían en otros Casos de Uso Diseño de Clases: Diagrama de Casos de Uso (Casos de Uso Básicos) Crear Guía Interna de Recepción por Compra Crear Guía Interna de Despacho por Venta Proveedor Encargado de Recepción (Empleado) Iniciar Sistema de Bodegas Cliente Administrar Sistema de Bodega de Recepción Encargado de Despacho (Empleado) Administrar Sistema de Bodega de Despacho Administrador (Empleado)
Diseño de Clases: Guía de Despacho Caso de Uso: Crear Guía Interna de Despacho por Venta ( Productos con registro persistente ) Crear Guía Interna de Despacho por Venta Caso de Uso de Alto Nivel 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 ) 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 Cliente Encargado de Despacho (Empleado) 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 Nota : (Craig Larman, 2.7.2, pg. 26): “Los Casos de Uso de Alto Nivel son breves descripciones de un proceso - usualmente dos o tres frases - “ Ver también: (Craig Larman, 6.3.1, pg. 49)
Diseño de Clases :Caso de Uso: Crear Guía Interna de Despacho por Venta ( Productos con registro persistente) Funciones Básicas Ref. # Función Categoría 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 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. evidente evidente evidente evidente evidente evidente evidente evidente evidente evidente evidente evidente oculta oculta oculta
Terminal Despacho Caso de Uso Expandido Encargado de Despacho Cliente 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 Expandido Nota : (Craig Larman, 2.7.2, pg. 26): “Los Casos de Uso Expandidos son extensas narrativas de descripción de un proceso - pueden contener cientos de frases - “ Ver también: (Craig Larman, 6.3.2, pg. 50) 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 Este Caso de Uso comprende desde la Hoja # 7 (la actual) hasta la Hoja # 11
Diseño de Clases : Caso de Uso: Crear Guía Interna de Despacho por Venta (Expandido ) ( Base Craig Larman ) (Productos con registro persistente) Curso Normal de los Eventos Acción de los actores Respuestas del Sistema 1. 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, 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 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 ( Expandido ): Crear Guía Interna de Despacho por Venta ( Productos con registro persistente) Interfaz de Entrada G F E D P B W A X Y Z C V U H I L M N O T LL S R XX Q K J Grabar Anular Cerrar Salir Guía Interna de Despacho por Venta Nº Guía Despacho Código Enc. Despacho Encargado Despacho Fecha Despacho Razón Social Cliente RUT Cliente - Dirección Cliente e-Mail Fax Fono Comuna Ciudad Nota de Venta Nº Fecha Nota de Venta Cond. Pago L. Código Descripción Precio Cantidad Valor Neto Cerrada Anulada Total acumulado
Diseño de Clases : Caso de Uso ( Expandido ): Crear Guía Interna de Despacho por Venta ( Productos con registro persistente) 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íneas Excepciones 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 Encabezado 10) 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) Interfaz de Salida Razón Social Cliente XXXXXXX XXXXXXX XXXXXXX 999.999 Fecha Nota de Venta Nº de Nota de Venta 99/99/9999 Guía de Despacho Nº 999.999 Fecha 99/99/9999 RUT Cliente 999.999.999 - X XXXXXXX Encargado Despacho Dirección Cliente e-Mail Comuna Ciudad Teléfono Fax XXXXXXX XXXXXXX XXXXXXX XXXXXXX Cond. Pago XXXXXXX L. Código Descripción Precio Cantidad Valor Neto 99 XXXXXXX XXXXXXXXXXXX 9999,99 9999 999999,99 Conforme : Caja Despachador Encargado Despacho Cliente Total Neto 99999999,99
Emplea-dos Productos Clientes Nombre Notas de Venta Dentro de los requerimientos, podría sustituirse por la consulta a los Encabezados de Guía anteriores. ( Condición de NO existencia previa ) Diseño de Clases: Modelo Conceptual (simplificado) Crear Guía Interna de Despacho por Venta (Productos con registro persistente) Nota : En este modelo se consideran los conceptos mínimos. En un análisis y desarrollo posteriores se podrían in- cluir conceptos tales como Bodega, Terminal, Empresa, etc. Encabezado de Guía Interna de Despacho por Venta * * 1 Nº de Guía Fecha Cliente Nombre 1 1 RUT Nombre Dirección 1 1..* Detalle de Guía Interna de Despa- cho por Venta * Descripción Precio Cantidad 1 1 Código Descripción Precio Nº Nota de Venta Fecha
Emplea-dos Clientes Notas de Venta Nota: Según Craig Larman ( pg.257 ) : “ Si bien la presen- tación de los diagramas de clases es 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 tempranamente en la etapa de Diseño” 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 que no agregan valor y aumentan el “ruido” - se consideran implícitos - Dentro de los requerimientos, podría sustituirse por la consulta a los Encabezados de Guía anteriores. ( Condición de NO existencia previa ) Diseño de Clases: Diagrama de Diseño de Clases ( Borrador inicial ) Crear Guía Interna de Despacho por Venta (Productos con registro persistente) Encabezado de Guía Interna de Despacho por Venta Nº de Guía Fecha Cliente Nombre * 1 * Nombre 1 RUT Nombre Dirección 1 1 1..* Detalle de Guía Interna de Despa-cho por Venta * Descripción Precio Cantidad Productos 1 1 Código Descripcion Precio Nº Nota de Venta Fecha
Encargado de Despacho Diseño de Clases: Crear Guía Interna de Despacho por Venta Diagrama de Secuencia del Sistema (Productos con registro persistente) (Base Craig Larman) Versiónen Lenguaje Natural • 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ú :Sistema Ingresar a la Opción Crear Guía de Despacho Ingresar Código del Empleado en Encabezado Ingresar RUT del Cliente en Encabezado Ingresar RUT del Cliente en Encabezado Ingresar Nº Nota de Venta, Fecha y C. Pago en Encabezado Ingresar Código del Producto en Línea Detalle Reiterar hasta que no haya más Productos que ingresar Ingresar Precio y Cantidad del Producto Dar OK a la Línea de Detalle Dar OK al Final para Terminar la Creación Salir al Menú
Diseño de Clases: Crear Guía Interna de Despacho por Venta Diagrama de Secuencia del Sistema (Productos con registro persistente) (Base Craig Larman) • 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ú Encargado de Despacho Versiónllamando los Eventos por su Nombre ( equivalente a Operaciones del sistema) :Sistema crearEncGuiaDespVenta(NumGuiaDespVen, FechaV) ingresarCodEmpleado(CodigoEmpleado) ingresarRutCliente(RutCliente) ingresarNumNVFechaNVCond(NumNV, FecNV, CPag) ingresarCodProducto(CodigoProducto) Reiterar hasta que no haya más Productos que ingresar ingresarPrecioCantidad(Precio,Cantidad) grabarLínea() terminarTransacción() salirAMenú()
Diseño de Clases: Crear Guía Interna de Despacho por Venta Operaciones del Sistema (Productos con registro persistente) (Base Craig Larman) Visión Dinámica del Sistema Sistema crearEncGuiaDespVenta(NumGuiaDespVen, FechaV) ingresarCodEmpleado(CodigoEmpleado) ingresarRutCliente(RutCliente) ingresarNumNVFechaNVCond(NumNV, FecNV, CPag) ingresarCodProducto(CodigoProducto) ingresarPrecioCantidad(Precio,Cantidad) grabarLínea() terminarTransacción() salirAMenu()
Diseño de Clases: Contratos Crear Guía Interna de Despacho por Venta (Productos con registro persistente) (Base Craig Larman) Contrato Nombre: crearEncGuiaDespVenta(NumGuiaDespVen, FechaV) Aceptar (Click) en la opción del Menú.Desplegar la Interfaz de Creación de Guía de Despacho. Aceptar (Tab) para iniciar el ingreso de la transac- ción. Crear instancias de EncGuiaDespVenta y DetGuiaDespVenta, obtener y desplegar NumGuiaDespVen, obtener y desplegar FechaV desde la fecha del sistema, opcionalmente aceptar modificación manual de la fecha. Responsabilidades: Tipo: Sistema Referencias cruzadas: R1.1, R1.2, R1.15 Notas: Usar Sistema de Menú, Ahora() de MS Access, - el Empleado oprime (Tab) para iniciar el ingreso - Excepciones: N / A 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. Salida: N / A Precondiciones: El sistema tiene el Menú y la opción Crear Guía de Despacho por Venta requerida instalados y activos Postcondiciones: • 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
Contrato Nombre: ingresarCodEmpleado(CodigoEmpleado) Responsabilidades: 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. Tipo: Sistema Referencias cruzadas: R1.3, R1.4, R1.15 Notas: Excepciones: Error en ingreso manual del Código o Código no registrado 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. Usar Base de Datos MS Access y (Tab) para sucesivos campos Salida: N / A Precondiciones: El sistema conoce a Empleados.CodigoEmpleado (Registrado opor- tunamente con anterioridad) Postcondiciones: • 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: Contratos Crear Guía Interna de Despacho por Venta (Productos con registro persistente) (Base Craig Larman)
Contrato Nombre: ingresarRutCliente(RutCliente) Responsabilidades: 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. Tipo: Sistema Referencias cruzadas: R1.5, R1.15 Notas: Usar Base de Datos MS Access - el Encargado de Despacho oprime (Tab) para pasar a los sucesivos campos - 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. Excepciones: Error en ingreso manual del RUT o RUT no registrado Salida: N / A Precondiciones: El sistema conoce a Clientes.RutCliente (Registrado oportuna- mente con anterioridad) Postcondiciones: • 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º Diseño de Clases: Contratos Crear Guía Interna de Despacho por Venta (Productos con registro persistente) (Base Craig Larman)
Contrato Nombre: ingresarNumNVFechaNVCond(NumNV, FecNV, CPag) Responsabilidades: Aceptar el ingreso de NumNV, FecNV, CPag, verificar noexistencia del Nº de Nota de Venta en registros del sistema de almacenamiento persis- tente. A continuación posicionar el cursor en el campo P. Tipo: Sistema 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. Referencias cruzadas: R1.6, R1.7 y R1.8, R1.15 Notas: Usar Base de Datos MS Access - el Encargado de Despacho oprime (Tab) para pasar a los sucesivos campos - Excepciones: El Nº de Nota de Venta ya existe. Salida: N / A El sistema conoce a EncGuiaDespVenta.NumNV (Registrado oportuna- mente con anterioridad). Están disponibles los Encabezados de Guías de Despacho previas. Precondiciones: Postcondiciones: • 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. Diseño de Clases: Contratos Crear Guía Interna de Despacho por Venta (Productos con registro persistente) (Base Craig Larman)
Contrato Nombre: ingresarCodProducto(CodigoProducto) 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 ypasar al campo Q. Si la Descripción es la cor- recta pasar (Tab) al campo R: Precio. Responsabilidades: Tipo: Sistema Referencias cruzadas: R1.9, R1.10, R1.15 Notas: Excepciones: Error en ingreso manual del Código o Código no registrado 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. Salida: N / A Precondiciones: El sistema conoce a Productos.CodigoProducto (Registrado oportuna- mente con anterioridad) Postcondiciones: • 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: Contratos Crear Guía Interna de Despacho por Venta (Productos con registro persistente) (Base Craig Larman) Usar Base de Datos MS Access y tecla (Tab)
Contrato Nombre: ingresarPrecioCantidad(Precio, Cantidad) 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. Responsabilidades: Tipo: Sistema Referencias cruzadas: R1.11 y R1.12 Notas: Excepciones: 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. Salida: Usar Base de Datos MS Access N / A Precondiciones: 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 Postcondiciones: Diseño de Clases: Contratos Crear Guía Interna de Despacho por Venta (Productos con registro persistente) (Base Craig Larman) Existencia negativa ( falta producto para despachar).
Contrato Nombre: grabarLínea() Aceptar avance con (Tab) hasta la siguiente línea de la interfaz, creando una 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. Responsabilidades: Tipo: Sistema Referencias cruzadas: R1.13, R1.15 Notas: 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() 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. Excepciones: N / A Salida: N / A Precondiciones: N / A Postcondiciones: • 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éncompletado • Se creó una nuevaLí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. Diseño de Clases: Contratos Crear 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. Diseño de Clases: Contratos Crear Guía Interna de Despacho por Venta (Productos con registro persistente) (Base Craig Larman) Contrato Nombre: terminarTransacción() Responsabilidades: 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. Tipo: Sistema Referencias cruzadas: R1.2, R1.14, R1.15 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. Notas: Excepciones: Productos.Existencia y Productos.Despachado ya fueron actualizados. Salida: N / A Precondiciones: N / A Postcondiciones: • 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.
Diseño de Clases: Creación de EncGuiaDespVenta Diagramas de Colaboración ingresarOpcion(CrearGuiaDespacho) (Productos con registro persistente) (Base Craig Larman) d1:EncGuiaDespVenta t1:Terminal Fecha 1:NumGuiaDespVen := siguiente():NumGuia t1:Terminal 2:FechaV :=ahora():Fecha 3 :[NuevaGuiaDespacho] crearEncGuiaDespVenta(NumGuiaDespVen, FechaV) Omisión del Contenedor de Líneas Nota: 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 como java.util.Vector... ) son clases predefinidas de la biblioteca de clases... no es útil mos- trarlas explícitamente... agregan “ruido” pero poca información nueva. ” :EncGuiaDespVenta El mensaje invoca un método de clase ( no de instancia), específicamente el método ahora() de la clase Fecha l1:DetGuiaDespVenta siguiente():NumGuia ahora():Fecha crearEncGuiaDespVenta(NumGuiaDespVen, FechaV) 3.1 :[NuevaGuiaDespacho] crearDetGuiaDespVenta(NumGuiaDespVen)
Diseño de Clases: Creación de EncGuiaDespVenta Diagramas de Colaboración ingresarCodEmpleado(CodigoEmpleado) ingresarRutCliente(RutCliente) (Productos con registro persistente) (Base Craig Larman) d1:EncGuiaDespVenta 1:ingresarCodEmpleado(CodigoEmpleado) d1:EncGuiaDespVenta 1.1:Nombre := consultar(CodigoEmpleado) 2:ingresarRutCliente (RutCliente) t1:Terminal t1:Terminal 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) e1:Empleados c1:Clientes ingresarCodEmpleado(CodigoEmpleado) ingresarRutCliente (RutCliente)
Diseño de Clases: Creación de EncGuiaDespVenta Diagramas de Colaboración ingresarNumNVFechaNVCond(NumNV, FecNV, CPag) (Productos con registro persistente) (Base Craig Larman) 1: ingresarNumNVFechaNVCond(NumNV, FecNV, CPag) d1:EncGuiaDespVenta ll:DetGuiaDespVenta :EncGuiaDespVenta t1:Terminal 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 ) ingresarNumNVFechaNVCond(NumNV, FecNV, CPag) 1.1:consultar (NumNV)
Diseño de Clases: Creación de EncGuiaDespVenta Diagramas de Colaboración ingresarCodProducto(CodigoProducto) (Productos con registro persistente) (Base Craig Larman) d1:EncGuiaDespVenta 1.1:aceptarCodigo(CodigoProducto) ll:DetGuiaDespVenta 1.2:Descripcion:= consultar(CodigoProducto) t1:Terminal b1:Productos Omisión del Contenedor de Líneas Nota: 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 como java.util.Vector... ) son clases predefinidas de la biblioteca de clases... no es útil mos- trarlas explícitamente... agregan “ruido” pero poca información nueva. ” ingresarCodProducto(CodigoProducto) siguiente () : NumLinea 1:ingresarCodProducto(CodigoProducto) 2 *:[i:=1...6] NumLínea:= siguiente () : NumLinea 2.1 *:[i:=1...6] NumLínea:= siguiente () : NumLinea 2.2:crearLinea(NumLinea)
Diseño de Clases: Creación de EncGuiaDespVenta Diagramas de Colaboración ingresarPrecioCantidad(Precio, Cantidad) grabarLínea() (Productos con registro persistente) (Base Craig Larman) 1:ingresarPrecioCantidad(Precio, Cantidad) 1.1:aceptarDatos(Precio, Cantidad) 2: /ValorTotal := calcularTotales() d1:EncGuiaDespVenta ll:DetGuiaDespVentaa 2.1*:[i:=1...6]: /ValorLínea := calcularValor() t1:Terminal t1:Terminal ll:DetGuiaDespVenta ingresarPrecioCantidad(Precio, Cantidad) d1:EncGuiaDespVenta calcularTotales() Después de grabarLinea() el usua- rio vuelve a la acción anterior de ingresarCodProducto() hasta que no queden más productos que ingresar, en cuyo caso pasa a la siguiente acción : teminarTransaccion()
1: /ValorTotal := calcularTotales() d1:EncGuiaDespVenta 1.1*:[i:=1...6] /ValorLínea := calcularValor() 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) 2.3*:[i:=1...6 ][notAct] notAct := notAct(notAct := false) ll:DetGuiaDespVenta ll:DetGuiaDespVenta d1:EncGuiaDespVenta t1:Terminal b1:Productos t1:Terminal 2.1.a*:[i:=1...6 ][notAct] restarExistencia(CodigoProducto, Cantidad) 2.1.b*:[i:=1...6 ][notAct] sumarDespachado(CodigoProducto, Cantidad) Este Diagrama reitera lo indicado en grabarLínea() al recalcular los totales ( se expone por completitud ) Diseño de Clases: Creación de EncGuiaDespVenta Diagramas de Colaboración terminarTransaccion() (Primera Parte) (Productos con registro persistente) (Base Craig Larman) calcularTotales() restarExistencia(CodigoProducto, Cantidad) sumarDespachado(CodigoProducto, Cantidad)
d1:EncGuiaDespVenta t1:Terminal Fecha 5 :[NuevaGuiaDespacho] crearEncGuiaDespVenta(NumGuiaDespVen, FechaV) 3:NumGuiaDespVen := siguiente():NumGuia :EncGuiaDespVenta 5.1 :[NuevaGuiaDespacho] crearDetGuiaDespVenta (NumGuiaDespVen) Esta Segunda Parte del Diagrama de terminarTransacción() reitera lo indicado en pág 25 ingresarOpción() ( se expone por completitud ) l1:DetGuiaDespVenta Diseño de Clases: Creación de EncGuiaDespVenta Diagramas de Colaboración terminarTransaccion() (Segunda Parte) (Productos con registro persistente) (Base Craig Larman) siguiente():NumGuia ahora():Fecha t1:Terminal 4:FechaV :=ahora():Fecha crearEncGuiaDespVenta(NumGuiaDespVen, FechaV)
Diseño de Clases : Modelo Funcional (Detallado y Generalizado) Crear Guía Interna de Despacho por Venta (Productos con Registro persistente) Encabezado de Guía de Despacho Clientes • RUT Cliente • Razón Social • Dirección • e_Mail • Comuna • Ciudad • País • Contacto • Fono • Fax Terminal Encabezado, detalle y totales según formato de pantalla adjunto. 1.Cargar correlativo y fecha de sistema 2. Aceptar datos. 3. Enviar mensajes de C/E a registros. 4. Enviar mensajes de consulta de datos 5. Calcular totales cumulativos 6. Enviar mensajes de actualización de existencias y actualizar línea a línea el registro de la transacción Empleados • Código • Empleado • Nombre • ... Notas de Venta Al crear la línea de detalle, notAct se incializa a: true C/E, msg1, msg2, C/E y msg4 • Nº Guia de Despacho • RUT Cliente • Nº Nota de Venta • Fecha Despacho • Código Empleado • Fecha Nota de Venta • Condición de Pago • / Valor Total • Transacción Cerrada • Transacción Anulada msg6 y msg10 1. Crear Encabezado() 2. Aceptar datos() 6. Calcular Totales() 7. Cerrar Transacción() 8. Anular Transacción() 9. Copiar Transacción() 10. Siguiente() 4. Consultar datos() C/E y msg4 C/E, msg1, msg2, msg3, msg6, msg10 y msg11 C/E, msg4, msg7, msg9 y msg10 Productos • Código Producto • Descripción • U.Medida • Precio • Costo Unitario • Existencia Inicial • Existencia • Recibido • Despachado Detalle de Guía de Despacho 4. Consultar datos() • Nº Línea • Código Producto • Precio • Cantidad • / Valor línea • notAct • Línea Cerrada • Línea Anulada C/E y msg4 • Nº Nota • de Venta 4. Consultar datos() 6. Sumar Existencia() 7. Restar Existencia() 8. Sumar Recibido() 9. Sumar Despachado() 10. Existencia Negativa() 11. Calcular CPP() 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() Datos 4. Consultar datos()
Diseño de Clases : Modelo de Datos Diagrama de Diseño de Clases Crear Guía Interna de Despacho por Venta (Productos con Registro persistente) Clientes • RUTCliente • RazónSocial • Dirección • eMail • Comuna • Ciudad • País • Contacto • Fono • Fax Agregado para clarificar contexto, en principio es una lista de valores posibles 1 1..* • CodigoProducto • Descripción • UMedida • Precio • CostoUnitario • ExistenciaInicial • Existencia • Recibido • Despachado 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 que no agregan valor y aumentan el “ruido” - se consideran implícitos - sumarExistencia() restarExistencia() sumarRecibido() sumarDespachado() existenciaNegativa() calcularCPP() Dentro de los requerimientos, podría sustituirse por la consulta a los Encabezados de Guía anteriores. ( Condición de NO existencia previa ) Al crear la línea de detalle, notAct se incializa a: true EncGuíaDespVenta * NumGuíaDespVen RUTCliente NumNV FechaV CódigoEmpleado FecNV CPag /ValorTotal TransacciónCerrada TransacciónAnulada 1 * Empleados 1 • CódigoEmpleado • Nombre 1 crearEncGuiaDespVenta() ingresarCodEmpleado() ingresarRutCliente() ingresarNumNVFechaNVCond() ingresarCodProducto() ingresarPrecioCantidad() restarExistencia() sumarDespachado() calcularTotales() cerrarTransacción() anularTransacción() copiarTransacción() siguiente() Notas de Venta • NumNV • RUTCliente • FechaNV • etc... 1 Productos DetGuíaDespVenta 1 • NumLinea • CodigoProducto • Precio • Cantidad • /ValorLínea • notAct • LíneaCerrada • LíneaAnulada * crearDetGuiaDespVenta() crearLínea() aceptarCodigo() aceptarDatos() calcularValor() restarExistencia() sumarDespachado() cerrarLínea() anularLínea() copiarLínea() siguiente() notAct()