Está en la página 1de 33

Evolución Informática S.A.

Clases de Software del


Método Genérico de Desarrollo de
Sistemas de Información

• 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
MAPA DE PROCESOS
(como parte del Modelo de Negocios)

Macro-
Proyección ventas Adquisiciones Ventas Servicio postventa
procesos

Segundo Flujo-
grama de
Información

RECEPCIÓN DESPACHO
POR COMPRAS POR VENTAS
Procesos
operativos

Devoluciones Devoluciones
Flujograma : Proceso de Despacho de Productos a Clientes - (Guía Interna de Despacho por Venta )

Encargado Despachador Depto. de Depto. de


Cliente Cajero
de Despacho (Bodega) Contabilidad Ventas
3 3
2 2
Nota de 1 Nota de 1
Venta Venta.

Emitir Guía de
Despacho
Nota :
1) Este Flujograma no sigue
3 todas las reglas ortodoxas
2 del diseño, sin embargo,
G/D 1
Interna cumple con la función de
2’ mostrar la emisión de la
G/D 1’
Interna Guía de Despacho en su
contexto.
3’
2’
Recibir
G/D 1’ Pago
Interna

2’’
G/D 1’’
2’’ Interna
G/D 1’’
Normalmente la firma de
Interna
Despachar la Guía de Despacho se-
3’ Productos
1’ ría en conjunto entre el
Nota de 2’ de Bodega
Nota de 1’ Despachador y el Cliente.
Venta
Venta. (Copias 1 y 2 ).

G/D 1’’’
Interna G/D 1’’’
Interna G/D 2’’’
Interna

25/09/2002 3
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)
• Administrador,
• Encargado de Recepción, Iniciar Sistema de
• Encargado de Despacho... Bodegas
son “roles” que juegan las personas
de la Organización. ( No necesariamente
son tres personas distintas ). Cliente

Administrar Sistema de
Encargado Bodega de Recepción
de Despacho
(Empleado)

Administrar Sistema de
Bodega de Despacho
Administrar Sistema ... Administrador
Son Casos de Uso Genéricos que (Empleado)
en el transcurso del análisis se des-
agregarían en otros Casos de Uso

25/09/2002 4
Diseño de Clases: Guía de Despacho Caso de Uso de Alto Nivel
Caso de Uso: Crear Guía Interna de
Terminal Despacho
Despacho por Venta ( Productos con registro
persistente )
Crear Guía Interna de
Despacho por Venta

• Caso de Uso: Crear Guía Interna de


Despacho por Venta
Comentarios relevantes : • Actores: Cliente, Encargado de
Despacho
1) Se trata de una transacción • Tipo: Primario
entre dos entidades, (con Cliente • Un Cliente llega para solicitar la
entrega de Mercadería, presentando Cliente
y Encargado de Despacho). Encargado
2) Se trata de una transacción como documentación una Nota de
de Despacho
que implica una entrega / (Empleado)
Venta. El Encargado de Despacho
recepción de Productos. registra los datos de la mercadería
emitiendo una Guía Interna de
3) Existe un Registro de Clientes . Despacho por Venta y firma la docu-
4) Existe un Registro de Encar- mentación en todos sus ejemplares
gados de Despacho (Empleado). para indicar la conformidad. El
5) Existe un Registro de Productos. Cliente se retira para pasar a la Caja
6) Se lleva un registro persistente llevado su copia de la Nota de Venta
de la transacción 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
Bibliografía: Esta presentación se Flujograma de Información )
basa principalmente en el libro
“ Applying UML and Patterns “ de
Craig Larman - 1998 - Nota : (Craig Larman, 2.7.2, pg. 26):
“Los Casos de Uso de Alto Nivel son
( Prentice Hall) ISBN 0-13-748880-7
breves descripciones de un proceso
- usualmente dos o tres frases - “
Ver también: (Craig Larman, 6.3.1,
pg. 49)
25/09/2002 5
Diseño de Clases :Caso de Uso: Crear Guía Interna de Funciones Básicas
Despacho por Venta ( Productos con registro persistente)
Ref. # Función Categoría
R1.1 Capturar y activar opciones desde un Menú de Opciones, aceptar Opción (Selección Manual). evidente
R1.2 Desplegar la Interfaz de Creación de Guía de Despacho, Nº de Guía de Despacho (correlativo) y evidente
Fecha de la Transacción, - aceptar eventual modificación de Fecha (Ingreso Manual).
R1.3 Capturar el Código del Encargado de Despacho (Ingreso Manual). evidente
R1.4 Desplegar datos del Encargado de Despacho registrados en almacenamiento persistente evidente

