paquetes de diseÑo
TRANSCRIPT
- i -
TABLA DE CONTENIDO
C DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL ________________________ 1
C.1 PAQUETES DE DISEÑO___________________________________________________ 1
C.2 DIAGRAMAS DE CLASE DE DISEÑO _________________________________________ 3
C.2.1 Caso de uso ValidarAcceso ________________________________________ 4
C.2.2 Caso de uso ModificarContraseña ___________________________________ 9
C.2.2 Caso de uso RealizarPedido _______________________________________ 14
C.2.3 Caso de uso BuscarPedido________________________________________ 30
C.3 DIAGRAMAS INTERACCIÓN DEL SISTEMA____________________________________ 37
C.3.1 Caso de uso ValidarAcceso _______________________________________ 37
C.3.2 Caso de uso ModificarContraseña __________________________________ 38
C.3.3 Caso de uso RealizarPedido _______________________________________ 40
C.3.3 Caso de uso BuscarPedido________________________________________ 48
C.4 DIAGRAMA DE IMPLANTACIÓN____________________________________________ 50
C.5 DISEÑO DE LA BASE DE DATOS ___________________________________________ 51
- ii -
TABLA DE FIGURAS
Figura C-1. Paquetes de diseño__________________________________________________ 1
Figura C-2. Estereotipo de una Client page ________________________________________ 2
Figura C-3. Estereotipo de una Server page _______________________________________ 2
Figura C-4. Estereotipo de un Form ______________________________________________ 3
Figura C-5. Diagrama de clases Validar Acceso, (Estereotipos) _______________________ 4
Figura C-6. Diagrama de clases Validar Acceso ____________________________________ 5
Figura C-7. Diagrama de clases ModificarContraseña, (Estereotipos) __________________ 9
Figura C-8. Diagrama de clases Modificar contraseña ______________________________ 10
Figura C-9. Diagrama de clases caso de uso RealizarPedido ________________________ 14
Figura C-10. Diagrama de clases RealizarPedido, (Adicionar producto al carrito de compras)___________________________________________________________________________ 18
Figura C-11. Diagrama de clases RealizarPedido, (Enviar Pedido) ____________________ 19
Figura C-12. Diagrama de clases caso de uso RealizarPedido, (Eliminar producto del carrito de compras) _________________________________________________________________ 20
Figura C-13. Diagrama de clases Caso de uso RealizarPedido, (Cambiar cantidad de producto a pedir) _____________________________________________________________ 21
Figura C-14. Diagrama de clases, caso de uso BuscarPedido________________________ 30
Figura C-15. Diagrama de clases, caso de uso BuscarPedido, (búsqueda de pedido por un cliente) _____________________________________________________________________ 32
Figura C-16. Diagrama de clases, Caso de uso BuscarPedido, (búsqueda por agente) ___ 33
Figura C-17. Carta de secuencias de mensajes Validar acceso Cliente. ________________ 37
Figura C-18. Carta de secuencia de mensajes Validar Acceso Agente_________________ 38
Figura C-19. Carta de secuencia de mensajes Modificar Contraseña Cliente ___________ 39
Figura C-20. Carta de secuencia de mensajes Modificar Contraseña Agente ___________ 39
Figura C-21. Carta de secuencia de mensajes Realizar Pedido, Adición de productos al carrito de compras por un Cliente _______________________________________________ 41
- iii -
Figura C-22. Carta de secuencia de mensajes Realizar Pedido, Adición de productos al carrito de compras por un Agente _______________________________________________ 42
Figura C-23. Carta de secuencia de mensajes Realizar Pedido, enviar pedido por un Cliente___________________________________________________________________________ 43
Figura C-24. Carta de secuencia de mensajes Realizar Pedido, enviar pedido por un Agente___________________________________________________________________________ 44
Figura C-25. Carta de secuencia de mensajes Realizar Pedido, eliminar productos del carrito de compras por un Cliente _____________________________________________________ 45
Figura C-26. Carta de secuencia de mensajes Realizar Pedido, eliminar productos del carrito de compras por un Agente _____________________________________________________ 46
Figura C-27. Carta de secuencia de mensajes Realizar Pedido, modificar cantidad de un producto Cliente/Agente _______________________________________________________ 47
Figura C-28. Carta de secuencia de mensajes Buscar Pedido, Buscar pedido por un Cliente___________________________________________________________________________ 48
Figura C-29. Carta de secuencia de mensajes Buscar Pedido, Buscar pedido por un Agente___________________________________________________________________________ 49
Figura C-30. Diagrama de implantación __________________________________________ 50
Figura C-31. Diagrama del paquete de datos, "Análisis del Software" __________________ 52
Figura C-32. Diagrama Entidad-Relación _________________________________________ 53
Figura C-33. Diagrama Entidad-Relación, normalizado______________________________ 53
- iv -
LISTA DE TABLAS
Tabla C-1. Descripción técnica del R280d de Ericsson. _____________________________ 51
Tabla C-2. Tabla adminsx, (Administrador del sistema) _____________________________ 54
Tabla C-3. Tabla agente _______________________________________________________ 54
Tabla C-4. Tabla Cliente_______________________________________________________ 55
Tabla C-5. Tabla cliente_agente ________________________________________________ 55
Tabla C-6. Tabla cliente_empresa_______________________________________________ 55
Tabla C-7. Tabla empresa _____________________________________________________ 55
Tabla C-8. Tabla pedido _______________________________________________________ 56
Tabla C-9. Tabla producto _____________________________________________________ 56
Tabla C-10. Tabla productopedido_______________________________________________ 56
Tabla C-11. Tabla transaccion __________________________________________________ 56
C-1
C DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C.1 PAQUETES DE DISEÑO
IU_Cliente<<Client page>>
Form_Cliente<<Form>>
Gestion_Usuario
<<Server page>>IU_Agente
<<Client page>>Form_Agente<<Form>>
PHP<<PHP>>
IU_General<<Client page>>
Form_General<<Form>>
Gestion_Empresa
<<Server page>>Gestion_Producto
<<Server page>>Gestion_Pedido
<<Server page>>
Apache<<Apache>>
TCP/IP Windows2000
MySQL
APIPHPMySQL
Capa de aplicación
Capa lógica de mediación
Capa de software del sistema
Diagrama de paquetes de diseño 1(1)
Figura C-1. Paquetes de diseño
De acuerdo al estándar de UML, en la Figura C-1, se muestran los paquetes
utilizados para estructurar los elementos del modelo de diseño. A continuación se
describen los estereotipos a los cuales pertenecen las clases contenidas en cada
paquete.
Client page: Una página cliente, (Cliente page) es un documento HTML distribuido
por un servidor web, utilizando el protocolo http; los navegadores, (clientes)
decodifican el documento y presentan la información contenida el usuario.
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-2
La petición de una página cliente se realiza, enviando al servidor web, la dirección
de la página, (URL, Unified Resource Locator), valiéndose, también, del protocolo
http.
Client page
Figura C-2. Estereotipo de una Client page
Server page: Una Server page, (página servidora), se define como una secuencia
de comandos procesados por el servidor, los cuales son ejecutados cuando el
navegador, (cliente), solicita una URL. Mediante le ejecución de estas instrucciones,
se construye una pagina cliente de acuerdo a información obtenida, generalmente,
de una base de datos. Así un servidor está en capacidad de enviar páginas clientes
construidas dinámicamente, como respuesta a peticiones de URLs de Server pages.
Server page
Figura C-3. Estereotipo de una Server page
Form: Se refiere a los formularios contenidos en una Client page, los cuales a su
vez, contienen campos de entrada, tales como cajas de texto, botones y listas de
selección, cajas de chequeo, etc. Cada formulario en una Client page, tiene
asociado una Server page, la cual recibe y procesa la información enviada.
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-3
Form
Figura C-4. Estereotipo de un Form
Apache: Es el servidor web, compatible con HTTP/1.1, el cual en conjunto con el
módulo de php se utilizará como plataforma de soporte para el sistema.
PHP: Es un lenguaje scripting1 con HTML embebido, este lenguaje, contiene un API
que permite ejecutar funciones por medio de las cuales es posible realizar consultas
a la base de datos del sistema, utilizando el gestor de la base de datos del sistema,
(MySQL).
MySQL: Es un sistema de administración que permite, adicionar, acceder y
procesar datos almacenados en una base de datos. También se podría definir como
un sistema cliente/servidor que consiste en un servidor SQL multi-hilo que soporta
diferentes backends, librerías y programas cliente, herramientas administrativas y
algunas interfaces de programación. MySQL, será el sistema de gestión de la base
de datos de este sistema.
C.2 DIAGRAMAS DE CLASE DE DISEÑO
Los estereotipos por medio de los cuales se definen la relación de asociación entre
clases son los siguientes:
• Build: Esta relación indica la creación de una Client Page por una Server
page, utilizando código PHP.
• Link: Simboliza la invocación de una Client page por otra Client page, a
través de un hipervínculo o botón de selección.
1 Lenguaje que indica al computador como ejecutar un procedimiento específico
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-4
• Query: Hace referencia a la necesidad de ejecutar operaciones que
permitan realizar consultas a la base de datos.
• Submit: Simboliza la invocación de una Server page, por una Client page,
por medio de un botón de selección o hipervínculo que implique el envío de
parámetros incluidos en un Form, necesarios para la construcción de otra
Client page.
C.2.1 Caso de uso ValidarAcceso
MenuCliente
(from IU_Cliente)
DatosCliente
(from Gestion_Usuario)
<<build>>
VAForm
(from Form_General)
<<submit>>
API_PHPMySQL(from PHP)
<<PHP>><<query>>
MenuAgente(from IU_Agente)
DatosAgente
(from Gestion_Usuario)
<<submit>>
<<query>>
<<build>>
MenuPrincipal(from IU_General)
ValidarAccesoUsuario
(from IU_General)
11
ValidarAcceso
(from Gestion_Usuario)
<<build>>
MPForm(from Form_General)
11 <<submit>>
Diagrama de clases Validar Acceso 1(1)
Figura C-5. Diagrama de clases Validar Acceso, (Estereotipos)
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-5
MenuCliente
Opcion : Int
AceptarClic()
(from IU_Cliente)
<<Client Page>>
DatosCliente
ConstruirIUCliente()
(from Gestion_Usuario)
<<Server Page>>
<<build>>
VAForm
<<input>> Login : String<<input>> Contraseña : String<<submit>> Aceptar<<button>> Cancelar
(from Form_General)
<<Form>>
<<submit>>
API_PHPMySQL
mysql_close()mysql_connect()mysql_fetch_row()mysql_free_result()mysql_num_rows()mysql_query()mysql_result()mysql_select_db()
(from PHP)
<<PHP>>
<<query>>
MenuAgente
Opcion : Integer
AceptarClic()
(from IU_Agente)
<<Client Page>>
DatosAgente
ConstruirIUAgente()
(from Gestion_Usuario)
<<Server Page>>
<<submit>>
<<query>>
<<build>>
MenuPrincipal
Opcion : String
AceptarClic()CancelarClic()
(from IU_General)
<<Client Page>>
ValidarAccesoUsuario
Login : StringContraseña : String
AceptalClic()CancelarClic()
(from IU_General)
<<Client Page>>
11
ValidarAcceso
CosntruirIUValidarA()
(from Gestion_Usuario)
<<Server Page>>
<<build>>
MPForm
<<select>> Opcion : String<<submit>> Aceptar<<button>> Cancelar
(from Form_General)
<<Form>>
11 <<submit>>
Diagrama de clases Validar Acceso 1(1)
Figura C-6. Diagrama de clases Validar Acceso
Este caso de uso, el usuario invoca la Server page ValidarAcceso, realizando un
submit valiéndose del formulario, MPForm, contenido en el MenuPrincipal. De esta
forma la Client page ValidarAccesoUsuario, es construida.
Por medio del formulario contenido en la Client page, ValidarAccesoUsuario, el
usuario puede enviar sus datos, (Nombre de usuario y contraseña), con el fin de ser
identificado por el sistema. Estos datos, dependiendo del tipo de usuario, son
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-6
enviados a las Server pages, Datos cliente, (en el caso de un cliente) o Datos
Agente, (para un agente), éstas tienen acceso a la base de datos utilizando el API
de MySQL que proporciona PHP. Finalmente, de acuerdo al resultado obtenido de
la comparación de los datos ingresados por el usuario y los obtenidos en la
consulta, las Server pages construyen las Client pages, MenuCliente o MenuAgente.
Class MenuPrincipal {
Var opcion;
AceptarClic() {
Switch (estaclase->opcion) {
Caso “Ingresar”:
Cargar ValidarAcceso();
break;
Caso “Ayuda”:
Cargar Ayuda();
break;
Caso “Ver empresas”:
MostrarEmpresas();
break;
}
}
}
Class ValidarAcceso {
Var login;
Var contraseña
ConstruirIUValidarA()
}
Class ValidarAccesoUsuario {
Var Usuario;
AceptarClic(ValidarAcceso->login, ValidarAcceso->contraseña) {
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-7
estaclase->Usuario=InicialLogin; //Login=InicialLogin + Codigo usuario
//Inicial login es: A ,(para Agente) o C, //( para Cliente)
Si estaclase->Usuario==”A” {
Cargar DatosAgente();
}
Si no Si Usuario==”C”{
Cargar DatosCliente();
}
Si no {
Desplegar mensaje “Nombre de usuario o contraseña incorreta”;
Cargar ValidarAcceso();
}
}
CancelarClic() {
Volver a MenuPrincipal;
}
}
Class DatosCliente {
ConstruirIUCliente(ValidarAcceso->login,ValidarAcceso->contraseña){
Conectar a la base de datos;
consulta=”Seleccionar en la base de datos todos los usuarios de la tabla cliente donde login=’login’ y password=’contraseña’”;
resultado=Ejecutar consulta;
Amacenar resultado;
Numero= Número de filas en el resultado;
Si Numero==1 {
Cargar perfil de usuario;
}
Si no {
Desplegar mensaje “Nombre de usr o contraseña incorrecta”;
Cargar ValidarAcceso();
}
}
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-8
}
Class DatosAgente {
ConstruirIUCliente(ValidarAcceso->login, ValidarAcceso->contraseña){
Conectar a la base de datos;
consulta=”Seleccionar en la base de datos todos los usuarios de la tabla agente donde login=’login’ y password=’contraseña’”;
resultado=Ejecutar consulta;
Amacenar resultado;
Numero= Número de filas en el resultado;
Si Numero==1 {
Cargar perfil de usuario;
}
Si no {
Desplegar mensaje “Nombre de usr o contraseña incorrecta”;
Cargar ValidarAcceso();
}
}
}
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-9
C.2.2 Caso de uso ModificarContraseña
IUModificarContraseña
(from IU_General)
IUMCForm(from Form_General)
11
API_PHPMySQL(from PHP)
<<PHP>>ModificarDatos(from Gestion_Usuario)
<<submit>>
<<query>>
MClienteForm
(from Form_Cliente)
MenuCliente
(from IU_Cliente)
11
DatosCliente
(from Gestion_Usuario)
<<build>>
MCAgenteForm(from Form_Agente)
ModificarContraseña
(from Gestion_Usuario)
<<submit>>
<<build>>
<<submit>>
IUConfirmacion(from IU_General)
<<build>>
<<link>>
DatosAgente
(from Gestion_Usuario)
<<link>>
MenuAgente(from IU_Agente)
11
<<build>>
Diagrama de clases ModificarContraseña 1(1)
Figura C-7. Diagrama de clases ModificarContraseña, (Estereotipos)
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-10
IUModificarContraseña
Contraseña : StringNContraseña : StringConfContraseña : String
AceptarClic()CancelarClid()
(from IU_General)
<<Client Page>>IUMCForm
<<input>> Contraseña<<input>> NContraseña<<input>> ConfContraseña<<submit>> Aceptar<<button>> Cancelar
(from Form_General)
<<Form>>
11
API_PHPMySQL
mysql_close()mysql_connect()mysql_fetch_row()mysql_free_result()mysql_num_rows()mysql_query()mysql_result()mysql_select_db()
(from PHP)
<<PHP>>
ModificarDatos
ConstruirIUConfirmacion()
(from Gestion_Usuario)
<<Server Page>>
<<submit>>
<<query>>
MClienteForm
<<select>> Opcion : String<<submit>> Aceptar<<button>> Cancelar
(from Form_Cliente)
<<Form>>
MenuCliente
Opcion : Integer
AceptarClic()
(from IU_Cliente)
<<Client Page>>
11
DatosCliente
ConstruirIUCliente()
(from Gestion_Usuario)
<<Server Page>>
<<build>>
MCAgenteForm<<select>> Opcion. String<<submit>> Aceptar<<button>> Cancelar
<<Form>>
ModificarContraseña
ContruirIUModificarContraseña()
(from Gestion_Usuario)
<<Server Page>>
<<submit>>
<<build>>
<<submit>>
IUConfirmacion
SeguirClic()timerConfirmacion()
(from IU_General)
<<Client Page>>
<<build>>
<<link>>
DatosAgente
ConstruirIUAgente()
(from Gestion_Usuario)
<<Server Page>>
<<link>>
MenuAgente
Opcion : Integer
AceptarClic()
(from IU_Agente)
<<Client Page>>
11
<<build>>
Diagrama de clases ModificarContraseña 1(1)
Figura C-8. Diagrama de clases Modificar contraseña
El usuario, (Cliente o Agente) inicia el caso de uso cuando realiza la invocación de
la Server page ModificarContraseña, desde el formulario contenido en la Client page
MenuAgente o MenuCliente, según el caso. La Server page, se encarga de construir
la IUModificarContraseña, en la cual se presenta al usuario un formulario que le
solicita la introducción de algunos datos, (Contraseña anterior, Nueva contraseña y
la confirmación de la contraseña nueva), lo cuales se envían a la Server page
ModificarDatos y esta se encarga de actualizar los datos en la base de datos, de
acuerdo a un análisis previo de estos, por medio del cual verifica la contraseña,
(realizando una consulta a la base de datos) y si la confirmación de la contraseña
coincide con la nueva contraseña introducida.
Si los datos son correctos, la Server page, ModificarDatos, modifica lo datos en la
base de datos y construye la Client page IUConfirmacion, la cual contiene un timer
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-11
que se encarga de invocar a la Server page Datos Cliente o Datos Agente, según el
tipo de usuario.
Class MenuAgente {
Var opcion;
AceptarClic() {
Switch(this->opcion){
Caso “Ver producto”:
DatosEmpresa->ConstruirListaProductos()
break;
Caso “ModificarContraseña”:
ModificarContraseña->ModificarContraseña()
break;
Caso “Salir”:
CerrarSesion();
break;
}
}
}
Class MenuCliente {
Var opcion;
AceptarClic() {
Switch(this->opcion){
Caso “Ver empresas“:
DatosEmpresa->ConstruirListaEmpresas()
break;
Caso “ModificarContraseña”:
ModificarContraseña->ModificarContraseña()
break;
Caso “Salir”:
CerrarSesion();
break;
}
}
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-12
}
Class ModificarContraseña {
ConstruirIUModificarContraseña() {
Var Contraseña;
Var Ncontraseña;
Var ConfContraseña;
AceptarClic() {
ModificarDatos->ConstruirIUConfirmacion();
}
CancelarClic() {
Volver a menu agente;
}
}
}
Class ModificarDatos {
ContraseñaAntigua=ModificarContraseña->Contraseña;
ContraseñaNueva=ModificarContraseña->Ncontraseña;
ConfimaciónContraseña=ModificarContraseña->ConfContraseña;
ConstruirIUConfirmacion {
Si ValidarAccesoUsuario->Usuario==C {
TablaConsulta=”Cliente”
}
Si no {
TablaConsulta=”Agente”
}
Query=”Seleccionar Contraseña de la tabla TablaConsulta donde login= ‘ValidarAcceso->login’”;
Resultado=EjecutarConsulta;
Si Resultado[0]==ContraseñaAntigua {
Si ContraseñaNueva==ConfirmacionContraseña {
Query=”Actualizar Contraseña de la tabla TablaConsulta donde login”’ValidarAcceso->login’”;
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-13
EjecutarConsulta;
}
Si no {
Error=1;
}
}
Si no {
Error=1;
}
Si Error==1{
Desplegar mensaje “Contraseña o confirmación de contraseña incorrecta”
ModificarContraseña->ConstruitIUModificarContraseña();
}
Si no {
Desplegar mensaje “Constraseña actualizada”;
Iniciar timer;
}
}
}
Class IUConfirmacion {
TimerConfimacion() { //Después de 2 segundos
Si ValidarAccesoUsuario->Usuario==A{
DatosAgente->ConstuirIUAgente();
}
Si no {
DatosCliente->ConstuirIUCliente();
}
}
SeguirClic() {
Si ValidarAccesoUsuario->Usuario==A{
DatosAgente->ConstuirIUAgente();
}
Si no {
DatosCliente->ConstuirIUCliente();
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-14
}
}
}
C.2.2 Caso de uso RealizarPedido
MenuCliente(from IU_Cliente)
<<Client Page>>
DetallesProducto(from IU_General)
<<Client Page>>
DatosProducto(from Gestion_Producto)
<<Server Page>>
<<build>>
MenuAgente(from IU_Agente)
<<Client Page>>
MClienteForm(from Form_Cliente)
<<Form>>
11
ListaEmpresas(from IU_Cliente)
<<Client Page>>
ListaProductos(from IU_General)
<<Client Page>>MCAgenteForm
(from Form_Agente)
<<Form>>
11
DatosEmpresa(from Gestion_Empresa)
<<Server Page>><<submit>> <<build>>
<<build>>
<<submit>>
DPForm(from Form_General)
<<Form>>
11
LPForm(from Form_General)
<<Form>>11
<<submit>>
LEForm(from Form_Cliente)
<<Form>>
11
<<submit>>
ConfirmacionAdicion(from IU_General)
<<Client Page>>
<<link>>
VistasCarrito(from IU_General)
<<Client Page>>
VCForm(from Form_General)
<<Form>> 11
VistaPorArticulos(from IU_General)
<<Client Page>>
VPAForm(from Form_General)
<<Form>>
11
ConfirmacionCambio(from IU_General)
<<Client Page>>
ConfirmacionEnvioPedido(from IU_General)
<<Client Page>>
ListaEmpresasPedido(from IU_Cliente)
<<Client Page>>
LEPForm(from Form_Cliente)
<<Form>>
11ListaArticulosPedidosEmpresa
(from IU_General)
<<Client Page>>
LAPEForm(from Form_General)
<<Form>>11
ConfirmacionEliminarProductos(from IU_General)
<<Client Page>>
CarritoCompras(from Gestion_Pedido)
<<Server Page>>
<<submit>>
<<submit>>
<<submit>><<build>>
<<build>><<submit>>
<<build>>
<<submit>>
<<build>>
<<link>>
<<link>>
<<build>>
<<submit>>
<<build>>
<<submit>>
<<build>>
<<link>>
DetallesProductoPedido(from IU_General)
<<Client Page>>
<<build>>
DPPForm(from Form_General)
<<Form>> <<submit>>
11
RealizarPedido(from Gestion_Pedido)
<<Server Page>>
<<submit>>
<<build>>
API_PHPMySQL(from PHP)
<<PHP>>
<<query>>
<<query>>
<<query>>
<<query>>
Diagrama de clases RealizarPedido 1(5)
Figura C-9. Diagrama de clases caso de uso RealizarPedido
Este caso de uso, permite al usuario enviar un listado de productos, los cuales son
presentados a cada empresa, proveedora, como un pedido. El caso de uso puede
ser accedido tanto por Clientes como por Agentes.
Después de haberse validado en el sistema, un Cliente puede hacer la solicitud del
listado a las empresas a las cuales se encuentra suscrito, es decir, para las cuales
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-15
se encuentra habilitado para realizar pedidos, escogiendo la opción “Empresas”, en
la Client page MenuCliente, la cual contiene un formulario que se encarga de enviar
la petición a la Server page DatosEmpresa.
La Server page Datos empresa consulta la información del usuario y los datos de las
empresas a las cuales este se encuentra suscrito y construye la lista por medio de la
cual el Cliente puede acceder a la lista de productos de una empresa determinada.
Estos datos son desplegados al Cliente en la Client page ListaEmpresas.
La Client page ListaEmpresas, únicamente, es mostrada a los Clientes debido a que
solamente estos pueden estar suscritos en más de una empresa.
El usuario puede acceder a la lista de productos de una empresa, enviando la
petición a la Server page DatosEmpresa, por medio del formulario que se encuentra
contenido en dicha Client page. De esta forma la Server page, construye una lista
de productos de la empresa y las despliega al cliente en la Client page
ListaProductos.
Un agente solamente puede acceder a la lista de productos de la empresa a la cual
representa. Esto es posible enviando la petición a la Server page DatosEmpresa,
directamente desde la Client page MenuAgente.
Una vez el usuario, (Cliente o Agente), tiene la lista de productos, puede hacer la
petición para que uno de estos sea mostrado en detalle, mediante el Form que se
encuentra en la Client page ListaProductos, éste invoca a la Server page
DatosProducto, para que esta construya la Client page Detalles producto, la cual
contiene un Form, que permite al usuario adicionar el producto al carrito de
compras; si decide hacerlo, datos como cantidad, valor y código del producto son
enviados a la Server page CarritoCompras, la cual se encarga de construir el carrito
de compras del usuario y una Client page de confirmación, la cual dispone de un
timer que invoca a la Server page DatosEmpresa para que construya la lista de
productos, en la cual se encontraba el usuario cuando adicionó el producto al carrito
de compras.
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-16
Solamente si el usuario ha agregado, al menos, un producto al carrito de compras,
es posible acceder a él, mediante la opción que se encuentra en las Client page,
ListaProductos y ListaEmpresas, la cual solamente está disponible si existen
productos en el carrito de compras.
La Client page VistasCarrito, en la cual se muestran varias opciones, (Vista de
pedidos por artículos, vista de pedido por empresas y eliminar productos), que
permiten al usuario gestionar los productos que se encuentran en él, es construida
cuando se invoca la Server page CarritoCompras.
La Client page VistaPorArticulos es construida por la Server page CarritoCompras
cuando el usuario, realiza la petición desde el Form, contenido en la Client page
VistasCarrito. Esta Client page, muestra al usuario la información correspondiente a
Referencia, Cantidad, Valor y Valor total de todos los productos contenidos en el
carrito de compras; Además contiene un Form que permite al usuario invocar la
Server page Carrito Compras, para ver en detalle cada producto contenido en el
carrito de compras y a la Server page Realizar Pedido, para enviar la solicitud del
pedido de los productos mostrados en ésta Client page. Esta solicitud es
almacenada en la base de datos, en caso de que en la misma solicitud se envíen
productos de diferentes empresas, se almacenarán un pedido para cada empresa.
Cuando el usuario, realiza un clic sobre la referencia de un producto mostrado en la
Client page VistaPorArticulos; el Form, contenido en ella, envia la petición a la
Server page CarritoCompras la cual se encarga de construir la Client page que
contiene información, almacenada en la base de datos, del producto escogido, y la
cantidad que el usuario quiere de ese producto. Además contiene un enlace que
permite al usuario cambiar la cantidad de producto. Si decide realizar cambios,
estos son enviados a la Server page CarritoCompras,por medio de un Form. Esta
Server page realiza el cambio, actualiza el carrito de compras y construye una Client
page que indica al usuario que el cambio ha sido realizado y reenvia después de un
corto tiempo (aprox. 2 seg) al la Client page en la cual estaba antes de invocar la
Client page DetalleProductoPedido.
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-17
También el usuario, utilizando el Form contenido en Client page VistasCarrito,
puede enviar a la Server page CarritoCompras, la solicitud de eliminar productos del
carrito de compras, En este caso, la Server page construye la Client page,
ListaEmpresasPedido, que contiene una lista de las empresas a las cuales se les va
a realizar el pedido, por medio de esta Client page el usuario puede acceder a la
lista de productos que va a pedir de una determinada empresa, enviando la
invocación, desde el Form contenido en la Client page. Esta solicitud es enviada a la
Server page CarritoCompras, la cual construye la lista de productos y la despliega al
usuario en la Client page, ListaArticulosPedidosEmpresa. Por medio del Form
contenido en esta Client page, el usuario puede hacer la petición de eliminación de
un producto del carrito de compras. Esta petición es enviada a la Server page
CarritoCompras la cual envia una Client page al usuario solicitándole la confirmación
de la eliminación del producto del carrito de compras. Si el usuario decide eliminar el
producto, la Server page reconstruye el carrito de compras y envía al usuario la
Client page ListaArticulosPedidosEmpresa, si aún existen artículos en el carrito de
compras de esa empresa, en caso de que no existan, envía al usuario la Client page
inmediatamente superior, que en este caso se trata de la Client page
ListaEmpresasPedido. En caso de que el carrito de compras llegara a quedar vacio
la Server page enviaría al usuario una aviso informándole que el carrito de compras
se encuentra vacío e inmediatamente después a la Client page desde la cual se
envió la solicitud de despliegue de la Client page VistasCarrito, (puede ser
ListaEmpresas o ListaProductos).
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-18
Diagrama de clases RealizarPedido 2(5)
MenuCliente
Opcion : Integer
AceptarClic()CancelarClic()
(from IU_Cliente)
<<Client Page>>
MenuAgente
Opcion : Integer
AceptarClic()
(from IU_Agente)
<<Client Page>>
DetallesProducto
CodProducto : IntegerCantidad : Integer
AceptarClic()CancelarClic()
(from IU_General)
<<Client Page>>
LPForm
<<select>> Opcion<<submit>> Aceptar
(from Form_General)
<<Form>>
DPForm
<<submit>> Aceptar<<button>> Cancelar<<input>> Cantidad
(from Form_General)
<<Form>>
11
DatosProducto
ConstruirDetallesProducto()
(from Gestion_Producto)
<<Server Page>>
<<build>>
<<submit>>
CarritoCompras
ConstruirVistasCarrito()ConstruirDetallesProductoPedido()ContstruirListaEmpresasPedido()ConstruirListaArticulosPedidosEmpresa()ConstuirVistaPorArticulos()ConstruirConfirmaciones()EliminarProducto()
(from Gestion_Pedido)
<<Server Page>>
<<submit>>
MClienteForm
<<select>> Opcion : String<<submit>> Aceptar<<button>> Cancelar
(from Form_Cliente)
<<Form>>
11
ListaEmpresas
Opcion : String
AceptarClic()
(from IU_Cliente)
<<Client Page>>
LEForm
<<select>> Opcion<<submit>> Aceptar
(from Form_Cliente)
<<Form>>
11
ListaProductos
Opcion : String
AceptarClic()
(from IU_General)
<<Client Page>>
11
ConfirmacionAdicion
SeguirClic()Timer()
(from IU_General)
<<Client Page>>
<<build>>
MAgenteForm
<<select>> Opcion : String<<submit>> Aceptar<<button>> Cancelar
(from Form_Agente)
<<Form>>
11
DatosEmpresa
ConstruirListaEmpresas()ConstruirListaProductos()
(from Gestion_Empresa)
<<Server Page>>
<<submit>> <<build>>
<<submit>>
<<build>>
<<link>>
<<submit>>
API_PHPMySQL
mysql_close()mysql_connect()mysql_fetch_row()mysql_free_result()mysql_num_rows()mysql_query()mysql_result()mysql_select_db()
(from PHP)
<<PHP>>
<<query>>
<<query>>
<<query>>
Figura C-10. Diagrama de clases RealizarPedido, (Adicionar producto al carrito de
compras)
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-19
Diagrama de clases RealizarPedido 3(5)
ListaProductos
Opcion : String
AceptarClic()
(from IU_General)
<<Client Page>>
ListaEmpresas
Opcion : String
AceptarClic()
(from IU_Cliente)
<<Client Page>>LPForm
<<select>> Opcion<<submit>> Aceptar
(from Form_General)
<<Form>>
11
LEForm
<<select>> Opcion<<submit>> Aceptar
(from Form_Cliente)
<<Form>>
11VistasCarrito
Opcion : String
AceptarClic()
(from IU_General)
<<Client Page>>
VCForm
<<select>> Opcion<<submit>> Aceptar
(from Form_General)
<<Form>>
11
ListaEmpresasPedido
Opcion : String
AceptarClic()
(from IU_Cliente)
<<Client Page>>
LEPForm
<<select>> Opcion<<submit>> Aceptar
(from Form_Cliente)
<<Form>>
11
VistaPorArticulos
CodProductos : VariantCantProductos : VariantValorArticulos : Variant
RealizarPedidoClic()Producto()VolverClic()
(from IU_General)
<<Client Page>>
ConfirmacionEnvioPedido
CodPedido : Integer
SeguirClic()InicioClic()
(from IU_General)
<<Client Page>>
API_PHPMySQL
mysql_close()mysql_connect()mysql_fetch_row()mysql_free_result()mysql_num_rows()mysql_query()mysql_result()mysql_select_db()
(from PHP)
<<PHP>>
RealizarPedido
AlmacenarPedido()ConstruirConfirmacion()
(from Gestion_Pedido)
<<Server Page>>
<<build>><<query>>
VPAForm
<<link>> CantidadProducto<<link>> RealizarPedido<<link>> Volver<<input>> CodCliente
(from Form_General)
<<Form>>
11
<<submit>>
CarritoCompras
ConstruirVistasCarrito()ConstruirDetallesProductoPedido()ContstruirListaEmpresasPedido()ConstruirListaArticulosPedidosEmpresa()ConstuirVistaPorArticulos()ConstruirConfirmaciones()EliminarProducto()
(from Gestion_Pedido)
<<Server Page>>
<<submit>><<submit>>
<<build>>
<<submit>>
<<build>><<build>>
<<submit>>
<<link>>
<<query>>
<<submit>>
Figura C-11. Diagrama de clases RealizarPedido, (Enviar Pedido)
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-20
Diagrama de clases Caso de uso RealizarPedido 4(5)
VistasCarrito
Opcion : String
AceptarClic()
(from IU_General)
<<Client Page>>
VCForm
<<select>> Opcion<<submit>> Aceptar
(from Form_General)
<<Form>>
11
ListaEmpresasPedido
Opcion : String
AceptarClic()
(from IU_Cliente)
<<Client Page>>
LEPForm
<<select>> Opcion<<submit>> Aceptar
(from Form_Cliente)
<<Form>>
11
ListaArticulosPedidosEmpresa
CodProducto : Integer
EliminarClic()EmpresasClic()
(from IU_General)
<<Client Page>>
LAPEForm
<<select>> Opcion<<submit>> Eliminar<<button>> Volver
(from Form_General)
<<Form>>
11
CarritoCompras
ConstruirVistasCarrito()ConstruirDetallesProductoPedido()ContstruirListaEmpresasPedido()ConstruirListaArticulosPedidosEmpresa()ConstuirVistaPorArticulos()ConstruirConfirmaciones()EliminarProducto()
(from Gestion_Pedido)
<<Server Page>>
<<submit>>
<<build>>
<<submit>>
<<build>>
<<submit>>
ConfirmacionEliminarProductos
AceptarClic()CancelarClic()
(from IU_General)
<<Client Page>>
<<build>>
<<link>>
Figura C-12. Diagrama de clases caso de uso RealizarPedido, (Eliminar producto del
carrito de compras)
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-21
Diagrama de clases Caso de uso RealizarPedido 5(5)
DetallesProductoPedido
CantProducto : Integer
AceptarClic()CancelarClic()
(from IU_General)<<Client Page>>
VistaPorArticulos
CodProductos : VariantCantProductos : VariantValorArticulos : Variant
RealizarPedidoClic()Producto()VolverClic()
(from IU_General)<<Client Page>>
VPAForm
<<link>> CantidadProducto<<link>> RealizarPedido<<link>> Volver<<input>> CodCliente
(from Form_General)<<Form>>
11
DPPForm
<<submit>> Aceptar<<button>> Cancelar<<input>> NCantidad
(from Form_General)<<Form>>
11
ConfirmacionCambio
SeguirClic()Timer()
(from IU_General)<<Client Page>>
CarritoCompras
ConstruirVistasCarrito()ConstruirDetallesProductoPedido()ContstruirListaEmpresasPedido()ConstruirListaArticulosPedidosEmpresa()ConstuirVistaPorArticulos()ConstruirConfirmaciones()EliminarProducto()
(from Gestion_Pedido)<<Server Page>>
<<build>>
<<build>> <<submit>>
<<submit>>
<<build>>
<<link>>
API_PHPMySQL
mysql_close()mysql_connect()mysql_fetch_row()mysql_free_result()mysql_num_rows()mysql_query()mysql_result()mysql_select_db()
(from PHP)
<<PHP>>
<<query>>
Figura C-13. Diagrama de clases Caso de uso RealizarPedido, (Cambiar cantidad de
producto a pedir)
Class DatosEmpresa {
ConstruirListaEmpresas() {
Query=”Consultar lista de empresas de la tabla Cliente en donde el cliente se encuentre registrado”;
Resultado=”Ejecutar consulta(query)”;
Desplegar lista resultado;
}
Construir ListaProductos(CodigoEmpresa) {
Query=”Seleccionar Nombre, codigo, referencia de la tabla productos donde codigo empresa=’CodigoEmpresa’”;
Resultado=”Ejecutar consulta(query)”;
Desplegar lista resultado;
}
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-22
}
Class ListaEmpresas {
Var opcion;
AceptarClic() {
Switch (estaclase->opcion) {
Caso “VerCarritoCompras”
CarritoCompras ->ConstuirVistasCarrito;
Break;
Caso “VerProductos”:
DatosEmpresa->ConstruirListaProductos(estaclase ->opcion);
Break;
}
}
}
Class ListaProductos {
Var opcion;
AceptarClic() {
Switch (estaclase->opcion) {
Caso “VerCarritoCompras”
CarritoCompras ->ConstuirVistasCarrito;
Break;
Caso “VerDetalleProducto”:
DatosProducto->ConstruirDetallesProducto(estaclase ->opcion);
Break;
Caso “volver”:
DatosEmpresa->ConstruirListaEmpresas(),
Break;
}
}
}
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-23
Class DatosProducto {
ConstruirDetallesProducto() {
Query=”Consultar Nombre, Cantidad, Empresa, Valor de la tabla productos donde Codigo=’ListaProductis->opcion’”;
Resultado=EjecutarConsulta(Query);
Desplegar datos producto;
}
}
Class DetallesProducto {
AceptarClic() {
Adicionar producto al carrito de compras;
CarritoCompras ->TipoConfirmacion=Adicion;
CarritoCompras ->ConstruirConfirmacion();
}
CancelarClic() {
Volver a la lista de productos;
}
}
Class ConfirmacionAdicion {
TimerConfimacion() { //Después de 2 segundos
DatosEmpresa->ConstruirListaProductos();
}
SeguirClic() {
DatosEmpresa->ConstruirListaProductos();
}
}
Class CarritoCompras {
Var TipoConfirmacion;
ConstruirVistasCarrito() {
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-24
Desplegar opciones de vistas del carrito; //por artículos, por empresas, //eliminar productos, volver a //lista de empresas o lista de //productos.
}
ConstruirDetallesProductoPedido(codigo) {
Query=consultar todos los datos de la tabla productos donde codigo=’codigo’;
Resultado=Ejecutar consulta;
Desplegar resultados;
}
ConstruirListaEmpresasPedido(codigo) {
Para todos los codigos de las empresas del carrito de compras{
Query=Consultar nombre, codigo de la tabla empresas donde codigo=’codigo’;
Resultado=Ejecutar consulta;
Almacenar resultado;
}
Desplegar resultados;
}
ConstruirListaArticulosPedidosEmpresa(codigo) {
Para todos los codigos de los productos del carrito de compras donde codigo = ‘codigo’ {
Query consultar nombre, codigo de la tabla productos donde codigo=’codigo’;
Resultado=Ejecutar consulta;
Almacenar resultado;
}
Desplegar resultado;
}
ConstruirVistaPorArticulos(CodigoEmpresa) {
Si CodigoEmpresa=”” {
Desplegar los datos de los productos almacenados en el carrito de compras;
Calcular valores totales; //Valor total del pedido;
Desplegar valores totales;
}
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-25
}
ConstruirConfirmaciones() {
Switch (estaclase->TipoConfirmacion) {
Caso “Adicion”:
Desplegar “Articulo adicionado”;
IniciarTimer;
Break;
Caso “Cambio”:
Desplegar “Cambio realizado”;
IniciarTimer;
Break;
Caso “Eliminar”:
Desplegar “Esta seguro de que desea eliminar el (los) producto(s) del carrito de compras?”;
Desplegar Boton Aceptar;
Desplegar Boton Cancelar;
Break;
}
}
EliminarProducto(codigo) {
Borrar de la lista de productos el articulo de codigo = codigo;
}
}
Class VistaPorArticulos {
Var CodProductos;
Var CantProductos;
Var ValorArticulos;
Var CodigoP;
RealizarPedidoClic(){
RealizarPedido->AlmacenarPedido();
RealizarPedido->ConstuirConfirmacion();
}
ProductoClic() {
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-26
CarritoCompras ->ConstuirDetallesProductoPedido(estaclase->CodigoP);
}
VolverClic() {
Si PaginaAnterior==Empresas {
DatosEmpresa->ConstuirListaEmpresas();
}
Si no {
DatosEmpresa->ConstuirListaProductos();
}
}
}
Class ListaEmpresasPedido {
Var Opcion;
AceptarClic(tipo) {
Si tipo==eliminar {
CarritoCompras ->ConstuirListaArticulosPedidoEmpresa(estaclase->Opcion);
}
else {
CarritoCompras ->ConstruirVistaPorArticulos(estaclase->Opcion);
}
}
}
Class ConfirmacionEnvioPedido {
Si CarritoCompras <> Vacio {
SeguirClic() {
CarritoCompras ->ConstruirVistasCarrito();
}
}
else {
Si ValidarAccesoUsuario ->Login == Cliente {
DatosCliente->ConstruirIUCliente();
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-27
}
Else{
DatosAgente->ConstruirIUAgente();
}
}
}
Class RealizarPedido {
AlmacenarPedido() {
CodigosProductos= VistaPorArticulos->CodProductos;
CantProductos= VistaPorArticulos->CantProductos;
ValorProductos=VistaPorArticulos->ValorArticulos;
Query=”Almacenar en la base de datos ProductoPedido CodigosProductos, CantidadProductos, ValorProductos, CodigoCliente, CodigoAgente, Fecha”;
EjecutarConsulta;
EstaClase->ConstruirConfirmacion();
}
ConstruirConfirmacion() {
Desplegar “Pedido realizado”;
Query= ”Seleccionar codigo del ultimo item insertado, por este usuario, en la tabla pedido”;
Resultado=EjecutarConsulta;
Almacenar resultado;
Desplegar “Codigo del pedido: ‘Resultado[0]’”;
}
}
Class DetallesProductoPedido {
AceptarClic(CodigoProducto) {
ActualizarCantidadProductoCarritoCompras;
CarritoCompras ->CosntruirConfirmaciones(“Cambio”);
}
CancelarClic() {
CarritoCompras ->ConstruirDetallesProductoPedido();
}
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-28
}
Class ConfirmacionCambio {
TimerConfimacion() { //Después de 2 segundos
CarritoCompras ->ConstruirDetallesProductoPedido();
}
SeguirClic() {
CarritoCompras ->ConstruirDetallesProductoPedido();
}
}
Class ListaArticulosPedidosEmpresa {
EliminarClic() {
CarritoCompras ->EliminarProducto();
}
EmpresasClic() {
CarritoCompras ->ConstruirListaEmpresasPedido;
}
}
Class ListaEmpresasPedido {
Var Opcion;
AceptarClic() {
CarritoCompras ->ConstruirListaArticulosPedidosEmpresa(estaclase ->opcion);
}
}
Class ConfirmacionEliminarProductos {
AceptarClic() {
Si ya no hay mas articulos de la empresa actual {
CarritoCompras -> ConstruirListaArticulosPedidosEmpresa();
}
Si no si hay articulos todavia{
CarritoCompras ->ConstruirListaEmpresasPedido();
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-29
}
Si no {
Si ValidarAccesoUsuario ->Login == Cliente {
DatosCliente->ConstruirIUCliente();
}
Else {
DatosAgente->ConstruirIUAgente();
}
}
}
CancelarClic() {
CarritoCompras ->ConstruirListaEmpresasPedido();
}
}
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-30
C.2.3 Caso de uso BuscarPedido
Diagrama de clases Caso de uso BuscarPedido 1(3)
MenuCliente(from IU_Cliente)
<<Client Page>>
MenuAgente(from IU_Agente)
<<Client Page>>
CPForm(from Form_General)
<<Form>>L5PForm
(from Form_General)
<<Form>>
CarritoCompras(from Gestion_Pedido)
<<Server Page>>
<<submit>> <<submit>>
ConfirmacionCancelacion(from IU_General)
<<Client Page>><<build>>
DatosCliente(from Gestion_Usuario)
<<Server Page>>
DatosAgente(from Gestion_Usuario)
<<Server Page>>
MClienteForm(from Form_Cliente)
<<Form>>
11
MAgenteForm(from Form_Agente)
<<Form>>
11
CodigoCliente(from IU_Agente)
<<Client Page>>
InicialEmpresa(from IU_Cliente)
<<Client Page>>
ListaEmpresasInicial(from IU_Cliente)
<<Client Page>>
CodigoPedido(from IU_General)
<<Client Page>>
11
CCForm(from Form_Agente)
<<Form>>11
IEForm(from Form_Cliente)
<<Form>>
11
LEIForm(from Form_Cliente)
<<Form>>
11
Lista5Pedidos(from IU_General)
<<Client Page>>
11
TipoBusqueda(from IU_General)
<<Client Page>>TBForm
(from Form_General)
<<Form>>
11
CCancelacionForm(from Form_General)
<<Form>>
11
<<submit>>
<<submit>>
API_PHPMySQL(from PHP)
<<PHP>>
RealizarBusqueda(from Gestion_Pedido)
<<Server Page>><<submit>>
<<submit>>
<<build>>
<<build>>
<<build>>
<<build>>
<<submit>>
<<submit>>
<<submit>>
<<build>><<build>> <<submit>>
<<submit>>
<<query>>
Figura C-14. Diagrama de clases, caso de uso BuscarPedido
Cuando el Cliente o Agente, desde su respectiva Client page (MenuCliente,
MenuAgente) invoca la interfaz de búsqueda de pedido, la server page
RealizarBusqueda, atiende la solicitud.
Si se trata de un agente, la Server page RealizarBusqueda, construira la Client page
CodigoCliente, la cual contiene un Form, para enviar el codigo del cliente, a nombre
quien se encuentra el pedido que desea buscar. Cuando el Agente retorna el código
del cliente a la server page, esta se encarga de construir otra Client page,
TipoBusqueda, por medio de la cual el usuario puede escoger el criterio de
búsqueda de pedido, (por código o listar los 5 últimos pedidos), esto es enviado a la
Server page utilizando el Form, Tbform, contenido en la Client page. Si escoge la
opción de búsqueda por código. La Server page, construye la Client page
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-31
CodigoPedido, que contiene un Form, por medio del cual el Agente puede enviar a
la Server page CarritoCompras el código del pedido que desea ver, de esta forma,
se muestra el pedido en la Client page VistaPorArticulos. De la misma forma si el
Agente escoge la opción, listar los últimos 5 pedidos, la server page
RealizarBusqueda construira, la Client page Lista5Pedidos, la cual contiene una lista
de los últimos 5 pedidos realizados a la empresa. Por medio del Form contenido en
esta Client page el Agente puede enviar el Código del pedido que desea ver a la
Server page CarritoCompras, para que construya la Client page VistaPorArticulos.
En el caso de Cliente la Server page RealizarBusqueda, construye la Client page,
InicialEmpresa, por medio de la cual y valiéndose del Form contenido en ella, el
cliente debe introducir un caracter o caracteres, con los que inicia la empresa a la
cual realizó el pedido que desea ver. Esta inicial es enviada de nuevo a la server
page para que esta construya la Client page ListaEmpresasInicial, la cual contiene
una lista de las empresas a las cuales el cliente esta suscrito y que su nombre
empieza por el(los) caracter(es) introducido(s). Además esta Client page contiene
un Form, por medio del cual el Cliente envía a la Server page la inicial de la
empresa, es decir solamente se buscarán pedidos de la empresa seleccionada. A
continuación la Server page construye la Client page TipoBusqueda y el
procedimiento a seguir es exactamente el mismo que el del agente, desde esta
Client page en adelante.
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-32
Diagrama de clases Caso de uso BuscarPedido 2(3)
MenuCliente
Opcion : Integer
AceptarClic()CancelarClic()
(from IU_Cliente)
<<Client Page>>
CPForm
<<input>> CodigoPedido<<submit>> Aceptar<<button>> Cancelar
(from Form_General)
<<Form>>
CarritoCompras
ConstruirVistasCarrito()ConstruirDetallesProductoPedido()ContstruirListaEmpresasPedido()ConstruirListaArticulosPedidosEmpresa()ConstuirVistaPorArticulos()ConstruirConfirmaciones()EliminarProducto()
(from Gestion_Pedido)
<<Server Page>>
<<submit>>
L5PForm
<<select>> ListaPedidos<<submit>> Aceptar<<button>> Cancelar
(from Form_General)
<<Form>>
<<submit>>
MClienteForm
<<select>> Opcion : String<<submit>> Aceptar<<button>> Cancelar
(from Form_Cliente)
<<Form>>
11
InicialEmpresa
InicialEmpresa : String
AceptarClic()CancelarClic()
(from IU_Cliente)
<<Client Page>>IEForm
<<select>> InicialEmpresa<<submit>> Aceptar<<button>> Cancelar
(from Form_Cliente)
<<Form>>
11
ListaEmpresasInicial
Opcion
AceptarClic()CancelarClic()
(from IU_Cliente)
<<Client Page>>
LEIForm
<<select>> Opcion<<submit>> Aceptar<<button>> Cancelar
(from Form_Cliente)
<<Form>>
11
TipoBusqueda
Opcion
AceptarClic()CancelarClic()
(from IU_General)
<<Client Page>>TBForm
<<select>> Opcion<<submit>> Aceptar<<button>> Cancelar
(from Form_General)
<<Form>>
11
CodigoPedido
CodigoPedido : String
AceptarClic()CancelarClic()
(from IU_General)
<<Client Page>>
11
Lista5Pedidos
CodigoPedido
AceptarClic()CancelarClic()
(from IU_General)
<<Client Page>>
11
RealizarBusqueda
ConstruirIUCodigoCliente()ConstruirIUInicialEmpresa()ConstruirListaEmpresas()ConstruirIUIntroduccionCodigoPedido()ConstruirLista5UltimosPedidos()ConstruirTipoBusqueda()BuscarPedido()ConstruirCodigoPedido()
(from Gestion_Pedido)
<<Server Page>>
<<submit>>
<<build>> <<submit>>
<<build>>
<<submit>>
<<build>><<submit>>
<<build>>
<<build>>
API_PHPMySQL
mysql_close()mysql_connect()mysql_fetch_row()mysql_free_result()mysql_num_rows()mysql_query()mysql_result()mysql_select_db()
(from PHP)
<<PHP>>
<<query>>
Figura C-15. Diagrama de clases, caso de uso BuscarPedido, (búsqueda de pedido por
un cliente)
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-33
Diagrama de clases Caso de uso BuscarPedido 3(3)
MenuAgente
Opcion : Integer
AceptarClic()
(from IU_Agente)
<<Client Page>>
CPForm
<<input>> CodigoPedido<<submit>> Aceptar<<button>> Cancelar
(from Form_General)
<<Form>>
CarritoCompras
ConstruirVistasCarrito()ConstruirDetallesProductoPedido()ContstruirListaEmpresasPedido()ConstruirListaArticulosPedidosEmpresa()ConstuirVistaPorArticulos()ConstruirConfirmaciones()EliminarProducto()
(from Gestion_Pedido)
<<Server Page>>
<<submit>>
L5PForm
<<select>> ListaPedidos<<submit>> Aceptar<<button>> Cancelar
(from Form_General)
<<Form>>
<<submit>>
MAgenteForm
<<select>> Opcion : String<<submit>> Aceptar<<button>> Cancelar
(from Form_Agente)
<<Form>>
11
CCForm
<<input>> CodigoCliente<<submit>> Aceptar<<button>> Cancelar
(from Form_Agente)
<<Form>>
TipoBusqueda
Opcion
AceptarClic()CancelarClic()
(from IU_General)
<<Client Page>>TBForm
<<select>> Opcion<<submit>> Aceptar<<button>> Cancelar
(from Form_General)
<<Form>>
11
CodigoPedido
CodigoPedido : String
AceptarClic()CancelarClic()
(from IU_General)
<<Client Page>>
11
Lista5Pedidos
CodigoPedido
AceptarClic()CancelarClic()
(from IU_General)
<<Client Page>>
11
CodigoCliente
CodigoCliente : String
AceptarClic()CancelarClic()
(from IU_Agente)
<<Client Page>>
11
RealizarBusqueda
ConstruirIUCodigoCliente()ConstruirIUInicialEmpresa()ConstruirListaEmpresas()ConstruirIUIntroduccionCodigoPedido()ConstruirLista5UltimosPedidos()ConstruirTipoBusqueda()BuscarPedido()ConstruirCodigoPedido()
(from Gestion_Pedido)
<<Server Page>>
<<submit>>
<<build>><<submit>>
<<build>>
<<build>> <<build>>
API_PHPMySQL
mysql_close()mysql_connect()mysql_fetch_row()mysql_free_result()mysql_num_rows()mysql_query()mysql_result()mysql_select_db()
(from PHP)
<<PHP>>
<<query>>
Figura C-16. Diagrama de clases, Caso de uso BuscarPedido, (búsqueda por agente)
Class CodigoCliente {
Var CodigoCliente;
AceptarClic() {
RealizarBusqueda->ConstruirTipoBusqueda();
}
CancelarClic() {
DatosAgente->ConstruirIUAgente();
}
}
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-34
Class InicialEmpresa {
Var InicialEmpresa;
AceptarClic() {
RealizarBusqueda->ConstruirListaEmpresas(estaclase->InicialEmpresa);
}
CancelarClic() {
DatosCliente->ConstruirIUCliente();
}
}
ClassListaEmpresasInicial {
Var Opcion;
AceptarClic(){
RealizarBusqueda->ConstruirTipoBusqueda(estaclase->Opcion);
}
CancelarClic() {
RealizarBusqueda->ConstruirIUInicialEmpresas();
}
}
Class TipoBusqueda {
Var Opcion;
AceptarClic() {
Si estaclase->Opcion == “BusquedaPorCodigo” {
RealizarBusqueda->ConstruirIUIntroduccionCodigoPedido();
}
Si no {
RealizarBusqueda->ConstruirLista5UltimosPedidos();
}
}
CancelarClic() {
Si ValidarAccesoUsuario->Login=”Cliente” {
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-35
RealizarBusqueda->ConstruirListaEmpresas;
}
Si no {
RealizarBusqueda->ConstruirIUCodigoCliente;
}
}
}
Class CodigoPedido {
Var CodigoPedido;
AceptarClic() {
Query=”Consultar todos lo datos de la tabla pedido donde codigo=’codigo’”;
Resultado=Ejecutar consulta (Query);
AlmacenarResultado;
CarritoCompras ->ConstruirVistaPorArticulos(Resultado);
}
CancelarClic() {
RealizarBusqueda->CosntruirTipoBusqueda();
}
}
Class Lista5Pedidos {
Var CodigoPedido;
AceptarClic() {
Query=”Consultar todos lo datos de la tabla pedido donde codigo=’codigo’”;
Resultado=Ejecutar consulta (Query);
AlmacenarResultado;
CarritoCompras ->ConstruirVistaPorArticulos(Resultado);
}
CancelarClic() {
RealizarBusqueda->CosntruirTipoBusqueda();
}
}
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-36
Class RealizarBusqueda {
ConstruirIUCodigoCliente() {
Desplegar input;
Desplegar boton Aceptar;
Desplegar boton Cancelar;
}
ConstruirIUInicialEmpresa() {
Desplegar input
Desplegar boton Aceptar;
Desplegar boton Cancelar;
}
ConstruirListaEmpresas(CodigoCliente, Inicial) {
Query="Seleccionar todas las empresas en las que se encuentre registrado el cliente con codigo='codigo' y empiecen por='Inicial'";
Resultado=Ejecutar consulta(query);
AlmacenarResultado;
Desplegar resultado;
Desplegar boton Aceptar;
Desplegar boton Cancelar;
}
CosntruirIUIntroduccionCodigoPedido() {
Desplegar input;
Desplegar boton Aceptar;
Desplegar boton Cancelar;
}
ConstruirLista5UltimosPedidos(CodigoCliente, CodigoEmpresa) {
Query="Seleccionar codigo de los ultimos 5 registro de la tabla pedido donde CodigoCliente = 'CodigoCliente' y CodigoEmpresa ='CodigoEmpresa'";
Resultado=Ejecutar consulta(Query);
Desplegar resultado;
Desplegar boton Aceptar;
Desplegar boton Cancelar;
}
ConstruirTipoBusqueda() {
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-37
Desplega select;
Desplegar boton Aceptar;
Desplegar boton Cancelar;
}
C.3 DIAGRAMAS INTERACCIÓN DEL SISTEMA
C.3.1 Caso de uso ValidarAcceso
: Cliente
: MenuPrincipal
: MPForm : ValidarAcceso
: ValidarAccesoUsuario
: VAForm : DatosCliente : API_PHPMySQL
: MenuCliente
1: AceptarClic( )
2: Activa
3: CosntruirIUValidarA( )4: Activa
7: Activa
8: ConstruirIUCliente( )
9: mysql_query( )
11: mysql_fetch_row( )
10: mysql_num_rows( )
12: mysql_free_result( )
13: Activa
5: Muestra
6: AceptalClic( )
14: Muestra
MSC Validar Acceso 1(2)
Figura C-17. Carta de secuencias de mensajes Validar acceso Cliente.
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-38
MSC Validar Acceso 2(2)
: MPForm
: Agente
: MenuPrincipal
: ValidarAcceso
: ValidarAccesoUsuario
: VAForm : DatosAgente : API_PHPMySQL
: MenuAgente
1: AceptarClic( )
2: Activa
3: CosntruirIUValidarA( )4: Activa
5: Muestra
6: AceptalClic( )
7: Activa
8: ConstruirIUAgente( )
9: mysql_query( )
11: mysql_fetch_row( )
10: mysql_num_rows( )
12: mysql_free_result( )
13: Activa
14: Muestra
Figura C-18. Carta de secuencia de mensajes Validar acceso, Agente
C.3.2 Caso de uso ModificarContraseña
Ver página siguiente...
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-39
: Cliente : MenuCliente : MCliente
Form : ModificarContraseña
: IUModificarContraseña
: IUMCForm : ModificarDatos
: IUConfirmacion
: DatosCliente
1: AceptarClic( )
2: Activa
3: ContruirIUModificarContraseña( )
4: Activa
5: Muestra
6: AceptarClic( )7: Activa
8: ConstruirIUConfirmacion( )
9: Activa
11: timerConfirmacion( )
10: Muestra
12: ConstruirIUCliente( )
13: Activa
14: Muestra
MSC Modificar Contraseña 1(2)
Figura C-19. Carta de secuencia de mensajes Modificar Contraseña Cliente
MSC Modificar Contraseña 2(2)
: Agente : MenuAgente : MAgente
Form : ModificarContraseña
: IUModificarContraseña
: IUMCForm : ModificarDatos
: IUConfirmacion
: DatosAgente
1: AceptarClic( )
14: Muestra
2: Activa
3: ContruirIUModificarContraseña( )
4: Activa
5: Muestra
6: AceptarClic( )7: Activa
8: ConstruirIUConfirmacion( )
9: Activa
11: timerConfirmacion( )
10: Muestra
12: ConstruirIUAgente( )
13: Activa
Figura C-20. Carta de secuencia de mensajes Modificar Contraseña Agente
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-40
C.3.3 Caso de uso RealizarPedido
Ver página siguiente...
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-41
MSC RealizarPedido 1(7)
: Cliente
: MenuCliente : MClienteForm
: DatosEmpresa
: ListaEmpresas
: LEForm : ListaProductos
: LPForm : DatosProducto
: DetallesProducto
: DPForm : CarritoCompras
: Confirmacion
: API_PHPMySQL
1: AceptarClic( )2: Activa
3: ConstruirListaEmpresas( )
8: Activa9: Muestra
10: AceptarClic( )11: Activa
12: ConstruirListaProductos( )
17: Activa
18: Muestra
19: AceptarClic( )20: Activa
21: ConstruirDetallesProducto( )
26: Activa27: Muestra
28: AceptarClic( )29: Activa
30: ConstruirConfirmaciones(Adicion)
31: Activa
32: Muestra
33: Timer( )
34: ConstruirListaProductos( )
35: Activa
36: Muestra
4: mysql_query( )
5: mysql_num_rows( )
6: mysql_fetch_row( )
7: mysql_free_result( )
13: mysql_query( )
14: mysql_num_rows( )
15: mysql_fetch_row( )
16: mysql_free_result( )
22: mysql_query( )
23: mysql_num_rows( )
24: mysql_fetch_row( )
25: mysql_free_result( )
Figura C-21. Carta de secuencia de mensajes Realizar Pedido, Adición de productos al carrito de compras por un Cliente
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-42
MSC RealizarPedido 2(7)
: Agente
: MenuAgente : MAgenteForm
: DatosEmpresa
: ListaProductos
: LPForm : DatosProducto
: DetallesProducto
: DPForm : CarritoCompras
: Confirmacion
: API_PHPMySQL
1: AceptarClic( )
2: Activa
8: Activa
9: Muestra
10: AceptarClic( )
26: Activa27: Muestra
11: Activa
12: ConstruirDetallesProducto( )
17: Activa18: Muestra
19: AceptarClic( )20: Activa
21: ConstruirConfirmaciones(Adicion)
22: Activa
23: Muestra
24: Timer( )
25: ConstruirListaProductos( )
4: mysql_query( )
5: mysql_num_rows( )
6: mysql_fetch_row( )
7: mysql_free_result( )
13: mysql_query( )
14: mysql_num_rows( )
15: mysql_fetch_row( )
16: mysql_free_result( )
3: ConstruirListaProductos( )
Figura C-22. Carta de secuencia de mensajes Realizar Pedido, Adición de productos al carrito de compras por un Agente
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-43
MSC RealizarPedido 3(7)
: Cliente : VistasCarrito : VCForm : Carrito
Compras : VistaPorArticulos
: VPAForm : RealizarPedido
: Confirmacion
: API_PHPMySQL
1: AceptarClic( )2: Activa
3: ConstuirVistaPorArticulos(argname)
4: Activa5: Muestra
6: RealizarPedidoClic( )7: Activa
8: AlmacenarPedido()
10: ConstruirConfirmacion()
11: Activa
12: Muestra
13: SeguirClic( )
14: ConstruirVistasCarrito()
15: Activa
16: Muestra
9: mysql_query( )
Figura C-23. Carta de secuencia de mensajes Realizar Pedido, enviar pedido por un Cliente
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-44
MSC RealizarPedido 4(7)
: Agente : VistasCarrito : VCForm : Carrito
Compras : VistaPorArticulos
: VPAForm : RealizarPedido
: Confirmacion
: API_PHPMySQL
: CCForm : CodigoCliente
1: AceptarClic( )
25: Muestra
2: Activa
3: ConstuirVistaPorArticulos(argname)
24: Activa
4: Activa5: Muestra
6: RealizarPedidoClic( )7: Activa
8: ConstruirCodigoCliente
19: ConstruirConfirmacion()
20: Activa
21: Muestra
22: SeguirClic( )
23: ConstruirVistasCarrito()
14: mysql_query( )
9: Activa10: Muestra
11: AceptarClic()12: Activa
13: ConsultarCodigoCliente( )
17: AlmacenarPedido(argname)
18: mysql_query( )
15: mysql_fetch_row( )
16: mysql_free_result( )
Figura C-24. Carta de secuencia de mensajes Realizar Pedido, enviar pedido por un Agente
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-45
MSC RealizarPedido 5(7)
: Cliente : VistasCarrito : VCForm : Carrito
Compras : Lista
Empresas : LEPForm : Lista
Articulos : LAPEForm :
Confirmacion
1: AceptarClic(Opcion)
2: Activa
3: ContstruirListaEmpresasPedido()
4: Activa
5: Muestra
6: AceptarClic( )7: Activa
8: ConstruirListaArticulosPedidosEmpresa()
9: Activa
10: Muestra
11: EliminarClic( )
12: Activa
13: ConstruirConfirmaciones("Eliminar")
14: Activa
15: Muestra
16: AceptarClic( )
17: ConstruirVistasCarrito()
18: Activa19: Muestra
Figura C-25. Carta de secuencia de mensajes Realizar Pedido, eliminar productos del carrito de compras por un Cliente
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-46
MSC RealizarPedido 6(7)
: VistasCarrito : Agente
: VCForm : CarritoCompras
: ListaArticulos
: LAPEForm : Confirmacion
1: AceptarClic(Opcion)
2: Activa
3: ConstruirListaArticulosPedidosEmpresa()
13: Activa14: Muestra
4: Activa5: Muestra
6: EliminarClic( )
7: Activa
8: ConstruirConfirmaciones(argname)
9: Activa
10: Muestra
11: AceptarClic( )
12: ConstruirVistasCarrito()
Figura C-26. Carta de secuencia de mensajes Realizar Pedido, eliminar productos del carrito de compras por un Agente
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-47
MSC RealizarPedido 7(7)
: Cliente
: VistaPorArticulos
: VPAForm : CarritoCompras
: DetallesProducto
: DPPForm : Confirmacion
: API_PHPMySQL
1: Producto( )2: Activa
3: ConstruirDetallesProductoPedido(Codigo)4: mysql_query( )
5: mysql_fetch_row( )
6: mysql_free_result( )
7: Activa
10: Activa
8: Muestra
9: AceptarClic()
11: ConstruirConfirmaciones(Cambio)
12: Activa
13: Muestra
14: Timer( )
15: ConstuirVistaPorArticulos()16: Activa
17: Muestra
Figura C-27. Carta de secuencia de mensajes Realizar Pedido, modificar cantidad de un producto Cliente/Agente
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-48
C.3.3 Caso de uso BuscarPedido
MSC BucarPedido 1(2)
: Cliente
: MenuCliente : MClienteForm
: RealizarBusqueda
: InicialEmpresa
: IEForm : ListaEmpresas
: LEIForm : TipoBusqueda
: TBForm : Lista5Pedidos
: L5PForm : CarritoCompras
: API_PHPMySQL
1: AceptarClic( )
2: Activa
3: ConstruirIUInicialEmpresa( )4: Activa
5: Muestra
6: AceptarClic(codigo)7: Activa
8: ConstruirListaEmpresas( )
13: Activa
14: Muestra
15: AceptarClic(codigo)16: Activa
17: ConstruirTipoBusqueda( )
18: Activa
19: Muestra
20: AceptarClic(Opcion)
25: Activa26: ConstruirLista5UltimosPedidos( )
27: Activa
28: Muestra
29: AceptarClic(Codigo)
30: Activa
31: ConstuirVistaPorArticulos(argname)
9: mysql_query( )
10: mysql_num_rows( )
11: mysql_fetch_row( )
12: mysql_free_result( )
21: mysql_query( )
22: mysql_num_rows( )
23: mysql_fetch_row( )
24: mysql_free_result( )
Figura C-28. Carta de secuencia de mensajes Buscar Pedido, Buscar pedido por un Cliente
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-49
MSC BucarPedido 2(2)
: MAgenteForm
: Agente
: MenuCliente : RealizarBusqueda
: CCForm : TipoBusqueda
: TBForm : CodigoPedido
: CPForm : CarritoCompras
: API_PHPMySQL
1: AceptarClic( )2: Activa
3: ConstruirIUCodigoCliente( )
8: ConstruirTipoBusqueda( )
9: Activa
10: Muestra
11: AceptarClic(Opcion)
12: Activa
: CodigoCliente
4: Activa5: Muestra
6: AceptarClic(codigo)7: Activa
19: mysql_query( )
20: mysql_num_rows( )
21: mysql_fetch_row( )
22: mysql_free_result( )
13: ConstruirCodigoPedido( )
14: Activa
15: Muestra
16: AceptarClic(Codigo)
17: Activa
18: BuscarPedido( )
23: ConstuirVistaPorArticulos()
Figura C-29. Carta de secuencia de mensajes Buscar Pedido, Buscar pedido por un Agente
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-50
C.4 DIAGRAMA DE IMPLANTACIÓN
Figura C-30. Diagrama de implantación
Este diagrama ilustra la distribución física de los componentes del sistema. En
primer lugar están las Client page desplegadas en el dispositvo móvil, mediante
invocaciones realizadas al servidor de aplicación; en segundo lugar se encuentra
una gateway WAP la cual hace posible el intercambio de información entre la red fija
y la red móvil. Seguidamente está el servidor de aplicaciones el cual alberga las
Server page encargadas de construir las Client page. Finalmente se encuentra el
servidor de base de datos el cual podría estar implementado en el mismo servidor
de aplicación; sin embargo se ilustra de forma separada para describir el caso más
general. A continuación se describe en detalle cada uno de estos componentes.
Dispositivo móvil: El dispositivo para el cual fue desarrollada la aplicación, es el
R280d de Ericsson, la descripción técnica del dispositivo es la siguiente:
Tipo de acceso CDPD, TDMA2.
Versión del naegador Openwave 3.1
2 En Colombia se hace a través de CDPD.
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-51
Resolución de la pantalla 101 x 40 pixels
Tamaño del despliegue 3 filas x 15 columnas
Máximo tamaño de. PDU, (Protocol Data Unit) 1492
Tabla C-1. Descripción técnica del R280d de Ericsson.
Servidor de aplicaciones y de base de datos: Es un PC con sistema operativo
windows2000 professional, con Apache Web Server, como servidor web; MySQL,
como gestor de base de datos y PHP, como lenguaje scripting de WML embebido.
En el diagrama también indican los protocolos de comunicación entre componentes
hardware. Entre el dispositivo móvil y la gateway se utiliza WAP, (Wireless
Application Protocol) y entre la gateway y el servidor de aplicaciones se utiliza
TCP/IP. Debido a que el servidor de base de datos se encuentra en el mismo
servidor de aplicaciones se utiliza el API de PHP para MySQL, para la comunicación
entre la aplicación y la base de datos.
C.5 DISEÑO DE LA BASE DE DATOS
A partir de las entidades descritas en el “Análisis del software”, se construyó el
siguiente diagrama de entidad relación:
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-52
Diagrama del paquete datos 1(1)
Producto
Codigo : IntNombre : StringValor : IntExistencias : IntDescripcion : TextCodigoEmpresa : IntReferencia : StringEstado : String
AdicionarCarrito()
<<Entity>>
Empresa
Codigo : IntNombre : StringCorreo : StringCiudad : StringDireccion : StringAdministrador : StringContraseña : StringTelefono : StringDescripcion : TextFax : StringEstado : IntNombreReferencia : String
<<Entity>>
ClienteCodigo : IntNombre : StringTelefono : IntCiudad : StringCorreo : StringEmpresasAfiliadas : VariantNombreUsuario : StringContraseña : PasswordDireccion : String
<<Entity>>
PedidoCodigo : IntCodigoEmpresa : IntCodigoTransaccion : IntEstado : StringObservacion : StringReferencia : StringProductoPedido : VariantValorProductoPedido : VariantCantidadProductoPedido : VariantCodigoCliente : IntCodigoAgente : Int
Pedir()Buscar()Modificar()Cancelar()Reenviar()
<<Entity>>
1
0..*
1
0..*
Agente
Codigo : IntNombre : StringE_mail : StringCiudad : StringDireccion : StringTelefono : IntTipo : IntContraseña : StringCodigoEmpresa : IntDescripcion : Text
<<Entity>>
1..*
1..*
1..*
1..*
1
0..*
1
0..*
Figura C-31. Diagrama del paquete de datos, "Análisis del Software"
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-53
Empresa
Agente
Pedido
Cliente
Transaccion
Productos
Figura C-32. Diagrama Entidad-Relación
Destruyendo las relaciones muchos a muchos finalmente la base de datos es como
sigue:
Empresa
Agente
Pedido
Cliente
Transaccion
Productos
producto_pedido
cliente_agente
cliente_empresa
Figura C-33. Diagrama Entidad-Relación, normalizado
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-54
Los atributos para cada tabla son, (los campos subrayados corresponden a la clave
primaria de la tabla):
adminsx
Campo Tipo
Codigo int(11)
Nombre varchar(100)
IdCiudad int(11)
Login varchar(15)
Password varchar(15)
Direccion varchar(100)
Telefono varchar(30)
E_mail varchar(50)
Estado int(11)
Tabla C-2. Tabla adminsx, (Administrador del sistema)
agente
Campo Tipo
Codigo int(11)
CodigoEmpresa int(11)
IdCiudad int(11)
Nombre char(50)
Login char(30)
Password char(30)
Tipo enum('Visitador', 'Repartidor')
Direccion char(30)
Telefono char(20)
E_mail char(50)
Tabla C-3. Tabla agente
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-55
Cliente
Campo Tipo
Codigo int(11)
IdCiudad int(11)
Nombre char(50)
Login char(30)
Password char(30)
Direccion char(30)
Telefono char(20)
E_mail char(50)
Tabla C-4. Tabla Cliente
cliente_agente
Campo Tipo
CodigoCliente int(11)
CodigoAgente int(11)
Tabla C-5. Tabla cliente_agente
cliente_empresa
Campo Tipo
CodigoCliente int(11)
CodigoEmpresa int(11)
Id tinyint(4)
Tabla C-6. Tabla cliente_empresa
empresa
Campo Tipo
Codigo int(11)
Nombre varchar(100)
Administrador varchar(80)
IdCiudad int(11)
Password varchar(15)
Descripcion text
Direccion varchar(100)
Telefono varchar(30)
E_mail varchar(50)
Fax varchar(30)
Estado int(11)
NombreRef varchar(4)
Tabla C-7. Tabla empresa
ANEXO C, DISEÑO DEL SOFTWARE DE LA APLICACIÓN MÓVIL
C-56
pedido
Campo Tipo
Codigo int(11)
CodigoEmpresa int(11)
CodigoTransaccion int(11)
Estado int(11)
Observacion text
Referencia varchar(30)
Tabla C-8. Tabla pedido
producto
Campo Tipo
Codigo int(11)
CodigoEmpresa int(11)
Referencia varchar(30)
Nombre varchar(30)
Descripcion text
Valor int(11)
Existencias int(11)
Estado int(11)
Tabla C-9. Tabla producto
productopedido
Campo Tipo
CodigoProducto int(11)
CodigoPedido int(11)
Cantidad int(11)
Precio int(11)
Tabla C-10. Tabla productopedido
transaccion
Campo Tipo
Codigo Int(11)
CodigoCliente Int(11)
Fecha date
CodigoAgente Int(11)
Tabla C-11. Tabla transaccion