Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
PROTOTIPO DE SISTEMA DE INFORMACIÓN PARA LA EMPRESA
CREAMAX
JUAN DAVID GÓMEZ CAICEDO
JUAN SEBASTIÁN CELIS MAYA
UNIVERSIDAD TECNOLÓGICA DE PEREIRA
FACULTAD DE INGENIERÍAS: ELECTRICA, ELECTRONICA, FISICA Y
CIENCIAS DE LA COMPUTACIÓN
INGENIERÍA DE SISTEMAS Y COMPUTACIÓN
PEREIRA
2010
2
PROTOTIPO DE SISTEMA DE INFORMACIÓN PARA LA EMPRESA
CREAMAX
JUAN DAVID GÓMEZ CAICEDO
JUAN SEBASTIÁN CELIS MAYA
PROYECTO DE GRADO
Directora
INGENIERA
LUZ STELLA VALENCIA AYALA
UNIVERSIDAD TECNOLÓGICA DE PEREIRA
FACULTAD DE INGENIERÍAS: ELECTRICA, ELECTRONICA, FISICA Y
CIENCIAS DE LA COMPUTACIÓN
INGENIERÍA DE SISTEMAS Y COMPUTACIÓN
PEREIRA
2010
3
Nota Aceptación:
________________________________________
________________________________________
________________________________________
________________________________________
________________________________________
________________________________________
________________________________________
Firma del presidente del jurado
________________________________________
Firma del jurado
Pereira 22 de Marzo de 2010
4
DEDICATORIA
¡Corran, corran todo lo que puedan! ¡A mí no me podrán agarrar! ¡Yo soy el muñeco de
jengibre! Cuento tradicional alemán.
A mis padres, Jaime Alberto Gómez y Dora Caicedo, quienes con su amor y entrega me
dieron todo lo necesario para alcanzar mis sueños.
Juan David Gómez Caicedo
Dedico mi tesis con todo mi amor y cariño a mi abuela Margarita Maya, por su constancia y
acompañamiento durante toda mi vida, por creer en mí y por darme una carrera para mi
futuro. Aunque en ocasiones se pasan momentos difíciles, su apoyo ha sido incondicional,
unido a una gran sinérgica motivación por parte suya. La quiero con todo mi corazón y este
trabajo es para ella, por formar parte de mi vida en la figura de madre, padre, abuelo y
abuela, aquí está todo lo que ella me brindó, solamente le devuelvo parte de lo que he
recibido.
Juan Sebastián Celis Maya
5
AGRADECIMIENTOS
Este proyecto no hubiese sido posible sin la colaboración directa o indirecta de las personas
que me permito citar a continuación.
Agradezco a la ingeniera Luz Stella Valencia Ayala su especial dedicación, tiempo y
paciencia que ha compartido para este proyecto. Reconocemos que es un esfuerzo adicional
a su labor como profesora asumir la dirección de un proyecto de grado.
De igual manera, a la psicóloga Eliana Bermúdez Cardona por su colaboración en las fases
de corrección y redacción del documento del proyecto.
También al ingeniero Danny Orrego su soporte en las etapas de diseño del prototipo del
sistema.
A mi compañero de proyecto de grado y de carrera Juan Sebastián Celis Maya, quien sin su
amistad, apoyo, ideas y conocimientos sobre desarrollo web este proyecto nunca habría
sido posible.
Finalmente a la Universidad Tecnología de Pereira por proporcionar el espacio, la
experiencia y la información necesaria para la adquisición del conocimiento indispensable
para la elaboración este proyecto.
Juan David Gómez Caicedo
6
AGRADECIMIENTOS
Esta tesis, si bien ha requerido de esfuerzo y mucha dedicación, no hubiese sido posible su
finalización sin la cooperación desinteresada de todas y cada una de las personas que a
continuación citaré y muchas de las cuales han sido un soporte muy fuerte en momentos de
angustia y desesperación.
Agradezco hoy y siempre a mi familia por su incondicionalidad, pues procuran mi bienestar
desde mi ciudad natal Tuluá en el Valle del Cauca, y está claro que si no fuese por el
esfuerzo realizado por ellos, mis estudios de ingeniería no hubiesen sido posibles. A mi
abuelita Margarita Maya, mi señora madre Monica Alexandra Celis Maya, porque a pesar
de la distancia, el ánimo, apoyo y alegría que me brindan me dan la fortaleza necesaria para
seguir adelante. En general a todos aquellos miembros de mi familia que de alguna u otra
manera tuvieron algo que ver con el triunfo que hoy celebro.
De igual manera mi más sincero agradecimiento a la ingeniera Luz Stella Valencia Ayala,
nuestra directora de proyecto de grado, quien con su apoyo y colaboración, redujo la
cantidad de piedras en el camino principalmente gracias a su experiencia y gran
conocimiento, así como también a su carisma y comprensión.
A mi compañero de proyecto de grado Juan David Gómez Caicedo, por su organización y
temple a la hora de liderar el proyecto y distribuir responsabilidades, pues sin su ayuda
constante, su trabajo y preocupación, la calidad y el tiempo de éste trabajo, hubiesen sido
cuestionables.
A la Universidad Tecnológica de Pereira en general, por brindarme lo que yo considero "mi
segundo hogar" durante cinco años de mi vida, porque aparte de las grandiosas vivencias y
el conocimiento adquirido, una gran cualidad que considero ahora tengo es la de aprender e
investigar por cuenta propia.
Juan Sebastián Celis Maya
7
CONTENIDO
1. JUSTIFICACIÓN ..................................................................................................................18
2. INTRODUCCIÓN .................................................................................................................19
3. OBJETIVOS ..........................................................................................................................20
4. MARCO TEORICO ...............................................................................................................21
4.1 Aplicaciones de Internet Enriquecidas RIA (Rich Internet Applications) .................21
4.1.1 Beneficios de RIA ..................................................................................................23
4.2 XMLHttpRequest .......................................................................................................23
4.3 XML ...........................................................................................................................25
4.4 Javascript ....................................................................................................................26
4.4.1 Ejemplo de Javascript ............................................................................................28
4.5 PHP ............................................................................................................................29
4.5.1 Características principales de PHP ........................................................................31
4.5.2 Seguridad ...............................................................................................................32
4.5.3 Funcionamiento de PHP .........................................................................................32
4.5.4 Tipos de datos y variables en PHP .........................................................................33
4.5.5 Respecto a los datos complejos y el uso de objetos ...............................................34
4.5.6 Variables generales en PHP ...................................................................................35
4.5.7 Utilización de bases de datos sobre PHP ...............................................................36
4.6 MySQL ......................................................................................................................38
4.7 Sistemas de información ............................................................................................38
4.7.1 Definición general de los sistemas de información ................................................40
4.8 Modelo de prototipado evolutivo ...............................................................................40
4.9 El manifiesto ágil .......................................................................................................42
4.10 Programación extrema ...............................................................................................43
4.11 Empresa CREAMAX .................................................................................................44
5. RECOLECCIÓN DE INFORMACIÓN Y ANALISIS DE REQUERIMIENTOS ...............48
5.1 Recolección de información por medio de entrevistas...............................................48
8
5.2 Ciclo de vida del prototipo del sistema ......................................................................51
5.3 Metodología de desarrollo .........................................................................................52
5.4 Historias de usuario ....................................................................................................52
5.5 Análisis de requerimientos .........................................................................................52
5.5.1 Requisitos funcionales ...........................................................................................53
5.5.1.1 Control de inventario .............................................................................................53
5.5.1.2 Creación y almacenamiento de facturas .................................................................53
5.5.1.3 Creación y almacenamiento de informes ...............................................................54
5.5.1.4 Gestión de usuarios ................................................................................................55
5.5.2 Requisitos no funcionales del sistema....................................................................55
5.5.2.1 Confiabilidad ..........................................................................................................55
5.5.2.2 Plataforma del sistema ...........................................................................................56
5.5.2.3 Usabilidad ..............................................................................................................56
5.5.2.4 Seguridad ...............................................................................................................57
5.5.2.5 Base de datos ..........................................................................................................58
5.5.2.6 Estándares de desarrollo .........................................................................................58
5.5.2.7 Mantenibilidad .......................................................................................................60
5.5.2.8 Portabilidad ............................................................................................................60
5.5.3 Aspectos globales ...................................................................................................60
5.5.3.1 Acceso web ............................................................................................................60
5.5.3.2 Disposición del servidor .........................................................................................60
5.5.4 Aspectos fuera del alcance .....................................................................................61
5.6 Casos de uso – Sistema para la empresa Creamax .....................................................61
5.6.1 Control de inventario .............................................................................................62
5.6.1.1 Agregar existencias ................................................................................................62
5.6.1.2 Eliminar existencias ...............................................................................................63
5.6.1.3 Ver inventario ........................................................................................................64
5.6.1.4 Ver detalle de existencias .......................................................................................65
5.6.1.5 Agregar producto ...................................................................................................66
5.6.1.6 Eliminar producto ..................................................................................................68
5.6.2 Generación de facturas ...........................................................................................69
5.6.2.1 Listar productos......................................................................................................70
9
5.6.2.2 Verificar disponibilidad .........................................................................................70
5.6.2.3 Eliminar productos .................................................................................................71
5.6.2.4 Realizar venta .........................................................................................................71
5.6.2.5 Generar factura .......................................................................................................73
5.6.3 Generación de informes .........................................................................................74
5.6.3.1 Generar informes genéricos ...................................................................................75
5.6.3.2 Generar informe de ventas .....................................................................................76
5.6.3.3 Generar informe de accesos ...................................................................................77
5.6.3.4 Generar informe de clientes ...................................................................................78
5.6.3.5 Generar informe de sabores ...................................................................................78
5.6.3.6 Generar informe de presentaciones ........................................................................79
5.6.4 Gestión de usuarios ................................................................................................80
5.6.4.1 Modificar información personal .............................................................................80
5.6.4.2 Modificar correo electrónico personal ...................................................................82
5.6.4.3 Modificar correo o clave ........................................................................................83
5.6.4.4 Modificar claves .....................................................................................................84
5.6.4.5 Modificar permisos ................................................................................................85
5.6.5 Gestión de clientes .................................................................................................86
5.6.5.1 Crear cliente ...........................................................................................................86
5.6.5.2 Eliminar cliente ......................................................................................................88
5.6.5.3 Modificar cliente ....................................................................................................89
5.6.5.4 Buscar cliente .........................................................................................................91
5.7 Diseño modular ..........................................................................................................93
5.8 Mapa del sitio .............................................................................................................93
5.9 Diagrama de contexto ................................................................................................95
5.10 Diagrama de clases.....................................................................................................96
5.11 Diagramas de estado ..................................................................................................97
5.12 Diseño arquitectónico secuencia de ventanas estáticas ..............................................98
5.12.1 D.A.V.E. Control de inventario .............................................................................98
5.12.2 D.A.V.E. Generar factura .......................................................................................99
5.12.3 D.A.V.E. Generación de informes .........................................................................99
5.12.4 D.A.V.E. Gestión de usuarios ..............................................................................100
10
5.13 Diagramas de actividad ............................................................................................100
5.13.1 Diagramas de actividad inicio de sesión ..............................................................101
5.13.2 Diagramas de actividad control de inventarios ....................................................101
5.13.3 Diagramas de actividad generación de facturas ...................................................103
5.13.4 Diagramas de actividad generación de informes .................................................104
5.13.5 Diagramas de actividad gestión de usuarios ........................................................105
5.13.6 Diagramas de actividad gestión de clientes .........................................................106
5.14 Diagramas de componentes .....................................................................................107
5.15 Modelo de distribución ............................................................................................108
5.16 Modelo de casos de prueba ......................................................................................108
6. DISEÑO DE LA BASE DE DATOS ..................................................................................113
6.1 Tablas .......................................................................................................................113
6.1.1 Usuarios ...............................................................................................................113
6.1.2 Inventario .............................................................................................................113
6.1.3 Inventario_en_consignacion ................................................................................114
6.1.4 Productos ..............................................................................................................114
6.1.5 Precios ..................................................................................................................115
6.1.6 Clientes ................................................................................................................115
6.1.7 Ventas ..................................................................................................................116
6.1.8 Accesos ................................................................................................................117
6.2 Modelo entidad-relación de la base de datos ...........................................................117
6.3 Diccionario de datos.................................................................................................118
6.3.1 Accesos ................................................................................................................119
6.3.2 Inventario .............................................................................................................119
6.3.3 Inventario_consignacion ......................................................................................119
6.3.4 Clientes ................................................................................................................120
6.3.5 Precios ..................................................................................................................120
6.3.6 Productos ..............................................................................................................121
6.3.7 Usuarios ...............................................................................................................121
6.3.8 Ventas ..................................................................................................................121
6.4 Código SQL para generación de las tablas de la base de datos ................................122
11
7. DISEÑO E IMPLEMENTACIÓN DEL MÓDULO DE CONTROL DE INVENTARIO 126
7.1 Descripción ..............................................................................................................126
7.2 Archivos que componen el modulo..........................................................................126
7.3 Mapa del modulo .....................................................................................................127
7.4 Implementación ........................................................................................................128
7.4.1 Index ....................................................................................................................128
7.4.1.1 Código ..................................................................................................................128
7.4.1.2 Prototipo gráfico ..................................................................................................128
7.4.2 Agregar existencias ..............................................................................................129
7.4.2.1 Código ..................................................................................................................129
7.4.2.2 Prototipo gráfico ..................................................................................................130
7.4.3 Ver inventario ......................................................................................................131
7.4.3.1 Código ..................................................................................................................131
7.4.3.2 Prototipo gráfico ..................................................................................................132
7.4.4 Detalle ..................................................................................................................133
7.4.4.1 Prototipo gráfico ..................................................................................................133
8. DISEÑO E IMPLEMENTACIÓN DEL MÓDULO DE VENTAS ....................................135
8.1 Descripción ..............................................................................................................135
8.2 Archivos que componen el modulo..........................................................................135
8.3 Mapa del módulo .....................................................................................................136
8.4 Implementación ........................................................................................................136
8.4.1 Index ....................................................................................................................136
8.4.1.1 Prototipo gráfico ..................................................................................................136
8.4.2 Escoger productos ................................................................................................137
8.4.2.1 Código ..................................................................................................................137
8.4.2.2 Prototipo gráfico ..................................................................................................138
8.4.3 Generar factura .....................................................................................................140
8.4.3.1 Código ..................................................................................................................140
8.4.3.2 Prototipo gráfico ..................................................................................................141
9. DISEÑO E IMPLEMENTACIÓN DEL MóDULO DE CREACIÓN DE INFORMEs .....142
12
9.1 Descripción ..............................................................................................................142
9.2 Archivos que componen el módulo..........................................................................142
9.3 Mapa del módulo .....................................................................................................143
9.4 Implementación ........................................................................................................143
9.4.1 Index ....................................................................................................................143
9.4.1.1 Prototipo gráfico ..................................................................................................143
9.4.2 Acceso ..................................................................................................................144
9.4.2.1 Prototipo gráfico ..................................................................................................144
9.4.3 Clientes ................................................................................................................145
9.4.3.1 Prototipo gráfico ..................................................................................................146
9.4.4 Presentaciones ......................................................................................................146
9.4.4.1 Prototipo gráfico ..................................................................................................147
9.4.5 Ventas ..................................................................................................................147
9.4.5.1 Prototipo gráfico ..................................................................................................148
10. DISEÑO E IMPLEMENTACIÓN DEL MóDULO DE GESTIÓN DE USUARIOS ........149
10.1 Descripción ..............................................................................................................149
10.2 Archivos que componen el modulo..........................................................................149
10.3 Mapa del módulo .....................................................................................................149
10.4 Implementación ........................................................................................................150
10.4.1 Modificar información personal ...........................................................................150
10.4.1.1 Prototipo gráfico ..............................................................................................150
10.4.2 Permisos ...............................................................................................................151
10.4.2.1 Prototipo gráfico ..............................................................................................151
10.4.3 Claves ...................................................................................................................151
10.4.3.1 Prototipo gráfico ..............................................................................................151
11. DISEÑO E IMPLEMENTACIÓN DEL MÓDULO DE GESTIÓN DE CLIENTES .........153
11.1 Descripción ..............................................................................................................153
11.2 Archivos que componen el módulo..........................................................................153
11.3 Mapa del modulo .....................................................................................................154
11.4 Implementación ........................................................................................................154
11.4.1 Index ....................................................................................................................154
13
11.4.1.1 Prototipo gráfico ..............................................................................................154
11.4.2 Buscar ..................................................................................................................155
11.4.2.1 Código ..............................................................................................................155
11.4.2.2 Prototipo gráfico ..............................................................................................156
11.4.3 Agregar cliente .....................................................................................................157
11.4.3.1 Prototipo gráfico ..............................................................................................157
12. DOCUMENTACIÓN DEL SISTEMA, MANUALES DE USUARIO .............................159
12.1 Iniciar sesión en el sistema .......................................................................................159
12.1.1 Iniciar sesión en el sistema ...................................................................................159
12.2 Localización del menú de ventas .............................................................................160
12.3 Gestión de clientes ...................................................................................................162
12.4 Modificación de datos personales y correo electrónico ...........................................163
12.4.1 Consultas básicas del inventario de productos en detalle ....................................164
13. CONCLUSIONES Y RECOMENDACIONES ...................................................................166
14. BIBLIOGRAFÍA .................................................................................................................168
15. ANEXOS .............................................................................................................................171
14
LISTA DE ILUSTRACIONES
Ilustración 1 Distribución de tecnologías de contenido dinámico sobre servidores de internet.
Septiembre de 2008. ...........................................................................................................................29
Ilustración 2 Vista del código fuente generado por las etiquetas PHP...............................................30
Ilustración 3 Proceso de solicitud y ejecución de PHP ......................................................................32
Ilustración 4 Vista del código fuente luego de la ejecución del objeto Mascota ...............................35
Ilustración 5 Arquitectura Web base consiste en un navegador, servidor web, interprete de código y
servidor de base de datos ...................................................................................................................37
Ilustración 6 Modelo general de un sistema .......................................................................................39
Ilustración 7 Desarrollo exploratorio de prototipos ...........................................................................41
Ilustración 8 Desarrollo de prototipos desechables ............................................................................42
Ilustración 9 Actividades para la recolección de información ...........................................................49
Ilustración 10 Entrevista realizada a los usuarios del sistema ...........................................................50
Ilustración 11 Casos de uso - Control de inventario ..........................................................................62
Ilustración 12 Ver inventario - diagrama de secuencia ......................................................................65
Ilustración 13 Ver detalle de existencia - diagrama de secuencia ......................................................66
Ilustración 14 Diagrama de secuencia - Agregar producto ................................................................67
Ilustración 15 Eliminar producto - diagrama de secuencia ................................................................69
Ilustración 16 Casos de uso - Generación de facturas ........................................................................69
Ilustración 17 Generar factura - diagrama de secuencia ....................................................................74
Ilustración 18 Casos de uso - Generación de informes ......................................................................74
Ilustración 19 Generar informe genérico - diagrama de secuencia ....................................................76
Ilustración 20 Casos de uso – Gestión de usuarios ............................................................................80
Ilustración 21 Modificar información personal - diagrama de secuencia ..........................................81
Ilustración 22 Casos de uso - Gestión de clientes ..............................................................................86
Ilustración 23 Crear cliente - Diagrama de secuencia ........................................................................87
Ilustración 24 Eliminar cliente - diagrama de secuencia ...................................................................89
Ilustración 25 Editar cliente - diagrama de secuencia ........................................................................91
Ilustración 26 Buscar cliente - diagrama de secuencia ......................................................................92
Ilustración 27 Mapa del sitio ..............................................................................................................93
Ilustración 28 Diagrama de contexto del sistema Creamax ...............................................................95
Ilustración 29 Diagrama de clases .....................................................................................................96
Ilustración 30 Venta - diagrama de estados .......................................................................................97
Ilustración 31 Control de inventario - secuencia de ventanas estáticas .............................................99
Ilustración 32 Generación de facturas - secuencia de ventanas estáticas ...........................................99
Ilustración 33 Generación de informes -- secuencia de ventanas estáticas ........................................99
Ilustración 34 Gestión de usuarios -- secuencia de ventanas estáticas .............................................100
Ilustración 35 Inicio de sesión -- diagramas de actividad ................................................................101
Ilustración 36 Control de inventarios -- diagramas de actividad .....................................................102
Ilustración 37 Generación de facturas -- diagramas de actividad ....................................................103
15
Ilustración 38 Generación de informes -- diagramas de actividad ...................................................104
Ilustración 39 Gestión de usuarios -- diagramas de actividad ..........................................................105
Ilustración 40 Gestión de clientes -- diagramas de actividad ...........................................................106
Ilustración 41 Modelo de distribución del prototipo ........................................................................108
Ilustración 42 Modelo Entidad Relación .........................................................................................118
Ilustración 43 Modulo inventario .....................................................................................................127
Ilustración 44 Index Módulo inventario ...........................................................................................129
Ilustración 45 Módulo inventario agregar existencias .....................................................................131
Ilustración 46 Modulo inventario ver inventario .............................................................................132
Ilustración 47 Modulo inventario Detalle ........................................................................................133
Ilustración 48 Pantallas del modulo inventario ................................................................................134
Ilustración 49 Mapa del modulo de generación de facturas .............................................................136
Ilustración 50 Index modulo de ventas ............................................................................................137
Ilustración 51 Realizando una venta modulo de ventas ...................................................................139
Ilustración 52 Productos en la venta actual modulo de ventas .........................................................139
Ilustración 53 Factura generada Modulo de ventas..........................................................................141
Ilustración 54 Mapa modulo de creación de informes .....................................................................143
Ilustración 55 Modulo de informes Index ........................................................................................144
Ilustración 56 Modulo de informes Acceso al sistema ....................................................................145
Ilustración 57 Módulo de informes Clientes ...................................................................................146
Ilustración 58 Módulo de informes Diversas presentaciones de un producto .................................147
Ilustración 59 Modulo de informes Ventas realizadas ....................................................................148
Ilustración 60 Mapa del modulo de gestión de usuarios ..................................................................150
Ilustración 61 Modificar información personal Módulo gestión de usuarios ..................................150
Ilustración 62 Modificar perfiles Modulo gestión de usuarios ........................................................151
Ilustración 63 Cambio de claves de acceso Modulo gestión de usuarios .........................................152
Ilustración 64 Mapa modulo de gestión de clientes .........................................................................154
Ilustración 65 Index módulo de gestión de clientes .........................................................................155
Ilustración 66 Buscar módulo de gestión de clientes .......................................................................156
Ilustración 67 Crear cliente módulo de gestión de clientes ..............................................................158
Ilustración 68 Pantallas módulo gestión de clientes ........................................................................158
Ilustración 69 Inicio de sesión .........................................................................................................159
Ilustración 70 Localización de acceso al menú ventas .....................................................................160
Ilustración 71 Creación de una nueva venta ....................................................................................161
Ilustración 72 Formulario de creación de la información de un cliente ...........................................163
Ilustración 73 Formulario de creación de la información de un cliente ...........................................164
Ilustración 74 Consulta básica de los productos disponibles ...........................................................165
Ilustración 75 Información en detalle del producto .........................................................................165
16
LISTA DE TABLAS
Tabla 1 Java script comparado con Java ............................................................................................27
Tabla 2 Tipos de datos en PHP ..........................................................................................................33
Tabla 3 Variables generales en PHP ..................................................................................................36
Tabla 4 Modelo de pruebas para la etapa inicial del sistema ...........................................................111
Tabla 5 Acceso - Diccionario de datos ............................................................................................119
Tabla 6 Inventario - Diccionario de datos ........................................................................................119
Tabla 7 Inventario en consignación - Diccionario de datos ............................................................119
Tabla 8 Clientes - Diccionario de datos ..........................................................................................120
Tabla 9 Precios - Diccionario de datos ...........................................................................................120
Tabla 10 Productos - Diccionario de datos ......................................................................................121
Tabla 11 Usuarios - Diccionario de datos ........................................................................................121
Tabla 12 Ventas - Diccionario de datos ...........................................................................................121
17
LISTA DE ANEXOS
Anexo 1 Entrevista gerente de Creamax ................................................................................... pag.171
Anexo 2 Entrevista Número 1 ................................................................................................... pag.174
Anexo 3 Entrevista Número 2 ................................................................................................... pag.175
Anexo 4 Entrevista Número 3 ................................................................................................... pag.176
Anexo 5 Entrevista Número 4 ................................................................................................... pag.177
Anexo 6 Historias de usuario .................................................................................................... pag.178
Anexo 7 Reuniones con el cliente para revisiones del sistema de información ........................ pag.184
18
1. JUSTIFICACIÓN
La competitividad de una empresa radica en el descubrimiento de sus habilidades, recursos,
conocimientos y atributos que le permitan centrar todos sus esfuerzos en conseguir lo que
se desea. La clave para hacer de la competitividad un estado permanente, se encuentra en la
anticipación de las necesidades y demandas del entorno empresarial y en la capacidad de
satisfacerlas de la mejor y más eficiente manera.
Por otra parte, las micro y pequeñas empresas los esfuerzos se ven comprometidos con los
procesos operativos internos, pues éstos aún no son eficientes en el sentido en que tareas
repetitivas llevadas a cabo manualmente consumen tiempo y recursos necesarios para otras
labores. Por ejemplo, concentrarse en anticipar las necesidades del mercado y superar a los
competidores.
Este es el caso de la empresa Creamax que desde 2003 ha funcionado con un sistema de
facturación manual, adicionalmente se lleva el inventario de mercancía y la contabilidad
mediante herramientas ofimáticas básicas. También usan éstos sistemas para labores como
gestión de clientes y generación de informes de ventas. Esto dificulta el crecimiento pues a
medida que la información generada en el proceso de ventas aumenta, mayor se hace la
carga para los encargados de la gestión deteniendo otros procesos propios de la actividad
comercial de la organización. En busca de concentrarse en su propio negocio y dedicarse a
la venta de suplementos nutricionales deportivos decidieron buscar estudiantes que
desarrollaran para ellos un sistema de información que cumpliera sus requerimientos.
19
2. INTRODUCCIÓN
El prototipo de sistema de información para la empresa Creamax es un conjunto de elementos
orientado al tratamiento y administración de la información, generado para solucionar algunas de
las problemáticas relacionadas con la gestión de clientes, generación de informes, realización de
ventas y control de inventario de la organización. El desarrollo de este sistema se realizó mediante
diferentes fases, cada una correspondiente a una etapa del ciclo de vida del desarrollo evolutivo de
prototipos.
En la etapa de recolección de información y análisis de requerimientos, se estableció que debía
hacer el sistema pero sin definir aun los medios para lograrlo. También se respondió a una pregunta
fundamental: ¿qué es lo que quiere el cliente? y para ello, se diagnosticó la situación, seguidamente
se recopilaron los requerimientos del cliente, tanto en relación al sistema, como generales respecto
del área informática. Es decir la situación ideal, para así poder definir alternativas de solución,
según las cuales se podía avanzar desde lo que la organización poseía. La información en la etapa
de recolección fue adquirida mediante entrevistas a los diferentes usuarios.
Posteriormente en la etapa de diseño se tomaron los requerimientos y se modeló el sistema basado
en módulos. De la misma manera se planteó la estructura de la base datos, la jerarquía de módulos,
los diagramas de contexto, los diagramas de secuencia, los casos de uso, entre otras herramientas
propias del proceso de ingeniería del software que se consideraron pertinentes al momento de este
desarrollo.
Luego en la implementación se encuentran la codificación y las interfaces graficas de cada uno de
los módulos planteados en la etapa de diseño. En esta etapa se dio importancia al aspecto gráfico y
se trabajó de la mano del cliente para proveer un diseño que le agradara y se identificara con la
imagen empresarial de su organización.
Finalmente, se realizaron los manuales de usuario para los módulos funcionales del prototipo, estos
permiten al usuario conocer a fondo la funcionalidad del sistema y tener un documento de
referencia para futuras consultas. Es importante resaltar que la documentación se realizó para
permitir al usuario tener un panorama real de lo que podía o no hacer su sistema.
20
3. OBJETIVOS
Objetivo general
Desarrollar la primera iteración del prototipo del sistema de información para la empresa de
productos nutritivos Creamax de la ciudad de Tuluá
Objetivos específicos
- Analizar y definir los requerimientos para la primera iteración del prototipo del sistema de
información para la empresa de productos nutritivos Creamax
- Diseñar los módulos de venta, clientes, inventario, usuarios e informes para la primera
iteración del prototipo de sistema de información
- Implementar los módulos de venta, clientes, inventario, usuarios e informes con los diseños
correspondientes a la primera iteración
- Documentar los manuales de usuario para la primera versión del prototipo
21
4. MARCO TEORICO
Con el propósito de articular los lineamientos del proyecto sistema de información para la empresa
Creamax, es pertinente visualizar los principales fundamentos teóricos que van a dar soporte a cada
una de las etapas del proceso determinado para ello. En virtud de esto, se han escogido algunas
tecnologías que se vieron pertinentes a los requerimientos del cliente, entre ellas se pueden
mencionar: las aplicaciones de internet enriquecidas, el desarrollo modular, aproximación de
prototipos en espiral, entre otras.
A continuación se describen cada una de las tecnologías que se tomaron como fundamento para el
proyecto.
4.1 Aplicaciones de Internet Enriquecidas RIA (Rich Internet Applications)
“Las página web son el soporte interactivo ideal para ofrecer un servicio, facilitar información,
hacer negocios y montones de cosas nuevas de un modo más completo y directo que cualquier
otro” Vinton Cerf (1994) (Fundador de Internet Society)
RIA es el acrónimo de Aplicaciones de Internet Enriquecidas, son un nuevo tipo de aplicaciones
con ventajas adicionales a las aplicaciones web tradicionales, las RIA surgen como una
combinación de las ventajas que ofrecen los entornos web y las aplicaciones de escritorio
tradicionales.
Estas tecnologías surgen como evolución de IBM SAA (IBM System Application Architecture,
aplicaciones capaces de brindar acceso autorizado a quienes posean los permisos, en cualquier
momento, dispositivo y lugar). Se optaba por esta nueva alternativa gracias a que el hardware
asociado a los terminales cliente como, memoria, capacidad en disco y ancho de banda de
comunicaciones se hacía cada vez menos costoso y permitía liberar parte de esta carga al usuario,
brindándole acceso desde casi cualquier clase de dispositivo a las aplicaciones provenidas de los
servidores.
22
Ahora bien, en la parte de desarrollo esto aumentaba la dificultad puesto que este tipo de
aplicaciones ahora no estaban confinadas en una máquina sino que estaban repartidas entre clientes
y servidores que continuamente están interactuando. También surgen transacciones de mayor
duración lo que supone mayores riesgos de excepciones y conflictos de comunicación que resolver.
Finalmente, el permitir acceso desde cualquier dispositivo, exige un mayor trabajo para los
desarrolladores gráficos pues deben preparar las aplicaciones para interactuar con fluidez en
distintas pantallas. En esencia SAA imponía altas demandas en seguridad, fiabilidad y desempeño.
Sin embargo, parte de estas dificultades se resolvieron desplazando a las aplicaciones más al
entorno web que a las aplicaciones rígidas de escritorio cliente-servidor, los estándares de los
lenguajes web permitían que sin importar el sistema, la apariencia, la funcionalidad y el rendimiento
se mantuvieran, dejando a un lado problemas de portabilidad. Ahora este problema era trasladado a
los navegadores y su compatibilidad con el sistema cliente.
Regresando a RIA, normalmente en las aplicaciones web existe una recarga constante de páginas
cada vez que el usuario navega entre los enlaces, lo cual produce un tráfico significativo entre el
servidor y el cliente debido a la constante transferencia de información entre ambos, llegando
muchas veces a recargar la página completa habiendo ocurrido un mínimo cambio.
También en las aplicaciones web tradicionales, existe la desventaja de la poca capacidad
multimedia, pues no integran los servicios básicos de reproducción teniendo que hacer uso de
programas externos para tal fin. Por ejemplo, para reproducir un video era necesario descargarlo y
reproducirlo con el software local del cliente, luego aplicaciones RIA como –Youtube- permitieron
la reproducción de contenido multimedia embebido en el navegador.
Esto en los entornos RIA disminuyen significativamente las recargas de página, ya que desde el
principio se cargan las aplicaciones completas y sólo se produce comunicación con el servidor
cuando se necesitan datos externos como bases de datos u otras aplicaciones. Aunque existen
excepciones, regresando al problema anterior de la transmisión de video, si en el caso de –Youtube-
la reproducción del video sólo se hiciera en el momento que la descarga en el cliente fuese completa
se brindaría experiencia de usuario negativa, en la medida de que el usuario estaría durante algún
tiempo esperando sin recibir su contenido.
23
4.1.1 Beneficios de RIA
RIA es la nueva generación de aplicaciones, y es una tendencia ya impuesta por el mercado, pues
hace uso importante del mejoramiento en la experiencia visual, entre los beneficios se encuentran:
- Portabilidad: “característica que posee la aplicación para ejecutarse en diferentes plataformas, el
código fuente del software es capaz de reutilizarse en vez de crearse un nuevo código cuando el
software pasa de una plataforma a otra”1 , sin embargo para las aplicaciones de internet, al
manejarse por medio de lenguajes interpretados, son los navegadores los que llevan a ejecución el
código
- Menor carga para el servidor: la mayoría del procesamiento se hace en el lado del cliente
- Conectividad: posibilidad de utilizar la aplicación desde cualquier ordenador conectado a internet
- Aplicaciones interactivas: utilidades comunes como arrastrar y pegar sin necesidad de enviar
información al servidor
- Aplicaciones independientes del navegador: debido a que la lógica del negocio se encuentra
modelada en el servidor, las aplicaciones pueden funcionar independientemente del navegador. Esto
permite no obligar a los usuarios a usar un sistema determinado haciendo más versátil la aplicación
- Modelo de programación controlada por eventos: soporte de diseño orientado a los eventos,
haciendo que las llamadas al servidor sean completamente transparentes al usuario y facilitando en
buena parte al desarrollador la construcción del código de la aplicación
RIA hace uso de diferentes tecnologías que permiten el desarrollo en base de sus
beneficios. Las tecnologías que requiere son: AJAX, PHP, MySQL
4.2 XMLHttpRequest
XMLHTTPRequest es un objeto que implementa la interfaz para realizar peticiones HTTP y
HTTPS a servidores web desde el navegador del cliente. Los datos que se envían entre el cliente y
el servidor son transferidos por medio de cualquier codificación basada en texto, incluyendo: texto
plano, XML, JSON, HTML , además de permitir codificaciones particulares.
1 (Mooney, 1997)
24
Un ejemplo de una función que hace uso de este objeto para permitir el envió de un mensaje del
cliente al servidor:
Function enviar(mensaje) {
Var cliente = new XMLHttpRequest( );
cliente.open ( “POST”, “/enviar”);
cliente.setRequestHeader (“Content-Type”, “text/plain;charset=UTF-8”);
cliente.send(mensaje);
}
Se puede notar que en el ejemplo anterior que XMLHttpRequest realiza las llamadas mediante el
protocolo HTTP. Los métodos que utiliza basado en HTTP pueden verse a continuación:
abort ( ) : Cancela la petición en curso
getAllResponseHeaders ( ): Devuelve el conjunto de cabeceras HTTP como una cadena
getResponseHeader ( nombrecabecera ) : Devuelve el valor de la cabezera HTTP
open ( método, URL [ asíncrona , [ usuario , [clave] ] ] ) : Especifica un método y otros atributos
opcionales de una petición del cliente. El método toma los valores de las peticiones HTTP como :
GET y POST. Ambas maneras de enviar datos al servidor, la diferencia radica en que GET los
parámetros se pasan a través de la URL mientras que por POST estos se codifican en las cabeceras
HTTP
send ( datos ) : Envía las peticiones del cliente
setRequestHeader ( etiqueta, valor ) : Añade el conjunto etiqueta-valor a la cabecera HTTP que
envía el cliente al servidor.
También del ejemplo puede notarse la mención de un juego de caracteres, esto se debe a que la
codificación y descodificación del mensaje se realiza por medio de las cabeceras MIME y HTTP.
Sin embargo como existe la flexibilidad de manejar distintas estructuras de datos, la codificación
particular del mensaje se basa en tres puntos:
Si la información que contiene el mensaje es XML, se debe marcar la cabecera HTTP mediante –
Content-Type- permitiendo que el contenido se trate bajo las reglas de estándar XML
Seguidamente, si la información contiene tipos MIME, este se debe igualmente marcar mediante –
Content-Type- pero agregando un –charset- para ser utilizado
Por último, si no corresponde a ninguno de los casos anteriores se utiliza UTF-8 para la lectura y
escritura de los mensajes enviados
25
4.3 XML
“XML no es más lenguaje de programación que unas notas sobre una servilleta de papel” Charles
Simonyi
XML (Extensible Markup Languaje) o lenguaje de marcas extensible es un formato de texto
derivado de SGML (ISO 8879) que a su vez parte de GML desarrollado por IBM originalmente
diseñado para el almacenamiento de grandes cantidades de información electrónica.
Como XML surge como parte de SGML buscando unos objetivos y lineamientos claro como ser
directamente utilizable en Internet, soportar una amplia variedad de aplicaciones, compatibilidad
con los desarrollos ya establecidos con SGML, sus documentos deben ser legibles por humanos y
razonablemente claros y su marcado debe ser flexible para permitir su adaptabilidad a cada
situación.
Los documentos XML están conformados por unidades llamadas entidades, que contienen datos,
éstos están hechos por caracteres, quienes en una parte conforman la información y en otra
conforman la etiqueta. Esta última describe la porción de información allí contenida como un
componente de una estructura lógica.
Un ejemplo de un objeto XML es el siguiente:
<?xml version="1.0"?>
<transaccion ID="THX1138">
<vendedor>bluemax</vendedor>
<orden>
<producto NumerodeProducto="3263827">
<cantidad>1</cantidad>
<Precio estado="rebajado">3000000</Precio>
<descripcion>Nevera</descripcion>
26
</producto>
</orden>
</transaccion>
El código anterior es una muestra de la flexibilidad que permite el XML, además de brindar una
mayor comprensión para las personas cuando se usan etiquetas y estructuras similares al lenguaje
natural. Permitiendo incluso su manipulación manual debido a que su estructura de etiquetas se basa
en la misma tecnología que hay bajo HTML.
En esencia XML provee de un mecanismo para organizar la información, una forma independiente
de la plataforma para representarla, permitiendo crear datos que sean leídos por cualquier aplicación
corriendo sobre distintas plataformas.
4.4 Javascript
“Javascript es un lenguaje pequeño y ligero interpretado multiplataforma orientado a objetos; por lo
que de forma independiente no es muy útil, está diseñado más para una incrustación en otros
productos y aplicaciones, tales como navegadores web. Dentro de un entorno anfitrión, Javascript
puede ser conectado a los objetos de su entorno para proveer un control programable de estos”.2
El núcleo de Javascript contiene un conjunto central de objetos, como Arrays (Arreglos), Date
(Fechas) y Math (Objetos matemáticos), además del conjunto común de elementos como
operadores, estructuras de control y sentencias. El núcleo de Javascript puede ser extendido para
una variedad de propósitos complementándolo con objetos adicionales, por ejemplo:
JavaScript del lado cliente extiende el núcleo del lenguaje proporcionando objetos para el control
del navegador (Web browser) y su modelo objeto documento [Document Object Model] (DOM).
Por ejemplo, las extensiones del lado del cliente permiten a una aplicación ubicar elementos en un
2 (Mozilla Developer Center, 2009)
https://developer.mozilla.org/es/Guía_JavaScript_1.5/Concepto_de_JavaScript#.C2.BFQu.C3.A9_es_JavaScr
ipt.3F
27
formulario HTML y responder a los eventos de usuario tales como los clic del mouse, entradas del
formulario y navegación de páginas.
JavaScript del lado cervidor extiende el núcleo del lenguaje proporcionando objetos relevantes para
la ejecución de JavaScript en un servidor. Por ejemplo, las extensiones del lado del servidor
permiten que una aplicación se comunique con una base de datos relacional, proporcionar
continuidad de la información desde una invocación de la aplicación a otra o efectuar la
manipulación de archivos en un servidor.A través de la funcionalidad JavaScript LiveConnect, se
permite que los códigos en Java y JavaScript se comuniquen entre sí. Desde JavaScript, es posible
instanciar objetos Java y acceder a sus atributos y métodos públicos. Desde Java, puede acceder a
las propiedades, métodos y objetos JavaScript.
Una tendencia común es pensar que Javascript es Java (Ver tabla X), sin embargo Javascript es un
lenguaje en un formato mucho más liberado. No tiene que declarar todas las variables, clases y
métodos. No debe preocuparse si sus métodos son públicos, privados o protegidos y no tiene que
implementar sus interfaces. De otro lado los tipos de variables, parámetros y funciones de retorno
no son explícitamente definidos.
En contraste, JavaScript desciende en espíritu de una línea de pequeños lenguajes de definición
dinámica de tipos tales como HyperTalk y dBASE. Estos lenguajes de script ofrecen herramientas
de programación a una audiencia mucho más amplia por su fácil sintaxis, su funcionalidad
construida internamente y sus requerimientos mínimos para la creación de objetos.
Tabla 1 Java script comparado con Java
JavaScript Java
Orientado a Objetos. No distingue entre
tipos de objetos. La herencia se realiza a
través del mecanismo de prototipado y los
métodos y propiedades pueden ser
añadidos a cualquier objeto
dinámicamente.
Basado en Clases. Los objetos son divididos
en clases e instancias con toda la herencia a
través de la jerarquía de clases. Las clases e
instancias no pueden tener propiedades o
métodos añadidos dinámicamente.
Los tipos de datos variables no son
declarados (definición dinámica de tipos).
Los tipos de datos variables deben ser
declarados (definición estática de tipos).
28
No puede escribir automáticamente en el
disco duro.
Puede escribir automáticamente en el disco
duro.
Fuente: los autores
4.4.1 Ejemplo de Javascript
<script type="text/javascript">
function PopUp(URL)
{
// Función para abrir ventanas PopUp desde un link HTML recibiendo la URL destino
// ubicando el PopUp en el centro de una pantalla 1280 x 800 © Juan David Gómez C.
id = 5;
day = new Date();
dayT = day.getTime();
left =screen.width/2.8;
height=screen.height/5.3;
eval("page" + id + " = window.open(URL, '" + dayT +
"','Top='+height+',Left='+left+',toolbar=0,scrollbars=YES,location=0,statusbar=0,menubar=0,resiza
ble=0,width=450,height=500');");
}
</script>
En el ejemplo anterior se puede notar las facilidades de Javascript, las variables no fueron tipadas
en su declaración, se respondió a un evento del usuario y el lenguaje se uso junto al HTML para
generar una nueva ventana.
29
4.5 PHP
PHP es un lenguaje interpretado, diseñado especialmente para aumentar el dinamismo de las
páginas web. Originalmente se elaboró como un conjunto de macros sobre C que permitían la
interpretación de un número limitado de comandos para facilitar el mantenimiento de páginas web
en 1994 por Rasmus Lerdorf. A este sistema se le denominó Personal Home Page Tools. Gracias a
su aceptación además se le agregó un sistema para proceso de formularios, así en conjunto estas dos
herramientas se denominaron PHP/FI
PHP en la actualidad conserva su popularidad, según el estudio de estadísticas de uso de PHP en el
2008 de Nexen.net3 sobre 35.1 millones de servidores alojando cerca de 2.1 millones de IP en el
mes de septiembre. PHP conserva el 33,15% (ver ilustración 1) de los sitios web, seguido por
ASP.NET con el 21%.
Ilustración 1 Distribución de tecnologías de contenido dinámico sobre servidores de internet. Septiembre de 2008.
Fuente: nexen.net
3 http://www.nexen.net/chiffres_cles/phpversion/18780-php_statistics_for_august_2008.php
45%
33%
21%
1%
PHP en internet
Html plano PHP ASP.Net Ninguno
30
Otro factor que popularizo el uso de PHP es su naturaleza Open Source que permite a la comunidad
trabajar constantemente sobre su desarrollo.
PHP como tal es un lenguaje de programación, su código se encuentra incrustado en los
documentos HTML, por medio de etiquetas, estas etiquetas son interpretadas del lado del servidor
web, quien en el momento de devolver la petición del cliente, remplaza estas etiquetas por el
resultado obtenido por la ejecución del código. Así el cliente solo recibe el HTML equivalente4
(Ver imagen X)
Un ejemplo de un código PHP incrustado sobre HTML puede verse a continuación:
<HTML >
<head>
<title>Hola Mundo!</title>
</head>
<body>
<?php echo "El famoso hola mundo" ?>
</body>
</HTML >
El resultado en el navegador, viendo el código fuente generado (ver ilustración 2) sería:
Ilustración 2 Vista del código fuente generado por las etiquetas PHP
Fuente: los autores
4 WELLING, Luke y THOMSON, Laura. 2001. Php And Mysql Web Development.2001
31
En el ejemplo se observa que la inclusión del PHP se hace por medio de etiquetas, la instrucción
empieza por <?php y finaliza con ?>. Así <?php (Instrucciones) ?>. Estas etiquetas pueden ser
incluidas en cualquier parte del documento HTML y no hay un límite para su uso, es decir en el
documento pueden abrirse y cerrarse cuantas etiquetas sean necesarias.
4.5.1 Características principales de PHP
“Al ser un lenguaje Open Source dispone de una gran cantidad de características que lo convierten
en una herramienta idónea para la creación de páginas web dinámicas”5:
- Soporte para una gran cantidad de bases de datos: MysSQL, PostgreSQL, Oracle, MS SQL
Server, Sybase mSQL, Informix.
- Integración con bibliotecas externas, permite generar documentos en PDF (documentos de
Acrobat Reader) hasta analizar código XML.
- Perceptiblemente más fácil de mantener y poner al día comparado al código desarrollado en otros
lenguajes, debido a su similitud con C.
- Soportado por una comunidad de desarrolladores, como producto de código abierto, permitiendo
que los fallos de funcionamiento se encuentren y reparen rápidamente.
- PHP permite cualquier tarea que se pueda realizar con un script CGI, como el procesamiento de
información en formularios, foros de discusión, manipulación de cookies y páginas dinámicas.
- PHP se encuentra embebido dentro del HTML , permitiendo su edición y mantenimiento en
procesadores de texto simple
- Soporte a múltiples protocolos de Internet (HTTP, IMAP, FTP, LDAP, SNMP)
- Respecto al servidor no es necesario adoptar tecnologías específicas de sistema operativo pues es
multiplataforma
5 WELLING, Luke y THOMSON, Laura. 2001. Php And Mysql Web Development.2001
32
4.5.2 Seguridad
PHP es un potente lenguaje y el intérprete, tanto incluido en el servidor Web como módulo o
ejecutado como un binario CGI, puede acceder a ficheros, ejecutar comandos y abrir
comunicaciones de red en el servidor. Todas estas características hacen que lo que se ejecute en el
servidor Web sea seguro por defecto
4.5.3 Funcionamiento de PHP
A diferencia de Javascript que se ejecuta en el cliente (Navegador) PHP se ejecuta sobre el servidor,
lo que permite acceder a los recursos disponibles en el servidor como bases de datos o recursos. El
resultado de esta ejecución es enviado al cliente como una página HTML corriente, o también cono
una página WML (Wap)
Proceso de solicitud y ejecución de PHP
Ilustración 3 Proceso de solicitud y ejecución de PHP
Cliente
Servidor Web
Codigo PHP
PHP
Solicitud
(Request)
Respuesta
(Response)
1
2
4
Fuente: los autores
33
Según el gráfico los pasos para obtener la información son:
1. El usuario solicita información, esto se puede por medio de un link o directamente
solicitando la URL de la página, el navegador envía esta información a través del protocolo
HTTP
2. El servidor recibe la solicitud, por medio de la extensión .php se identifica que se debe
utilizar el intérprete para servir la solicitud
3. El intérprete ejecuta el código dentro de las etiquetas PHP y regresa un resultado HTML ,
regresa la información al servidor
4. El servidor regresa la información al cliente
5. El cliente visualiza el documento por medio de su navegador
4.5.4 Tipos de datos y variables en PHP
En PHP (al igual que en Javascript) no hace falta declarar el tipo de la variable ya que simplemente
para crear variables basta con anteponer el simbolo $ al nombre de la variable , también es
importante que la declaración es Case Sensitive, es decir que diferencia entre mayúsculas y
minúsculas, por lo tanto dos declaraciones con el mismo nombre pero con mayúculas o minúsculas
diferentes permite que sean dos variables completamente diferentes.
Los tipos de datos manejados sobre PHP son los siguientes:
Tabla 2 Tipos de datos en PHP
Tipo Descripción
Array Arreglo de objetos
Boolean Valor lógico
34
Double Número en punto flotante
Integer Enteros
String Cadena de caracteres
Object Tipo especial de dato complejo
Fuente: los autores
4.5.5 Respecto a los datos complejos y el uso de objetos
Debido que PHP es orientado a objetos, es posible construir objetos con atributos, métodos propios,
herencia y refinición de funciones. El siguiente código ejemplo ilustra esta característica:
<HTML >
<head>
<title>Creando una mascota para Luis!</title>
<?php
class Mascota
{
var $Nombre=' ';
function DarNombre($varnombre)
{
$this->Nombre=$varnombre;
}
}
// Invocación de la clase
$MascotadeLuis = New Mascota;
$MascotadeLuis->DarNombre("Lucas");
?>
</head>
35
<body>
<?php
echo $MascotadeLuis->Nombre;
?>
</body>
</HTML >
El navegador obtiene el siguiente resultado en HTML :
Ilustración 4 Vista del código fuente luego de la ejecución del objeto Mascota
Fuente: los autores
En el código anterior es importante destacar que las etiquetas donde se generó el objeto mascota
fueron colocadas fuera de la etiqueta <body> de HTML , y sin embargo cuando se hizo la solicitud
el atributo nombre dentro del cuerpo del documento, este fue recuperado sin ningún inconveniente.
4.5.6 Variables generales en PHP
Existen algunas variables particularmente utiles para el programador, estas permiten el paso de
información entre formularios, almacenamiento de cookies en el cliente y llamados especiales al
servidor.Estas variables pueden verse a continuación junto con su uso:
36
Tabla 3 Variables generales en PHP
argv Arreglo de argumentos pasados en la ejecución del script.
$_SERVER['argc'] Número de parámetros pasados al script en su ejecución.
$_SERVER['PHP_SELF'] Nombre del script que se está ejecutando
$_COOKIE Arreglo asociativo de pares (clave, valor) pasados a través de cookies
$_GET Arreglo asociativo de pares (clave, valor) pasados a través de GET
$_POST Arreglo asociativo de pares (clave, valor) pasados a través de POST
$_FILES Arreglo asociativo que contiene información de los ficheros recibidos
mediante POST
$_ENV Arreglo asociativo de pares (clave, valor) del entorno
$_SERVER Arreglo asociativo de pares (clave, valor) del servidor
$_SESSION Arreglo asociativo de pares (clave, valor) de sesión
Fuente: los autores
Importante resaltar que GET y POST son ambas maneras de enviar datos al servidor, la diferencia
radica en que GET los parámetros se pasan a través de la URL mientras que por POST estos se
codifican en las cabeceras HTTP
4.5.7 Utilización de bases de datos sobre PHP
PHP permite la conexión a distintos manejadores de bases de datos, tanto libres como privativos,
sin embargo el uso generalizado es frente a MySQL, principalmente por ser libre, gratuito y por
venir por defecto en las instalaciones tipo LAMP (Linux, Apache, MySQl, PHP). La arquitectura
para la utilización de bases de datos es la siguiente6:
6 WELLING, Luke y THOMSON, Laura. 2001. Php And Mysql Web Development.2001
37
Ilustración 5 Arquitectura Web base consiste en un navegador, servidor web, interprete de código y servidor de
base de datos
Fuente: Welling 2001
El escenario típico de transacción con una base de datos web consiste en los siguientes pasos. Estos
pasos aplicados a un ejemplo pueden verse a continuación:
1. El navegador del cliente hace un llamado HTTP a una página web en particular, por
ejemplo busca todos los libros escritos por el autor Edgar Allan Poe
2. El servidor web recibe el llamado del archivo –resultados.php-, este entrega el archivo al
intérprete PHP para su procesamiento antes de servirlo al cliente
3. El motor PHP empieza a ejecutar el código. En algún momento encuentra un comando para
conexión a la base de datos. El motor abre la conexión con el servidor MySQL y envía la
consulta apropiada
4. El servidor MySQL recibe la consulta, la procesa y envía el resultado de regreso al motor
PHP
5. El motor PHP termina la ejecución del código, y regresa los resultados de ejecución como
HTML
6. El servidor web recibe el código HTML de regreso al cliente, quien ahora puede ver la lista
de libros escritos por Edgar Allan Poe en su navegador web
38
4.6 MySQL
MySQL es un sistema de administración de bases de datos (Database Management System, DBMS)
para bases de datos relacionales. Así, MySQL no es más que una aplicación que permite gestionar
las bases de datos.
Existen muchos tipos de bases de datos, desde un simple archivo hasta sistemas relacionales
orientados a objetos. MySQL, como base de datos relacional, utiliza múltiples tablas para almacenar
y organizar la información.
MySQL fue escrito en C y C++ y destaca por su gran adaptación a diferentes entornos de desarrollo,
permitiendo su interactuación con los lenguajes de programación más utilizados como PHP, PERL
y Java y su integración en distintos sistemas operativos.
También es muy destacable, la condición de open source de MySQL, que hace que su utilización
sea gratuita e incluso se pueda modificar con total libertad, pudiendo descargar su código fuente.
Esto ha favorecido muy positivamente en su desarrollo y continuas actualizaciones, para hacer de
MySQL una de las herramientas más utilizadas por los programadores orientados a Internet.
4.7 Sistemas de información
Un sistema es un conjunto de componentes que interaccionan entre sí, para lograr un objetivo.
Existen una gran variedad de sistemas, sin embargo la mayoría pueden representarse por medio de
un modelo formado por cinco bloques básicos. Los elementos de entrada, la sección de
transformación, mecanismos de control, objetivos y los elementos resultantes. Tal como se muestra
en la ilustración 6, los recursos acceden al sistema por medio de las entradas para ser transformados.
Este proceso es vigilado por los mecanismos de control con el fin de lograr los objetivos del
sistema. Una vez se ha llevado a cabo la transformación, el resultado sale del sistema a través de los
elementos de salida.
39
Ilustración 6 Modelo general de un sistema
Objetivos
Mecanismos
de control
Entrada
Transformación
Salida
Fuente: los autores
Los sistemas en realidad son comunes de encontrar, pues están en la vida corriente de las personas:
una máquina expendedora de bebidas, una fábrica de productos, el cuerpo humano, un automóvil,
un archivador de documentos, una fórmula matemática, etc. En el caso de la máquina expendedora
de bebidas el elemento de entrada corresponde a las monedas que se pueden introducir. Una vez la
moneda está dentro se compara con el precio de la bebida seleccionada (objetivo del sistema)
mediante el elemento de control. Cuando la cantidad de dinero introducida al sistema es la correcta,
el mecanismo de control cambia las monedas por una bebida, la cual es entregada al usuario. De
forma similar, es posible representar el resto de los ejemplos mediante los cinco bloques básicos de
un sistema.
Mientras que hay un consenso en la definición de sistema, no lo hay en la definición de sistema de
información. En la actualidad, la expresión sistema de información se utiliza de forma común y
habitual en las organizaciones; sin embargo, existen diversas definiciones y para ellos escuelas y
autores del tema. Aún así, basándose en la definición dada de sistema, se podría realizar una
primera aproximación definiéndola como un conjunto de componentes que interactúan entre sí para
lograr un objetivo común: satisfacer las necesidades de información de una organización.
40
4.7.1 Definición general de los sistemas de información
“Los sistemas de información son un conjunto de componentes interrelacionados que recolectan (o
recuperan) procesan, almacenan y distribuyen información para apoyar la toma de decisiones y el
control de una organización. Además de apoyar la toma de decisiones, la coordinación y el control,
los sistemas de información también pueden ayudar a los gerentes y trabajadores a analizar
problemas, a visualizar asuntos complejos y a crear productos nuevos”7.
La definición proporcionada por Laudon y Laudon refleja tres aspectos básicos de los sistemas de
información. Un sistema de información está formado por un conjunto de componentes. A
diferencia de otras definiciones, los autores no especifican qué componentes interactúan en el
sistema de información. Esto es debido a querer englobar los distintos sistemas de información en
una única definición. En contraposición a lo que la mayoría de personas creen, un sistema de
información puede ser formal e informal. De manera similar, es posible encontrarse con sistemas de
información basados en ordenadores (o en la tecnología de la información), y sistemas de
información que utilizan la tecnología del papel y el lápiz. Los primeros, son aquellos que se
apoyan en definiciones fijas y aceptadas de datos y procedimientos y que operan en conformidad
con reglas predefinidas, mientras que los segundos, se basan en reglas de comportamiento no
establecidas. Las conversaciones de trabajo en la máquina de cafés, o una reunión durante la comida
pueden considerarse sistemas informales.
El segundo aspecto que trata la definición de Laudon y Laudon son las actividades que realizan los
sistemas de información, más concretamente el sistema de transformación de un sistema. Las
actividades básicas de un sistema de información son la recolección (o recuperación), el procesado,
el almacenamiento y la distribución de la información introducida. En función del nivel de
complejidad del procesado, se obtendrán distintos sistemas de información.
4.8 Modelo de prototipado evolutivo
“El desarrollo evolutivo se basa en la idea de desarrollar una implementación inicial, exponiéndola
los comentarios del usuario y refinándola a través de las diferentes versiones hasta que se desarrolla
7 LAUDON y otros. Sistemas de Información Gerencial, 2004
41
un sistema adecuado. Así las actividades de especificación de desarrollo y validación se entrelazan
en vez de separarse, con una rápida retroalimentación entre éstas.”8
Según Sommerville existen dos tipos de desarrollo evolutivo:
1. Desarrollo exploratorio (ver ilustración 7), el proceso consiste en trabajar con el cliente para
descubrir sus requerimientos hasta llegar al sistema final. El desarrollo empieza con las
partes del sistema que se comprenden mejor. Así el sistema ira evolucionando agregando
nuevos atributos propuestos por el cliente.
Ilustración 7 Desarrollo exploratorio de prototipos
Fuente: Los autores
2. Prototipos desechables, donde el objetivo del proceso de desarrollo evolutivo es
comprender los requerimientos del cliente y entonces desarrollar una definición mejorada
de los requerimientos para el sistema. El prototipo se concentra en probar los
requerimientos del cliente que no se entienden por completo
8 SOMMERVILLE, IAN ,Ingeniería del software.. 2005.
Diseño del prototipo Construir el prototipo Utilizar el sistema
prototipo
¿Sistema apto? Entrega del sistema
42
Ilustración 8 Desarrollo de prototipos desechables
Fuente: los autores
En el desarrollo, un enfoque evolutivo es efectivo, ya que satisface las necesidades inmediatas de
los clientes. La ventaja de un proceso del software que se basa en este enfoque consiste en que los
requerimientos pueden desarrollados de forma creciente. Así tan pronto como los usuarios
desarrollen un mejor entendimiento de su problema, éste se puede reflejar en el sistema software.
Es importante resaltar que el punto de vista evolutivo del ciclo de vida del software considera a la
primera entrega como un prototipo inicial en el campo. Modificaciones y mejoras subsecuentes
resultan en nuevas entregas de prototipos más maduros. Este proceso continúa hasta que se haya
desarrollado el producto final. De esta manera, la adopción de esta óptica elimina la distinción
arbitraria entre desarrollo y mantenimiento.
4.9 El manifiesto ágil
“En marzo de 2001 diecisiete críticos de los modelos de mejora del desarrollo de software basados
en procesos, convocados por Kent Beck,, se reunieron en Salt Lake City para tratar sobre técnicas y
procesos para desarrollar software. En la reunión se acuñó el término “Métodos ágiles”9 para definir
a los métodos que estaban surgiendo como alternativa a las metodologías formales (CMMI, SPICE)
9 Beck Kent y otros, Manifesto for Agile Software Development.
Requerimientos generales
Desarrollar prototipo
Evaluar prototipo
Especificar sistema
Desarrollar software
Validar sistema
Entregar sistema al cliente
43
a las que consideraban excesivamente “pesadas” y rígidas por su carácter normativo y fuerte
dependencia de planificaciones detalladas previas al desarrollo.
Principios del manifiesto ágil
“Estamos poniendo al descubierto mejores métodos para desarrollar software, haciéndolo y
ayudando a otros a que lo hagan. Con este trabajo hemos llegado a valorar:
- A los individuos y su interacción, por encima de los procesos y las herramientas
- El software que funciona, por encima de la documentación exhaustiva
- La colaboración con el cliente, por encima de la negociación contractual.
- La respuesta al cambio, por encima del seguimiento de un plan
Aunque hay valor en los elementos de la derecha, valoramos más los de la izquierda.” 10
4.10 Programación extrema
La programación extrema o eXtreme Programming (XP) es un enfoque de la ingeniería de software
formulado por Kent Beck, autor del primer libro sobre la materia, Extreme Programming
Explained: Embrace Change en 1999. La programación extrema se diferencia de las metodologías
tradicionales principalmente en que pone más énfasis en la adaptabilidad que en la previsibilidad.
Los defensores de XP consideran que los cambios de requisitos sobre la marcha son un aspecto
natural, inevitable e incluso deseable del desarrollo de proyectos. Creen que ser capaz de adaptarse
a los cambios de requisitos en cualquier punto de la vida del proyecto es una aproximación mejor y
más realista que intentar definir todos los requisitos al comienzo del proyecto e invertir esfuerzos
después en controlar los cambios en los requisitos.
Los Valores originales de la programación extrema son: simplicidad, comunicación,
retroalimentación (feedback) y coraje. Un quinto valor, respeto, fue añadido en la segunda edición
de Extreme Programming Explained. Los cinco valores se detallan a continuación:
Simplicidad:
10
Beck Kent y otros, Manifesto for Agile Software Development.
44
La simplicidad es la base de la programación extrema. Se simplifica el diseño para agilizar el
desarrollo y facilitar el mantenimiento. Un diseño complejo del código junto a sucesivas
modificaciones por parte de diferentes desarrolladores hacen que la complejidad aumente
exponencialmente.
Comunicación:
La comunicación se realiza de diferentes formas. Para los programadores el código comunica mejor
cuanto más simple sea. Si el código es complejo hay que esforzarse para hacerlo inteligible. El
código autodocumentado es más fiable que los comentarios ya que éstos últimos pronto quedan
desfasados con el código a medida que es modificado. Los programadores se comunican
constantemente gracias a la programación por parejas. La comunicación con el cliente es fluida ya
que el cliente forma parte del equipo de desarrollo. El cliente decide que características tienen
prioridad y siempre debe estar disponible para solucionar dudas.
Retroalimentación (feedback):
Al estar el cliente integrado en el proyecto, su opinión sobre el estado del proyecto se conoce en
tiempo real. Al realizarse ciclos muy cortos tras los cuales se muestran resultados, se minimiza el
tener que rehacer partes que no cumplen con los requisitos y ayuda a los programadores a centrarse
en lo que es más importante.
Respeto:
El respeto se manifiesta de varias formas. Los miembros del equipo se respetan los unos a otros,
porque los programadores no pueden realizar cambios que hacen que las pruebas existentes fallen o
que demore el trabajo de sus compañeros. 11
4.11 Empresa CREAMAX12
Creamax es una empresa vallecaucana creadora y distribuidora de productos de suplemento para la
nutrición deportiva, con aproximadamente 6 años en el mercado.
Misión
11
JEFFRIES Ron, Principios de XP, Extreme Programming Installed, pag 35 12
CREAMAX, visión, misión y valores institucionales, documento interno empresarial.
45
“Satisfacer totalmente las necesidades nutricionales de nuestros clientes, a través de la excelencia en
el servicio, el desarrollo integral de nuestros líderes de acción y el sentido de compromiso con
nuestra familia y nuestro País.”13
Visión
“Queremos que Creamax sea un modelo de empresa líder en servicios de nutrición, por seguridad,
oportunidad y cubrimiento total además de presencia competitiva a nivel nacional e
internacional.”14
Políticas de calidad
Clientes:
Superar las expectativas de los clientes manteniendo un portafolio actualizado de acuerdo con sus
intereses
Trabajo:
Trabajar con base en una cultura creativa, utilizando alta tecnología, aprovechando al máximo los
recursos disponibles y planificando estratégicamente
Equipo:
Desarrollar un sistema de selección que permita conformar un excelente equipo de colaboradores,
capacitado técnica y humanamente, con gran sentido de pertenencia
Investigación:
Crear un sistema de investigación que proporcione soluciones para el uso del tiempo libre acorde
con el entorno, mejorando continuamente y presentando mayores beneficios que los ofrecidos por la
competencia
Experiencia:
Aprovechar la experiencia obtenida a través del tiempo de ejercicio aumentando ventajas
competitivas y posicionando en el primer lugar a la compañía
13
CREAMAX, visión, misión y valores institucionales, documento interno empresarial 14
CREAMAX, visión, misión y valores institucionales, documento interno empresarial
46
Valores corporativos
- Nuestro trabajo productivo permite el crecimiento personal, familiar y social
- Con disciplina, trabajo en equipo y autocontrol todos ganamos
- El diálogo fundamentado en la razón, es el único medio para dirimir las diferencias
- La iniciativa, la creatividad y el sentido común hacen grandes a los hombres, las
corporaciones y los países
- Actuando con lealtad, honestidad y respeto, se construye una sociedad en paz
- El corazón de Creamax es el cliente. El garantiza nuestra estabilidad y desarrollo
- Seguridad, oportunidad, confiabilidad y sensibilidad en el producto-servicio son
nuestra razón de ser
- La competencia nos renueva día a día y nos hace grandes, entre los grandes
- El cumplimiento de la constitución y las leyes de la republica, garantizan la
convivencia democrática
Portafolio de productos
A continuación se exponen los productos ofrecidos por la empresa Creamax.
Mass Muscle:
Ganador de peso hipercalórico basado en proteína de suero de leche y un alto contenido de
carbohidratos. Permite aumentar la masa muscular (o masa magra) sin grasa cuando se
consume después del ejercicio o en el momento en que se produce una ventana parabólica
(al levantarse antes de desayunar, y después de hacer ejercicio). Las personas que
consumen Mass Muscle pueden notar los cambios en su cuerpo de manera natural debido a
que éste es un producto naturista.
Creatina Monohidratada:
La creatina aumenta la capacidad de memoria muscular, tiene habilidad para neutralizar la
acidez muscular producida por el ejercicio en cerca de siete por ciento, esto por sí mismo
puede incrementar la capacidad de energía, porque las enzimas envueltas en la producción
de energía no pueden funcionar cuando el nivel de ácido láctico derivado del ejercicio es
muy alto. Éste ácido es el que produce el dolor muscular que te hace abandonar el ejercicio.
47
Whey Protein:
Fórmula proteica diseñada con todos los nutrientes, vitaminas, minerales, antioxidantes y
aminoácidos esenciales para el óptimo desempeño del organismo. Contiene la fórmula
necesaria para la construcción y recuperación de masa muscular y de todos los tejidos del
cuerpo. Sirve para mejorar la calidad muscular y reducir la cantidad de grasa en el cuerpo
cuando se acompaña del ejercicio. Mejora el metabolismo y la energía corporal.
48
5. RECOLECCIÓN DE INFORMACIÓN Y ANALISIS DE REQUERIMIENTOS
5.1 Recolección de información por medio de entrevistas
El primer acercamiento con el cliente lo realizó el estudiante Juan Sebastian Celis Maya,
quien reside en la ciudad de Tuluá, éste en algunas ocasiones había adquirido productos
nutricionales de la empresa Creamax. En una de sus compras notó el problema que tenían
con la impresión de facturas, pues éstas eran hechas en una hoja de cálculo. En ese
momento se acercó al señor Abdulrain Matamba Perdomo, a quien le propuso agilizar y
formalizar de alguna forma este proceso, a lo cual el señor Perdomo respondió de manera
afirmativa y aceptó adquirir un sistema que resolviera algunas de las problemáticas que
tenían en su empresa.
Una vez establecido el interés del cliente, se procede a la recolección de información, por
lo que se realizaron una serie de actividades en busca de obtener suficiente información
para establecer un sistema de acuerdo a las necesidades y expectativas de la empresa. El
sistema de recolección de esta información inicial por el que se opto fue mediante
entrevistas con los involucrados. Pues al ser una empresa con poca cantidad de personal
facilitaba este método.
Para la recolección de información se plantearon la siguiente serie de actividades:
49
Ilustración 9 Actividades para la recolección de información
Determinar
objetivos
Definir
personas
entrevistadas
Establecer
preguntas
Entrevistar
gerente
Entrevistar
usuarios
Analizar
información
Requerimiento
s
Fuente: los autores
Determinar objetivos: cuando se estableció el primer acercamiento con el cliente se observó
que su principal problemática se encontraba en las áreas de procesamiento de la
información, agilidad de procesos y falta de informes que facilitaran la toma de decisiones.
Por lo tanto los objetivos de la entrevista buscan:
- Establecer los principales usuarios del sistema
- Identificar los procesos que mayor tiempo ocupa a los usuarios
- Establecer las expectativas de la gerencia
Definir personas que se entrevistaran: Creamax es una empresa con diez empleados, e
involucrados con el sistema se encuentran cinco personas. Los usuarios que se entrevistaran
según los objetivos que se plantearon en el punto anterior son:
- Elsa Patricia Castaño - Cajera
- Liliana Sanabria – Cajera
- Danny Fernando Cruz – Cajero
- Angélica María Perez – Supervisora
- Abdulrain Matamba Perdomo – Administrador de la empresa
Entrevista con el administrador: con el señor Perdomo, quien aceptó la propuesta de
desarrollo de un sistema de información para su empresa, se identificaron sus expectativas,
50
las necesidades desde la parte gerencial y obtener un primer acercamiento de su visión del
sistema. Esta entrevista puede encontrarse en el anexo uno.
Entrevista con usuarios: los principales usuarios del sistema son los cajeros pues afecta
directamente su actividad laboral, son los encargados de tomar los pedidos y entregarlos al
cliente o despacharlos por medio de mensajería. La entrevista (ver ilustración 10) busca
identificar como se realizan las tareas en este momento y de que forma el sistema puede
agilizar y mejorar esta labor. Las entrevistas pueden encontrarse en el anexo dos.
Ilustración 10 Entrevista realizada a los usuarios del sistema
Entrevista para usuarios del sistema Creamax
Cargo:
¿Cuánto tiempo tarda normalmente en tomar un pedido y crear una factura para un cliente?
_____________________________________________
¿Si el cliente ha realizado compras con ustedes, usted debe preguntar de nuevo toda su
información, o poseen un compendio de cliente de donde pueda recuperarla? Si______
No_______
¿Tiene usted conocimiento de cuántas unidades puede venderle al cliente (disponibilidad
del producto)? Si____ No____
¿De qué forma se incluyen en la factura los descuentos, precios especiales o demás
eventos en el precio ?
_________________________________________________________________________
51
¿Luego de la impresión, con qué nombre guarda la factura realizada?
________________________________________________________
¿Usted puede ver las facturas realizadas por otros vendedores? Si ____ No_____
¿Cuántas personas tienen acceso al computador donde usted trabaja? _______________
¿Cuántas utilizan su misma clave de acceso? ____________________________________
¿Cuando el pedido debe ser enviado por correo certificado, cómo marca la caja?
________________________________________________________________________
Fuente: los autores
5.2 Ciclo de vida del prototipo del sistema
“¿Podría decirme, por favor, qué camino debo tomar desde aquí? Eso depende, en gran medida,
de a dónde quieras ir, dijo el Gato. Eso no importa mucho, dijo Alicia. Entonces no tienes
problema con el camino que cojas, dijo el Gato. -con tal de que llegue a alguna parte-, añadió
Alicia como justificación. Oh, seguro que lo harás, dijo el Gato, con tal de que camines lo
suficiente.” Conversación de Alicia con el Gato Chesire, en “Alicia en el país de las maravillas” de
Lewis Carroll
La formalización del proceso de desarrollo se define como el ciclo de vida del desarrollo. Se puede
describir como, el periodo entre el cual se toma la decisión del desarrollo del software y la entrega
de este al cliente. Este ciclo, por lo general incluye, una fase de requisitos, fase de diseño, fase de
implementación, fase de prueba, y a veces, fase de instalación y aceptación.
52
El desarrollo de este proyecto el ciclo de vida solo comprende las fases de definición de requisitos,
diseño e implementación, además de esto se opto por una aproximación en espiral para definir la
primera iteración del prototipo.
5.3 Metodología de desarrollo
La metodología escogida para el desarrollo del proyecto será una adaptación propia del equipo de
XP, debido a la necesidad de mantener una estrecha comunicación con el cliente y que el equipo de
desarrollo pueda concentrarse en el desarrollo del proyecto y no en soportar cantidades excesivas de
documentación.
Se tomaran las bases de XP, pero las reuniones con el cliente en todo los momentos no podrán
hacerse de forma personal, pues si bien uno de los postulados de XP requieren la presencia continua
del cliente, en la realidad es difícil disponer de la persona todo el tiempo que se requiera. En la
mayoría de momentos entonces, la reuniones se harán de forma virtual (usando correo electrónico o
programas de mensajería).
5.4 Historias de usuario
Las historia de usuario representan un requerimiento de software escrito en una o dos frases
utilizando el lenguaje común del usuario. Cada historia de usuario debe ser limitada, pues se debería
poder colocar en una nota adhesiva.
Las historias de usuario establecidas con el cliente pueden encontrarse en el anexo seis.
5.5 Análisis de requerimientos
A partir de las entrevistas que pueden verse con detalle en el anexo dos, tres, cuatro y cinco,
junto a las historias de usuario entregadas por el cliente se determinaron los requerimientos
53
del sistema para el diseño del primer prototipo funcional del sistema de información. Estos
se encuentran a continuación:
5.5.1 Requisitos funcionales
5.5.1.1 Control de inventario
La empresa CREAMAX mantiene inventarios de sus productos terminados para satisfacer
la demanda de los clientes. Puesto que estos inventarios representan frecuentemente una
considerable inversión, las decisiones con respecto a las cantidades de inventarios son
importantes.
El sistema por petición del cliente hará uso del manejo de inventario PEPS.
El punto más destacado de este requisito es su integración con el proceso de ventas, pues
ambos deben comunicarse para no permitir la facturación de productos que no estén
disponibles en el momento.
5.5.1.2 Creación y almacenamiento de facturas
“Parte de la naturaleza inhumana de un computador es que, una vez que ha sido programado
correctamente y funciona a la perfección, es completamente honesto” Isaac Asimov.
El cliente solicita que el sistema genere facturas que cumplan con los requisitos de la
legislación colombiana, estas facturas serán impresas o la información de la transacción
será almacenada en el sistema para generar en el momento que se requiera el respectivo
documento.
Para la generación de una factura, el sistema deberá solicitar los datos del cliente al que se
le realizará el pedido, estos clientes ya deben encontrarse dentro de la base de datos del
sistema o pueden agregarse al momento de la venta. Luego al cliente establecido le son
agregados los productos que desea para la compra. La información de los productos
disponibles se obtiene desde la base de datos. Ahora bien, cuando se realiza la facturación,
54
se genera el documento, se guarda un registro de la transacción y se descarga del inventario
de productos los artículos que fueron facturados.
Como el sistema guarda registro de las transacciones este debe estar en la capacidad para
recuperar transacciones realizadas con anterioridad, generando los respectivos documentos
electrónicos para su soporte.
Esto adiciona la necesidad de auditar las transacciones realizadas, por lo que usuarios con
permisos especiales deben estar en la capacidad de corregir o eliminar facturas en el caso
de errores al momento de la realización del pedido. Estos usuarios también deben controlar
los datos almacenados sobre clientes, es decir pueden editar información, agregarla o
borrarla.
5.5.1.3 Creación y almacenamiento de informes
La realización de informes busca tomar los datos almacenados y generar documentos
adicionales con información relevante acerca de ellos. Estos informes son hechos a partir de
algunos parámetros entregados por el usuario
En el sistema se requieren diversos tipos de informes, los contemplados por el cliente son
los siguientes:
- Informes administrativos: estos ayudan a controlar el sistema en general, son
usados por el administrador del sistema para tomar decisiones respecto a la
seguridad e integridad del sistema
Control de acceso de usuarios
Transacciones realizadas por hora
Registro e información de usuarios
- Informes gerenciales: los informes gerenciales facilitan la toma de decisiones a
las partes gerenciales, se relacionan directamente con los inventarios, productos
vendidos y clientes
Productos vendidos según diferentes criterios, producto de mayor venta,
producto de menor venta, promedio de productos vendidos en un intervalo
de tiempo
55
Estado de inventarios
Clientes según número de pedidos, valor del pedido, ciudades, fechas de
compra
- Informes de usuario: estos informes proveen información importante para el
vendedor
Productos vendidos en el día
Ventas en un periodo de tiempo
5.5.1.4 Gestión de usuarios
El sistema debe tener una herramienta que facilite la gestión de los usuarios existentes por
parte del administrador. Esta gestión incluirá la inclusión y eliminación de los usuarios,
además de la modificación de cualquiera de los datos que componen el perfil de un usuario
dentro del sistema
5.5.2 Requisitos no funcionales del sistema
5.5.2.1 Confiabilidad
Los errores deben ser controlados
"Probar un programa sólo puede servir para hallar fallos, nunca para demostrar su
ausencia" Edsger Wybe Dijkstra
Cada error que pueda surgir debe ser controlado, es decir, en caso de surgir un error se
deben mostrar pantallas personalizadas al usuario, pero no permitir que el sistema muestre
secciones del código o descripciones detalladas de error que puedan poner en riesgo la
seguridad e integridad del sistema. Estas descripciones deben almacenarse en una bitácora
para el posterior análisis por parte del administrador.
56
Control en cifras decimales
Los números que se requieran en el sistema, por ejemplo precios de productos, sumas de
precios, saldos, descuentos. Se almacenarán y operarán hasta cinco posiciones decimales.
5.5.2.2 Plataforma del sistema
Lenguaje de programación
El sistema debe ser desarrollado sobre PHP versión 4 (PHP4), pues el servidor que el
cliente adquirió para la instalación del sistema sólo soporta ésta versión. Por lo tanto el
sistema debe ser desarrollado en paradigma modular dado que esta versión de PHP posee
un inestable soporte de programación orientada a objetos, ya que carece de algunas
características básicas como ocultación de información y sobrecarga de métodos.
Servidor web
El sistema se alojara bajo el servidor del cliente, este servidor corre la versión 2.2. El
sistema deberá funcionar en perfectas condiciones bajo este servidor web.
5.5.2.3 Usabilidad
Navegador
El sistema funcionará en perfectas condiciones en los siguientes navegadores: chrome versión 4.0,
Firefox versión 3.6, Internet Explorer 8. Otros navegadores o diferentes versiones no se
garantizarán el funcionamiento del sistema.
Diseño en ventanas
El sistema debe hacer uso de AJAX para permitir crear una interfaz similar al escritorio de
los sistemas operativos gráficos. Por una, parte esto es para el cliente importante desde el
punto de vista estético y por otra parte, permite trabajar en diferentes módulos del sistema
sin tener que pasar o perder la información entre el paso de pantallas. Desde la perspectiva
57
del servidor web esto mejora dramáticamente la carga de transacciones pues son menores la
cantidad de llamados de parte del cliente.
5.5.2.4 Seguridad
Autenticación
Antes de realizarse cualquier actividad dentro del sistema, los usuarios deben identificarse, para ello
se utilizará un sistema de autenticación basado en algo conocido. En este caso se hará uso de un
nombre de usuario, el cual a su vez tiene asociada una contraseña que al momento de ser solicitada
debe coincidir con la que se encuentra dentro de la base de datos.
Registro de eventos
Todo evento originado en el sistema debe ser guardado en una bitácora para facilitar procesos de
auditoría. Entiéndase como evento los siguientes acontecimientos: inicio de sesión, finalización de
sesión, excepciones generadas por el usuario, cambio de contraseña, intentos de inicio de sesión.
Perfiles de usuario
El sistema será utilizado por distintas clases de usuarios, es decir, varios cargos dentro de la
empresa hacen uso de este para tareas especificas, por ejemplo, los vendedores son los
directamente encargados de realizar las ventas y facturación, mientras los supervisores
establecen los descuentos en los precios y el ingreso de mercancía.
Según esto se establece un sistema de permisos basado en perfiles, así pues cada usuario
posee un perfil característico y este perfil le brinda el acceso a diferentes características del
sistema.
Los perfiles establecidos son:
- Administrador: los usuarios con perfil administrador tienen acceso completo al
sistema, son los únicos que pueden cambiar los perfiles a otros usuarios, también
pueden modificar, agregar o borrar información proveniente de cualquiera de los
orígenes como productos, clientes, registros de facturación o pedidos.
58
- Supervisor: tiene acceso a modificar los registros de productos, información
sobre usuarios y los registros de ventas. Está orientado a la parte gerencial de la
organización.
- Vendedor: accede al sistema para realizar la facturación de los pedidos, las
únicas modificaciones que puede realizar es sobre los datos de los clientes
5.5.2.5 Base de datos
El sistema se desarrollará bajo MySQL versión 5.0.89-community
5.5.2.6 Estándares de desarrollo
Buenas prácticas de desarrollo
Seguridad: se controlará lo que puede hacer el usuario. La entrada y la salida de información del
sistema son los puntos vulnerables y se prestará especial atención a esto. Todo dato de entrada será
verificado. Por ejemplo, se hará verificación que los campos de textos sólo se les pueda ingresar
texto, o los campos que contengan números sólo puedan ingresarse números.
Optimización: la optimización consiste en que el programa consuma la menor cantidad posible de
recursos (memoria y disco). Es importante ahorrar pasos de variables innecesarios, líneas de
código, medir el rendimiento de funciones similares y utilizar las que menos recursos utilicen.
Standard de codificación: basado en las recomendaciones de estándar de codificación oficial de
php (Zend).
59
- Las funciones y métodos deben comenzar con minúscula. Si son dos palabras se debe usar
la primera en mayúscula y la segunda en minúscula. Ejemplo: metodoPrueba();
- Las propiedades private o protected deben comenzar con un $_ guion, Ejemplo:
$_propiedadPrueba; , mientras que las públicas no.
- Las constantes deben ser escritas siempre en mayúsculas, separadas por _ guion bajo.
Ejemplo: EJEMPLO_DE_CONSTANTE
- Se debe omitir el tag de cierre „?>‟ en las clases (o scripts) que solo contienen código PHP
, es decir, sin código HTML embebido
- Cuando se define un parámetro opcional (inicializado como nulo) de una función/método se
debe utilizar „null‟ en lugar de „false‟ , Ejemplo: public function foo($required, $optional =
null) , excepto que el parámetro opcional sea booleano, entonces por obligación es válido
poner „true‟ o „false‟
- Las cadenas deben ser delimitadas con comillas simples y no dobles. Ejemplo: $var =
„hola mundo‟;
- Las consultas SQL pueden escribirse concatenadas y divididas en varias líneas para facilitar
su lectura. El operador „.‟ debe ir alineado del operador „=‟,
Manejo de excepciones
El manejo de excepciones es una estructura de control de los lenguajes de programación diseñada
para manejar condiciones anormales que pueden ser tratadas por el mismo programa que se
desarrolla. Todas las excepciones deben ser controladas y guardar los mensajes de error o
advertencia en un archivo de bitácora para el posterior análisis de la causa del evento.
Mensajes de aplicación
Cuando el sistema requiera mostrar información importante al usuario se mostrara en texto de
colores rojos para capturar la atención.
60
5.5.2.7 Mantenibilidad
Documentación
Se requiere que el sistema tenga sus respectivos manuales que sirvan de referencia en
cualquier momento a los usuarios. Este manual debe detallar las funciones más importantes
y las funcionalidades que provee el sistema.
Además de esta documentación por parte de los usuarios, el código debe estar documentado
para facilitar su posterior análisis o corrección en casos de fallos.
5.5.2.8 Portabilidad
El sistema debe funcionar bajo cualquier sistema operativo o cualquier plataforma. Esta condición
se cumple además en la medida de cumplir el requisito de navegador de internet anteriormente
mencionado. Si la plataforma puede ejecutar algunos de los navegadores, el sistema puede trabajar a
cabalidad.
5.5.3 Aspectos globales
5.5.3.1 Acceso web
El sistema para la empresa Creamax debe ser asequible desde internet y desde un navegador web
que cumpla con los requisitos anteriormente mencionados para navegadores.
5.5.3.2 Disposición del servidor
El servidor pertenece a la empresa Creamax, este es un servidor arrendado a la empresa Hostgator
normalmente usado para hospedar páginas web y posee las siguientes características:
Procesador: Intel Xeon 3450 (Quad Core), memoria RAM: 8 GB, disco duro: 1 TB, sistema
operativo: Linux CentOS
61
5.5.4 Aspectos fuera del alcance
Dentro del prototipo de información para el sistema de información para la empresa Creamax no
están contemplados los siguientes aspectos: contabilidad, distribución de productos, CRM, compras,
distribuidores, bancos y pagos, gestión de almacenes, producción, servicios y cualquier otro módulo
del que expresamente no se trate en estos requerimientos iniciales o en el documento.
5.6 Casos de uso – Sistema para la empresa Creamax
Los casos de uso son "escenarios en los cuales el usuario interactúa con el sistema que se está
definiendo para lograr cierto objetivo específico o realizar alguna tarea en particular"15
. El método
que seguimos en nuestro desarrollo es el siguiente: a partir de entrevistas con los futuros usuarios
del sistema, se intentan descubrir las diversas situaciones que se puedan presentar durante la
utilización del sistema. Por ejemplo, si el cliente menciona la necesidad de cargar archivos desde el
disco, entonces una de las situaciones de uso potenciales del sistema será: "carga un archivo de
datos”. Una vez que se obtienen la mayor parte de las situaciones (recordemos que la naturaleza
cíclica del proceso implica que posteriormente podrían aparecer nuevas situaciones que no hubiesen
sido contempladas durante la primera aproximación, y que por ello se deben realizar varias
entrevistas con el cliente), debemos intentar reagruparlas y encontrar casos de uso generales que
abarquen varias de las situaciones antes encontradas.
15
Wiegers. : Software Development Magazine p50-55, Marzo de 1997 www.sdmagazine.com
62
5.6.1 Control de inventario
Ilustración 11 Casos de uso - Control de inventario
Fuente: los autores
5.6.1.1 Agregar existencias
Objetivo: permitir al usuario agregar las existencias de productos al inventario
Actor principal: administrador del sistema
Actor involucrado: no aplica
Condiciones especiales:
- Se agregarán existencias de productos previamente creados
- Sólo usuarios con permisos administrativos pueden agregar existencias
Flujo:
Acción del usuario Acción del sistema
2- Escoger producto
1- Mostrar opciones de agregación de
existencias
63
3- Escoger Sabor
4- Escoger Presentación
5- Escoger Cantidad
6- Almacenar información en la base de datos
7- Mostrar confirmación de información
almacenada
Flujo alternativo: error en la digitación de la cantidad:
Acción del usuario Acción del sistema
2- Corregir error en cantidad
1- Mostrar aviso de error
3- Continuar en paso 5 del flujo normal
5.6.1.2 Eliminar existencias
Objetivo: permitir al usuario eliminar existencias de productos del inventario
Actor principal: administrador del sistema
Actor involucrado: no aplica
Condiciones especiales:
Se eliminarán existencias de productos previamente creados
- Sólo usuarios con permisos administrativos pueden realizar la eliminación de existencias
Flujo:
64
Acción del usuario Acción del sistema
2- Escoger existencias a eliminar
1- Mostrar opciones de eliminación de
existencias
3- Actualizar base de datos
4- Mostrar confirmación de eliminación
5.6.1.3 Ver inventario
Objetivo: permitir al usuario ver las existencias de productos actuales
Actor principal: vendedor
Actor involucrado: no aplica
Condiciones especiales:
- Deben haber existencias de productos en el inventario
Flujo:
Acción del usuario Acción del sistema
1- Mostrar existencias de productos
65
Ilustración 12 Ver inventario - diagrama de secuencia
Fuente: los autores
5.6.1.4 Ver detalle de existencias
Objetivo: clasificar la visualización de las existencias de productos en el inventario por sabores y
presentaciones
Actor principal: administrador del sistema
Actor involucrado: no aplica
Condiciones especiales:
- No aplica
Flujo:
Acción del usuario Acción del sistema
2- Escoger criterio de detalle
1- Mostrar existencias de producto y opciones
de visualización detallada
66
3- Mostrar detalle de existencias
Ilustración 13 Ver detalle de existencia - diagrama de secuencia
Fuente: los autores
5.6.1.5 Agregar producto
Objetivo: permitir al usuario agregar productos del sistema
Actor principal: administrador del sistema
Actor involucrado: no aplica
Condiciones especiales:
- Sólo usuarios con permisos administrativos pueden agregar productos
Flujo:
Acción del usuario Acción del sistema
2- Escribir nombre del producto
1- Mostrar opciones para agregar productos
67
3- Escribir nombre del sabor
4- Seleccionar presentaciones del producto
5- Agregar producto a la lista de productos
6- Mostrar confirmación de producto agregado
Flujo alternativo: campo de nombre vacío, campo nombre del sabor
Acción del usuario Acción del sistema
2- Escribir información faltante
1- Mostrar alerta en el campo de error
3- Continuar con el paso 5 del flujo normal
Ilustración 14 Diagrama de secuencia - Agregar producto
Fuente: los autores
68
5.6.1.6 Eliminar producto
Objetivo: permitir al usuario eliminar productos del sistema
Actor principal: administrador del sistema
Actor involucrado: no aplica
Condiciones especiales:
- Únicamente se podrán eliminar productos que carezcan de existencias
- Sólo usuarios con permisos administrativos pueden realizar la eliminación de productos
Flujo:
Acción del usuario Acción del sistema
2- Escoger producto a eliminar
1- Mostrar listado de productos
3- Actualizar listado de productos
4- Mostrar confirmación de producto eliminado
69
Ilustración 15 Eliminar producto - diagrama de secuencia
Fuente: los autores
5.6.2 Generación de facturas
Ilustración 16 Casos de uso - Generación de facturas
70
5.6.2.1 Listar productos
Objetivo: permitir al ver los productos disponibles para la venta
Actor principal: vendedor
Actor involucrado: no aplica
Condiciones especiales:
- Deben haber existencias de productos en el inventario para poder realizar una venta
Flujo:
Acción del usuario Acción del sistema
1- Obtener productos disponibles a partir de la
información de la base de datos
2- Mostrar listado de productos
5.6.2.2 Verificar disponibilidad
Objetivo: verifica que los productos que se van a listar para la venta existan en el inventario
Actor principal: sistema
Actor involucrado: vendedor
Condiciones especiales:
- No aplica
Flujo:
71
Acción del usuario Acción del sistema
1- Verificar disponibilidad de existencias de
productos en la base de datos
5.6.2.3 Eliminar productos
Objetivo: permitir al usuario eliminar productos del sistema
Actor principal: administrador del sistema
Actor involucrado: no aplica
Condiciones especiales:
- Únicamente se podrán eliminar productos que carezcan de existencias
- Solo usuarios con permisos administrativos pueden realizar la eliminación de productos
Flujo:
Acción del usuario Acción del sistema
2- Escoger producto a eliminar
1- Mostrar listado de productos
3- Actualizar listado de productos
4- Mostrar confirmación de producto eliminado
5.6.2.4 Realizar venta
Objetivo: permitir al usuario vendedor, realizar una venta a un cliente de la empresa
72
Actor principal: vendedor
Actor involucrado: no aplica
Condiciones especiales:
- El cliente al que se le venden los productos debe existir en el sistema
- Los productos que se venden deben existir en el inventario
Flujo:
Acción del usuario Acción del sistema
2- Seleccionar cliente
4- Seleccionar todos los productos que se
desean para esa venta
5-Aceptar productos que se desean
7- Confirmar
1- Mostrar listado de clientes
3- Mostrar listado de productos
6- Solicitar confirmación para realizar el
registro actual de la venta
8- Registrar venta en la base de datos
9- Mostrar confirmación de venta realizada
Flujo alternativo: cancelar venta
Acción del usuario Acción del sistema
2- Confirmar la alerta
1- Solicitar confirmación de cancelar la venta en
proceso actual
3- Eliminar el registro de la venta actual en la
73
base de datos
4- Regresar al usuario al inicio del modulo de
ventas
5.6.2.5 Generar factura
Objetivo: genera una factura en formato PDF a partir de una venta
Actor principal: sistema
Actor involucrado: no aplica
Condiciones especiales:
- El registro de la transacción ya se encuentra almacenado
Flujo:
Acción del usuario Acción del sistema
1- Solicita generación de la factura de la venta
actual
2- Obtener información acerca de la venta
deseada por el usuario de los registros
3- Procesar la información y producir un
archivo con los datos de la transacción
74
Ilustración 17 Generar factura - diagrama de secuencia
Fuente: los autores
5.6.3 Generación de informes
Ilustración 18 Casos de uso - Generación de informes
Fuente: los autores
75
5.6.3.1 Generar informes genéricos
Objetivo: presenta al usuario un informe basado en los criterios seleccionados
Actor principal: administrador
Actor involucrado: no aplica
Condiciones especiales:
- Solo los usuarios con permisos administrativos pueden generar informes
- Deben haber datos registrados en el sistema para generar los informes
Flujo:
Acción del usuario Acción del sistema
2- Seleccionar tipo de informe
1- Mostrar tipos de informes a generar
3- Procesar la información y producir un
archivo con los datos de la transacción
4- Presentar reporte en formato PDF
Flujo alternativo: no hay datos sobre los cuales generar informes genéricos
Acción del usuario Acción del sistema
1- Mostrar error al usuario de falta de datos con
los cuales generar el informe
76
Ilustración 19 Generar informe genérico - diagrama de secuencia
Fuente: los autores
5.6.3.2 Generar informe de ventas
Objetivo: presenta al usuario un informe de ventas
Actor principal: administrador
Actor involucrado: no aplica
Condiciones especiales:
- Deben haber ventas registradas en el sistema
Flujo:
Acción del usuario Acción del sistema
77
1-Selecciona la fecha de la cual desea el
informe acerca de las ventas realizadas
2- Obtiene los datos de las ventas comprendidas
en la fecha determinada por el usuario
2- Presenta reporte en formato PDF con los
datos obtenidos
5.6.3.3 Generar informe de accesos
Objetivo: presenta al usuario un informe de los accesos al sistema por parte de los usuarios
Actor principal: administrador
Actor involucrado: no aplica
Condiciones especiales:
- Deben haber accesos de usuarios registrados en el sistema
Flujo:
Acción del usuario Acción del sistema
1- Solicita generar informes de acceso al
sistema
4- Guarda o imprime el archivo generado
2- Obtiene los datos acerca de los acceso al
sistema comprendidos en la fecha que
determino el usuario
3- Presenta un reporte en formato PDF de
accesos con los datos obtenidos
78
5.6.3.4 Generar informe de clientes
Objetivo: presenta al usuario un informe de los clientes de la empresa registrados en el sistema
Actor principal: administrador
Actor involucrado: no aplica
Condiciones especiales:
- Deben haber clientes registrados en el sistema
Flujo:
Acción del usuario Acción del sistema
1- Solicita generar informes de clientes
registrados
4- Guarda o imprime el archivo generado
2- Obtiene los datos acerca de los clientes
registrados
3- Presenta un reporte en formato PDF de los
clientes registrados
5.6.3.5 Generar informe de sabores
Objetivo: presenta al usuario un informe de los sabores que más se venden de todos los productos
Actor principal: administrador
Actor involucrado: no aplica
Condiciones especiales:
- Deben haber ventas registradas en el sistema
79
Flujo:
Acción del usuario Acción del sistema
1- Solicita generar informes de los sabores que
más se venden de cada producto
4- Guarda o imprime el archivo generado
2- Obtiene los datos acerca de los productos y
cual su sabor más vendidos
3- Presenta un reporte en formato PDF de los
sabores que más se vendieron de cada producto
5.6.3.6 Generar informe de presentaciones
Objetivo: presenta al usuario un informe de las presentaciones que más se venden de todos los
productos
Actor principal: administrador
Actor involucrado: no aplica
Condiciones especiales:
- Deben haber ventas registradas en el sistema
Flujo:
Acción del usuario Acción del sistema
1- Solicita generar informes de las
presentaciones que más se venden de cada
producto
4- Guarda o imprime el archivo generado
2- Obtiene los datos acerca de los productos y
cuál es la presentación en que más son vendidos
3- Presenta un reporte en formato PDF de las
80
presentaciones que más se vendieron de cada
producto
5.6.4 Gestión de usuarios
Ilustración 20 Casos de uso – Gestión de usuarios
Fuente: los autores
5.6.4.1 Modificar información personal
Objetivo: permite al usuario modificar sus datos personales que se encuentran almacenados en el
sistema
Actor principal: vendedor, supervisor, administrador
Actor involucrado: no aplica
Condiciones especiales:
- Deben haber ventas registradas en el sistema
81
Flujo:
Acción del usuario Acción del sistema
2- Cambiar información
3- Aceptar
4- Aceptar alerta o cancelar
1- Mostrar información del usuario almacenada
3- Mostrar alerta de confirmación de cambios
5- Si se acepta la alerta, aplicar los cambios en
la base de datos, si se cancela no realizar los
cambios
6- Mostrar al usuario la pantalla de información
personal actualizada
Ilustración 21 Modificar información personal - diagrama de secuencia
82
Fuente: los autores
5.6.4.2 Modificar correo electrónico personal
Objetivo: permite al usuario modificar su correo electrónico registrado en el sistema
Actor principal: vendedor, supervisor, administrador
Actor involucrado: No aplica
Condiciones especiales:
- El usuario debe estar autenticado
Flujo:
Acción del usuario Acción del sistema
2- Escribir nuevo correo electrónico
4- Activar correo
1- Mostrar correo electrónico actual
3- Enviar mensaje de activación
5- Modificar correo electrónico en la base de
datos
6- Mostrar al usuario la confirmación de
modificación de correo electrónico
Flujo alternativo: campo de correo electrónico vacío, o con el formato equivocado
Acción del usuario Acción del sistema
83
2- Escribir nuevo correo electrónico
4- Activar correo
1- Mostrar error en el campo de correo
electrónico
3- Enviar mensaje de activación
5- Modificar correo electrónico en la base de
datos
6- Mostrar al usuario la confirmación de
modificación de correo electrónico
5.6.4.3 Modificar correo o clave
Objetivo: permite al usuario modificar su clave personal de acceso al sistema
Actor principal: vendedor, supervisor, administrador
Actor involucrado: No aplica
Condiciones especiales:
- El usuario debe estar autenticado
Flujo:
Acción del usuario Acción del sistema
2- Escribir clave actual
4- Escribir nueva clave
1- Solicitar clave actual
3- Solicitar nueva clave
84
5- Modificar clave en la base de datos
6- Mostrar al usuario la confirmación de
modificación de clave
Flujo alternativo: clave actual inválida
Acción del usuario Acción del sistema
2- Escribir clave actual correcta
4- Escribir nueva clave
1- Mostrar error de clave actual invalida
3- Solicitar nueva clave
5- Modificar clave en la base de datos
6- Mostrar al usuario la confirmación de
modificación de clave
5.6.4.4 Modificar claves
Objetivo: permite al usuario administrador modificar las claves de los demás usuarios del sistema
Actor principal: administrador
Actor involucrado: no aplica
Condiciones especiales:
- Sólo usuarios con perfil administrativo pueden modificar las claves de los demás usuarios
Flujo:
85
Acción del usuario Acción del sistema
2- Seleccionar usuarios
4- Modificar clave del usuario seleccionado
1- Mostrar el listado de usuarios
3- Mostrar opciones de modificación de clave
5- Actualizar base de datos de usuarios
6- Mostrar confirmación de modificación de
clave
5.6.4.5 Modificar permisos
Objetivo: permite al usuario administrador modificar los permisos de los demás usuarios del
sistema
Actor principal: administrador
Actor involucrado: no aplica
Condiciones especiales:
- Sólo usuarios con perfil administrativo pueden modificar los permisos de los demás
usuarios
Flujo:
Acción del usuario Acción del sistema
2- Seleccionar usuarios
1- Mostrar el listado de usuarios
3- Mostrar opciones de modificación de
86
4- Modificar el perfil (permisos) del usuario
seleccionado
permisos
5- Actualizar base de datos de usuarios con los
nuevos permisos asignados
6- Mostrar confirmación de modificación de
permisos
5.6.5 Gestión de clientes
Ilustración 22 Casos de uso - Gestión de clientes
Fuente: los autores
5.6.5.1 Crear cliente
Objetivo: permite al usuario administrador registrar un cliente de la empresa en el sistema
Actor principal: administrador
Actor involucrado: no aplica
87
Condiciones especiales:
- Sólo usuarios con perfil administrativo pueden registrar un cliente de la empresa en el
sistema
Descripción:
Flujo:
Acción del usuario Acción del sistema
1- Solicita crear un nuevo cliente
3- Escribir datos del nuevo cliente
2- Mostrar formulario de creación de cliente
4- Almacenar información del nuevo cliente en
la base de datos
5- Mostrar confirmación de creación de cliente
Flujo alternativo: error en el tipo de datos introducidos en la información del cliente
Acción del usuario Acción del sistema
2- Escribir datos del nuevo cliente
1- Mostrar error en digitación de datos
3- Almacenar cliente en la base de datos
4- Mostrar confirmación de creación de cliente
Ilustración 23 Crear cliente - Diagrama de secuencia
88
Fuente: los autores
5.6.5.2 Eliminar cliente
Objetivo: permite al usuario administrador eliminar un cliente de la empresa que se encuentre en el
sistema
Actor principal: administrador
Actor involucrado: no aplica
Condiciones especiales:
- Sólo usuarios con perfil administrativo pueden eliminar clientes del sistema
- El cliente a eliminar, debe existir previamente en la base de datos
Flujo:
Acción del usuario Acción del sistema
89
2- Seleccionar cliente a eliminar
1- Mostrar el listado de clientes
3- Eliminar cliente de la base de datos
4- Mostrar confirmación de eliminación de
cliente
Ilustración 24 Eliminar cliente - diagrama de secuencia
Fuente: los autores
5.6.5.3 Modificar cliente
90
Objetivo: permite al usuario administrador modificar un cliente de la empresa que se encuentre en
el sistema
Actor principal: administrador
Actor involucrado: no aplica
Condiciones especiales:
- Sólo usuarios con perfil administrativo pueden modificar clientes del sistema
- El cliente a modificar, debe existir previamente en la base de datos
Flujo:
Acción del usuario Acción del sistema
2- Seleccionar cliente a modificar
4- Modificar datos del cliente
5- Aceptar
7- Aceptar alerta de modificación
1- Mostrar el listado de clientes
3- Mostrar datos del cliente a modificar
6- Mostrar alerta de confirmación para
modificar los datos del cliente
8- Actualizar base de datos de clientes con los
datos introducidos
9- Mostrar confirmación de modificación
Flujo alternativo: error en el tipo de datos de modificación del cliente
Acción del usuario Acción del sistema
2- Modificar datos del cliente
1- Mostrar error de tipo de datos de
modificación
91
3- Aceptar
4- Aceptar alerta de modificación
5- Mostrar alerta de confirmación para
modificar los datos del cliente
6- Actualizar base de datos de clientes con los
datos introducidos
7- Mostrar confirmación de modificación
Ilustración 25 Editar cliente - diagrama de secuencia
Fuente: los autores
5.6.5.4 Buscar cliente
Objetivo: permite al usuario buscar un cliente de la empresa que se encuentre en el sistema
Actor principal: vendedor
Actor involucrado: no aplica
Condiciones especiales:
92
- El cliente a buscar, debe existir previamente en la base de datos
- Se debe tener concordancia por palabras clave en la búsqueda
Flujo:
Acción del usuario Acción del sistema
2- Escribir términos de búsqueda
1- Mostrar opciones de búsqueda
3- Examinar coincidencias en la base de datos
4- Retornar clientes que coincidan con los
criterios como resultados de búsqueda
Ilustración 26 Buscar cliente - diagrama de secuencia
Fuente: los autores
93
5.7 Diseño modular
Se optó por un diseño modular, este enfoque implica dividir la programación en partes lógicas y
manejables llamadas módulos. Este tipo de programación funciona bien con el sistema requerido
porque da énfasis a las interfaces entre los módulo. Idealmente, cada módulo individual debe ser
funcionalmente cohesivo de manera que se encargue de realizar una sola función.
El diseño de programa modular tiene tres ventajas principales. Primero, los módulos son más fáciles
de escribir y de depurar porque prácticamente son independientes. Rastrear un error en un módulo
es menos complicado, debido a que un problema en un módulo no debe causar problemas en otros.
Una segunda ventaja del diseño modular es que los módulos son más fáciles de mantener.
Normalmente las modificaciones se limitarán a unos módulos y no seguirán en todo el programa.
Una tercera ventaja del diseño modular es que los módulos son más fáciles de entender, debido a
que son subsistemas independientes. Por lo tanto, un lector puede adquirir una lista del código de un
módulo y entender su función [Kendall & Kendall,2005].
En detalle, cada módulo es una carpeta que contiene cierto número de archivos los cuales son
necesarios entre sí. Los archivos contenidos en un módulo son del tipo:
- Scripts de PHP
- Archivos JavaScript y AJAX
- Imágenes
- Páginas en HTML
- Archivos de estilo en cascada CSS
5.8 Mapa del sitio
Basado en el diseño modular se planteó la siguiente estructura de directorios (ver ilustración 27) y
ficheros para el sistema. La descripción detallada de cada módulo puede encontrarse en los
capítulos siguientes acerca del diseño individual de cada uno.
Ilustración 27 Mapa del sitio
94
95
5.9 Diagrama de contexto
Un diagrama de flujo de datos de contexto define el campo de acción y los límites del sistema y el
proyecto. El diagrama de contexto para el sistema de información Creamax puede verse a
continuación (ver ilustración 28)
Ilustración 28 Diagrama de contexto del sistema Creamax
Fuente: los autores
96
5.10 Diagrama de clases
El diagrama de Clases captura la estructura lógica del sistema - las clases y cosas que constituyen el
modelo -. Es un modelo estático, describiendo lo que existe y qué atributos y comportamiento tiene,
más que cómo se hace algo. Los diagramas de Clases son los más útiles para ilustrar las relaciones
entre las clases e interfaces.16
Ilustración 29 Diagrama de clases
16
http://www.sparxsystems.com.ar/download/ayuda/index.html?classdiagram.htm
97
5.11 Diagramas de estado
Los diagramas de estados son una técnica conocida para describir el comportamiento de un sistema.
Describen todos los estados posibles en los que puede entrar un objeto particular y la manera en que
cambia el estado del objeto, como resultado de los eventos que llegan a él. En la mayor parte de las
técnicas OO, los diagramas de estados se dibujan para una sola clase, mostrando el comportamiento
de un solo objeto durante todo su ciclo de vida.
No se realizaran diagramas por cada clase del prototipo, pues no todos proporcionan información
relevante y que pueda ser interesante en el momento de la codificación.
Ilustración 30 Venta - diagrama de estados
98
5.12 Diseño arquitectónico secuencia de ventanas estáticas
5.12.1 D.A.V.E. Control de inventario
99
Ilustración 31 Control de inventario - secuencia de ventanas estáticas
5.12.2 D.A.V.E. Generar factura
Ilustración 32 Generación de facturas - secuencia de ventanas estáticas
5.12.3 D.A.V.E. Generación de informes
Ilustración 33 Generación de informes -- secuencia de ventanas estáticas
100
5.12.4 D.A.V.E. Gestión de usuarios
Ilustración 34 Gestión de usuarios -- secuencia de ventanas estáticas
5.13 Diagramas de actividad
101
Un diagrama de Actividad demuestra la serie de actividades que deben ser realizadas en un caso de
uso, así como las distintas rutas que pueden irse desencadenando.
5.13.1 Diagramas de actividad inicio de sesión
Ilustración 35 Inicio de sesión -- diagramas de actividad
5.13.2 Diagramas de actividad control de inventarios
102
Ilustración 36 Control de inventarios -- diagramas de actividad
103
5.13.3 Diagramas de actividad generación de facturas
Ilustración 37 Generación de facturas -- diagramas de actividad
104
5.13.4 Diagramas de actividad generación de informes
Ilustración 38 Generación de informes -- diagramas de actividad
105
5.13.5 Diagramas de actividad gestión de usuarios
Ilustración 39 Gestión de usuarios -- diagramas de actividad
106
5.13.6 Diagramas de actividad gestión de clientes
Ilustración 40 Gestión de clientes -- diagramas de actividad
107
5.14 Diagramas de componentes
Los Diagramas de Componentes ilustran las piezas del software, controladores embebidos, etc. que
conformarán un sistema. Un diagrama de Componentes tiene un nivel más alto de abstracción que
un diagrama de clase – usualmente un componente se implementa por una o más clases (u objetos)
en tiempo de ejecución. Estos son bloques de construcción, como eventualmente un componente
puede comprender una gran porción de un sistema.
108
5.15 Modelo de distribución
Ilustración 41 Modelo de distribución del prototipo
5.16 Modelo de casos de prueba
El objetivo de los un casos de prueba es detallar una manera de probar el sistema, incluyendo las
entradas con las que se ha de probar, los resultados esperados y las condiciones bajo las que se
prueba.
Se tienen entonces múltiples situaciones o escenarios, que indican posibles caminos de los
algoritmos utilizados en el sistema, en los diferentes módulos.
Para probar todos los escenarios se utilizó una tabla donde se especifican todos los casos de prueba.
En esta tabla cada caso de prueba corresponde a una fila, y las columnas describen el identificador
del caso de prueba, el escenario, los valores de entrada y los resultados esperados.
109
Identificador del caso
de prueba
Escenario Valores de entrada Resultados esperados
01 Realizar venta: - Cliente
- Tipo de venta
- Productos a vender
Factura en formato PDF
con:
- Datos del cliente
seleccionado
- Tipo de venta
- Todos los productos
seleccionados con sus
respectivos precios
- Numero consecutivo
de factura
02 Generar informe: Informe de ventas: Informe en formato
PDF con:
- Gráfico de barras con
el número de ventas de
los últimos 5 meses
- Los datos de las
ventas se recuperan a
partir de la totalización
de las ventas de un mes
en la base de datos.
03 Agregar cliente: - Información del
cliente:
- Nombre
- Nit
- Empresa
- Fecha de nacimiento
- Teléfono fijo
- Teléfono celular
- Mensaje de
confirmación
- Registro en la base de
datos en la tabla
clientes con todos los
datos introducidos en el
formulario.
110
- Tipo de cliente
- Ciudad
- Departamento
- Contacto
04 Editar cliente: - Cliente seleccionado
Información a
modificar del cliente:
- Nombre
- Nit
- Empresa
- Fecha de nacimiento
- Teléfono fijo
- Teléfono celular
- Tipo de cliente
- Ciudad
- Departamento
- Contacto
- Mensaje de
confirmación
- Actualización en la
base de datos en la tabla
clientes con todos los
datos introducidos en el
formulario.
05 Eliminar cliente: Cliente seleccionado - Mensaje de
confirmación
- Borrado de registro en
la base de datos en la
tabla clientes con base
en el cliente
seleccionado
06 Cancelar venta - Cliente
- Tipo de venta
- Productos a vender
- Selección del botón de
cancelar
- Mensaje de
confirmación de
cancelación
- Ningún cambio en la
base de datos
111
Tabla 4 Modelo de pruebas para la etapa inicial del sistema
07 Crear usuario - Nombre de usuario
- Login
- Clave
- Perfil
- Mensaje de
confirmación
- Registro en la base de
datos en la tabla
usuarios con todos los
datos introducidos en el
formulario.
08 Modificar usuario Usuario seleccionado - Mensaje de
confirmación
- Actualización de
registro en la base de
datos en la tabla
usuarios con todos los
datos introducidos en el
formulario.
09 Eliminar usuario Usuario seleccionado - Mensaje de
confirmación
- Borrado de registro en
la base de datos en la
tabla usuarios con base
en el usuario
seleccionado
10 Listar usuarios Selección de la opción
listar usuarios
Todos los usuarios
almacenados en la base
de datos
11 Listar clientes Selección de la opción
listar clientes
Todos los clientes
almacenados en la base
de datos
12 Inicio de sesión fallido Datos de inicio de
sesión erróneos
- Registro en la base de
datos del acceso fallido
- Mensaje de error de
inicio de sesión
112
113
6. DISEÑO DE LA BASE DE DATOS
Para el actual sistema, y basado en el diseño modular, se diseñó una base de datos que cumpliera
con las siguientes características:
- Almacenar información detallada de los clientes de la empresa
- Almacenar cada venta con un ID único para estadísticas y seguimiento
- Almacenar existencias de productos en inventario
- Almacenar usuarios con sus correspondientes permisos administrativos
- Almacenar productos de manera detallada, con diferentes presentaciones, sabores y precios
para distribuidor, mayorista y detal.
6.1 Tablas
6.1.1 Usuarios
Esta tabla tiene como objetivo almacenar la información correspondiente a los usuarios que podrán
utilizar el sistema. Contiene información relevante como nombre de usuario, clave y perfil, lo que
permite identificar a los usuarios de manera única y realizar una autenticación de los datos en el
inicio de sesión. Los campos establecidos para esta tabla pueden verse a continuación:
Nombre: nombre completo del usuario
Login: nombre de usuario para acceso al sistema
Password: clave de acceso al sistema
Perfil: perfil al que pertenece (Administrador, Vendedor, Contador)
6.1.2 Inventario
La tabla de inventario almacena los productos que se encuentran en el almacén o bodega de la
empresa, mediante un código de barras, y permitiendo la especificación del precio, el lote (con fines
administrativos) y el sabor. Los campos establecidos para esta tabla pueden verse a continuación:
114
Id_producto: permite identificar de manera única la existencia del producto en cuestión (código de
barras)
Costo: identifica el precio
Lote: lote de producción al que pertenece
Sabor: especifica el sabor del producto
6.1.3 Inventario_en_consignacion
La tabla de inventario en consignación almacena uno a uno los productos que se encuentran en
consignación, mediante un código de barras, y permitiendo la especificación del costo, el lote (con
fines administrativos) y el sabor. También tiene en cuenta el cliente que posee los productos en
consignación. Los campos establecidos para esta tabla pueden verse a continuación:
Id_producto: permite identificar de manera única el producto en cuestión (código de barras)
Costo: contiene el precio del producto
Lote: lote de producción al que pertenece
Sabor: especifica el sabor del producto
Cliente: cliente al cual se le entregaron las mercancías en consignación
6.1.4 Productos
La tabla productos permite gestionar los productos que vende la empresa, identificándolos de
manera única con un ID de referencia, y almacenando información relevante como su nombre y
presentación. Adicionalmente, y con fines meramente gráficos también guarda un enlace a la
imagen del producto. Los campos establecidos para esta tabla pueden verse a continuación:
Id: identificación única para el producto (referencia)
Nombre: nombre del producto
115
Presentación: tamaño y estilo de empaque
Descripción: detalle de su finalidad
Imagen: enlace a imagen del producto (útil para la interfaz gráfica)
6.1.5 Precios
La tabla precios permite diferenciar los precios que le corresponden a los clientes mayoristas,
distribuidores y detalles para poder elaborar la factura de manera pertinente. Los campos
establecidos para esta tabla pueden verse a continuación:
Tipo_cliente: identifica el tipo de cliente (mayorista, distribuidor, detal)
Id_producto: producto con el cual se relaciona el tipo de cliente
Precio: precio para el producto y el tipo de cliente anteriores
6.1.6 Clientes
El objetivo de la tabla de clientes es permitir almacenar la información importante de los clientes a
los cuales se les realizan las ventas. Los campos establecidos para esta tabla pueden verse a
continuación:
Nombre: nombre completo del cliente
Nit: número de identificación del cliente (cédula, tarjeta de identidad, cédula de extranjería, nit de
la empresa)
Empresa: nombre de la empresa de la cual es propietario (opcional)
Fecha_nacimiento: fecha de nacimiento (día/mes/año)
Departamento: ubicación geográfica por departamento
Ciudad: ubicación geográfica por ciudad
Forma_de_pago: especificá si paga de contado o a crédito
116
Tipo: identifica el tipo de cliente (mayorista, distribuidor, detal)
Telefono_fijo: número telefónico de su domicilio
Telefono_celular: número telefónico móvil
Direccion: dirección del domicilio
Correo: correo electrónico
6.1.7 Ventas
La tabla de ventas almacena una a una las ventas que la empresa va realizando, guardando en cada
fila determinada la cantidad de un producto y agrupando por Id_venta, lo que permite tener un
control histórico de todas las ventas que se ejecutan a lo largo del uso del sistema en la empresa.
Los campos establecidos para esta tabla pueden verse a continuación:
Id_venta: identificador único de la venta
Nit_cliente: número de identificación del cliente (cédula, tarjeta de identidad, cédula de extranjería,
nit de la empresa)
Id_producto: producto que se compra
Cantidad: cantidad de productos que se compraron
Subtotal: valor del producto
Total: valor del producto*Cantidad
Numero_factura: consecutivo de facturación (requerimiento legal)
Descuento: identifica la cantidad (en pesos) de descuento (si lo hay) para una venta determinada
Costo_envio: especifica el costo del envío del (los) producto(s)
Vendedor: persona que realizó la venta
Fecha: fecha de la venta
Sabor: sabor del producto vendido
Consignación: indica si la venta fue del inventario en consignación
117
6.1.8 Accesos
Con fines administrativos y estadísticos, la tabla accesos permite generar reportes de los accesos al
sistema por parte de los usuarios. La facilita la posibilidad de visualizar los intentos fallidos de
acceso, la dirección IP de dichos intentos y el nombre de usuario y clave usados para tal fin. Los
campos establecidos para esta tabla pueden verse a continuación:
Login: nombre de usuario
Fecha_hora: fecha y hora del acceso
Ip: dirección IP del usuario
Acceso: indicador de acceso (si/no)
Clave: muestra la clave que se utilizó en caso de que no haya podido acceder (con fines
estadísticos). En caso de que el acceso haya sido exitoso, no guarda clave
6.2 Modelo entidad-relación de la base de datos
Una base de datos relacional es un conjunto de una o más tablas estructuradas en registros (líneas) y
campos (columnas), que se vinculan entre sí por un campo en común, en ambos casos poseen las
mismas características como por ejemplo el nombre de campo, tipo y longitud; a este campo
generalmente se le denomina ID, identificador o clave.
La figura que se encuentra a continuación (ver ilustración 29), representa el modelo entidad relación
de las tablas que se establecieron en los puntos anteriores.
118
Ilustración 42 Modelo Entidad Relación
Fuente: los autores
6.3 Diccionario de datos
Un diccionario de datos es un conjunto de metadatos que contiene las características lógicas y
puntuales de los datos que se van a utilizar en el sistema que se programa, incluyendo nombre,
descripción, alias, contenido y organización.
El diccionario de datos establecido para la base de datos se encuentra a continuación:
119
6.3.1 Accesos
Tabla 5 Acceso - Diccionario de datos
Campo Tipo Nulidad Comentario
login text No Nombre de usuario
fecha_hora datetime No Fecha y hora del acceso
ip varchar(17) No Dirección IP del usuario
acceso tinyint(1) No Indicador de acceso (si/no)
clave varchar(30) No Muestra la clave que se utilizo en caso de que no haya
podido acceder
6.3.2 Inventario
Tabla 6 Inventario - Diccionario de datos
Campo Tipo Nulidad Comentario
id_producto int(13) No Permite identificar de manera única la
existencia del producto en cuestión
costo float No Contiene el precio del producto
lote date No Lote de producción al que pertenece
sabor varchar(255) No Especifica el sabor del producto
6.3.3 Inventario_consignacion
Tabla 7 Inventario en consignación - Diccionario de datos
Campo Tipo Nulidad Comentario
id_producto int(13) No Permite identificar de manera única el
producto en cuestión (código de barras)
costo float No Contiene el precio del producto
lote date No Lote de producción al que pertenece
sabor varchar(255) No Especifica el sabor del producto
cliente varchar(255) No Cliente al cual se le entregaron las
120
mercancías en consignación
6.3.4 Clientes
Tabla 8 Clientes - Diccionario de datos
Campo Tipo Nulidad Comentario
nombre varchar(255) No Nombre completo del cliente
nit varchar(255) No Número de identificación del cliente
empresa varchar(255) Si Nombre de la empresa de la cual es
propietario (opcional)
fecha_nacimiento date No Fecha de nacimiento
departamento text No Departamento donde está ubicado
ciudad text No Ciudad donde está ubicado
forma_de_pago tinyint(1) No Especifica si paga de contado o a
crédito
tipo text No Identifica el tipo de cliente
telefono_fijo varchar(30) No Número telefónico de su domicilio
telefono_celular varchar(30) No Número telefónico móvil
direccion varchar(255) No Dirección del domicilio
correo varchar(255) No Correo electrónico
puntos int(255) No Para plan de puntos
contacto varchar(255) No
nuevo tinyint(1) No Especifica si el usuario es nuevo
6.3.5 Precios
Tabla 9 Precios - Diccionario de datos
Campo Tipo Nulidad Comentario
tipo_cliente varchar(15) No Identifica el tipo de cliente
id_producto int(13) No Producto con el cual se relaciona
precio float No Precio para el producto
121
6.3.6 Productos
Tabla 10 Productos - Diccionario de datos
Campo Tipo Nulidad Comentario
id int(13) No Identificación única para el producto
nombre varchar(255) No Nombre del producto
presentacion varchar(255) No Tamaño y estilo de empaque
descripcion varchar(255) No Detalle de su finalidad
imagen varchar(255) No Enlace a imagen del producto
6.3.7 Usuarios
Tabla 11 Usuarios - Diccionario de datos
Campo Tipo Nulidad Comentario
nombre varchar(20) No Nombre completo del usuario
login varchar(20) No Nombre de usuario para acceso al sistema
password varchar(20) No Clave de acceso al sistema
perfil text No Perfil al que pertenece (administrador, cajero,
supervisor)
6.3.8 Ventas
Tabla 12 Ventas - Diccionario de datos
Campo Tipo Nulidad Comentario
id_venta varchar(255) No Identificador único de la venta
nit_cliente varchar(255) No Número de identificación del cliente
id_producto varchar(255) No Producto que se compra
cantidad int(11) No Cantidad de productos que se
compraron
122
subtotal int(11) No Valor del producto
total int(11) No Valor del producto*Cantidad
numero_factura int(11) No Consecutivo de facturación
(requerimiento legal)
descuento varchar(255) No Identifica la cantidad (en pesos) de
descuento (si lo hay) para una venta
determinada
estado varchar(255) No
vendedor varchar(255) No Persona que realizó la venta
fecha date No Fecha de la venta
sabor varchar(255) No sabor del producto vendido
consignacion varchar(255) No
6.4 Código SQL para generación de las tablas de la base de datos
El siguiente código SQL crea las tablas necesarias para el funcionamiento de la base de datos. Este
código está escrito bajo SQL estándar y para funcionar de forma correcta bajo el sistema
manejador de bases de datos MySQL versión 5.1.
[CÓDIGO SQL]
CREATE TABLE IF NOT EXISTS `accesos` (
`login` text NOT NULL,
`fecha_hora` datetime NOT NULL,
`ip` varchar(17) NOT NULL,
`acceso` tinyint(1) NOT NULL,
`clave` varchar(30) NOT NULL
)
CREATE TABLE IF NOT EXISTS `inventario` (
`id_producto` int(13) NOT NULL,
123
`costo` float NOT NULL,
`lote` date NOT NULL,
`sabor` varchar(255) NOT NULL
);
CREATE TABLE IF NOT EXISTS `clientes` (
`nombre` varchar(255) NOT NULL,
`nit` varchar(255) NOT NULL,
`empresa` varchar(255) NOT NULL,
`fecha_nacimiento` date NOT NULL,
`departamento` text NOT NULL,
`ciudad` text NOT NULL,
`forma_de_pago` tinyint(1) NOT NULL,
`tipo` text NOT NULL,
`telefono_fijo` varchar(30) NOT NULL,
`telefono_celular` varchar(30) NOT NULL,
`direccion` varchar(255) NOT NULL,
`correo` varchar(255) NOT NULL,
`puntos` int(255) NOT NULL,
`contacto` varchar(255) NOT NULL,
`nuevo` tinyint(1) NOT NULL,
PRIMARY KEY (`nombre`),
FULLTEXT KEY `nombre` (`nombre`,`nit`,`empresa`,`ciudad`),
FULLTEXT KEY `nombre_2` (`nombre`,`empresa`,`ciudad`,`nit`),
FULLTEXT KEY `nombre_3` (`nombre`,`empresa`,`ciudad`,`nit`),
FULLTEXT KEY `nombre_4` (`nombre`,`nit`,`empresa`,`ciudad`)
)
124
CREATE TABLE IF NOT EXISTS `precios` (
`tipo_cliente` varchar(15) NOT NULL,
`id_producto` int(13) NOT NULL,
`precio` float NOT NULL
);
CREATE TABLE IF NOT EXISTS `productos` (
`id` int(13) NOT NULL,
`nombre` varchar(255) NOT NULL,
`presentacion` varchar(255) NOT NULL,
`descripcion` varchar(255) NOT NULL,
`imagen` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
)
CREATE TABLE IF NOT EXISTS `usuarios` (
`nombre` varchar(20) NOT NULL,
`login` varchar(20) NOT NULL,
`password` varchar(20) NOT NULL,
`perfil` text NOT NULL,
PRIMARY KEY (`login`)
)
CREATE TABLE IF NOT EXISTS `ventas` (
`id_venta` varchar(255) NOT NULL,
`nit_cliente` varchar(255) NOT NULL,
`id_producto` varchar(255) NOT NULL,
125
`cantidad` int(11) NOT NULL,
`subtotal` int(11) NOT NULL,
`total` int(11) NOT NULL,
`numero_factura` int(11) NOT NULL,
`descuento` varchar(255) NOT NULL,
`estado` varchar(255) NOT NULL,
`vendedor` varchar(255) NOT NULL,
`fecha` date NOT NULL,
`sabor` varchar(255) NOT NULL,
`consignacion` varchar(255) NOT NULL
)
Llaves primarias de cada tabla:
ALTER TABLE `ventas` ADD PRIMARY KEY(`id_venta`);
ALTER TABLE `usuarios` ADD PRIMARY KEY(`login`);
ALTER TABLE `productos` ADD PRIMARY KEY(`id`);
ALTER TABLE `precios` ADD PRIMARY KEY(`id_producto`);
ALTER TABLE `clientes` ADD PRIMARY KEY(`nit`);
ALTER TABLE `inventario` ADD PRIMARY KEY(`id_producto`);
ALTER TABLE `accesos` ADD PRIMARY KEY(`ip`);
126
7. DISEÑO E IMPLEMENTACIÓN DEL MÓDULO DE CONTROL DE
INVENTARIO
7.1 Descripción
El módulo inventario permite inspeccionar las existencias de producto que se encuentran registrados
en el prototipo del sistema, con el objetivo de que se tenga un apareamiento de datos que permita
controlar de manera concisa los elementos disponibles y vendidos. Se utiliza la identificación
mediante un sistema de código de barras que identifica a un producto de manera única y lo
diferencia de los demás. Dicho código de barras (Id) se almacena como información en la tabla de
inventarios y posteriormente en la de ventas una vez sea vendido.
El módulo de inventario permite agregar y visualizar las existencias del inventario, con el objetivo
de que se tenga claro, tanto del lado del sistema, como del lado del usuario cual es exactamente la
cantidad, sabores, presentación de producto actual, de los que están disponibles para la venta.
7.2 Archivos que componen el modulo
Un módulo es cada una de las partes de un programa que resuelve uno de los subproblemas en que
se divide el problema complejo original. Cada uno de estos módulos tiene una tarea bien definida y
algunos necesitan de otros para poder operar. Si bien un modulo puede entenderse como una parte
de un programa en cualquiera de sus formas y variados contextos, en la práctica es común
representarlos con procedimientos o archivos separados con una funcionalidad definida.
index.php: está encargado de mostrar una pantalla principal que permite al cliente visualizar
diferentes enlaces a otras pantallas con opciones como, ver el inventario, agregar existencias,
eliminar existencias... etc.
agregar_existencias.php: muestra al usuario una pantalla que permite adicionar existencias de
productos al inventario
agregar.php: establece la comunicación con la base de datos recibiendo información del archivo
"agregar_existencias.php" para agregar los elementos correspondientes
127
eliminar_existencias.php: muestra al usuario la pantalla que permite eliminar existencias de
productos del inventario
eliminar.php: establece comunicación con la base de datos recibiendo información del archivo
"eliminar_existencias.php" para suprimir los elementos correspondientes
ver_inventario.php: muestra los productos en el inventario en forma de lista, agrupados por tipo de
producto y sabores bajo el parámetro cantidad.
detalle.php: muestra en detalle las existencias de un mismo producto clasificadas por sabores y
presentaciones, se su información proviene del archivo "ver_inventario.php"
7.3 Mapa del modulo
El mapa del módulo es un gráfico que se utiliza para planificar el diseño de la web, el mapa de este
modulo puede encontrarse en la ilustración que hay a continuación (ver ilustración 30)
Ilustración 43 Modulo inventario
Fuente: los autores
128
7.4 Implementación
7.4.1 Index
7.4.1.1 Código
Este código fuente, está escrito únicamente en HTML , y su objetivo es mostrar las opciones del
módulo inventario por medio de enlaces. Adicionalmente y para efectos visuales, se muestra un
título con tamaño de letra más grande -en formato H1- (que indica que el módulo es el de
Inventario).
[CÓDIGO HTML ]
<HTML xmlns="http://www.w3.org/1999/xHTML ">
<head>
<meta http-equiv="Content-Type" content="text/HTML ; charset=utf-8" />
<title>Modulo Inventario</title>
</head>
<body style="background:url(bg.png)">
<h1>Modulo Inventario</h1>
<h3>
<a href="agregar_productos.php">Agregar Productos</a> |
<a href="ver_inventario.php">Ver Inventario</a>
<a href="eliminar_productos.php">Eliminar Productos</a>
<a href="eliminar_existencias.php">Eliminar Existencias</a>
</h3>
</body>
</HTML >
7.4.1.2 Prototipo gráfico
Ésta pantalla es el ingreso al módulo de inventario (ver ilustración 31). Permite al usuario
seleccionar diferentes opciones que ofrece el módulo.
129
Ilustración 44 Index Módulo inventario
Fuente: prototipo de sistema de información para la empresa Creamax
7.4.2 Agregar existencias
7.4.2.1 Código
Agregar Existencias se hace -del lado del servidor- una lectura a la base de datos que permite
obtener el listado de productos con su respectiva presentación, para ser mostrada en un elemento
HTML de selección.
Consulta en la base de datos
[CÓDIGO PHP, SQL]
<select name="producto" id="producto"
onchange="seleccionarImagen(this.options[this.selectedIndex].value)">
<?
$con = mysql_connect('localhost', 'usuario', 'clave');
mysql_select_db("base_de_datos", $con);
$sql = "SELECT * FROM productos ORDER BY id";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result))
130
{
echo '<option value="'.$row['id'].'">'.$row['nombre'].'
'.$row['presentacion'].'</option>';
}
?>
</select>
Presentación de la consulta
[CÓDIGO PHP, SQL]
<?php
session_start();
$producto = $_POST['producto'];
$sabor = $_POST['sabor'];
$fecha_lote = $_POST['fecha_lote'];
$cantidad = $_POST['cantidad'];
$costo = $_POST['costo'];
$con = mysql_connect('localhost', 'usuario', 'clave');
mysql_select_db("base_de_datos", $con);
$i = 0;
$j = intval($cantidad);
$sql = "INSERT INTO inventario VALUES ('$producto', '$costo', '$fecha_lote', '$sabor')";
while ($i < $j)
{
mysql_query($sql);
$i++;
}
echo "<HTML ><body style='background:url(bg.png)'>
<h1 align='center'>$i Producto(s) agregado(s) Exitosamente al Almacen </h1>
<p align='center'>Quizas desee<a href='agregar_existencias.php'> agregar otro producto al
inventario</a> | <a href='index.php'> Volver al menu principal</a></p>
</body></HTML >";
?>
7.4.2.2 Prototipo gráfico
Permite seleccionar existencias de productos para agregar al inventario (ver ilustración 32)
131
Ilustración 45 Módulo inventario agregar existencias
Fuente: prototipo de sistema de información para la empresa Creamax
7.4.3 Ver inventario
7.4.3.1 Código
Visualización del inventario se construye mediante PHP, con ayuda de una tabla que contiene los
productos agrupados por id (GROUP BY id_producto) para posteriormente mostrarla como código
plano HTML .
[CÓDIGO HTML , PHP, SQL]
<table>
<tr style="background:url(1.png)">
<th scope="col">Imagen</th>
<th scope="col">Producto</th>
<th scope="col">Cantidad</th>
</tr>
<?php
132
$sql = "SELECT sabor, id_producto, count(id_producto) as cantidad FROM inventario GROUP BY
id_producto";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
$id_producto = $row['id_producto'];
$resultado_id = mysql_query("SELECT * FROM productos WHERE id = '$id_producto'");
$fila = mysql_fetch_array($resultado_id);
echo '<tr>
<td style="text-align: center"><a href="detalle.php?id_producto='.$id_producto.'"><img
src="'.$fila['imagen'].'" width="100" height="100" /></a></td>
<td><a href="detalle.php?id_producto='.$id_producto.'">'.$fila['nombre'].':
'.$fila['presentacion'].'</a></td>
<td>'.$row['cantidad'].'</td>
</tr>';
$total = $total + $cantidad * $precio_promedio;
}
?>
</table>
7.4.3.2 Prototipo gráfico
Permite visualizar los productos existentes en el inventario, con sus respectivas cantidades (ver
Ilustración 33)
Ilustración 46 Modulo inventario ver inventario
133
7.4.4 Detalle
7.4.4.1 Prototipo gráfico
Muestra las características de cada uno de los productos que se encuentran en el momento en el
inventario (ver ilustración 34)
Ilustración 47 Modulo inventario Detalle
Fuente: prototipo de sistema de información para la empresa Creamax
Uno de los principales requisitos del cliente, es tener un sistema cuya interfaz gráfica sea basada en
ventanas (ver ilustración 35). A continuación, se muestran múltiples ventanas del módulo de
inventarios, se nota demás la posibilidad de minimizar y expandir cada una de las ventanas.
134
Ilustración 48 Pantallas del modulo inventario
Fuente: prototipo de sistema de información para la empresa Creamax
135
8. DISEÑO E IMPLEMENTACIÓN DEL MÓDULO DE VENTAS
8.1 Descripción
El módulo de ventas permite al usuario del sistema realizar ventas de productos existentes en el
inventario a clientes existentes en la base de datos, se utiliza un esquema de carrito de compras en el
cual se van agregando a una tabla los productos por cantidad, sabor y presentación. En cualquier
momento se podrá agregar un producto existente en el inventario a la venta, o eliminar un producto
existente de la misma; también es posible cancelar la venta en cualquier momento, ignorando todo
movimiento previamente realizado
Posterior a la selección del cliente al cual se le venderán los productos, se escogen los productos, y
se realiza la venta. En este paso, el sistema extrae los elementos del inventario (en la base de datos)
y los agrega a la tabla de ventas, en la cual se registrará con un Id único para esa venta, los
productos vendidos, el cliente, la fecha y otros detalles
En el momento en que se seleccione un producto cuya disponibilidad sea nula, el sistema avisará de
tal situación
Al finalizar la venta, se elabora una factura legal en formato PDF la cual puede ser guardada o
impresa y posteriormente entregada al cliente, enviada vía correo electrónico, o por mensajería
convencional.
8.2 Archivos que componen el modulo
index.php: muestra la pantalla principal que permite seleccionar al cliente que se le realizará la
venta, y la forma de pago
escoger_productos.php: muestra la pantalla que permite agregar productos a la venta, o eliminar
productos previamente seleccionados
agregar.php: adiciona productos a la venta actual, recibe los datos del archivo
escoger_productos.php contrastándolos con la base de datos para verificar consistencia con el
inventario
eliminar.php: suprime productos previamente seleccionados, para lo cual elimina filas de una
tabla temporal de selección.
136
generar_factura.php: crea un archivo en formato PDF con los datos leídos desde la base de datos
en la tabla "Ventas" con el ID único de la venta actual.
8.3 Mapa del módulo
El mapa del módulo es un gráfico que se utiliza para planificar el diseño de la web, el mapa de este
puede encontrarse en la ilustración que hay a continuación (ver ilustración 36)
Ilustración 49 Mapa del modulo de generación de facturas
Fuente: los autores
8.4 Implementación
8.4.1 Index
8.4.1.1 Prototipo gráfico
Permite seleccionar el cliente, la forma de pago, el tipo de venta y muestra la fecha de la facturación
(ver ilustración 37)
137
Ilustración 50 Index modulo de ventas
Fuente: prototipo de sistema de información para la empresa Creamax
8.4.2 Escoger productos
8.4.2.1 Código
Se almacena temporalmente un registro de productos seleccionados y se construye mediante PHP
una tabla que permite visualizarlos. Así como también, mostrar los detalles del producto
seleccionado (sabor, presentación, cantidad) y la opción de eliminarlo de la lista actual de productos
a vender.
[CÓDIGO HTML , PHP]
<table>
<tr>
<th scope="col">Eliminar</th>
<th scope="col">Imagen</th>
<th scope="col">Producto</th>
<th scope="col">Sabor</th>
<th scope="col">Cantidad</th>
<th scope="col">Precio Unitario</th>
<th scope="col">Descuento</th>
138
<th scope="col">Precio Total</th>
</tr>
<?php
{
echo '<tr>
<td><form action="eliminar.php" method="post" onsubmit="return confirm(\'Estas seguro que
quieres eliminar este producto?\');">
<input type="hidden" value="'.$id_venta.'" id="id_venta" name="id_venta" />
<input type="hidden" value="'.$id_producto.'" id="id_producto" name="id_producto" />
<input type="hidden" value="'.$precio_promedio.'" id="valor_unitario"
name="valor_unitario" />
<input type="hidden" value="'.$cantidad.'" id="cantidad" name="cantidad" />
<input type="hidden" value="'.$row['sabor'].'" id="sabor" name="sabor" />
</form></td>
<td><img src="'.$fila['imagen'].'" width="100" height="100" /></td>
<td>'.$fila['nombre'].': '.$fila['presentacion'].'</td>
<td style="text-align: center">'.$row['sabor'].'</td>
<td style="text-align: center">'.$cantidad.'</td>
<td style="text-align: center">'.$precio_promedio.'</td>
<td style="text-align: center">'.($descuento).'</td>
<td style="text-align: center">'.(($cantidad*$precio_promedio)-$descuento).'</td>
</tr>';
$total = $total + $cantidad * $precio_promedio;
}
?>
8.4.2.2 Prototipo gráfico
Permite seleccionar los productos que se facturarán al cliente seleccionado (ver ilustración 38). Los
productos seleccionados se muestran en una tabla con una imagen de su presentación, nombre de
producto, sabor, cantidad, precio unitario, descuento y precio total. (ver ilustración 39).
139
Ilustración 51 Realizando una venta modulo de ventas
Fuente: prototipo de sistema de información para la empresa Creamax
Ilustración 52 Productos en la venta actual modulo de ventas
Fuente: prototipo de sistema de información para la empresa Creamax
140
8.4.3 Generar factura
8.4.3.1 Código
Se utilización los atributos de la clase que permite generar archivos PDF . Mediante los datos que se
tienen de la venta y el cliente -así como de la empresa- se completan los datos necesarios para crear
la factura. Adicionalmente, la clase permite distribuir los elementos en el archivo de manera visual
con la opción:
[CÓDIGO PHP]
$this->Cell(x); Donde x es un numero entero. Que indica la distancia con el elemento previo.
function Header()
{
$this->SetFontSize(13);
$this->Cell(10,100,'CREAMAX NIT: 6.199.340-6',0);
$this->Ln(5);
$this->Cell(10,100,'CALLE 46 No. 25-48 Barrio: Nuevo Principe - Tuluá. Tel 2-
2256901',0);
$this->SetFont('Arial','',6);
$this->Image('http://www.Creamax.com.co/sistema/Creamax.jpg',10,8,80); // LOGO
$this->Cell(145);
$this->Cell(0,10,'RESPONSABLES DE IVA REGIMEN COMUN',0,1,'R');
$this->Cell(145);
$this->Cell(0,10,'RESOLUCION DIAN No 210000033462 DE
2009/10/14',0,1,'R');
$this->Cell(145);
$this->Cell(0,10,'DEL No 1 AL 2000 FACTURA ELABORADA POR
COMPUTADOR',0,1,'R');
$this->Cell(145);
$this->Cell(0,10,'AGENTES RETENEDORES DE IVA PARA REGIMEN
SIMPLIFICADO',0,1,'R');
$this->Ln(15);
$this->SetFont('Arial','',12);
$this->Cell(145);
$this->Cell(40,6,'FACTURA DE VENTA',0,1,'C');
$this->Cell(145);
$this->Cell(45,6,'No. '.$numero_factura,1,1,'C');
//$this->Ln(25);
$this->SetFont('Arial','',11);
$this->Cell(145);
$this->Cell(0,10,'CONTACTO: '.$contacto,0,1,'R');
141
8.4.3.2 Prototipo gráfico
Genera una factura en formato PDF (ver ilustración 40). La factura generada permite ser
descargada. Esta factura es visualizada gracias a que el lector de PDF acrobat está embebido en el
navegador.
Ilustración 53 Factura generada Modulo de ventas
Fuente: prototipo de sistema de información para la empresa Creamax
142
9. DISEÑO E IMPLEMENTACIÓN DEL MÓDULO DE CREACIÓN DE
INFORMES
9.1 Descripción
Módulo encargado de entregar informes correspondientes a las estadísticas de uso del sistema con
las siguientes posibilidades:
- Informar acerca de los accesos al sistema por parte de los usuarios, así como intentos
fallidos de acceso. Clasificados por un período de tiempo determinado
- Informar acerca de la cantidad de ventas en un período de tiempo determinado y los
productos que más se venden
- Informar acerca de los clientes más fieles, así como los menos fieles
- Informar acerca del sabor más deseado, y el menos deseado
- Informar acerca de las presentaciones que tienen mayor acogida en el mercado
- Informar acerca de otros datos de interés acerca de los clientes, las ventas, o el uso del
sistema por parte de los usuarios, todo, personalizable por el usuario
Los informes se generan en formato PDF y permiten ser descargados para su posterior
almacenamiento. Adicionalmente como los datos son almacenados, estos informes pueden volver a
ser generados solicitando la información desde la base de datos.
9.2 Archivos que componen el módulo
index.php: muestra la pantalla principal que permite al usuario visualizar las opciones que tiene
para solicitar informes.
accesos.php: entrega al usuario un informe en formato PDF de los accesos al sistema
ventas.php: muestra al usuario un informe en formato PDF de las ventas
clientes.php: permite al usuario acceder a un informe en formato PDF de las estadísticas de
clientes
143
sabores.php: encargado de mostrar al usuario un informe en formato PDF de los sabores que más
obtienen acogida en el mercado
presentaciones.php: encargado de mostrar al usuario un informe en formato PDF de las
presentaciones que más obtienen acogida en el mercado
9.3 Mapa del módulo
El mapa del módulo es un gráfico que se utiliza para planificar el diseño de la web, el mapa de este
puede encontrarse en la ilustración que hay a continuación (ver ilustración 41)
Ilustración 54 Mapa modulo de creación de informes
9.4 Implementación
9.4.1 Index
9.4.1.1 Prototipo gráfico
Pantalla principal del módulo de informes (ver ilustración 42), a través de esta se accede a los
diferentes informes que el sistema puede generar
144
Ilustración 55 Modulo de informes Index
Fuente: prototipo de sistema de información para la empresa Creamax
9.4.2 Acceso
9.4.2.1 Prototipo gráfico
Este informe muestra al administrador los accesos que han ocurrido en el sistema, también los
intentos fallidos en el proceso de autenticación del usuario (ver ilustración 43). Es importante
resaltar que el administrador debe tener la capacidad de escoger los intervalos de tiempo de donde
se recopilará esta información. Inicialmente este informe muestra solamente mediante texto el
nombre de usuario, la fecha y la hora y la clase de evento que ocurrió.
145
Ilustración 56 Modulo de informes Acceso al sistema
Fuente: prototipo de sistema de información para la empresa Creamax
9.4.3 Clientes
Este informe muestra un listado de los clientes que se encuentran registrados en el sistema, además
de la siguiente información: ventas totales, cantidad de pedidos realizados, producto preferido.
Este informe es de gran utilidad para el supervisor pues le permite conocer en qué productos puede
hacer hincapié en las ventas de forma individual para cada cliente.
146
9.4.3.1 Prototipo gráfico
Ilustración 57 Módulo de informes Clientes
Fuente: prototipo de sistema de información para la empresa Creamax
9.4.4 Presentaciones
La finalidad de estos informes es mostrar un comparativo entre productos según un determinado
criterio. En este caso se muestra como sería un informe basado en la comparativa de ventas de un
mismo producto pero en distintas presentaciones, es decir, en distinto empaque o cantidad de
contenido del contenedor, a lo largo de un determinado tiempo. Estos informes son para efectos del
prototipo e ilustrar como se verían, su funcionalidad como tal aún no está implementada en el
sistema de información.
147
9.4.4.1 Prototipo gráfico
Ilustración 58 Módulo de informes Diversas presentaciones de un producto
Fuente: prototipo de sistema de información para la empresa Creamax
9.4.5 Ventas
Este informe muestra mediante un gráfico de barras las ventas que se han realizado por medio del
sistema haciendo un comparativo entre diferentes meses. En el momento solo está contemplado
para mostrar los 4 meses anteriores al actual. El criterio de comparación es el precio total de todos
los productos vendidos en el mes. Ver ilustración 46.
148
9.4.5.1 Prototipo gráfico
Ilustración 59 Modulo de informes Ventas realizadas
Fuente: prototipo de sistema de información para la empresa Creamax
149
10. DISEÑO E IMPLEMENTACIÓN DEL MÓDULO DE GESTIÓN DE
USUARIOS
10.1 Descripción
El módulo de gestión de usuarios permite al administrador establecer los usuarios y permisos de
acceso al sistema. Entre las opciones a configurar se encuentran:
- Información personal: nombre, Apellidos, nombre de usuario, Fecha de nacimiento, Sexo
- Correo electrónico: al cual se envía información relevante de modificaciones en el sistema
- Claves personales de acceso al sistema y modificación de datos
- Permisos de usuarios (si es un usuario administrador): permite modificar los permisos de
otros usuarios en el sistema
10.2 Archivos que componen el modulo
index.php: muestra la interfaz principal que permite al usuario visualizar las opciones que tiene
para realizar cambios en la configuración del sistema.
modificar_info_personal.php: permite modificar la información personal
modificar_usuarios.php: permite al administrador modificar usuarios
claves.php: facilita al administrador hacer cambios masivos de contraseña
permisos.php: facilita al administrador hacer cambios masivos de permisos
10.3 Mapa del módulo
El mapa del modulo es un gráfico que se utiliza para planificar el diseño de la web, dicho mapa
puede encontrarse en la ilustración que hay a continuación (ver ilustración 47)
150
Ilustración 60 Mapa del modulo de gestión de usuarios
Fuente: los autores
10.4 Implementación
10.4.1 Modificar información personal
10.4.1.1 Prototipo gráfico
Cada usuario tiene la opción de cambiar su información personal básica, como nombre para mostrar
(No es igual al nombre de usuario) y fecha de nacimiento.
Ilustración 61 Modificar información personal Módulo gestión de usuarios
151
Fuente: prototipo de sistema de información para la empresa Creamax
10.4.2 Permisos
10.4.2.1 Prototipo gráfico
El administrador asigna los perfiles para cada uno de los usuarios al momento de la creación, pero
también puede reasignar perfiles una vez el usuario ha sido generado.
Ilustración 62 Modificar perfiles Modulo gestión de usuarios
Fuente: prototipo de sistema de información para la empresa Creamax
10.4.3 Claves
10.4.3.1 Prototipo gráfico
La siguiente pantalla permite modificar la clave personal de acceso al sistema, solicitando la clave
anterior.
152
Ilustración 63 Cambio de claves de acceso Modulo gestión de usuarios
Fuente: prototipo de sistema de información para la empresa Creamax
153
11. DISEÑO E IMPLEMENTACIÓN DEL MÓDULO DE GESTIÓN DE CLIENTES
11.1 Descripción
El módulo –Clientes– permite al usuario gestionar los clientes (a quienes se les venderá los
productos) de manera tal que pueda realizar las siguientes operaciones:
- Agregar un cliente: adiciona un cliente a la base de datos, esta funcionalidad solicita
al usuario los datos necesarios del cliente con el objetivo que éstos puedan ser
utilizados posteriormente en la creación de la factura
- Eliminar un cliente: suprime un cliente de la base de datos, en tal caso, el módulo
ofrece la lista de todos los usuarios, se selecciona uno de ellos y luego se elimina
- Modificar un cliente: cambia los datos existentes de un cliente, como su teléfono,
dirección de residencia, correo electrónico.
- Buscar clientes: busca un cliente con base en cualquier dato que se tenga de él,
como el nombre, el apellido, la ciudad.
La información se almacenará en la tabla "clientes" en la base de datos y permitirá tener un
control sobre los clientes de la empresa guardando información relevante para la empresa,
como por ejemplo, la información de contacto, tipo de cliente (mayorista, detal,
distribuidor).
11.2 Archivos que componen el módulo
index.php: encargado de mostrar una pantalla principal con enlaces a las pantallas de
agregar, editar y eliminar.
agregar.php: encargado de mostrar el formulario al usuario para la correspondiente
agregación de un cliente
agregar_cliente.php: encargado de recibir los datos enviados por el formulario existente
en "agregar.php" y realizar operaciones con la base de datos
154
editar.php: encargado de mostrar el formulario al usuario para la correspondiente edición
de un cliente
editar_cliente.php: encargado de recibir los datos enviados por el formulario existente en
"editar.php" y realizar operaciones con la base de datos
eliminar.php: encargado de mostrar el formulario al usuario para la correspondiente
eliminación de un cliente
eliminar_cliente.php: encargado de recibir los datos enviados por el formulario existente
en "eliminar.php" y realizar operaciones con la base de datos
11.3 Mapa del modulo
Ilustración 64 Mapa modulo de gestión de clientes
Fuente: los autores
11.4 Implementación
11.4.1 Index
11.4.1.1 Prototipo gráfico
Permite seleccionar entre buscar, agregar, editar y eliminar clientes (ver ilustración 52)
155
Ilustración 65 Index módulo de gestión de clientes
Fuente: prototipo de sistema de información para la empresa Creamax
11.4.2 Buscar
11.4.2.1 Código
La función encargada de proveer la búsqueda de clientes, relaciona un término de búsqueda con los
posibles campos de un registro de la tabla Clientes, de tal manera que si hay alguna concordancia, la
agregará a la lista de retorno. Dicha lista de retorno, posteriormente se entrega como HTML y se
muestra en la página del lado del usuario.
[CÓDIGO SQL, PHP]
<?php
if($terminos == "")
echo "Para realizar una búsqueda, escribe los términos que deseas buscar y haz click en
BUSCAR";
else
{
$con = mysql_connect('localhost', 'usuario', 'clave');
mysql_select_db("base_de_datos", $con);
156
$sql = "SELECT * FROM clientes WHERE nombre LIKE '%".$terminos."%' OR ciudad LIKE
'%".$terminos."%' OR empresa LIKE '%".$terminos."%' OR nit LIKE '%".$terminos."%' OR
correo LIKE '%".$terminos."%' OR tipo LIKE '%".$terminos."%' OR telefono_celular LIKE
'%".$terminos."%' OR departamento LIKE '%".$terminos."%'";
$result = mysql_query($sql);
$numero_de_resultados = mysql_num_rows($result);
if ($numero_de_resultados == 0)
echo "No hay resultados para las palabras clave escogidas";
else
{
echo 'Resultados para los terminos de busqueda:'.$terminos.';
while($row = mysql_fetch_array($result))
{
echo $nombre_cliente;
…
}
}
}
11.4.2.2 Prototipo gráfico
Permite buscar un cliente utilizando un término de búsqueda (ver ilustración 53)
Ilustración 66 Buscar módulo de gestión de clientes
Fuente: prototipo de sistema de información para la empresa Creamax
157
11.4.3 Agregar cliente
Mediante esta funcionalidad se solicitan los datos necesarios para crear un nuevo cliente en la base
de datos utilizando un formulario, que posteriormente será enviado al archivo Agregar.php Como lo
indica el parámetro -action- del elemento -form-. action=”agregar.php”
[CÓDIGO HTML ]
<form id="agregar_cliente" name="agregar_cliente" method="post" action="agregar.php">
<input type="text" name="nombre" id="nombre" />
<input type="text" name="nit" id="nit" />
<input type="text" name="empresa" id="empresa" />
<input type="text" name="fecha_nacimiento" id="fecha_nacimiento" />
<select name="departamento" id="departamento">
<option value="Amazonas">Amazonas</option>
…
<option value="Valle Del Cauca">Valle Del Cauca</option>
</select>
<input type="text" name="ciudad" id="ciudad" />
<input type="text" name="forma_de_pago" id="forma_de_pago" />
<input type="text" name="tipo_cliente" id="tipo_cliente" />
<input type="text" name="telefono_fijo" id="telefono_fijo" />
<input type="text" name="telefono_celular" id="telefono_celular" />
<input type="text" name="direccion" id="direccion" />
<input type="text" name="correo" id="correo" />
<input type="text" name="puntos" id="puntos" />
<input type="submit" id="enviar" value="Crear Cliente" />
</form>
11.4.3.1 Prototipo gráfico
Permite agregar un cliente (ver ilustración 54)
158
Ilustración 67 Crear cliente módulo de gestión de clientes
Fuente: prototipo de sistema de información para la empresa Creamax
Ilustración 68 Pantallas módulo gestión de clientes
159
12. DOCUMENTACIÓN DEL SISTEMA, MANUALES DE USUARIO
12.1 Iniciar sesión en el sistema
Nota: ingrese al sistema desde un navegador web actualizado, de lo contrario esto podría
incurrir en incorrectos funcionamientos del sistema. Los navegadores soportados son
Chrome y Mozilla Firefox
12.1.1 Iniciar sesión en el sistema
Para iniciar sesión en el sistema se debe conocer el nombre de usuario y la contraseña,
recuerde que si no conoce su contraseña debe leer el punto anterior presente en este
documento.
Para su inicio de sesión tramite los campos requeridos para ello, así como se muestra en la
ilustración 59. En la figura se encuentra demarcado un campo con un elipse distinguido con
la letra A, allí usted debe tramitar su nombre de usuario, el cual corresponde a su correo
electrónico, después de ello debe digitar su contraseña en el campo demarcado con la letra
B, posterior a estos dos pasos debe presionar el botón de ingresar demarcado en la imagen
con la letra C, así:
Ilustración 69 Inicio de sesión
160
Fuente: prototipo de sistema de información para la empresa Creamax
Si ha realizado todo bien, es decir, si ha ingresado correctamente su correo electrónico
(Nombre de usuario) además de su contraseña de forma correcta, usted obtendrá el acceso
al sistema de forma automática y quedará habilitado inmediatamente para realizar las
acciones permitidas en el sistema. Para ello se recomienda apoyarse en este manual.
12.2 Localización del menú de ventas
Nota: para realizar una venta debe primero crear un cliente, dado que todas las ventas
realizadas deben estar asociadas ; Se recomienda que para crear un cliente, en caso tal de
que lo necesite, se dirija a la sección de gestión de clientes, presente más adelante en este
documento.
Después de realizar su correspondiente inicio de sesión el sistema cargará para usted un
menú correspondiente a su perfil de usuario, recuerde que su cuenta de usuario es personal
y completamente privada, no tendrá nadie más acceso a ella.
En la ilustración 60 se muestra la localización del enlace hacia el módulo correspondiente
de ventas
Ilustración 70 Localización de acceso al menú ventas
161
Fuente: prototipo de sistema de información para la empresa Creamax
El módulo de ventas se refiere a la creación de una nueva venta. La ilustración 61 muestra
todo lo correspondiente al mismo; ahora se pasará a explicar de forma individual las
incidencias marcadas en la figura.
Ilustración 71 Creación de una nueva venta
Fuente: prototipo de sistema de información para la empresa Creamax
A. Se refiere al producto que se adicionará a la venta
B. Se refiere al sabor del producto que se adicionará a la venta
C. Cantidad de producto seleccionado que se adicionará
D. Precio unitario del producto
E. Descuentos sobre el valor del producto
F. Botón para agregar ese producto a la venta actual
162
12.3 Gestión de clientes
Formulario de creación y/o modificación de la información de un cliente
El formulario consta del tramitado de los más importantes datos del cliente, este formulario
será idéntico, tanto para la edición, como para la creación de un cliente; Además este
formulario también es aplicable a la edición del perfil del usuario personal.
Nota: tenga en cuenta los campos marcados con un asterisco (*), estos campos son
requeridos para crear el registro del cliente.
La ilustración 62 muestra el formulario de creación y/o modificación de un cliente, a
continuación se explicaran las secciones demarcadas con letras:
A. Nombre del cliente
B. El NIT o razón social del cliente
C. Nombre de la empresa a la que pertenece el cliente
D. Fecha de nacimiento
E. Departamento donde está ubicado el cliente
F. Ciudad donde está ubicado el cliente
G. Forma de pago usual del cliente (Contado – Crédito)
H. Tipo de cliente
I. Número del teléfono fijo
J. Número del teléfono móvil o celular de la persona
K. Dirección detallada de la persona
L. Correo electrónico de contacto con el cliente
M. Puntos (Si ingresa bajo algún programa especial de compra) (Aun no implementado)
N. Información adicional para realizar contacto con el cliente
O. Botón para crear el cliente
163
Ilustración 72 Formulario de creación de la información de un cliente
Fuente: prototipo de sistema de información para la empresa Creamax
12.4 Modificación de datos personales y correo electrónico
A continuación se expondrán algunas utilidades brindadas por el sistema de información de
Creamax con el objetivo de modificar la información personal y el correo electrónico para
uso del sistema.
164
Modificar datos personales:
Ilustración 73 Formulario de creación de la información de un cliente
Fuente: prototipo de sistema de información para la empresa Creamax
12.4.1 Consultas básicas del inventario de productos en detalle
El sistema Creamax le brinda una herramienta de consulta de inventario de uno o varios
artículos sobre los cuales el usuario desee conocer las existencias registradas en el sistema.
Para ello, el usuario deberá hacer click en la imagen del producto que desee visualizar a
detalle. El sistema mostrará las existencias en el inventario del producto seleccionado.
165
Ilustración 74 Consulta básica de los productos disponibles
Fuente: prototipo de sistema de información para la empresa Creamax
En la ilustración 65 se puede observar la información que se carga con respecto al artículo
deseado, las cantidades, la referencia, el nombre del artículo, el sabor, la presentación y las
cantidades existentes registradas en el sistema para este artículo.
Ilustración 75 Información en detalle del producto
Fuente: prototipo de sistema de información para la empresa Creamax
166
13. CONCLUSIONES Y RECOMENDACIONES
- La creación del prototipo del sistema de información permitió una mayor administración
sobre los datos que eran generados en el proceso de venta de la empresa Creamax, logrando
tener un mayor control sobre la información de sus clientes, las ventas realizadas e
inventarios. Esto además facilitó a las personas encargadas de tomar decisiones, conocer en
cualquier momento el estado de los procesos de la organización confiados al sistema.
- El módulo de ventas agilizó los tiempos que tardaba un operario en realizar un pedido,
calculado en un promedio de diez minutos por solicitud, además permitió conocer de
manera oportuna las existencias de los productos registrados en el sistema que solicitaba el
cliente. Ahora el tiempo que requiere el proceso tarda en promedio tres minutos.
- En el módulo de creación de informes es importante destacar que se tuvieron dificultades
al momento de determinar qué documentos eran los más significativos para la empresa.
Este tipo de problemáticas ocurren de forma común en el desarrollo de proyectos de
software. Para solventarlo se propuso evaluar la importancia de los informes. Los más
relevantes se tomaron para la primera iteración y los siguientes se optaron para su
implementación en etapas posteriores.
- El módulo de clientes disminuyó la carga operativa y el tiempo invertido en búsquedas de
los usuarios debido a que ahora el prototipo del sistema de información se encarga de
gestionar los datos de los clientes y entre sus características se encuentra permitir la
realización de búsquedas, simplificando las operaciones y tiempos previstos para este
procedimiento.
- La creación y utilización del manual de usuario en el proceso de revisión del cliente
permitió la apropiación del sistema por parte de los usuarios, quienes en principio se
mostraban resistentes a la adaptación debido principalmente a su inexperiencia con el uso
de sistemas de información.
- Una de las bondades que se encontró en el uso del manual fue la presentación de una guía
escrita y gráfica acerca del uso de cada una de las funcionalidades del sistema, permitiendo
167
a los usuarios tener una fuente de referencia en cualquier momento. De esta manera, se
pude afirmar que los manuales los manuales constituyen un aspecto fundamental en la
apropiación y evaluación del prototipo por parte del cliente.
168
14. BIBLIOGRAFÍA
Ambler, S. 2005. The elements of UML 2.0 Style. New York : Cambridge University Press, 2005.
Beck, Kent. 2009. Extreme Programming. [En línea] Septiembre de 2009.
http://www.extremeprogramming.org/.
—. 1999. Extreme Programming Explained. 1999. 0201616416.
Derbaix, François. 2009. OpenBravo vs Microsoft Dynamics NAV. Opiniones e Internet. [En
línea] Octubre de 2009. http://francoisderbaix.com/2008/06/12/openbravo-vs-microsoft-dynamics-
nav/.
DesarrolloWeb.com. 2010. Breve historia de PHP. [En línea] Enero de 2010.
http://www.desarrolloweb.com/articulos/436.php.
Garey. 2007. Software Portability: Weighing Options, Making Choices. The CPA Journal. [En
línea] 2007. http://www.dr-gail.org/upload/SoftwarePortability.pdf.
Garrett, Jesse James. 2005. Ajax: A New Approach to Web Applications. [En línea] Febrero de
2005. http://www.adaptivepath.com/publications/essays/archives/000385.php.
—. 2005. Ajax: A New Approach to Web Applications. Adaptative Path. [En línea] Febrero de
2005. http://www.adaptivepath.com/ideas/essays/archives/000385.php.
GS1 Colombia. 2009. Codigo de Barras. [En línea] Noviembre de 2009.
http://www.gs1pa.org/estandares/barras.html.
—. 2010. Reglas de asignación GTIN. [En línea] Enero de 2010.
http://www.gs1co.org/documentos/gtin/GS1_reglas_asignacion_GTIN.pdf.
Ingeniería del software. Sommerville, Ian. 2005. s.l. : Pearson educación, 2005. 84-7829-074-5.
Instituto colombiano de codificacion y automatizacion comercial. 1993. Codigo de barras &
edi: Dos herramientas logisticas. Bogotá : s.n., 1993.
International Bussines Machine. 2009. New to XML. [En línea] Noviembre de 2009.
http://www.ibm.com/developerworks/xml/newto/#whatxml.
Kuhn, Markus. UTF-8 and Unicode FAQ for Unix/Linux. [En línea]
http://www.cl.cam.ac.uk/~mgk25/unicode.html.
169
Laudon, Ken y Laudon, Jane. 2004. Sistemas de Información Gerencial. s.l. : Prentice Hall, 2004.
Microsoft. 2009. AJAX: The Oficial Microsoft ASP.NET Site. [En línea] Octubre de 2009.
http://ajax.asp.net/.
Mooney. 1997. Bringing Portability to the Software Process. West Virginia University. Dept. of
Statistics and Computer Science. [En línea] 1997.
http://www.cs.wvu.edu/~jdm/research/portability/reports/TR_97-1.pdf.
Mozilla Developer Center. 2009. Concepto de JavaScript. [En línea] Noviembre de 2009.
https://developer.mozilla.org/es/Gu%C3%ADa_JavaScript_1.5/Concepto_de_JavaScript#.C2.BFQu
.C3.A9_es_JavaScript.3F.
Network Working Group. 2010. UTF-8, a transformation format of ISO 10646. [En línea] Febrero
de 2010. http://www.rfc-editor.org/rfc/rfc3629.txt.
Nexen. 2009. Evolution de PHP sur Internet (September 2008). [En línea] Noviembre de 2009.
http://www.nexen.net/chiffres_cles/phpversion/.
—. 2010. PHP stats for September 2008. [En línea] Enero de 2010.
ttp://www.nexen.net/chiffres_cles/phpversion/18780-php_statistics_for_august_2008.php.
OpenBravo. Open Bravo POS: Punto de venta en software libre. [En línea]
http://www.openbravo.com/es/product/pos/.
Pérez, Javier Eguíluz. 2007. Introducción a AJAX. s.l. : Librosweb, 2007.
Pressman, R. 2005. Software Engineering a practitioner's approach. New York : McGraw-Hill,
2005.
Steinberg, Daniel y Palme, Daniel. Extreme Software Engineering. s.l. : Pearson Educatio. ISBN
0-13-047381-2.
Surveyer, Jacques. 2004. Featuring: RIAs are designed to deliver 8A's Software Simply. The open
Sourcery. [En línea] 2004. http://theopensourcery.com/xmlria.htm.
Un método de ingeniería inversa de código Java hacia diagramas de secuencias de UML 2.0.
Zapata, C y Ochoa, O. 31-42, s.l. : Revista de Escuelda de Ingeniería de Antioquía, Vol. 9.
UNIVERSIDAD SANTA MARIA. 2009. CURSO DE LA ESCUELA DE ADMINISTRACIÓN
Y CONTADURÍA. Control de inventarios. [En línea] Noviembre de 2009.
http://www.investigacion-operaciones.com/Inventario-1.htm.
W3C. 2009. Extensible Markup Language (XML). [En línea] Diciembre de 2009.
http://www.w3.org/XML/.
170
—. 2010. Extensible Markup Language (XML) 1.0 (Fifth Edition. W3C Recommendation 26
November 2008. [En línea] Enero de 2010. http://www.w3.org/TR/2008/REC-xml-20081126/.
—. 2010. W3C DOM -Introduction. [En línea] Febrero de 2010.
http://www.quirksmode.org/dom/intro.html.
—. 2009. XMLHttpRequest. W3C Working Draft 19 November 2009. [En línea] Diciembre de
2009. http://www.w3.org/TR/XMLHttpRequest/.
Web Developers. 2009. Programming languages on the internet. [En línea] Octubre de 2009.
http://www.webdevelopersnotes.com/basics/languages_on_the_internet.php3.
Weitzenfeld, Alfredo. 2005. Ingenieria de software orientada a objetos con uml, java e internet.
Mexico : International Thomson Editores, 2005. 9706861904.
Welling, Luke y Thomson, Laura. 2001. Php And Mysql Web Development. s.l. : Pearson
Education (Us), 2001.
Wiegers, Karl. 1997. Software Development Magazine. 1997.
WinPOS. 2009. Sistema POS Control, Punto de venta. [En línea] Julio de 2009.
http://www.sispos.com/winpos.htm.
171
15. ANEXOS
Anexo 1 Entrevista gerente de Creamax
Fecha: 18 de Octubre de 2009
Nombre: Abdulrain Matamba Perdomo
Cargo: Gerente
1) ¿A qué se dedica su empresa?
A entregar al pueblo colombiano productos nutricionales que permitan el mejoramiento de la salud
y la nutrición, en paralelo con el deporte y el alto rendimiento.
En general, nuestros productos son proteínas, creatinas, ganadores de peso y reductores
2) ¿Cuál es el sistema o método de venta actual?
Se lleva la información de los clientes en libros físicos y el inventario y facturación en hojas de
cálculo de Microsoft Excel. Tenemos una plantilla que nos permite introducir los datos del cliente
que tomamos desde los libros y luego seleccionar los productos escribiéndolos línea a línea. Un
proceso algo tedioso y que nos quita mucha productividad.
Adicionalmente hay que tener en cuenta el consecutivo y guardar todas las facturas impresas para
poder buscar información posteriormente.
3) ¿Cuántas personas (aproximadamente) usarían directamente el sistema?
3 personas.
a. El administrador
b. El vendedor
c. El contador
4) ¿Qué necesidades posee en este momento, por las cuales requiere un sistema?
Requerimos facilitar nuestro proceso de facturación y ventas, con el objetivo de optimizar nuestro
tiempo y productividad para proveer un mejor servicio, y llegar a una mayor cantidad de clientes, en
el momento en que sea una preocupación menos, el hecho de vender.
5) De esas necesidades, especifique 10 de manera prioritaria:
172
a. – Facturación automatizada
b. – Inventarios reales
c. – Base de datos de clientes
d. – Almacenamiento de facturas en el sistema
e. – Que el sistema pueda ser utilizado a través de internet
f. – Que se generen rótulos para envío de cajas
g. – Facturas en formato digital (PDF ) para mayor portabilidad y posibilidad de impresión
h. – Que todos los datos de la empresa sean digitalizados para ahorrar papel
i. – Que se generen informes y reportes estadísticos de ventas y otros datos
j. – Que se procese el I.V.A.
6) ¿Por qué optar por un sistema? ¿Cuáles son los problemas puntuales que se desean
resolver?
La eficiencia y el costo de tener a varias personas a cargo de los papeles y las hojas de cálculo.
Principalmente el tiempo que toma
7) ¿Qué expectativas tiene sobre el sistema?
Que nos optimice el tiempo y nos aumente la productividad, así como automatizar la gran mayoría
de los procesos actuales.
8) Califique con prioridad de 1 a 5 (siendo 5 la más importante) las siguientes características
del sistema
a. Rápido - 2
b. Fácil de manejar - 3
c. Presentación agradable - 4
d. Portable - 1
9) Ha probado alguna(s) alternativa(s) de software? Cuál es?
No, ninguna
a. ¿Se han ajustado a sus necesidades?
----
173
Resumen de la información suministrada por el señor Perdomo no incluida en las preguntas:
También me gustaría que el sistema me permitiera tener un control sobre los productos de manera
que yo pueda saber con exactitud los productos que se han vendido, a quién y cuál ha sido el
vendedor, esto con el fin de solventar un problema de seguridad que se ha venido evidenciando en
nuestra empresa.
Nos gustaría que el sistema fuera agradable a la vista, ya que hemos visto que todos los demás
sistemas tienen un aspecto gráfico muy anticuado.
Es importante destacar que el sistema debe llevar relación con la imagen corporativa e implementar
las imágenes de nuestros productos cuando se realicen las ventas y se consulte el inventario.
El sistema no debería demorarse mucho cargando para no ralentizar el proceso de venta.
174
Anexo 2 Entrevista Número 1
Usuario: Elsa Patricia Castaño
Cargo: Cajero
¿Cuánto tiempo tarda normalmente en tomar un pedido y crear una factura para un cliente?
__Alrededor de 15 minutos, pues debo escribir el código de barras de cada uno
¿Si el cliente ha realizado compras con ustedes, usted debe preguntar de nuevo toda su
información, o poseen un compendio de cliente de donde pueda recuperarla? Si______
No__X_____
¿Tiene usted conocimiento de cuantas unidades puede venderle al cliente (disponibilidad
del producto)? Si__X__ No____
¿De qué forma se incluyen en la factura los descuentos, precios especiales o demás eventos
en el precio?
__________Debo escribir en la hoja de cálculo de cuanto es el descuento de cada producto
¿Luego de la impresión, con que nombre guarda la factura realizada?
___Con el nombre del cliente y la fecha del día _________
¿Usted puede ver las facturas realizadas por otros vendedores? Si __X__ No_____
¿Cuántas personas tienen acceso al computador donde usted trabaja? ____4___________
¿Cuántas utilizan su misma clave de acceso? __Todas_________________________
¿Cuando el pedido debe ser enviado por correo certificado, como marca la caja?
_______Escribo sobre una hoja la dirección que el cliente me dijo en el pedido _____
Conozco otros sistemas y me gustaría que en este se pudiera acceder a varias cosas al mismo
tiempo, debido a que en los demás solo es posible entrar a una pantalla a la vez, teniendo que cerrar
lo que se tiene y volverlo a abrir luego de hacer lo que se necesite.
175
Anexo 3 Entrevista Número 2
Usuario: Liliana Sanabria
Cargo: Cajero
¿Cuánto tiempo tarda normalmente en tomar un pedido y crear una factura para un cliente?
_________Diez minutos mientras obtengo de nuevo sus datos__
¿Si el cliente realizado compras con ustedes, usted debe preguntar de nuevo toda su
información, o poseen un compendio de cliente de donde pueda recuperarla? Si______
No__X____
¿Tiene usted conocimiento de cuantas unidades puede venderle al cliente (disponibilidad
del producto)? Si____ No_X__
¿De qué forma se incluyen en la factura los descuentos, precios especiales o demás eventos
en el precio?
_________________________________________________________________________
¿Luego de la impresión, con que nombre guarda la factura realizada?
___________Con la fecha y el valor de la compra___________________
¿Usted puede ver las facturas realizadas por otros vendedores? Si _X___ No_____
¿Cuántas personas tienen acceso al computador donde usted trabaja? _____3__________
¿Cuántas utilizan su misma clave de acceso? __No estoy seguro pero creo que todos____
¿Cuando el pedido debe ser enviado por correo certificado, como marca la caja?
__________Con marcadores y cinta para que no se despegue el nombre_______
Debería haber una manera de poder manejar el sistema sólo con el teclado, pues ya tengo
experiencia con manejar otros sistemas en los que sólo utilizo el teclado y por tanto soy más
eficiente que con el mouse.
176
Anexo 4 Entrevista Número 3
Usuario: Danny Fernando Cruz
Cargo: Cajero
¿Cuánto tiempo tarda normalmente en tomar un pedido y crear una factura para un cliente?
_______Entre ocho y doce minutos___________
¿Si el cliente realizado compras con ustedes, usted debe preguntar de nuevo toda su
información, o poseen un compendio de cliente de donde pueda recuperarla? Si______
No___X_
¿Tiene usted conocimiento de cuantas unidades puede venderle al cliente (disponibilidad
del producto)? Si____ No_X__
¿De qué forma se incluyen en la factura los descuentos, precios especiales o demás eventos
en el precio?
_______Debo llamar al supervisor y el coloque y autorice los precios especiales_
¿Luego de la impresión, con que nombre guarda la factura realizada?
___________Con el nombre del cliente con los dos apellidos y la fecha del día______
¿Usted puede ver las facturas realizadas por otros vendedores? Si X__ No_____
¿Cuántas personas tienen acceso al computador donde usted trabaja? ____Dos____
¿Cuántas utilizan su misma clave de acceso? Creo que todos por que usamos el mismo
usuario
¿Cuando el pedido debe ser enviado por correo certificado, cómo marca la caja?
_________Busco el nombre del cliente con su dirección y con un marcador sobre una hoja
coloco la dirección donde el cliente desea el envió _
177
Anexo 5 Entrevista Número 4
Usuario: Angélica María Pérez
Cargo: Cajero
¿Cuánto tiempo tarda normalmente en tomar un pedido y crear una factura para un cliente?
____Quince minutos si el cliente no proporciona la dirección, si no solo ocho minutos
¿Si el cliente realizado compras con ustedes, usted debe preguntar de nuevo toda su
información, o poseen un compendio de cliente de donde pueda recuperarla? Si______
No_X_
¿Tiene usted conocimiento de cuantas unidades puede venderle al cliente (disponibilidad
del producto)? Si____ No_X__
¿De qué forma se incluyen en la factura los descuentos, precios especiales o demás eventos
en el precio?
_________El supervisor agrega los precios especiales en la hoja de calculo ______
¿Luego de la impresión, con que nombre guarda la factura realizada?
____Nombre completo del cliente y la fecha del día de la venta____
¿Usted puede ver las facturas realizadas por otros vendedores? Si _X_ No_____
¿Cuántas personas tienen acceso al computador donde usted trabaja? ___Cuatro___
¿Cuántas utilizan su misma clave de acceso? _____Todos utilizamos el mismo usuario_
¿Cuando el pedido debe ser enviado por correo certificado, cómo marca la caja?
____Escribo el nombre con un rotulador sobre la caja y la dirección ____
178
Anexo 6 Historias de usuario
Módulo de Control de Inventario
HISTORIA DE USUARIO
Numero: 1 Nombre: Ver Inventario
Usuario: Administrador, Vendedor, Supervisor
Modificación de historia numero: 1 Iteración: 1
Prioridad en Negocio: Alta Prioridad en desarrollo: Media
Descripción: Me gustaría que el sistema mostrara las existencias de productos en el inventario,
de forma tabulada y con imágenes.
Observaciones: Deben existir productos en el inventario, de lo contrario se muestra un mensaje
que indique la no disponibilidad.
HISTORIA DE USUARIO
Numero: 2 Nombre: Ver detalle de inventario
Usuario: Administrador, Vendedor, Supervisor
Modificación de historia numero: 1 Iteración: 1
Prioridad en Negocio: Media Prioridad en desarrollo: Media
Descripción: Quiero que el sistema muestre las existencias de un producto del inventario en
especial con detalle de presentaciones, y sabores, de forma tabulada y con imágenes.
Observaciones: Deben existir productos en el inventario, de lo contrario se muestra un mensaje
que indique la no disponibilidad.
HISTORIA DE USUARIO
Numero: 3 Nombre: Agregar existencias al inventario
179
Usuario: Administrador
Modificación de historia numero: 1 Iteración: 1
Prioridad en Negocio: Alta Prioridad en desarrollo: Alta
Descripción: El sistema debe ser capaz de permitir agregar existencias de productos al
inventario.
Observaciones: Deben existir productos definidos en el sistema de información de la empresa.
HISTORIA DE USUARIO
Numero: 4 Nombre: Eliminar existencias del inventario
Usuario: Administrador
Modificación de historia numero: 1 Iteración: 1
Prioridad en Negocio: Baja Prioridad en desarrollo: Media
Descripción: El sistema debe ser capaz de permitir borrar existencias de productos al inventario.
Observaciones: Deben existir productos definidos en el sistema de información de la empresa,
así como existencias de los mismos en el inventario.
Módulo de gestión de clientes
HISTORIA DE USUARIO
Numero: 1 Nombre: Agregar cliente
Usuario: Vendedor, Administrador
Modificación de historia numero: 1 Iteración: 1
Prioridad en Negocio: Alta Prioridad en desarrollo: Alta
180
Descripción: Se debe poder agregar clientes al sistema, pidiendo todos los datos y sin permitir
que hayan dos clientes iguales.
Observaciones: Se deben validar los tipos de datos introducidos en el formulario de agregación
HISTORIA DE USUARIO
Numero: 2 Nombre: Modificar cliente
Usuario: Administrador
Modificación de historia numero: 1 Iteración: 1
Prioridad en Negocio: Baja Prioridad en desarrollo: Media
Descripción: El sistema tiene que permitir modificar los datos de un cliente en cualquier
momento, por si el cliente cambia de teléfono, dirección... etc.
Observaciones: El cliente a modificar debe existir en la base de datos
HISTORIA DE USUARIO
Numero: 3 Nombre: Eliminar cliente
Usuario: Administrador
Modificación de historia numero: 1 Iteración: 1
Prioridad en Negocio: Baja Prioridad en desarrollo: Media
Descripción: También me debe permitir el sistema borrar a un cliente con solo seleccionarlo por
su nombre.
Observaciones: El cliente debe existir en la base de datos
181
HISTORIA DE USUARIO
Numero: 3 Nombre: Buscar cliente
Usuario: Vendedor, Administrador, Supervisor
Modificación de historia numero: 1 Iteración: 1
Prioridad en Negocio: Alta Prioridad en desarrollo: Alta
Descripción: Yo quiero poder buscar un cliente y que el sistema me muestre una lista de
resultados que me permitan ver los detalles del cliente.
Observaciones: Se pueden buscar términos relacionados con algún dato del cliente, tales como:
nombre, dirección, ciudad, cedula... etc.
Módulo gestión de usuarios
HISTORIA DE USUARIO
Numero: 1 Nombre: Modificar información personal
Usuario: Administrador, Vendedor, Supervisor
Modificación de historia numero: 1 Iteración: 1
Prioridad en Negocio: Baja Prioridad en desarrollo: Media
Descripción: Mis datos personales (como el correo y la clave) deben poder ser modificados en
cualquier momento, entonces quiero que el sistema me muestre una manera de hacer esto.
Observaciones: El sistema solicita verificación de modificación vía correo electrónico para
garantizar la seguridad.
HISTORIA DE USUARIO
Numero: 2 Nombre: Modificar perfiles de usuario
Usuario: Administrador
182
Modificación de historia numero: 1 Iteración: 1
Prioridad en Negocio: Baja Prioridad en desarrollo: Media
Descripción: Un usuario con permisos administrativos podrá manejar a los otros usuarios, y por
tanto cambiarle sus permisos en el sistema, para decir a que tiene acceso y a que no.
Observaciones: Dicha modificación de perfiles sólo es posible si la realiza un usuario
administrador.
Módulo generación de facturas
HISTORIA DE USUARIO
Numero: 1 Nombre: Realizar venta
Usuario: Administrador
Modificación de historia numero: 1 Iteración: 1
Prioridad en Negocio: Alta Prioridad en desarrollo: Alta
Descripción: El sistema me debe permitir realizar una venta, seleccionando un cliente y una lista
de productos que le voy a vender.
Luego me debe entregar una factura de la venta en PDF
Observaciones: Debe haber disponibilidad en el inventario de los productos seleccionados para
la venta, así como el cliente, tendrá que existir en la base de datos.
Creación y almacenamiento de informes
HISTORIA DE USUARIO
Numero: 1 Nombre: Generar informe
Usuario: Administrador
Modificación de historia numero: 1 Iteración: 1
183
Prioridad en Negocio: Media Prioridad en desarrollo: Alta
Descripción: El sistema debe entregar informes o reportes con base en la información
almacenada gracias a las transacciones que se realicen. Los informes pueden ser de ventas,
accesos, clientes... etc.
Observaciones: Los informes se entregan en formato PDF
184
Anexo 7 Reuniones con el cliente para revisiones del sistema de información
CÓDIGO: 1 ANALISTA: Juan David Gómez Caicedo
TIPO: Recolección de
información
FECHA: 15 Diciembre de 2010
FUENTE: Abdul Perdomo DURACIÓN: 1.25 hora
PROYECTO: Sistema
información CREAMAX
HORA INICIO: 10:00am HORA FINALIZACIÓN:
11:25am
CLIENTE: Creamax OBJETIVO: Conocer los colores e imágenes que desea el
cliente en el sistema
1. Las imágenes y colores deben ser acordes a la página web que ya tienen en el momento
2. Las imágenes de los productos deben ser de excelente calidad
3. Las ventanas e imágenes deben ser de gran tamaño
Abdul Perdomo
Juan David Gómez Caicedo
Juan Sebastián Celis
FUENTE ANALISTA REVISOR
CÓDIGO: 2 ANALISTA: Juan Sebastián Celis
TIPO: Revisión de Protipo FECHA: 29 Diciembre de 2010
FUENTE: Abdul Perdomo, Angélica Perez DURACIÓN: 1.11 hora
PROYECTO: Sistema
información CREAMAX
HORA INICIO: 9:00am HORA FINALIZACIÓN:
10:11am
CLIENTE: Creamax OBJETIVO: Conocer los fundamentos del proyecto
1. Mejorar entorno gráfico
2. Colocar iconos que me ayuden a identificar que hace cada una de las opciones
3. Hacer la navegación entre módulos mas intuitiva
185
4. Posibilidad de utilizar sistema gráfico de ventanas (semejante a un escritorio)
5. Colocar logotipos de la empresa en lugares visibles todo el tiempo
Abdul Perdomo, Angélica
Perez
Juan Sebastián Celis
Juan David Gómez
FUENTE ANALISTA REVISOR
CÓDIGO: 3 ANALISTA: Juan Sebastian Celis
TIPO: Recolección de
información
FECHA: 20 Enero de 2010
FUENTE: DURACIÓN: 2 hora
PROYECTO: Sistema
información CREAMAX
HORA INICIO: 2:00pm HORA FINALIZACIÓN:
4:00pm
CLIENTE: Creamax OBJETIVO: Conocer web o programas que interesan por el
diseño a los usuario
1. La página consultada tiene una interfaz muy sencilla de fácil uso.
2. La página tiene un diseño angosto para su contenido.
3. Los colores hacen agradable el sitio
Juan Sebastián Celis
Juan David Gómez Caicedo
FUENTE ANALISTA REVISOR
CÓDIGO: 4 ANALISTA: Juan Sebastián Celis
TIPO: Entrevista FECHA: 27 Enero de 2010
186
FUENTE: DURACIÓN: 1.20 hora
PROYECTO: Sistema
información CREAMAX
HORA INICIO: 8:20am HORA FINALIZACIÓN:
9:40am
CLIENTE: Creamax OBJETIVO: Determinar cómo administrar el sistema
1. Se validarán los usuarios de la BD con los registros físicos
2. Se creará una tabla de datos para usuarios autorizados en el sistema
3. Se usará el manejador de Base de datos Mysql.
Abdul Perdomo
Danny Cruz
Juan Sebastián Celis
Juan David Gómez
FUENTE ANALISTA REVISOR
CÓDIGO: 5 ANALISTA: Juan Sebastian Celis
TIPO: Revisión de prototipo FECHA: 2 de Febrero de 2010
FUENTE: DURACIÓN: 1.40 hora
PROYECTO: Sistema
información CREAMAX
HORA INICIO: 8:00am HORA FINALIZACIÓN:
9:40am
CLIENTE: Creamax OBJETIVO: Validar funcionalidad e interfaz del sitio
1. Se debe contar con varios criterios para realizar los informes
2.
3. Se debe permitir un ingreso distinto por usuario, si desea otro deberá solicitar autorización
del administrador.
4. Se debe contar con un informe para el administrador de los eventos ocurridos en el sistema.
5. Ofrecer ayudas claras y fáciles de usar entendibles en lo posible para cualquier tipo de
visitante y usuario.
187
Abdul Perdomo
Danny Cruz
Angélica Perez
Juan Sebastián Celis Juan David Gómez
FUENTE ANALISTA REVISOR
CÓDIGO: 6 ANALISTA: Juan Sebastian Celis
TIPO: Revisión de prototipo FECHA: 8 de Febrero de 2010
FUENTE: DURACIÓN: 1 hora
PROYECTO: Sistema de
información CREAMAX
HORA INICIO: 9:00am HORA FINALIZACIÓN:
10:00am
CLIENTE : Creamax OBJETIVO: Validar nueva propuesta de diseño de interfaz
1. Excelente diseño nuevo de interfaz.
2. Tiene mejor organización y por lo tanto funcionalidad.
3. Ese será la interfaz a implementar.
4. Los menú del sitio deben llamarse “clientes”, “compras”, “ventas”, “informes”, ”estadísticas”,
”inventario”, “rótulos”, ”configuración”
5. Ofrecer ayudas claras y fáciles de usar entendibles en lo posible para cualquier tipo de visitante
y usuario.
Abdul Perdomo
Juan Sebastián Celis
Juan David Gómez
FUENTE ANALISTA REVISOR
CÓDIGO: 7 ANALISTA: Juan Sebastián Celis
TIPO: Prototipo FECHA: 17 de Febrero de 2010
188
FUENTE: DURACIÓN: 1 hora
PROYECTO: HORA INICIO: 9:30am HORA FINALIZACIÓN:
10:30am
CLIENTE: Creamax OBJETIVO: Validar desarrollo y funcionalidad del software
1. El desarrollo de la primera iteración está acorde con lo requerido por el cliente.
Abdul Perdomo
Angelica Perez
Danny Fernando Cruz
Juan Sebastián Celis
Juan David Gómez Caicedo
FUENTE ANALISTA REVISOR