R1.5 Capturar la información del Cliente usando el RUT (Ingreso Manual) y desplegar datos evidente
pertinentes del Cliente registrados en almacenamiento persistente.
R1.6 Capturar Nº de Nota de Venta del Cliente (Ingreso Manual), verificar validez ( No Existencia evidente
previa) y desplegarlo.
R1.7 Capturar Fecha (Propia) de Nota de Venta del Cliente (Ingreso Manual) y desplegarla. evidente

R1.8 Capturar/Verificar. Condición de Pago de la Venta (Ingreso Manual) y desplegarla. evidente

R1.9 Registrar la transacción en proceso: los Productos a despachar. Capturar la información del evidente
Producto a despachar usando el Código (interno) (Ingreso Manual).
R1.10 Desplegar la descripción del Producto registrado en almacenamiento persistente evidente

R1.11 Capturar el Precio al Cliente del Producto (Ingreso manual) y desplegarlo. evidente

R1.12 Capturar la Cantidad de unidades del Producto respectivo (Ingreso manual). y calcular valor de evidente
la línea actualizando los totales de la Guía de Despacho en la Interfaz al dar OK a la línea.
R1.13 Grabar en el Detalle de la Guía de Despacho (línea a línea) los datos de cada línea a medida que oculta
se completa y calcula cada una de ellas.
R1.14 Actualizar los valores de existencia y despachado de Productos (evitando doble actualización) oculta
al dar OK a la Guía de Despacho en su totalidad.
R1.15 Ofrecer un mecanismo de almacenamiento persistente. oculta

25/09/2002 6
Caso de Uso Expandido
Diseño de Clases :
Terminal Despacho
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
Encargado de Despacho
extensas narrativas de descripción
de un proceso - pueden contener
Cliente
cientos de frases - “
Ver también: (Craig Larman, 6.3.2, Caso de Uso : Crear Guía Interna de Despacho por Venta
pg. 50)
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
Este Caso de Uso comprende
Venta. El Encargado de Despacho verifica los datos indicados por el Documento
desde la Hoja # 7 (la actual) hasta y los ingresa en el Terminal de Despacho, al terminar confirma la Transacción. El
la Hoja # 11 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

25/09/2002 7
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
4. El Encargado de Despacho verifica visualmente el Nº de Guía de correlativo correspondiente y en B la fecha del sistema.
Despacho y Fecha ofrecidos por el sistema y a continuación
ingresa su identificación (Código) en C. 5. El sistema obtiene y despliega el nombre del Encargado de Despacho
en D.
6. El Encargado de Despacho ingresa en E el RUT del Cliente y
verifica los datos del mismo desplegados por el sistema.
7. El sistema despliega los datos básicos del Cliente (Razón Social,
8. El Encargado de Despacho ingresa en M, N y O respectivamente Dirección, e-Mail, Comuna, Ciudad, Teléfono, Fax) en F, G, H, I, J, K
el Nº de Nota de Venta, la Fecha de la Nota de Venta y las Condi- y L respectivamente,
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-
16. El Encargado de Despacho cierra la interfaz de Transacción opri- despliega en los campos T y U, además actualiza los datos de la
miendo el botón XX para volver al Menú de Opciones y entrega la transacción en el sistema de almacenamiento persistente.
1ª copia de la Nota de Venta (firmada) al Cliente (Notificación de Genera tres copias de la transacción realizada utilizando la inter-
cumplimiento del compromiso). El Cliente se retira en dirección a faz de salida indicada. “Limpia” la interfaz de entrada y posiciona el
la Caja. cursor en A
• 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.
25/09/2002 8
Diseño de Clases :
Caso de Uso ( Expandido ): Crear Guía
Interna de Despacho por Venta
( Productos con registro persistente)
Interfaz de Entrada
Guía Interna de Despacho por Venta Nº Guía Despacho A
Código Enc. Despacho C Encargado Despacho
D
Fecha Despacho B
Razón Social Cliente
RUT Cliente E - F
Dirección Cliente G e-Mail H
Comuna I Ciudad J Fono K Fax L
Nota de Venta Nº M Fecha Nota de Venta N Cond. Pago O

