Professional Documents
Culture Documents
NACIONAL Profesor:
Facultad Regional Córdoba Fidelibus, Mario Alberto
Ingeniería en Sistemas de J.T.P:
Información Chami Levy, Celia
Cátedra de PROYECTO Destefanis, Maria Laura
5º Nivel Ayudante:
Duran, Javier Rubén
Proyecto:
Carpeta:
Modelo de Análisis y Diseño
Grupo: 5 Integrantes:
Felippa Marcos
Ochoa Rodrigo
Tolosa Nicolás
Segunda Parte. Verme David
Nota: Para facilitar su publicación, este trabajo se
encuentra segmentado en dos partes.
Universidad Tecnológica Nacional TecnoPez Software
Facultad Regional Córdoba Análisis y Diseño, 5k3, 2005
Índice
Índice 1
Introducción 3
Modelo de Análisis 4
Descriptivos de diagramas de colaboración genéricos. 5
Caso registro 6
Caso consulta 7
Caso baja 8
Caso modificación 9
Análisis del paquete de atención al cliente 10
Análisis del paquete: atención al turista 11
Atención al turista: descripciones y diagramas de colaboración de…. 12
Diagrama de clases: paquete atención al turista 34
Análisis del paquete: Cliente 39
Cliente: Descripciones y diagramas de colaboración de análisis. 40
Cliente: Diagrama de clases. 43
Análisis del paquete: pedido 44
Pedido: Descripciones y diagramas de colaboración de análisis. 45
Pedido: Diagrama de Clases 70
Diagrama de Transición de Estados: Clase Pedido 73
Análisis del Paquete: Reclamos 74
Reclamos: Descripciones y diagramas de colaboración de análisis. 75
Reclamos: Diagrama de Clases 86
Diagrama de Transición de estados: Reclamo 87
Análisis del Paquete: Ventas 88
Ventas: Descripciones y diagramas de colaboración de análisis. 89
Ventas: Diagrama de Clases 113
Análisis del Paquete: Producción. 117
Análisis del Paquete: Alimentación 118
Alimentación: Descripciones y diagramas de colaboración de análisis. 119
Alimentación: Descripciones y diagramas de colaboración de análisis. 137
Análisis del Paquete: Clasificación e incubación 140
Clasificación e incubación: Descripciones y diagramas de colaboración 141
de análisis.
Clasificación e incubación: Diagrama de Clases 161
Diagrama de transición de estados: Lote de ovas. 164
Análisis del Paquete: compras 165
Compras: Descripciones y diagramas de colaboración de análisis. 166
Compras: Diagrama de Clases 188
Pedido a proveedor: Diagrama de transición de estados 189
Análisis del Paquete: Enfermedades y control de Estanques 190
Enfermedades y control de Estaques.: Descripciones y diagramas de 191
colaboración de análisis.
Enfermedades y control de estanques: Diagrama de Clases 216
Análisis del Paquete: Faenamiento y envasado 217
Faenamiento y envasado: Descripciones y diagramas de colaboración 218
de análisis.
Faenamiento y envasado: Diagrama de Clases 231
Análisis del Paquete: Producto 232
Producto: Descripciones y diagramas de colaboración de análisis. 233
Producto: Diagrama de Clases 237
Análisis del Paquete: Sistema 238
Sistema: Descripciones y diagramas de colaboración de análisis. 239
Paquete Sistema: Diagrama de Clases 250
Modelo de Diseño 251
Modelo de despliegue y Arquitectura 252
Descripción grafica de la arquitectura 254
Diagrama de Clase de Diseño: Clases encargadas de la persistencia. 255
Diagrama de colaboración de diseño: Acceso a Datos 256
Introducción
En esta carpeta presentamos una refinación del modelo anterior, se
procede a describir de manera fina a todos los uses case encontrados en el
modelo anterior y refinar clases, que fueron analizadas mediante diagramas
de colaboración con el objetivo de determinar una forma de trabajar y de
analizar el dominio del problema.
Se incluye, el caso de uso, el paquete donde se encuentra, y en algunos
casos su realización seguida de un diagrama de clases que contiene las clases
involucradas con el caso de uso.
La intención de esta sección es plantear una metodología de trabajo
independiente de la plataforma donde se desarrolle buscando orientarla hacia
la arquitectura pretendida.
Se incluyen también los diagramas de casos de uso que sufrieron
pequeñas modificaciones en el proceso de refinamiento, para facilitar la
interpretación de este documento.
Por cada paquete se tiene las descripciones a trazo fino de análisis de los
casos de uso y en algunos se encuentran sus realizaciones (para tomar como
referencia a la hora de programar). Al final de cada paquete se encuentra el
diagrama de clases correspondiente al paquete y si el paquete tiene alguna
clase con estado se encuentra su correspondiente DTE. Colocamos los
diagramas de transición de estados en la etapa de análisis, porque nos resulto
más útil tenerlos a ese nivel.
Modelo de Análisis
El modelo de análisis, continuo con la organización de paquetes
planteada en la anterior entrega.
Sistema
1. seleccionarOpcionRegistrarAlimento
: Interfaz de
: Encargado de Ali mentos
Producción
Caso Registro
Inicialmente, al actor involucrado en la colaboración envía un mensaje
(indicando los datos necesarios para crear un nuevo objeto) a la interfaz
correspondiente indicando que registre una instancia de la entidad.
Luego, se enviaran sucesivamente mensajes pasando por el gestor y la
colección hasta que llega a la entidad, momento en el cual se crea el nuevo
objeto.
Ejemplo:
1. registrarCliente(RazonSocial : , direccion : , telefono : , tipoDocumento : , nroDocumento : , email : , condicionIVA : , CUIT : , descripcion : , observaciones : , tipo...
5. registrarClienteAutogestion(nombreDeUsarioPass...
: Interfaz de
clientes
: Encargado de Atencion
al Cliente
2. registrarCliente(RazonSocial : , direccion : , telefono : , tipoDocumento : , nroDocumento : , email : , condicionIVA : , CUIT : , descripcion : , observaciones : , tipo...
6. registrarUsuarioAutogestion(nombre : , pass...
7. registrarUsuario(nombre : , pass...
: Cliente
: Gestor de Clientes
3. registrarCliente(RazonSocial : , direccion : , telefono : , tipoDocumento : , nroDocumento : , email : , condicionIVA : , CUIT : , descripcion : , observaciones : , tipo...
8. actualizar(cliente : Cliente)
4. registrarCliente(RazonSocial : , direccion : , telefono : , tipoDocumento : , nroDocumento : , email : , condicionIVA : , CUIT : , descripcion : , observaciones : , tipo...
: Coleccion de Clientes
Caso consulta
Se inicia cuando el actor envía un mensaje a la interfaz correspondiente
indicando que desea consultar los objetos de la entidad en cuestión.
Posteriormente se envían sucesivos mensajes que pasan por el gestor y la
colección hasta llegar a le entidad. Este mensaje devuelve un array con los
objetos de entidad consultados.
Ejemplo:
: Interfaz de
: Encargado de Atencion clientes
al Cl iente
: Cliente
Caso baja
Se inicia cuando el actor envía un mensaje a la interfaz correspondiente
indicando que desea consultar los objetos de la entidad en cuestión.
Posteriormente se envían sucesivos mensajes que pasan por el gestor y la
colección hasta llegar a le entidad. Este mensaje devuelve un array con los
objetos de entidad consultados.
El actor selecciona el objeto que desea dar de baja enviando el mensaje
seleccionar a la interfaz. Este mensaje llega a la colección para que de esa
forma se seleccione al objeto y el gestor conocerá al objeto seleccionado.
Finalmente el actor envía el mensaje darDeBaja a la interfaz, la cual
envía un mensaje el gestor para que de de baja al objeto. Dado que el gestor
conoce al objeto en cuestión, se enviara un mensaje directamente a la
entidad, para que se de de baja al objeto.
Ejemplo:
: Interfaz de
: Encargado de Atenci on clientes
al Cl iente
2. consultarCli ente(razonSoci al : , tipoDocumento : , nroDocumento : , descri pcion...
8. darDeBajaCli ente( )
9. darDeBajaCli ente( )
: Cli ente
Caso Modificación
Se inicia cuando el actor envía un mensaje a la interfaz correspondiente
indicando que desea consultar los objetos de la entidad en cuestión.
Posteriormente se envían sucesivos mensajes que pasan por el gestor y la
colección hasta llegar a le entidad. Este mensaje devuelve un array con los
objetos de entidad consultados.
El actor selecciona el objeto que desea dar de baja enviando el mensaje
seleccionar a la interfaz. Este mensaje llega a la colección para que de esa
forma se seleccione al objeto y el gestor conocerá al objeto seleccionado.
Finalmente el actor envía el mensaje Modificar (indicando los datos
necesarios) a la interfaz, la cual envía un mensaje el gestor para que
modifique al objeto. Dado que el gestor conoce al objeto en cuestión, se
enviara un mensaje directamente a la entidad, para que se modifique al
objeto.
Ejemplo:
5. selecci onarCliente( )
: Interfaz de
: Encargado de Atenci on clientes
al Cliente
7. modificarCli ente(razonSoci al : , di recci on : , telefono : , tipoDocumento : , nroDocumento : , email : , condi ci onIVA : , CUIT : , descripcion : , observaciones : , tipo...
8. modificarCliente(razonSocial : , di recci on : , telefono : , tipoDocumento : , nroDocumento : , email : , condicionIVA : , CUIT : , descri pcion : , observaciones : , ti po...
9. modi ficarCli ente(razonSoci al : , direccion : , telefono : , tipoDocumento : , nroDocumento : , email : , condi cionIVA : , CUIT : , descri pcion : , observaciones : , tipo...
10. modificarCliente(razonSocial : , di reccion : , telefono : , tipoDocumento : , nroDocumento : , email : , condi ci onIVA : , CUIT : , descripcion : , observaciones : , tipo...
: Cli ente
Pedi dos
Atención al Cl iente
Reclamos
Cliente
Atención al turista Ventas
<<extend>>
Encargado de
31- Registrar Pesca 54- Emitir Listado de Lagunas y
Atencion al Cl iente
Especi es
: Encargado de
Atencion al Cliente
5. seleccionarVisita( )
: Gestor de Laguna
: Interfaz de Visitas
7. consultarLagunas( )
2. buscarVisitasDe(Nombre, Apellido)
3. buscarVisita(Nombre, Apellido)
: Coleccion de Lagunas
: Coleccion De Visitas
8. consultarLagunasYEspecies( )
4. consultar(Nombre, Apellido)
: Visita
: Laguna
: Detalle de Visita
: Coleccion de Especies
: Pesca
1. emi ti rListadoDeLagunasYEspecies( )
: Interfaz de
5. seleccionarLaguna(i d[]) Lagunas
: Encargado de
Atenci on al Cl iente 2. consultarLagunas( )
6. emi ti rInformeDeLagunasYEspecies(id[])
: Gestor de Laguna
7. consultarLagunas(i d[])
3. consultarLagunas( )
4. consultarLaguna( )
8. consultarLagunasYEspecies( )
9. consultarPobl acion( )
: Detall e de laguna
tipomov: incremento o
1. buscarPescas(fecha, nombre del visitante) 13. modificarPesca(especie, cantidad, tipomov) decremento de pesca
en una laguna de una
determinada especie.
6. seleccionarPesca(id) : Interfaz de Pesca
: Encargado de
Atencion al Cliente 7. seleccionarPesca(id)
11. consultarTodas( )
12. consultarTodas( )
8. buscarPesca(id)
: Laguna : Detalle de laguna
5. obtenerPesca( ) 4. obtenerPesca( )
: Detalle de Visita : Visita : Coleccion De Visitas : Coleccion de Especies
: Interfaz de Pesca
: Encargado de
Atencion al Cliente
6. consultarPesca( )
4. obtenerPesca( )
: Pesca
5. obtenerPesca( )
1. consultarVisitas(fecha, hora, cliente, cantidad de pescadores) 2. consultarVisita(fecha, hora, cliente, cantidad de pescadores)
: Interfaz de Visitas
: Encargado de : Gestor de visitas y pesca
Atenci on al Cliente
5. consultar( )
: Detalle de Visita
: Interfaz de
T arifas
: Encargado de
Atenci on al Cl iente
2. regi strarT ari fa(concepto, precio, fecha vi gencia)
: T ari fa
Gestor de Especies
especieSeleccionada : Especie
resultadoDeBusqueda[] : Especie
coleccionDeEspecies : Coleccion de Especies
1
registrarEspecie(nombre, tamaño maximo, peso maximo, color, tamaño minimo, peso minimo, observ aciones)
consultarEspecies(Nombre)
modif icarEspecie(nombre, tamaño maximo, peso maximo, color, tamaño minimo, peso minimo, observ aciones)
seleccionarEspecie(id)
darDeBajaEspecieSeleccionada()
consultarTodas()
obtenerEspecie(id)
Coleccion de Especies
especies[] : Especie
1
consultarEspecies(Nombre)
registrarEspecie(nombre, tamaño maximo, peso maximo, color, tamaño minimo, peso minimo, observ aciones)
modif icarEspecie(nombre, tamaño maximo, peso maximo, color, tamaño minimo, peso minimo, observ aciones)
darDeBajaEspecie(EspecieSeleccioanda : Especie)
consultarTodas()
obtenerEspecie(id)
1..*
Especie
nombre
tamaño maximo
color
peso maximo
tamaño minimo
peso minimo
observ aciones
id
consultarEspecie(nombre)
darDeBaja()
registrarEspecie(nombre, tamaño maximo, peso maximo, color, tamaño minimo, peso minimo, observ aciones)
modif icarEspecie(nombre, tamaño maximo, peso maximo, color, tamaño minimo, peso minimo, observ aciones)
consultar()
Interf az de Especies
gestorDeEspecies : Gestor de Especies
registrarEspecie(nombre, tamaño maximo, peso maximo, color, tamaño minimo, peso minimo, observ aciones)
consultarEspecies(Nombre)
seleccionarEspecie()
modif icarEspecie(nombre, tamaño maximo, peso maximo, color, tamaño minimo, peso minimo, observ aciones)
darDeBajaEspecie()
Gestor de Laguna
lagunaSeleccionada : Laguna
coleccionDeLagunas : Coleccion de Lagunas
Coleccion de Lagunas detalleDeLaguna : Detalle de Laguna
lagunas[] : Laguna gestorDeEspecies : Gestor de Especies
consultarLagunas() consultarLagunas()
guardarLaguna(Laguna : Laguna) cargarDatosLaguna(descripción, ubicación, capacidad, tamaño)
buscarLaguna(descripción, ubicación, capacidad, tamaño) 1 cargarEspecie(id, cantidad)
buscarLaguna(id) registrarLaguna()
borrarLaguna(Laguna : Laguna) buscarLagunas(descripción, ubicación, capacidad, tamaño)
consultarLagunas(id[]) seleccionarLaguna(id)
modificarLaguna(laguna : Laguna) modificarLaguna(descripción, ubicación, capacidad, tamaño)
modiciarDetalleLag(Especie, cantidad)
borrarLaguna()
emitirInformeDeLagunasYEspecies(id[])
...
Laguna
capacidad
tamaño
descripcion
ubicación
detalledelaguna : Detalle de laguna Interfaz de Lagunas
id
gestorDeLaguna : Gestor de Laguna
crearLaguna(descripción, ubicación, capacidad, tamaño, detalle) gestorDeEspecies : Gestor de Especies
consultarEspecies()
darDeBaja() cargarDatosLaguna(descripción, ubicación, capacidad, tamaño)
consultarLagunasYEspecies() cargarEspecie(id, cantidad)
modificarLaguna(descripción, ubicación, capacidad, tamaño) registrarLaguna()
modificarDetalle(Especie, cantidad) cancelarRegistracionDeLaguna()
consultarLaguna() buscarLagunas(descripción, ubicación, capacidad, tamaño)
actualizarPoblacion(especie, cantidad, tipodemov) seleccionarLaguna(id)
modificarLaguna(descripción, ubicación, capacidad, tamaño)
modificarDetalleLaguna(Especie, cantidad)
borrarLaguna()
emitirListadoDeLagunasYEspecies()
seleccionarLaguna(id[])
Detalle de laguna
especie : Especie
cantidad
consultarPoblacion() n
modificarPoblación(Especie, cantidad)
cargarDetalle(especie, cantidad)
actualizarPoblacion(especie, cantidad, tipodemov) Especie
(from Espe...
T arifa
Colecci on De Tarifas concepto
precio
tarifas[] : Tarifa
fechaDeVigenci a
id
registrarT arifa(concepto, precio, fecha vigenci a) *
consul tarT ari fa(concepto)
consultarT ari fa(concepto)
modifi carT arifa(concepto, precio, fecha vigencia)
modifi carT arifa(concepto, precio, fecha vigenci a)
obtenerT arifa(id)
darDeBajaT arifa()
1 registrarT arifa(concepto, precio, fecha vigenci a)
Pegar aca
Class Diagram: Visita / Visita Page
Cliente
Encargado de
Cobros Encargado de
Pedidos
Encargado de
58- Modificar datos del Cliente
Atencion al Cliente
<<include>>
<<extend>>
<<extend>>
<<extend>>
: Interfaz de
: Encargado de Pedidos Pedidos
4. consultarPedido( )
: Pedido
lote de
faenamiento
6. seleccionarPedido(id)
8. consultarProductosDelPedido( )
7. obtenerPedido(id)
4. consultarPedi do( )
19. cambiarEstadoDeArmado(fecha)
15. registrarArmado(producto, cantidad)
9. consultarProductos( )
: Gestor de Faenamiento
: Gestor de Usuarios
14. buscarLote(id)
: Coleccion de Lotes de
Faenamiento
: Interfaz de
: Encargado de Venta Productos
5. calcularExistenciaActual(Producto)
: Existencia de productos : Gestor de Productos
3. buscarProductos(nombre)
4. consultar( )
: Producto : Colecci on de Productos
:
interfazDeEnvi os
: Encargado de Pedi dos
2. buscarEnvioDePedidosSinRemitos( )
5. selecci onarEnvioDePedido(id)
7. obtenerT ransportistas( )
11. seleccionarTransportista(id)
15. registrarRemito(fecha, observaciones)
19. emi tirComprobanteRemito( )
18. registrarRemito(remito)
: Envio de pedido
17. regi strarRemito(fecha, pedido, observaciones)
: Gestor de Transportistas
: Coleccion de Remi to
: Remito
: Colecci on de Transportistas
1. buscarPedidosPendi entesDeEnvio( )
4. seleccionarPedido(id)
7. regi strarDatosEnvio(destino, fechaDeEntrega, observaciones)
11. confirmarRegi stroDeEnvio( )
:
: Encargado de Venta interfazDeEnvios
2. buscarPedidosPendientesAEnviar( )
5. seleccionarPedido(id)
14. cambiarEstadoAEnviado( ) 8. regi strarDatosDeEnvio(destino, fechaDeEntrega, observaciones)
12. regi strarEnvio( )
: Pedido
13. regi strarEnvio(Envi oDePedido)
: Gestor de pedidos
3. buscarPedidosPendientesAEnviar( )
6. obtenerPedido(id)
: Coleccion de Pedidos 15. actualizarPedido(Pedi do)
16. actualizar(envioDePedido)
10. getUsuarioLogueado( )
: Gestor de Usuarios : Envio de pedido
: Colecci on de Envio de
pedido
11. buscarProductos(nombre)
: Gestor de Clientes
8. crearPedido(fechaE ntrega, prioridad, observaciones, tipentrega)
: Gestor de Productos
6. consultarCliente(id)
23. registrarPedido(Pedido)
: Gestor de pedidos
: Coleccion de Pedidos
17. calcularExistenciaActual(Producto)
: Coleccion de Clientes 22. estadoAPendienteArmar( )
: Coleccion de Productos
20. crearDetalle(producto[], cantidad[])
: E xistencia de productos
: P edido
Si la fecha no fuera la actual
9.1. getUsuarioLogueado( ) se calcula la estimacion de la
exsitencia a futuro con el
metodo correspondiente
: Gestor de Usuarios
: Detalle de pedido
:
: Encargado de Pedidos interfazDeEnvios
9. registrarEntrega(fecha)
10. actualizarEstadoAEntregado(fecha)
: Envio de pedido
: Remito
11. actualizarFechaDeRecepcion(fecha)
: Pedido
15. actualizar( )
: Colecci on de Pedidos
16. actualizar(envioDePedido)
: Coleccion de Envio de
pedido
: Interfaz de
Productos
: Encargado de Venta
3. calcularExistenciaAFuturo(producto)
: Existencia de productos : Gestor de Productos
4. buscarProductos(nombre)
5. consultar( )
: Producto : Colecci on de Productos
: Interfaz de
: Encargado de Pedidos Pedidos
4. consultarPedi do( )
: Pedido
<<control>>
Gestor de Transportistas
coleccionDeTrans portis tas : Colecc ion de Transportistas
trans portistaSelecc ionado : Transportista
regis trarTrans portista(razón s ocial, CUIT, direc ción, teléfono, condición de IVA, e-mail)
busc arTrans portis ta(raz ón social, CUIT)
seleccionarTransportista(id)
darDeBajaTrans portis taSelec()
modificarTransportista(razón social, CUIT, direcc ión, teléfono, condic ión de IVA, e-mail)
obtenerTodos()
<<entity >>
Colec cion de Transportistas
transportistas[] : Transportis tas
registrar(Transportis ta)
buscarTrans portista(raz ón s ocial, CUIT)
obtenerTransportis ta(id)
darDeBajaTrans portista(Transportista : Transportista) ...
ac tualiz arTrans portis ta(Transportista : Transportista)
obtenerTodos()
<<Interface>>
Interfaz de Transportista
gestorDeTransportis tas : Gestor de Transportis tas
registrarTrans portista(raz ón social, CUIT, direc c ión, teléfono, c ondición de IVA, e-mail)
buscarTransportistas(raz ón social, CUIT)
s elecc ionarTrans portista(id)
darDeBajaTransportistaSelec()
modific arTrans portis ta(razón social, CUIT, dirección, teléfono, condición de IVA, e-mail)
1..*
<<entity >>
Transportista
raz on social
c uit
direccion
telefono
c ondic ion de iv a
mail
id
registrar(raz ón soc ial, CUIT, direc ción, teléfono, condición de IVA, e-mail)
modific ar(razón social, CUIT, dirección, teléfono, condición de IVA, e-mail)
c onsultar()
darDeBaja()
Remito
tr ansportis ta : Transportita
Ges tor de Env ios pedido : Pedido
c olecionDeEnv ioDePedido : Colecc ion de Env io de pedido obser vaciones
gestorDePedidos : Ges tor de pedidos id
gestorDeTrans portis tas : Gestor de Trans portis tas n
trans porTis taSelec cionado registrarRemito(fecha, pedido : Pedido, observ aciones : String)
envioDePedidoSelec cionado : Envio de Pedido emitirRemito()
remito : R emito anularRemito()
pedido : Pedido c onsultar(fec ha de emisión, fecha de entrega, trans portis ta, c liente)
registrarEntrega(fecha)
busc arEnv ioDePedidos SinRemitos () actualiz arRemito()
s elecc ionarEnv ioDePedido(id)
obtenerTransportistas()
s elecc ionarTrans portis ta(id)
regis trarRemito(fecha, observac iones)
emitirComprobanteRemito()
busc arR emitos (fecha de emisión, fecha de entrega, trans portis ta, c liente)
s elecc ionarRemito(id)
anularRemito()
regis trarEntrega(fecha)
Si el pedi do no esta
marcado para entrega en
Pendiente de Armar mostrador
Pendiente de
enviar
Si el pedido se
entrega en
mostrador
Envi ado
Entregado
Reclamos
<<extend>> Encargado de
126- Consultar operarios a cargo de
Pedidos
lotes de produccion
Pendiente
Registrar Resoluci on de Reclamo
No
solucionado
Sin informar
al cliente
Ventas
Encargado de
Cobros
Encargado de
Atencion al Cliente
Administrador
(f rom Actores del Sistema
...)de Inf ormación)
: Interfaz de Ventas
: Encargado de Cobros
13. agregar(credito)
: Gestor de Cl ientes
: Coleccion de Credi to
8. consultarCli ente(id)
4. consultarCliente(razonSoci al , tipoDocumento, nroDocumento, descripcion)
: Coleccion de Clientes
13. obtener(Id)
17. c rearCobr o(fec ha, us uario, v enta, monto, pago, des c uento, formaPago)
: C olec c ion de For mas de
Pago
: Venta
22. c rear(c obr o, v enta, tipomov ) : Venta
: Cobro
: Cliente
Este caso de uso tiene 3 realizaciones distintas según se trate de adquir un producto, servicio o
facturar un pedido.
27. consultar( )
31. obtenerFormaDePago(Id) : Gestor de Cobros
: Coleccion de Formas de
Pago 26. consultarFormasDePago( )
30. selecFormaPag(id)
34. registrarVentaSeleccionada( )
29. seleccionarFormaDePago(id)
25. buscarFormasDePago( )
23. cargarDescuento(monto)
: Venta 20. calcularTotal( )
19. cargarDescuento(monto)
9. asginarCliente(cliente) 15. seleccionarPedido(id)
32. asignarFormaDePago(formaDePago) 11. buscarPedidos(fecha de emisión, fecha de entrega, prioridad)
24. cargarDescuento(pesos) 6. seleccionarCliente(id)
21. calcularTotal( ) 2. consultarCliente(razonSocial, tipoDocumento, nroDocumento, descripcion)
18. asignarPedido(Pedido)
: Gestor de Ventas
35. registrarVenta(venta)
: Coleccion de Ventas
: Gestor de Clientes
: Coleccion de Pedidos
: Gestor de pedidos
: Venta
19. consultarFormasDePago( )
: Gestor de Ventas
28. calcularTotal( )
26. cargarDescuento(pesos)
23. asignarFormaDePago(formaDePago)
16. agregarDetalle(Producto, cantidad) 3. consultarCliente(razonSocial, tipoDocumento, nroDocumento, descripcion)
9. asginarCliente(cliente) 7. consultarCliente(id)
12. buscarProductos(nombre)
31. registrarVenta(venta)
: Gestor de Cobros
: Coleccion de Ventas
: Gestor de Productos
: Gestor de Clientes 20. consultar( )
13. buscarProductos(nombre)
4. consultarCliente(razonSocial, tipoDocumento, nroDocumento, descripcion)
8. consultarCliente(id)
: Coleccion de Productos
: Coleccion de Clientes
: Coleccion de Formas de
Pago
: Encargado de
Atencion al Cliente
: Interfaz de Ventas
: Venta
9. asginarCliente(cliente) 12. consultar( )
15. asignarFormaDePago(formaDePago)
24. agregarTarifa(tarifa)
11. consultarFormasDePago( ) : Coleccion de Formas de
28. cargarDescuento(pesos)
: Gestor de Ventas Pago
30. calcularTotal( )
33. registrarVenta(venta)
: Gestor de Cobros
18. consultarTarifa(concepto)
22. buscarTarifa(id)
: Coleccion de Ventas
: Coleccion De Tarifas
: Coleccion de Clientes
1. buscarCobro(nombreCliente, fecha)
4. anularCobro(nombreCliente, fecha)
: Interfaz de Cobros
: Encargado de Cobros
2. buscarCobro(nombreCliente, fecha)
5. selecci onarCobro(i d)
9. anularCobro(cobro)
: Venta : Cobro : Gestor de Usuarios
: Interfaz de Cobros
: Encargado de Cobros
: Interfaz de Cuentas
Corrientes
: Encargado de
Atencion al Cliente
9. consultarCuenta(cliente)
: Coleccion de Cuenta
Corriente
13. consultarCreditos(cliente)
3. consultarCliente(razonSocial, tipoDocumento, nroDocumento, descripcion)
7. consultarCliente(id)
10. emitirResumen( )
: Gestor de Clientes
: Cuenta Corriente
11. consultarCobros( )
12. consultarVenta( )
: Coleccion de Clientes
1. iniciarSesion(nombreDeUsuario, Pass)
5. consultarCuentaCorriente( )
: Interfaz de
: Cliente Autoconsulta...
2. iniciarSesionClienteAutogestion(nombre, pass)
6. consultarCuentaCorrienteAutogestion( )
3. buscarClientePorUsuarioAutogestion(usuario)
: Coleccion de Clientes : Gestor de Clientes
4. iniciarSesion(usuario, pass)
8. seleccionarClienteYConsultarCuenta(id)
7. obtenerCliente( )
11. consultarCuenta(cliente)
: Coleccion de Cuenta
: Cliente de autogestion Corriente
9. consultarCliente(id)
15. consultarCreditos(cliente)
12. emitirResumen( )
: Gestor de Clientes
: Coleccion de Credito
10. consultarCliente(id) : Cuenta Corriente
13. consultarCobros( )
14. consultarVenta( )
: Coleccion de Clientes
: Interfaz de Cuentas
Corrientes
: Encargado de
Atencion al Cliente
4. seleccionarClienteYConsultarCuenta(id)
3. consultarCliente(razonSocial, tipoDocumento, nroDocumento, descripcion)
9. consultarCuenta(cliente)
6. consultarCliente(id)
5. consultarCliente(razonSocial, tipoDocumento, nroDocumento, descripcion)
10. emitirResumen( )
: Gestor de Clientes
: Cuenta Corriente
12. consultarVenta( )
11. consultarCobros( )
: Coleccion de Clientes
: Interfaz de Cuentas
: Encargado de Corrientes
Atencion al Cliente
10. registrarNuevaCuenta(fecha de alta, limite de crédito, plazo de crédito, nombre de usuario para auto consulta, password)
6. seleccionarCliente(id)
2. consultarCliente(razonSocial, tipoDocumento, nroDocumento, descripcion)
: Gestor de Usuarios
3. consultarCliente(razonSocial, tipoDocumento, nroDocumento, descripcion)
7. consultarCliente(id)
12. getUsuarioLogueado( )
: Gestor de Clientes
14. agregar(cuenta)
: Coleccion de Clientes
: Cliente de autogestion
: Cuenta Corriente
Producción
Alimentación
Clasificación e
incubación Producto
Compras
Enfermedades y control de
Faenamiento y
estanques
envasado
Ali mentaci ón
<<extend>>
Encargado de
83- Emitir informe de existencia de Compras
81- Consultar Alimentos alimentación
<<extend>>
1. obtenerIdNuevoAli mento( )
5. registrarAl imento(nombre, descripci ón, grasa, fibra, humedad, ceniza, proteína)
: Interfaz de Alimentos
: Encargado de
Producción
2. obtenerNuevoIdAlimento( )
6. regi strarAlimento(nombre, descripción, grasa, fibra, humedad, ceni za, proteína)
4. getUsuarioLogueado( )
: Gestor de Usuarios
8. getUsuarioLogueado( )
: Colecci on de Al imentos
: Gestor de Alimentos
11. actualizarAli mento(alim ento)
6. obtenerAli mento(id)
3. buscarAlimentos(nombre, descripción, grasa, fibra, humedad, ceni za, proteína)
10. modificar(nombre, descripci ón, grasa, fi bra, humedad, ceniza, proteína, usuari o)
: Ali mento
: Interfaz de Alimentos
: Encargado de
Producción
4. consultar( )
: Ali mento
: Encargado de
Producción
11. actualizarAlimento(alimento)
6. obtenerAlimento(id)
3. buscarAlimentos(nombre, descripción, grasa, fibra, humedad, ceniza, proteína)
8. getUsuarioLogueado( )
10. darDeBaja(usuario)
: Alimento
: Gestor de Usuarios
Alimento
nombre
id
gras a
fibra
humedad
c eniza
proteina
regis trar(nombre, desc ripción, grasa, fibra, humedad, c eniz a, proteína)
darDeBaja(us uario)
modific ar(nombre, desc ripción, gras a, fibra, humedad, ceniz a, proteína, us uario)
c ons ultar()
0..*
Gestor de Alimentos
colec cionDeAlimentos : Colec c ion de Alimentos
alimentoSelec : Alimento
usuario : UsuarioSis
obtenerNuev oIdAlimento()
regis trarAlimento(nombre, des c ripc ión, gras a, fibra, humedad, c eniza, proteína)
bus c arAlimentos(nombre, des c ripc ión, gras a, fibra, humedad, c eniza, proteína)
selec cionarAlimento(id)
modificarAlimento(nombre, des c ripc ión, gras a, fibra, humedad, c eniz a, proteína, us uario)
darDeBajaAlimentoSelec c ionado()
Interfaz de Alimentos
ges torDeAlimentos : Ges tor de Alimentos
obtenerIdNuev oAlimento()
registrarAlimento(nombre, des c ripción, grasa, fibra, humedad, c eniz a, proteína)
consultarAlimentos(nombre, des cripc ión, grasa, fibra, humedad, c eniz a, proteína)
selecc ionarAlimento(id)
modific arAlimento(nombre, des c ripción, gras a, fibra, humedad, c eniz a, proteína)
darDeBajaAlimentoSelec c ionado()
Parametro de Alimentacion
intervalo
cantidad
relacionTamañoAlimento
relacionCantidadAlimento
relacionEspeciAlimento
especie : Especie
relacionGrasaEspecie
relacionProteinasEspecie
relacionFibrasEspecies
consultar()
registrar(especie, intervalo, cantidad, relTam/Al, relCant/Al, relaEsp/Al, relGrasa/Esp, relProt/Esp, relFib/Esp, usuario)
modificar()
darDeBaja()
0..*
Gestor de Especies
(from Especie)
especieSeleccionada : Especie
resultadoDeBusqueda[] : Especie
coleccionDeEspecies : Coleccion de Especies
registrarEspecie(nombre, tamaño maximo, peso maximo, color, tamaño minimo, peso minimo, observaciones)
consultarEspecies(Nombre)
modificarEspecie(nombre, tamaño maximo, peso maximo, color, tamaño minimo, peso minimo, observaciones)
seleccionarEspecie(id)
darDeBajaEspecieSeleccionada()
consultarTodas()
obtenerEspecie(id)
Clasificación e
incubación
<<extend>>
Encargado de
Producción
21- Registrar estanque y lote listo a
fanear
93- Registrar Estanque
: Interfaz de
: Encargado de Clasifi cacion
Producción
: Coleccion de Estanques
: Estanque
: Seguimiento de Estanque
: Resultado de Clasificacion
: Clasificacion
: Gestor de Usuarios
: Interfaz de
: Encargado de Clasificacion
Producción
2. buscarEstanques(Número, ubicación, capacidad, tamaño)
5. seleccionarEstanque(id)
: Estanque
7. emitirPlanDeClasificación( )
: Gestor de Clasificacion
8. consultarLotesActuales( )
12. consultarPlanDeClasificacion( )
13. generarPlanDeClasificacion( )
3. buscarEstanques(Número, ubicación, capacidad, tamaño)
6. seleccionarEstanque(id)
: Seguimiento de Estanque
16. consultarEstanquesDisponibles(fecha)
9. obtenerUltimaClasificacion( )
: Coleccion de Estanques
: Plan de clasificación
15. calcularPlanEstimado( )
: Coleccion de Clasificaciones
14. obtenerParametro(Especie)
10. obtenerLotesActuales( )
: Parametro de clasificación
11. obtenerLote( )
: Coleccion de Parametros de
clasificacion
: Clasificacion : Resultado de Clasificacion
Resultado de Clasificacion
Estanque
estanqueDestino : Estanque
ubiacion cantidad
suSeguimiento : Seguimiento de estanque lote : Lote de peces
name clase : Clase de Lote
capacidad
tamaño registarResultado()
identificador consultarResultado()
descripcion obtenerLote()
fechadealta registrarClasificacion(lote, catidad, clase)
responsable : UsuarioSis
habilitacion : Habilitación de Lotes en Estanque *
planDeFaenamiento : Plan de Faenamiento y envasado
id
claseDeLote : Clase de Lote
especie : Especie
alimentarEstanque()
registarAlimentacion()
registarEstanque()
modificarEstanque()
consultar()
darDeBaja()
emitirPlanDeClasificación()
registrarClasificacion()
ListoParaFaena() *
emitirInformeDeSeguimiento()
habilitarEstanque()
controlarCondiciones()
registrarSolución()
registrarControlDeEstanque()
registrarEnfermedad()
registrarTratamiento()
consultarPlan()
0..* Seguimiento de Estanque
Coleccion de Estanques
estanques[] : Estanque
Gestor de Estanques
buscarEstanques()
Coleccion de Clasificaciones
Clasificacion
Lote de Peces
fecha
especie
loteDeOvas : Lote de Ovas
id
Gestor de Clasificacion
Interfaz de
Clasificacion estanqueSeleccionado : Estanque
Pendiente a
Incubar
Incubando
Clasifi cado
<<extend>> Compras
<<extend>>
33- Registrar pedido a prov eedor
107- Anular Orden de Pago
pagado
pendiente de
pago
anul ado
entregado
Enfermedades y control de
estanques
<<extend>>
143- Dar de baja Veterinario
Faenamiento y
env asado
121- Emitir listado de asignacion de
47- Dar de baja operario tareas y equipos
faenamiento y envasado.
15. Fin del Use Case.
Asociaciones de extensión: No aplica.
Asociaciones de inclusión: No aplica.
Use Case donde se incluye: No aplica.
Use Case al que se extiende: No aplica.
Use Case de generalización: No aplica.
Historia de cambios
Versión Fecha Descripción de cambios Autor
1 02/08/2005 Creación Grupo de Desarrollo
Producto
Encargado de Venta
66- Registrar Producto
68- Dar de baja al producto
Producto
Lote nombre
tipo
numero precio
fechadeincubacion id
cantidadInicial
estado consultar()
Especie : Especie
1
registrarAlimentacion()
registrarLote()
cambiarEstado()
registrarClasificacion()
emitirInformeDeSeguimiento()
1..* 1..n n
Existencia de productos
producto : Producto
cantidad
fecha
estimacionAFuturo
lote : Lote
calcularExistenciaActual(Producto : Producto)
calcularExistenciaAFuturo(producto : Producto)
0..*
Seguimiento de Estanque
(from C las ific ac ...
planesAplicados[] : Plan de alimentación
operarioACaro : UsuarioSis
enfermedadesOcurridas[] : Enfermedad Seguimiento de Lote
(from Clas ificación e inc ubac ...
solucionesAplicadas[] : Soluciones de estanques
coleccionDeClasificaciones : Coleccion de Clasificaciones AlimentosAplicado : Alimento
porcentajedeLote
generarPlanDeAlimentacion() cantidad
registrarAlimentacion() fechadesegmentacion
consultarSeguimiento() operarioACargo : UsuarioSis
registrarSolucionAplicada() estado
consultarSolucionesAplicadas() estanquesDestinados[] : Estanque
registrarEnfermedad() resultadoClasificacion[] : Resultado de clasificacion
registrarTratamiento()
consultarLotesActuales() registrarAlimentacion()
consultarPlanDeClasificacion() cambiarEstado()
registrarClasificacion(clase, fecha, cantidad, estanqueDestiono) registrarClasificación()
consultar()
habilitarLote()
actualizarProductosCreados()
Sistema
144- Regi strar Usuario 148- Regi strar Permisos 149- Registrar Rol es
Administrador
(from Actores del Sistema de Información)
...)
153- Cerrar Cesion
Usuari o
(from Actores del Sistema de Información)
...)
Encargado de Cobros
Encargado de Atencion
(from Actores del Sistema de Información)
...) al Cl iente
(from Actores del Sistema de Información)
...)
Encargado de
Producción Encargado de Compras
(from Actores del Sistema de Información)
...) (from Actores del Sistema de Información)
...)
Encargado de Pedidos
(from Actores del Sistema de Información)
...)
Historia de cambios
Versión Fecha Descripción de cambios Autor
1 01/08/2005 Creación Grupo de Desarrollo
Interfaz de
UsuarioSi s
Seguridad
cargo 1
fechadealta Coleccion de Usuarios
fechadebaj a
nombreDeUsuari o 0..* 1
pass
fechaCaducaPass
fechaUl timoAcceso
Gestor de Usuari os
nombreReal
permiso : Rol
registrar()
modifi car()
darDeBaj a()
consul tar() 1
consul tarDi sponi bi lidad()
Coleccion de Funciones
Coleccion de Roles
1 0..* 0..*
Rol
descripcion FuncionesT ecnoPez
0..*
id descripcion
nombreCorto casoDeUsoQueHabi lita
crearRol() crearPermiso()
consultarRol() cancelarPermi so()
modificarRol ()
darDeBaj aRol()
Modelo de Diseño
En este modelo, se busca plantear aspectos más relacionados con la
implementación. Se incluye una descripción del modelo de despliegue y una
introducción a la arquitectura de TecnoPez.
Al final de este documento, se encuentra el modelo relacional de la base
de datos, que se utilizara en la implementación.
También incluimos una serie de estándares de codificación (adaptados de
estándares de Microsoft y otras fuentes de Internet), que se utilizarán a la
hora de programar nuestro producto.
El objetivo de esta sección, es orientar hacia una implementación común
y homogénea entre el grupo de trabajo. Por el tamaño del proyecto se busca
dar lineamientos de diseño lo suficientemente flexibles como para adaptarse
a las implementaciones de los casos de uso correspondientes.
Planteamos como se realizara el acceso a datos, con las clases de diseño
que se requerirán y demostramos con un breve ejemplo, como interactúan las
clases para obtener datos y mostrabas al usuario en un diagrama de
colaboración. Buscando así establecer el concepto con el cual se trabajará en
el resto del desarrollo de TecnoPez.
Servidor Web
Servidor de
Servidor de interfaces web
Aplicación LAN
Aplicaciones de 3eros
Usuario de Autogestion (clientes, provedores)
(interacutando con WebServices)
Internet
Servidor de Base de Datos
Via
WebServices Servidor de Aplicaciones
System::Exception
Sistema::clsSQL
-objConexion : OleDbConnection
-objOrigen : clsOrigenDeDatos
-booConectado : Boolean
-strMensaje : String
-objException : Exception
-objTransaccion : OleDbTransaction
Sistema::clsOrigenDeDatos +getMensaje() : String
-strDSN : String +getError() : Exception
+estaConectado() : Boolean
+origen() : String
+New()
+toString() : String +iniciarTransaccion () : Boolean
+New() +confirmarTrans() : Boolean
+denegarTrans() : Boolean
+ejecutarSQL(entrada strSQL : String) : Integer
+getDataReader(entrada strSQL : String) : OleDbDataReader
#Finalize()
OleDb::OleDbDataReader
OleDb::OleDbTransaction OleDb::OleDbConnection
: clsInterfazDeUsari os
: Usuari oSis
23. resultadoDeBusqueda(Usuari osSis: ArrayList)
19. Read( )
: ArrayList
: clsGestorDeUsuarios 20. Item(Item : String)
: clsOrigenDeDatos
11. getDataReader(strSql : String)
8. iniciarT ransaccion( )
2. New( )
: clsSQL
3. New() 16. New( )
4. origen( )
12. New( )
13. Connection( )
14. CommandT ext( )
15. ExecuteReader( )
6. New()
: OleDbConecti on 9. beginT ransaction( )
7. open( )
5. connecti onString( )
: Ol eDbCommand
10. New()
: Ol eDbT ransacti on
3. N ew()
4. origen( )
5. c onnec tionString( )
6. New ()
7. open( )
9. beginTrans ac tion( )
10. New()
12. New ( )
14. CommandTex t( )
15. Ex ec uteReader( )
16. New( )
17. New ( )
18. New( )
19. Read( )
21. setearDatos ( )
Modelo de seguridad
clsSQL
-objConexion : OleDbConnection
-objOrigen : clsOrigenDeDatos
-booConectado: Boolean
TecnoPez::Estanque TecnoPez::gestorDeEstanques -strMensaje : String
-objException : Exception
-objTransaccion : OleDbTransaction
+getMensaje() : String
+getError() : Exception
+estaConectado() : Boolean
+New()
+iniciarTransaccion() : Boolean
+confirmarTrans() : Boolean
+denegarTrans() : Boolean
+ejecutarSQL(entrada strSQL : String) : Integer
+getDataReader(entrada strSQL : String) : OleDbDataReader
TecnoPez::registrarEstanque #Finalize()
-objEncargados: gestorDeEstanques
#Label1 : Label
#Label2 : Label
#Label3 : Label Collections::ArrayList
#Label4 : Label
#Label5 : Label
#Label6 : Label
#txtUbicacion : TextBox
#txtCapacidad : TextBox TecnoPez::Global
#txtTamaño : TextBox -components : IContainer
#TxtDescripcion : TextBox
+New()
#txtFechaDeAlta : TextBox
-InitializeComponent( )
#cmbResponsables : DropDownList
+Application_Start(entrada sender: Object, entrada e : EventArgs)
#cmbRegistrar : Button
+Session_Start(entrada sender: Object, entrada e : EventArgs)
#CustomValidator1 : CustomValidator
+Application_BeginRequest(entrada sender: Object, entrada e : EventArgs)
#CompareValidator1 : CompareValidator
+Application_AuthenticateRequest( entrada sender: Object, entrada e : EventArgs)
#RangeValidator1 : RangeValidator
+Application_Error(entrada sender: Object, entrada e : EventArgs)
#RequiredFieldValidator1 : RequiredFieldValidator
+Session_End(entrada sender: Object, entrada e : EventArgs)
#RegularExpressionValidator1 : RegularExpressionValidator
+Application_End(entrada sender: Object, entrada e : EventArgs)
-designerPlaceholderDeclaration: Object
-InitializeComponent( )
-Page_Init(entrada sender: Object, entrada e : EventArgs) WebControls::WebControl
-Page_Load(entrada sender: Object, entrada e : EventArgs)
-cmbRegistrar_Click(entrada sender: Object, entrada e : EventArgs)
UI::TemplateControl
System::MarshalByRefObject
Web::HttpApplication
ComponentModel::Component
UI::Page
System::EventArgs
WebControls::CustomValidator
WebControls::CompareValidator
UI::Control
WebControls::RequiredFieldValidator
WebControls::CustomValidator
WebControls::BaseCompareValidator
WebControls::Button
WebControls::BaseValidator WebControls::DropDownList
WebControls::Label WebControls::ListControl
WebControls::RangeValidator WebControls::RegularExpressionValidator
WebControls::TextBox
Estándares de codificación
Las técnicas de codificación incorporan muchos aspectos del desarrollo
del software. Estas contribuyen a una mejor compresión del código fuente. En
esta fase se tienen en cuenta todos los tipos de código fuente, incluidos los
lenguajes de programación, de secuencias de comandos, de marcado o de
consulta.
Estos estándares fueron adaptados de documentación provista por el sitio
de Microsoft a fines de utilizarlos para la implementación de TecnoPez.
Nombres
El esquema de nombres es una de las ayudas más importantes para
entender el flujo lógico de una aplicación. Un nombre debe más bien expresar
el "qué" que el "cómo". Se debe evitar nombres que se refieran a la
implementación subyacente (sujeta a cambios), así se estará conservando un
grado de abstracción que lo simplificará todo. Por ejemplo, puede usar
obtenerSiguienteCobrador() en vez de getNextArrayElement().
Rutinas
• Evite nombres imprecisos que permitan interpretaciones
subjetivas, como por ejemplo AnalyzeThis() para una rutina, o
bien xxK8 para una variable. Tales nombres contribuyen más a la
ambigüedad que a la abstracción.
• En el acceso a objetos es redundante incluir nombres de clases en
el nombre de las propiedades de clases, como por ejemplo
Book.BookTitle. En su lugar, utilice Book.Title.
• Evite usar términos del tipo Flag cuando ponga nombre a variables
de estado, que difieren de las variables booleanas en que aquéllas
deben tener más de dos valores posibles. En vez de documentFlag,
utilice un nombre más descriptivo, del tipo documentFormatType.
• Incluso para el caso de una variable de poco uso, que deba
aparecer sólo en unas cuantas líneas de código, emplee un nombre
descriptivo. Utilice nombres de variables de una sola letra, como i
o j sólo para índices cortos.
• No utilice números o cadenas literales, como por ejemplo For i =
1 To 7. En su lugar, emplee constantes con nombre, del tipo For i
= 1 To NUM_DAYS_IN_WEEK para que resulten fáciles de mantener y
comprender.
• Es recomendado que las variable booleanas contengan una
palabra que describa su estado: puedeEliminarse, esGrande,
tieneHijos, etc. Y siempre se debe referir al estado verdadero:
tieneCredito en cambio de noTieneCredito
Tablas
• Cuando ponga nombres a tablas, hágalo en plural. Por ejemplo,
use proveedores en lugar de proveedor.
• Cuando ponga nombre a las columnas de las tablas, no repita el
nombre de la tabla; por ejemplo, evite un campo llamado
empleado de una tabla llamada empleado.
Otros aspectos:
Minimizar el uso de abreviaturas; pero si las emplea, use
coherentemente las que haya creado. Una abreviatura sólo debe tener un
significado y, del mismo modo, a cada palabra abreviada sólo debe
corresponder una abreviatura. Por ejemplo, si utiliza "min." para abreviar
"mínimo", hágalo siempre así, y no use también "min." para abreviar "minuto".
Cuando ponga nombre a las funciones, incluya una descripción del valor
que vaya a ser devuelto, como por ejemplo GetCurrentWindowName().
Los archivos y los nombres de carpetas, al igual que los nombres de
procedimientos, deben describir claramente su finalidad.
Evite las marcas tipográficas para identificar tipos de datos, como $ para
las cadenas, o % para los enteros.
Evite añadir comentarios al final de una línea de código, porque lo hacen
más difícil de leer. Sin embargo, los comentarios de final de línea sí son
apropiados al anotar declaraciones de variables. En este caso, alinee todos los
comentarios de final de línea en la misma posición de tabulación
Evite rodear un bloque de comentarios con un marco tipográfico. Puede
resultar agradable, pero es difícil de mantener.
Use frases completas cuando escriba comentarios. Los comentarios
deben aclarar el código, no añadirle ambigüedad.
Vaya comentando al mismo tiempo que programa, porque probablemente
no tenga tiempo de hacerlo más tarde. Por otro lado, aunque tuviera
oportunidad de revisar el código que ha escrito, lo que parece obvio hoy es
posible que seis semanas después no lo sea.
Haga comentarios en el código que esté formado por bucles o
bifurcaciones lógicas. Se trata en estos casos de áreas clave que ayudarán a
los lectores del código fuente.
Separe los comentarios de sus delimitadores mediante espacios. Si
respeta estas normas, los comentarios serán más claros y fáciles de localizar
si trabaja sin indicaciones de color.
Formato
El formato hace que la organización lógica del código sea más clara. Si
toma el tiempo de comprobar que el código fuente posee un formato
coherente y lógico, les resultará de gran utilidad a usted y a otros
programadores que tengan que descifrarlo.
Los siguientes puntos son técnicas de formato recomendadas.
• Establezca un tamaño estándar de sangría (por ejemplo, cuatro
espacios) y úselo siempre. Alinee las secciones de código mediante
la sangría predeterminada.
Aplique una sangría al código en todas las líneas de construcción lógica.
Si no aplica la sangría, el código resulta difícil de seguir, como ocurre en:
If ... Then
If ... Then
...
Else
End If
Else
...
End If
La sangría aplicada al código hace que éste sea más fácil de leer, como
por ejemplo en:
If ... Then
If ... Then
...
Else
...
End If
Else
...
End If
Cuando tenga que dividir una línea en varias, aclare que el código sigue
en la línea de más abajo mediante un operador de concatenación colocado al
final de cada línea, y no al principio.
Al escribir en HTML, establezca un formato estándar para las etiquetas y
los atributos; como por ejemplo, las etiquetas siempre en mayúscula y los
atributos en minúscula. Como alternativa, siga las convenciones de la
especificación XHTML para asegurarse de que los documentos HTML son
válidos. Aunque existe una tamaño razonable que debe tenerse en cuenta a la
hora de crear páginas Web, utilice valores de atributo entre comillas y
etiquetas de cierre, para una mejor mantenibilidad.
Cuando escriba instrucciones SQL utilice mayúsculas para las palabras
clave y mayúsculas y minúsculas para los elementos de la base de datos, como
tablas, columnas y vistas.
Coloque las cláusulas SQL principales en líneas separadas, de modo que
las instrucciones sean más fáciles de leer y editar. Por ejemplo:
SELECT FirstName, LastName
FROM Customers
WHERE State = 'WA'
aplicación o abrir una base de datos que la aplicación requiera. Hay cuatro
variedades de Main:
• Sub Main()
• Sub Main(ByVal CmdArgs() As String)
• Function Main() As Integer
• Function Main(ByVal CmdArgs() As String) As Integer
Encargado de pedidos
Consultar cliente
Consultar pedidos
Emitir listado de pedidos a armar
Registrar recepción de remitos
Registrar envío de pedido
Anular pedido
Emitir remito
Anular remito
Registrar armado del pedido
Consultar transportistas
Modificar transportistas
Dar de baja transportista
Registrar transportista
Registrar reclamo
Encargado de cobros
Consultar cliente
Anular pedido
Consultar cobros y deudores
Emitir resúmenes de cuentas
Inhabilitar cuenta corriente
Registrar cobro
Anular cobro
Registrar venta
Consultar venta
Registrar crédito al cliente
Encargado de ventas
Anular pedido
Consultar existencia de productos
Consultar existencia de productos a futuro
Registrar pedido
Registrar producto
Modificar producto
Dar de baja producto
Consultar productos
Cliente
Registrar reclamo por autogestión
Consultar cuenta corriente por autogestión
Encargado de producción
Registrar alimentación
Consultar alimentos
Modificar alimentos
Registrar alimentos
Dar de baja alimento
Registrar parámetros de planificación de alimentación
Dar de baja a parámetros de planificación de alimentación
Modificar parámetros de planificación de alimentación
Generar plan de alimentación
Emitir informe de existencia de alimentación
Registrar habilitación de lotes de peces en estanque
Dar de baja a solución
Registrar control de estanque
Emitir plan de control de estanques
Encargado de compras
Emitir listado de alimentos a comprar
Registrar pedido a proveedor
Consultar ofertas del proveedor
Registrar ofertas del proveedor
Registrar gastos
Registrar proveedor
Modificar datos del proveedor
Dar de baja a proveedor
Consultar proveedores
Consultar pagos y ordenes de pago
Modificar insumo
Proveedor
Registrar por autogestión proveedor
Modificar por autogestión datos del proveedor
Registrar por autogestión ofertas del proveedor
Usuario
Iniciar sesión
Cerrar sesión
Cambiar contraseña
Administrador
Registrar usuario
Dar de baja usuario
Modificar usuario
Registrar permisos
Dar de baja permiso
Registrar roles
Modificar rol
Dar de baja rol
Registrar forma de pago
Modificar forma de pago
Dar de baja forma de pago
FK_ROLESFUN_REFERENCE_FUNCIONE
FuncionesT ecnopez
FK_USUARIOS_REFERENCE_ROLES
IDFuncionTecnoPez integer <pk>
Nombre varchar(30)
Usuarios
Empleados
IDUsuario integer <pk> (Atencion al cliente)
FK_USUARIOS_REFERENCE_EMPLEADO
IDEmpleado integer <fk1>
NombreUsuario varchar(20) IDEmpleado integer <pk>
Contraseña varchar(20) Apellido varchar(50)
IDRol integer <fk2> Nombre varchar(50)
IDT ipoDocumento integer
NumeroDocumento varchar(30)
Direccion varchar(100)
T elefono varchar(20)
CorreoElectronico varchar(50)
DER: Producción