L. Código Descripción Precio Cantidad Valor Neto


LL P Q R S T

Cerrada W Cerrar X XX V
Anulada Y Anular Z Salir Grabar Total acumulado U

25/09/2002 9
Diseño de Clases :
Caso de Uso ( Expandido ): Crear Guía Interna de
Despacho por Venta
( Productos con registro persistente)

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

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

25/09/2002 10
Diseño de Clases :
Caso de Uso ( Expandido ): Crear Guía
Interna de Despacho por Venta
( Productos con registro persistente)
Interfaz de Salida

Guía de Despacho Nº 999.999 Fecha 99/99/9999

RUT Cliente 999.999.999 - X Encargado Despacho XXXXXXX

Razón Social Cliente XXXXXXX

Dirección Cliente XXXXXXX e-Mail XXXXXXX

Comuna XXXXXXX Ciudad XXXXXXX Teléfono XXXXXXX Fax XXXXXXX

Nº de Nota de Venta 999.999 Fecha Nota de Venta 99/99/9999 Cond. Pago XXXXXXX

L. Código Descripción Precio Cantidad Valor Neto

99 XXXXXXX XXXXXXXXXXXX 9999,99 9999 999999,99

Conforme : Caja
Despachador
Encargado
Cliente Total Neto 99999999,99
Despacho

25/09/2002 11
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 Encabezado de
y desarrollo posteriores se podrían in- Guía Interna de
cluir conceptos tales como Bodega,
* Despacho por *
Venta
Terminal, Empresa, etc.
Nº de Guía 1
Emplea- Fecha
dos Cliente Clientes
Nombre Nombre 1
1 RUT
1 Nombre
1..* Dirección
Detalle de Guía
Interna de Despa-
cho por Venta
*
Descripción Notas de
Productos Precio Venta
1
Código
1 Cantidad
Nº Nota de Venta
Descripción Fecha
Precio

Dentro de los requerimientos,


podría sustituirse por la consulta
a los Encabezados de Guía anteriores.
( Condición de NO existencia previa )

25/09/2002 12
Diseño de Clases:
Diagrama de Diseño
de Clases ( Borrador inicial )
Crear Guía Interna de
Despacho por Venta Encabezado de
(Productos con registro persistente) Guía Interna de
Despacho por
Venta
Nota: Según Craig Larman
( pg.257 ) : “ Si bien la presen- Nº de Guía
tación de los diagramas de clases Fecha
es posterior a la creación de los Cliente *
diagramas de interacción, en la prác- Emplea- Nombre 1
tica usualmente se crean en paralelo.
*
dos
Muchas clases, métodos y relaciones Clientes
pueden bosquejarse tempranamente Nombre
en la etapa de Diseño” 1 RUT
1 1 Nombre
1..* Dirección
Detalle de Guía
Interna de Despa-
Nota: Según Craig Larman cho por Venta
(21.8.4 a 21.8.8 - pgs.262 - 264) * Notas de
Salvo casos especificos, es conve- Descripción
Productos Precio Venta
niente omitir los métodos : crear(), 1
modificar(), eliminar() y consultar() Código
1 Cantidad
Nº Nota de Venta
en los diagramas de clases dado que Descripcion Fecha
no agregan valor y aumentan el Precio
“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 )

25/09/2002 13
Diseño de Clases: Crear Guía
Interna de Despacho por Venta
Diagrama de Secuencia del Sistema
(Productos con registro persistente) Versión en Lenguaje Natural
(Base Craig Larman)
Caso de Uso:
Crear Guía de Despacho :Sistema
( Curso Normal de los Eventos) Encargado de Despacho
Ingresar a la Opción Crear Guía de Despacho
Obtener / Ingresar(Tab) Nº de
Guía Despacho y Fecha sistema,
verificar correlativo y fecha.
Ingresar Código del Empleado y Ingresar Código del Empleado en Encabezado
obtener / verificar el nombre del
mismo.
Ingresar RUT del Cliente en Encabezado
Ingresar RUT del Cliente y
obtener / verificar los datos del
mismo.
Ingresar Nº Nota de Venta, Fecha y C. Pago en Encabezado
Ingresar datos de Nota de Venta
( Nº Nota, Fecha, Condiciones )
Para cada línea: Ingresar Código del Producto en Línea Detalle
• Ingresar el Código del
Producto
• Obtener / Verificar datos del Reiterar hasta
Producto que no haya
más Productos Ingresar Precio y Cantidad del Producto
• Ingresar precio y cantidad del que ingresar
Producto
• Dar OK a la línea (Grabar) Dar OK a la Línea de Detalle
Al terminar:
Dar OK al Final para Terminar la Creación
•Dar OK a la Transacción
(Grabar)
Salir al Menú
• Salir al Menú

25/09/2002 14
Diseño de Clases: Crear Guía Interna
de Despacho por Venta
Diagrama de Secuencia del Sistema Versión llamando los Eventos
(Productos con registro persistente) por su Nombre
(Base Craig Larman) ( equivalente a Operaciones del sistema)

Caso de Uso:
Crear Guía de Despacho :Sistema
( Curso Normal de los Eventos) Encargado de Despacho
crearEncGuiaDespVenta(NumGuiaDespVen, FechaV)
Obtener / Ingresar(Tab) Nº de
Guía Despacho y Fecha sistema,
verificar correlativo y fecha.
ingresarCodEmpleado(CodigoEmpleado)
Ingresar Código del Empleado y
obtener / verificar el nombre del
mismo.
ingresarRutCliente(RutCliente)
Ingresar RUT del Cliente y
obtener / verificar los datos del
mismo. ingresarNumNVFechaNVCond(NumNV, FecNV, CPag)
Ingresar datos de Nota de Venta
( Nº Nota, Fecha, Condiciones )
Para cada línea: ingresarCodProducto(CodigoProducto)
• Ingresar el Código del
Producto
• Obtener / Verificar datos del Reiterar hasta
Producto que no haya
más Productos
• Ingresar precio y cantidad del que ingresar
ingresarPrecioCantidad(Precio,Cantidad)
Producto
• Dar OK a la línea (Grabar) grabarLínea()
Al terminar:
•Dar OK a la Transacción terminarTransacción()
(Grabar)
• Salir al Menú salirAMenú()

25/09/2002 15
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()

25/09/2002 16
Diseño de Clases: Contratos
Crear Guía Interna Contrato
de Despacho Nombre: crearEncGuiaDespVenta(NumGuiaDespVen, FechaV)
por Venta Responsabilidades: 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-
(Productos con registro ción. Crear instancias de EncGuiaDespVenta y DetGuiaDespVenta, obtener
persistente) y desplegar NumGuiaDespVen, obtener y desplegar FechaV desde la fecha
del sistema, opcionalmente aceptar modificación manual de la fecha.
(Base Craig Larman) 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 Salida: N/A
en los contratos hacen referencia
Precondiciones: El sistema tiene el Menú y la opción Crear Guía de Despacho por Venta
al Diagrama de Secuencia de pág. 15,
requerida instalados y activos
al Modelo Funcional de pág. Nº 32
y al Modelo de Clases de pág. Nº 33. 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
25/09/2002 17
Diseño de Clases: Contratos
Crear Guía Interna de
Despacho por Venta
Contrato
(Productos con registro
persistente) Nombre: ingresarCodEmpleado(CodigoEmpleado)
(Base Craig Larman) 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

Nota: Referencias cruzadas: R1.3, R1.4, R1.15


Los nombres de elementos usados Notas: Usar Base de Datos MS Access y (Tab) para sucesivos campos
en los contratos hacen referencia
al Diagrama de Secuencia de pág. 15,
Excepciones: Error en ingreso manual del Código o Código no registrado
al Modelo Funcional de pág. Nº 32 Salida: N /A
y al Modelo de Clases de pág. Nº 33.
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

25/09/2002 18
Diseño de Clases: Contratos
Crear Guía Interna de Contrato
Despacho por Venta
(Productos con registro Nombre: ingresarRutCliente(RutCliente)

persistente) Responsabilidades: Aceptar el ingreso de RutCliente, por su intermedio, obtener y des-


(Base Craig Larman) 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


Nota:
Notas: Usar Base de Datos MS Access - el Encargado de Despacho oprime
Los nombres de elementos usados
(Tab) para pasar a los sucesivos campos -
en los contratos hacen referencia
Excepciones: Error en ingreso manual del RUT o RUT no registrado
al Diagrama de Secuencia de pág. 15,
al Modelo Funcional de pág. Nº 32 Salida: N /A
y al Modelo de Clases de pág. Nº 33.
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º

25/09/2002 19
Diseño de Clases: Contratos
Crear Guía Interna de
Despacho por Venta
(Productos con registro Contrato
persistente)
Nombre: ingresarNumNVFechaNVCond(NumNV, FecNV, CPag)
(Base Craig Larman)
Responsabilidades: 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.

Tipo: Sistema
Nota: Referencias cruzadas: R1.6, R1.7 y R1.8, R1.15
Los nombres de elementos usados
en los contratos hacen referencia
Notas: Usar Base de Datos MS Access - el Encargado de Despacho oprime
(Tab) para pasar a los sucesivos campos -
al Diagrama de Secuencia de pág. 15,
Excepciones: El Nº de Nota de Venta ya existe.
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 EncGuiaDespVenta.NumNV (Registrado oportuna-
mente con anterioridad). Están disponibles los Encabezados de Guías de
Despacho previas.
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.

25/09/2002 20
Diseño de Clases: Contratos Contrato
Crear Guía Interna de Nombre: ingresarCodProducto(CodigoProducto)
Despacho por Venta Responsabilidades: Aceptar el ingreso de CodigoProducto. Basado en CodigoProducto, ob-
(Productos con registro tener y desplegar los Datos del Producto registrados en el sistema de
almacenamiento persistente. Al oprimir (Tab) - fin de ingreso de Codi-
persistente)
goProducto - asignar Número correlativo a la Instancia de DetGuía-
(Base Craig Larman) DespVenta.NumLinea y pasar al campo Q. Si la Descripción es la cor-
recta pasar (Tab) al campo R: Precio.
Tipo: Sistema
Referencias cruzadas: R1.9, R1.10, R1.15

Notas: Usar Base de Datos MS Access y tecla (Tab)

Nota: Excepciones: Error en ingreso manual del Código o Código no registrado


Los nombres de elementos usados
en los contratos hacen referencia Salida: N /A
al Diagrama de Secuencia de pág. 15, Precondiciones: El sistema conoce a Productos.CodigoProducto (Registrado oportuna-
al Modelo Funcional de pág. Nº 32 mente con anterioridad)
y al Modelo de Clases de pág. Nº 33.
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

25/09/2002 21
Diseño de Clases: Contratos
Crear Guía Interna de
Despacho por Venta
(Productos con registro Contrato
persistente)
Nombre: ingresarPrecioCantidad(Precio, Cantidad)
(Base Craig Larman)
Responsabilidades: 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.

Tipo: Sistema

Nota: Referencias cruzadas: R1.11 y R1.12


Los nombres de elementos usados
Notas: Usar Base de Datos MS Access
en los contratos hacen referencia
al Diagrama de Secuencia de pág. 15, Excepciones: Existencia negativa ( falta producto para despachar).
al Modelo Funcional de pág. Nº 32
Salida: N /A
y al Modelo de Clases de pág. Nº 33.
Precondiciones: El sistema conoce a Productos.Existencia (Registrado oportuna-
mente con anterioridad)
Postcondiciones: • 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

25/09/2002 22
Diseño de Clases: Contratos Contrato
Crear Guía Interna de Nombre: grabarLínea()
Despacho por Venta
Responsabilidades: Aceptar avance con (Tab) hasta la siguiente línea de la interfaz, creando
(Productos con registro
una nueva Línea de DetGuiaDespVenta. Calcular /ValorLínea y desple-
persistente) garlo en T de la línea previa. Grabar en almacenamiento persistente un
(Base Craig Larman) 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.
Tipo: Sistema
Referencias cruzadas: R1.13, R1.15

Notas: Usar Base de Datos MS Access. En este punto el sistema queda listo para
Nota:
reiterar el ingreso de un nuevo código CodigoProducto o caso contrario,
Los nombres de elementos usados pasar a terminarTransacción()
en los contratos hacen referencia
Excepciones: N /A
al Diagrama de Secuencia de pág. 15,
al Modelo Funcional de pág. Nº 32 Salida: N /A
y al Modelo de Clases de pág. Nº 33.
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é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.

25/09/2002 23
Diseño de Clases: Contratos Contrato
Crear Guía Interna de
Nombre: terminarTransacción()
Despacho por Venta
Responsabilidades: Aceptar (click) del Botón V (Grabar). Recalcular /ValorTotal y redesple-
(Productos con registro garlo en U. Grabar en almacenamiento persistente la instancia actual de
persistente) EncGuiaDespVenta.”Limpiar” los datos desplegados en la interfaz. Actua-
(Base Craig Larman) lizar Productos.Existencia, Productos.Despachado y DetGuiaDesp-
Venta.notAct. Posicionar en A el cursor.
Tipo: Sistema

Referencias cruzadas: R1.2, R1.14, R1.15

Notas: Usar Base de Datos MS Access. Al terminar, el sistema queda listo pa-
Nota:
ra ingresar una nueva transacción o volver al Menú de opciones.
Los nombres de elementos usados Excepciones: Productos.Existencia y Productos.Despachado ya fueron actualizados.
en los contratos hacen referencia Salida: N /A
al Diagrama de Secuencia de pág. 15, Precondiciones: N /A
al Modelo Funcional de pág. Nº 32
y al Modelo de Clases de pág. Nº 33. 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.
25/09/2002 24
Diseño de Clases:
Creación de EncGuiaDespVenta
Diagramas de Colaboración
ingresarOpcion(CrearGuiaDespacho)
(Productos con registro persistente)
(Base Craig Larman)

siguiente():NumGuia
ahora():Fecha

1:NumGuiaDespVen := siguiente():NumGuia
t1:Terminal :EncGuiaDespVenta
El mensaje invoca un método de
clase ( no de instancia ), específicamente
el método ahora() de la clase Fecha
2:FechaV := ahora():Fecha
Fecha

crearEncGuiaDespVenta(NumGuiaDespVen, FechaV)

3 :[NuevaGuiaDespacho] crearEncGuiaDespVenta(NumGuiaDespVen, FechaV)


t1:Terminal d1:EncGuiaDespVenta

Omisión del Contenedor de Líneas


Nota: Según Craig Larman 3.1 :[NuevaGuiaDespacho] crearDetGuiaDespVenta(NumGuiaDespVen)
( 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- l1:DetGuiaDespVenta
trarlas explícitamente... agregan “ruido”
pero poca información nueva. ”

25/09/2002 25
Diseño de Clases:
Creación de EncGuiaDespVenta
Diagramas de Colaboración
ingresarCodEmpleado(CodigoEmpleado)
ingresarRutCliente(RutCliente)
(Productos con registro persistente) ingresarCodEmpleado(CodigoEmpleado)
(Base Craig Larman)
1:ingresarCodEmpleado(CodigoEmpleado)
t1:Terminal d1:EncGuiaDespVenta

1.1:Nombre := consultar(CodigoEmpleado)

e1:Empleados

ingresarRutCliente (RutCliente)

2:ingresarRutCliente (RutCliente)
t1:Terminal d1:EncGuiaDespVenta

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)

c1:Clientes
25/09/2002 26
Diseño de Clases:
Creación de EncGuiaDespVenta
Diagramas de Colaboración
ingresarNumNVFechaNVCond(NumNV, FecNV, CPag)
(Productos con registro persistente)
(Base Craig Larman)

ingresarNumNVFechaNVCond(NumNV, FecNV, CPag)

1: ingresarNumNVFechaNVCond(NumNV, FecNV, CPag)


t1:Terminal d1:EncGuiaDespVenta

1.1: consultar (NumNV)


:EncGuiaDespVenta

La instancia específica :
d1:EncGuíaDespVenta hace la con- ll:DetGuiaDespVenta
sulta a los Encabezados de Guía anterio-
res. ( Condición de NO existencia previa )

25/09/2002 27
Diseño de Clases:
Creación de EncGuiaDespVenta
Diagramas de Colaboración
ingresarCodProducto(CodigoProducto)
(Productos con registro persistente)
(Base Craig Larman)
ingresarCodProducto(CodigoProducto)
siguiente () : NumLinea
1:ingresarCodProducto(CodigoProducto)
2 *:[i:=1...6] NumLínea:= siguiente () : NumLinea
t1:Terminal d1:EncGuiaDespVenta

1.1:aceptarCodigo(CodigoProducto)

2.1 *:[i:=1...6] NumLínea:= siguiente () : NumLinea

2.2:crearLinea(NumLinea)

1.2:Descripcion := consultar(CodigoProducto)
ll:DetGuiaDespVenta

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. ”

25/09/2002 28
Diseño de Clases:
Creación de EncGuiaDespVenta
Diagramas de Colaboración
ingresarPrecioCantidad(Precio, Cantidad)
grabarLínea()
ingresarPrecioCantidad(Precio, Cantidad)
(Productos con registro persistente)
(Base Craig Larman)
1:ingresarPrecioCantidad(Precio, Cantidad)
t1:Terminal d1:EncGuiaDespVenta

1.1:aceptarDatos(Precio, Cantidad)

calcularTotales()
ll:DetGuiaDespVentaa
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 que
no queden más productos que
ingresar, en cuyo caso pasa a la
siguiente acción :
teminarTransaccion()

25/09/2002 29
Diseño de Clases:
Creación de EncGuiaDespVenta
Diagramas de Colaboración Este Diagrama reitera lo indicado
en grabarLínea() al recalcular los
terminarTransaccion() totales ( se expone por completitud )
(Primera Parte)
calcularTotales()
(Productos con registro persistente)
(Base Craig Larman) 1: /ValorTotal := calcularTotales()
d1:EncGuiaDespVenta
t1:Terminal

1.1*:[i:=1...6] /ValorLínea := calcularValor()

restarExistencia(CodigoProducto, Cantidad)
sumarDespachado(CodigoProducto, Cantidad) ll:DetGuiaDespVenta

2.a*:[i:=1...6 ][notAct] restarExistencia(CodigoProducto, Cantidad)


2.b*:[i:=1...6 ][notAct] sumarDespachado(CodigoProducto, Cantidad)
t1:Terminal d1:EncGuiaDespVenta

2.1.a*:[i:=1...6 ][notAct] restarExistencia(CodigoProducto, Cantidad)


2.1.b*:[i:=1...6 ][notAct] sumarDespachado(CodigoProducto, Cantidad)

2.3*:[i:=1...6 ][notAct] notAct := notAct(notAct := false)


ll:DetGuiaDespVenta
2.2.a*:[i:=1...6 ][notAct] restarExistencia(CodigoProducto, Cantidad)
2.2.b*:[i:=1...6 ][notAct] sumarDespachado(CodigoProducto, Cantidad)
b1:Productos

25/09/2002 30
Diseño de Clases:
Creación de EncGuiaDespVenta
Diagramas de Colaboración Esta Segunda Parte del Diagrama
de terminarTransacción() reitera
terminarTransaccion() lo indicado en pág 25 ingresarOpción()
(Segunda Parte) ( se expone por completitud )

(Productos con registro persistente)


(Base Craig Larman)
siguiente():NumGuia
ahora():Fecha

3:NumGuiaDespVen := siguiente():NumGuia
t1:Terminal :EncGuiaDespVenta

4:FechaV := ahora():Fecha
Fecha

crearEncGuiaDespVenta(NumGuiaDespVen, FechaV)

5 :[NuevaGuiaDespacho] crearEncGuiaDespVenta(NumGuiaDespVen, FechaV)


t1:Terminal d1:EncGuiaDespVenta

5.1 :[NuevaGuiaDespacho] crearDetGuiaDespVenta (NumGuiaDespVen)

l1:DetGuiaDespVenta

25/09/2002 31
Encabezado de Guía
de Despacho Clientes
Diseño de Clases : •Nº Guia de Despacho
C/E, msg1, msg2, C/E y msg4
Modelo Funcional RUT Cliente msg6 y msg10 •RUT Cliente
Nº Nota de Venta Razón Social
(Detallado y Generalizado) Fecha Despacho Dirección
Crear Guía Interna de Código Empleado Terminal e_Mail
Fecha Nota de Venta
Despacho por Venta Condición de Pago Encabezado, detalle y totales según Comuna
/ Valor Total formato de pantalla adjunto. Ciudad
(Productos con Registro País
Transacción Cerrada 1.Cargar correlativo y fecha de sistema
persistente) Transacción Anulada 2. Aceptar datos. Contacto
3. Enviar mensajes de C/E a registros. Fono
1. Crear Encabezado()
4. Enviar mensajes de consulta de datos Fax
2. Aceptar datos()
5. Calcular totales cumulativos
6. Calcular Totales() 4. Consultar datos()
6. Enviar mensajes de actualización de
7. Cerrar Transacción()
existencias y actualizar línea a línea
8. Anular Transacción()
el registro de la transacción Empleados
9. Copiar Transacción()
10. Siguiente() C/E y msg4
•Código
Empleado
C/E, msg1, msg2, msg3,
C/E, msg4, Productos Nombre
msg6, msg10 y msg11
msg7, msg9 ...
Detalle de Guía de •Código Producto
y msg10 Descripción
Despacho 4. Consultar datos()
•Nº Línea U.Medida
Código Producto Precio
Precio Costo Unitario
Cantidad C/E y msg4
/ Valor línea Existencia Inicial
notAct Existencia Notas de
Línea Cerrada Recibido Venta
Línea Anulada Despachado
4. Consultar datos() • Nº Nota
1. Crear Línea()
2. Aceptar Codigo() Al crear la línea 6. Sumar Existencia() de Venta
de detalle, notAct se 7. Restar Existencia()
3. Aceptar datos() incializa a: true
Datos
6. Calcular Valor() 8. Sumar Recibido()
7. Cerrar Línea() 9. Sumar Despachado() 4. Consultar datos()
8. Anular Línea() 10. Existencia Negativa()
9. Copiar Línea() 11. Calcular CPP()
25/09/2002 10. Siguiente() 32
11. notAct()
Diseño de Clases : Modelo de Datos EncGuíaDespVenta
Diagrama de Diseño de Clases * NumGuíaDespVen
RUTCliente
Crear Guía Interna de Clientes
NumNV
FechaV
1 CódigoEmpleado *
Despacho por Venta 1 FecNV Empleados
•RUTCliente CPag
(Productos con Registro RazónSocial /ValorTotal • CódigoEmpleado
TransacciónCerrada 1
persistente) Dirección TransacciónAnulada Nombre
eMail crearEncGuiaDespVenta()
Comuna ingresarCodEmpleado()
Dentro de los requerimientos, ingresarRutCliente()
podría sustituirse por la consulta Ciudad ingresarNumNVFechaNVCond()
a los Encabezados de Guía anteriores. País ingresarCodProducto()
ingresarPrecioCantidad()
( Condición de NO existencia previa ) Contacto restarExistencia()
Fono sumarDespachado()
calcularTotales() Agregado para clarificar
Fax cerrarTransacción() contexto, en principio es una
anularTransacción() lista de valores posibles
Notas de
copiarTransacción()
Venta siguiente()
1 1
• NumNV 1..*
RUTCliente
Productos DetGuíaDespVenta
FechaNV
etc... •CodigoProducto •NumLinea
Descripción 1 CodigoProducto
UMedida * Precio
Precio Cantidad
/ValorLínea
CostoUnitario notAct
ExistenciaInicial LíneaCerrada
Nota: Según Craig Larman Existencia LíneaAnulada
(21.8.4 a 21.8.8 - pgs.262 - 264) Recibido crearDetGuiaDespVenta()
Salvo casos especificos, es conve- Despachado crearLínea() Al crear la línea
niente omitir los métodos : crear(), aceptarCodigo() de detalle, notAct se
modificar(), eliminar() y consultar() sumarExistencia() aceptarDatos() incializa a: true
en los diagramas de clases dado que restarExistencia() calcularValor()
no agregan valor y aumentan el restarExistencia()
sumarRecibido()
“ruido” - se consideran implícitos - sumarDespachado()
sumarDespachado() cerrarLínea()
existenciaNegativa() anularLínea()
calcularCPP() copiarLínea()
25/09/2002 siguiente() 33
notAct()

También podría gustarte